18 #include <AudioToolbox/AudioUnitUtilities.h> 19 #include "AUMIDIEffectBase.h" 77 virtual ComponentResult
Version() {
return 1000;}
84 AudioUnitScope nScope,
85 AudioUnitElement inElement,
87 Boolean& outWritable );
90 virtual OSStatus
GetProperty(AudioUnitPropertyID inID,
91 AudioUnitScope inScope,
92 AudioUnitElement inElement,
96 virtual OSStatus
SetProperty(AudioUnitPropertyID inID,
97 AudioUnitScope inScope,
98 AudioUnitElement inElement,
104 AudioUnitParameterID inParameterID,
105 AudioUnitParameterInfo &outParameterInfo );
108 virtual ComponentResult
GetPresets(CFArrayRef* outData)
const;
125 virtual Float64 GetTailTime()
138 virtual ComponentResult
SetParameter(AudioUnitParameterID inID,
139 AudioUnitScope inScope,
140 AudioUnitElement inElement,
141 AudioUnitParameterValue inValue,
142 UInt32 inBufferOffsetInFrames);
145 virtual OSStatus
Render(AudioUnitRenderActionFlags & ioActionFlags,
146 const AudioTimeStamp & inTimeStamp,
147 UInt32 inNumberFrames);
152 const AudioBufferList& inBuffer,
153 AudioBufferList& outBuffer,
154 UInt32 inFramesToProcess );
157 virtual ComponentResult
Reset(AudioUnitScope inScope,
158 AudioUnitElement inElement);
162 AudioUnitParameterID inParameterID,
163 CFArrayRef* outStrings);
167 virtual ComponentResult
RestoreState(CFPropertyListRef inData);
176 UInt32 inStartFrame);
182 UInt32 inStartFrame);
189 UInt32 inStartFrame);
196 UInt32 inStartFrame);
204 UInt32 inStartFrame);
215 if (bundleID != NULL)
217 CFBundleRef helixBundle = CFBundleGetBundleWithIdentifier( bundleID );
218 if(helixBundle != NULL)
220 CFURLRef bundleURL = CFBundleCopyBundleURL ( helixBundle );
221 if(bundleURL != NULL)
223 CFURLRef componentFolderPathURL = CFURLCreateCopyDeletingLastPathComponent(NULL, bundleURL);
225 CFStringRef myComponentPath = CFURLCopyFileSystemPath(componentFolderPathURL, kCFURLPOSIXPathStyle);
226 CFRelease(componentFolderPathURL);
228 if(myComponentPath != NULL)
230 int nSize = CFStringGetLength(myComponentPath);
231 char* path =
new char[nSize+1];
232 memset(path, 0, (nSize+1)*
sizeof(
char));
234 bool success = CFStringGetCString(myComponentPath, path, nSize+1, kCFStringEncodingASCII);
235 CFRelease(myComponentPath);
237 if(success)
return path;
240 CFRelease(bundleURL);
298 PluginGUI* pluginGUI =
nullptr;
325 switch(hostMessageInfo.hostMessage)
442 for (customViewControllerMap::const_iterator it = customViewMap.begin(), end = customViewMap.end(); it != end; ++it)
500 MessageInfo info(PLUGINGUI_REGISTER_SUBCONTROLLER);
518 MessageInfo info(PLUGINGUI_DE_REGISTER_SUBCONTROLLER);
536 customViewControllerMap::const_iterator it = customViewMap.find(customViewName);
537 if (it != customViewMap.end())
545 customViewMap.insert(std::make_pair(customViewName, pCVC));
567 MessageInfo info(PLUGINGUI_DE_REGISTER_CUSTOMVIEW);
591 for (customViewControllerMap::const_iterator it = customViewMap.begin(), end = customViewMap.end(); it != end; ++it)
593 it->second->clearCustomViewPtr();
597 it->second->clearCustomViewPtr();
636 for (customViewControllerMap::const_iterator it = customViewMap.begin(), end = customViewMap.end(); it != end; ++it)
638 if (it->second->getCustomViewPtr() == customViewConnector)
652 if (it->second->getCustomViewPtr() == customViewConnector)
704 fprintf(stderr,
"midiEventQueueA.size() > 0: %u",
midiEventQueueA.size() > 0);
714 fprintf(stderr,
"midiEventQueueB.size() > 0: %u",
midiEventQueueB.size() > 0);
766 if(readingQueue->size() <= 0 || !
pluginCore)
return false;
768 while(readingQueue->size() > 0)
772 if(event.midiSampleOffset != sampleOffset)
return false;
virtual OSStatus HandlePitchWheel(UInt8 inChannel, UInt8 inPitch1, UInt8 inPitch2, UInt32 inStartFrame)
specialized MIDI handler for only this message; CURRENTLY NOT USED, see HandleMidiEvent ...
Definition: aufxplugin.cpp:1087
virtual double getActualPluginParameter(int32_t controlID)
Definition: aufxplugin.h:456
Information that includes the message code as well as the message data.
Definition: pluginstructures.h:545
CustomViewController * getCustomViewController(ICustomView *customViewConnector)
Definition: AAXPluginParameters.h:721
PluginParameter * getPluginParameterByControlID(int32_t controlID)
get a parameter by control ID - uses map (slowest)
Definition: pluginbase.h:314
virtual OSStatus SetProperty(AudioUnitPropertyID inID, AudioUnitScope inScope, AudioUnitElement inElement, const void *inData, UInt32 inDataSize)
open and close the GUI object
Definition: aufxplugin.cpp:833
virtual ~AUMIDIEventQueue()
Definition: aufxplugin.h:688
The AUMIDIEventQueue interface queues incoming MIDI messages and blasts them out during the buffer pr...
Definition: aufxplugin.h:676
virtual unsigned int getEventCount()
Definition: aufxplugin.h:753
virtual OSStatus HandleNoteOff(UInt8 inChannel, UInt8 inNoteNumber, UInt8 inVelocity, UInt32 inStartFrame)
specialized MIDI handler for only this message; CURRENTLY NOT USED, see HandleMidiEvent ...
Definition: aufxplugin.cpp:1067
virtual bool guiWillClose()
Definition: aufxplugin.h:587
virtual OSStatus ProcessBufferLists(AudioUnitRenderActionFlags &ioActionFlags, const AudioBufferList &inBuffer, AudioBufferList &outBuffer, UInt32 inFramesToProcess)
process the de-interleaved channel buffers
Definition: aufxplugin.cpp:463
The CustomViewController is part of the safe ICustomView feature in ASPiK. The CustomViewController m...
Definition: AAXPluginParameters.h:440
virtual ComponentResult Initialize()
the AU init function
Definition: aufxplugin.cpp:231
AUMIDIEventQueue(PluginCore *_pluginCore)
Definition: aufxplugin.h:681
virtual OSStatus NewFactoryPresetSet(const AUPreset &inNewFactoryPreset)
user has selected a new preset
Definition: aufxplugin.cpp:996
virtual void updateView()
Definition: aufxplugin.h:376
virtual bool processMIDIEvent(midiEvent &event)
process a MIDI event
Definition: plugincore.cpp:395
virtual bool fireMidiEvents(unsigned int sampleOffset)
Definition: aufxplugin.h:762
void toggleQueue()
Definition: aufxplugin.h:721
virtual void pushDataValue(double data)
Definition: aufxplugin.h:383
AUChannelInfo * auChannelInfo
the current channel information
Definition: aufxplugin.h:281
void updateHostInfo(HostInfo *hostInfo)
set the HostInfo for the core (varies by API)
Definition: aufxplugin.cpp:543
virtual bool deRregisterSubcontroller(ICustomView *customViewConnector)
Definition: aufxplugin.h:511
void setAUParameterChangeEvent(unsigned int controlID, double actualValue)
safely issue a parameter change event
Definition: aufxplugin.cpp:283
interface file for ASPiK GUI object
uint32_t controlID
ID value.
Definition: pluginstructures.h:299
double getTailTimeInMSec()
Description query: tail time.
Definition: pluginbase.h:471
AUFXPlugin * auInstance
the AU plugin (NOTE this is not base-class)
Definition: aufxplugin.h:626
virtual ComponentResult Version()
Definition: aufxplugin.h:77
void clearCustomViewPtr()
Definition: aufxplugin.h:403
virtual bool processMessage(MessageInfo &messageInfo)
For Custom View and Custom Sub-Controller Operations.
Definition: plugincore.cpp:335
float ** outputBuffers
de-interleaved outgoing audio output buffers
Definition: aufxplugin.h:283
std::queue< midiEvent > midiEventQueueB
queue B
Definition: aufxplugin.h:791
virtual bool registerCustomView(std::string customViewName, ICustomView *customViewConnector)
Definition: aufxplugin.h:531
virtual bool checkNonBoundValueChange(int tag, float normalizedValue)
Definition: aufxplugin.h:613
CustomViewController(ICustomView *_customViewIF)
Definition: aufxplugin.h:372
char * getMyComponentDirectory(CFStringRef bundleID)
helper function to get a path to the location where THIS library is loaded
Definition: aufxplugin.h:213
virtual UInt32 SupportedNumChannels(const AUChannelInfo **outInfo)
return an array of AUChannelInfo structures with input and output channel combinations ...
Definition: aufxplugin.cpp:193
PluginHostConnector * pluginHostConnector
Plugin -> Host interface.
Definition: aufxplugin.h:266
void updateAUParametersWithPluginCore()
send parameter update info (metering, output)
Definition: aufxplugin.cpp:374
AUFXPlugin * auInstance
our plugin object for setAUParameterChangeEvent()
Definition: aufxplugin.h:351
void addEvent(midiEvent event)
Definition: aufxplugin.h:734
float ** inputBuffers
de-interleaved incoming audio input buffers
Definition: aufxplugin.h:282
void updatePluginCoreParameters()
set the plugin core parameters from the AU parameters (called during each buffer process cycle) ...
Definition: aufxplugin.cpp:342
Information about a GUI update message; this is for sending GUI control information from the plugin c...
Definition: pluginstructures.h:368
virtual bool deRegisterCustomView(ICustomView *customViewConnector)
Definition: aufxplugin.h:559
AudioBufferList * sidechainBufferList
sidechain buffers (if active)
Definition: aufxplugin.h:279
Custom interface so that GUI can pass information to plugin shell in a thread-safe manner...
Definition: pluginstructures.h:1219
Float64 latencyInSeconds
au latency (seconds!)
Definition: aufxplugin.h:292
virtual OSStatus HandleNoteOn(UInt8 inChannel, UInt8 inNoteNumber, UInt8 inVelocity, UInt32 inStartFrame)
specialized MIDI handler for only this message; CURRENTLY NOT USED, see HandleMidiEvent ...
Definition: aufxplugin.cpp:1047
PluginCore * pluginCore
the core object
Definition: AAXPluginParameters.h:712
virtual OSStatus Render(AudioUnitRenderActionFlags &ioActionFlags, const AudioTimeStamp &inTimeStamp, UInt32 inNumberFrames)
first function to be called during buffer process cycle
Definition: aufxplugin.cpp:403
Custom View interface to allow plugin core to create safe communication channels with GUI custom view...
Definition: pluginstructures.h:1141
AUFXPlugin(AudioUnit component)
constructor for plugin object
Definition: aufxplugin.cpp:51
void clearQueueAEvents()
Definition: aufxplugin.h:701
PluginCore * pluginCore
GUI the plugin core: alive for FULL lifecycle of shell.
Definition: aufxplugin.h:271
virtual void parameterChanged(int32_t controlID, double actualValue, double)
Definition: aufxplugin.h:449
virtual ComponentResult Reset(AudioUnitScope inScope, AudioUnitElement inElement)
reset function for AU and core
Definition: aufxplugin.cpp:157
AUMIDIEventQueue * midiEventQueue
double-buffered-queue for MIDI messaging
Definition: aufxplugin.h:267
void * presetsArrayData
contiguous memory block for persistent preset data
Definition: aufxplugin.h:287
Definition: pluginstructures.h:397
Double buffered queue for MIDI messages.
Definition: pluginstructures.h:1307
virtual bool guiParameterChanged(int32_t controlID, double actualValue)
has nothing to do with actual variable or updated variable (binding)
Definition: plugincore.cpp:306
The GUIPluginConnector interface creates a safe message mechanism for the GUI to issue requests to th...
Definition: AAXPluginParameters.h:500
virtual ComponentResult GetParameterInfo(AudioUnitScope inScope, AudioUnitParameterID inParameterID, AudioUnitParameterInfo &outParameterInfo)
get information about each AU parameter that was initialized
Definition: aufxplugin.cpp:627
virtual OSStatus GetPropertyInfo(AudioUnitPropertyID inID, AudioUnitScope nScope, AudioUnitElement inElement, UInt32 &outDataSize, Boolean &outWritable)
queries from host about plugin properties
Definition: aufxplugin.cpp:732
void initAUParametersWithPluginCore()
setup the AU parameter list with the plugin core's parameter list
Definition: aufxplugin.cpp:315
std::map< std::string, CustomViewController * > customViewControllerMap
map of custom view controllers
Definition: aufxplugin.h:630
std::atomic< bool > writingQueueA
atomic flag for toggling buffers
Definition: aufxplugin.h:792
void clearEvents()
Definition: aufxplugin.h:694
virtual Float64 GetLatency()
Definition: aufxplugin.h:134
virtual OSStatus HandleControlChange(UInt8 inChannel, UInt8 inController, UInt8 inValue, UInt32 inStartFrame)
specialized MIDI handler for only this message; CURRENTLY NOT USED, see HandleMidiEvent ...
Definition: aufxplugin.cpp:1117
virtual double getNormalizedPluginParameter(int32_t controlID)
Definition: aufxplugin.h:468
virtual ComponentResult GetPresets(CFArrayRef *outData) const
return a static array of preset information structures
Definition: aufxplugin.cpp:943
void * inMessageData
incoming message data (interpretation depends on message)
Definition: pluginstructures.h:559
int sidechainChannelCount
num sidechain channels
Definition: aufxplugin.h:280
virtual ComponentResult RestoreState(CFPropertyListRef inData)
called when a user preset is updated; may also be called during init; note the call sequence depends ...
Definition: aufxplugin.cpp:265
std::vector< GUIParameter > guiParameters
list of updates
Definition: pluginstructures.h:373
virtual OSStatus HandleMidiEvent(UInt8 status, UInt8 channel, UInt8 data1, UInt8 data2, UInt32 inStartFrame)
specialized MIDI handler to add events to the plugin's queue
Definition: aufxplugin.cpp:1139
virtual bool registerSubcontroller(std::string subcontrollerName, ICustomView *customViewConnector)
Definition: aufxplugin.h:483
void setCustomViewPtr(ICustomView *_customViewIF)
Definition: aufxplugin.h:397
CustomViewController * getCustomSubController(ICustomView *customViewConnector)
Definition: AAXPluginParameters.h:734
std::queue< midiEvent > midiEventQueueA
queue A
Definition: aufxplugin.h:790
virtual OSStatus GetProperty(AudioUnitPropertyID inID, AudioUnitScope inScope, AudioUnitElement inElement, void *outData)
queries from host to get property information
Definition: aufxplugin.cpp:783
virtual bool guiDidOpen()
Definition: aufxplugin.h:579
The PluginCore object is the default PluginBase derived object for ASPiK projects. Note that you are fre to change the name of this object (as long as you change it in the compiler settings, etc...)
Definition: plugincore.h:43
virtual ~GUIPluginConnector()
Definition: aufxplugin.h:436
virtual void sendMessage(void *data)
Definition: pluginstructures.h:1162
The PluginParameter object stores all of the data needed for any type of plugin parameter. It is a large object, but it is not complex as it really just stores LOTS of information about plugin parameters.
Definition: pluginparameter.h:51
Information that defines a single GUI parameter's possible values and ID.
Definition: pluginstructures.h:291
void clearQueueBEvents()
Definition: aufxplugin.h:711
The AUFXPlugin is the ASPiK plugin shell for Audio Units plugin. It contains the plugin kernel and al...
Definition: aufxplugin.h:70
PluginCore * pluginCore
the core object to send MIDI messages to
Definition: aufxplugin.h:789
GUIPluginConnector * guiPluginConnector
GUI -> Plugin interface.
Definition: aufxplugin.h:265
GUIPluginConnector(AUFXPlugin *_auInstance, PluginCore *_pluginCore)
Definition: aufxplugin.h:433
~AUFXPlugin()
destructor for plugin object
Definition: aufxplugin.cpp:117
base class interface file for ASPiK plugincore object
double actualValue
actual value
Definition: pluginstructures.h:300
Information from the host that is updated on each buffer process cycle; includes BPM, time signature, SMPTE and other data. The values in the stock structure are consistent across most APIs, however others may be added (commnted out here)
Definition: pluginstructures.h:729
guiMessage
Use this enum to send custom messages from the GUI to the AU plugin. This is the VSTGUI-approved mech...
Definition: aufxplugin.h:44
virtual ComponentResult SetParameter(AudioUnitParameterID inID, AudioUnitScope inScope, AudioUnitElement inElement, AudioUnitParameterValue inValue, UInt32 inBufferOffsetInFrames)
this just calls base class
Definition: aufxplugin.cpp:604
double getNormalizedControlValueWithActualValue(double actualValue)
get the new normalized control value as if it were set with an actual value
Definition: pluginparameter.h:342
virtual void updateView()=0
double getAUParameter(unsigned int controlID)
safely get a parameter value
Definition: aufxplugin.cpp:302
virtual bool SupportsTail()
Definition: aufxplugin.h:117
std::string inMessageString
incoming message data as a std::string (interpretation depends on message)
Definition: pluginstructures.h:562
Custom interface to send the plugin shell a message from plugin core.
Definition: pluginstructures.h:1289
The PluginHostConnector implements the IPluginHostConnector interface for the plugin shell object...
Definition: AAXPluginParameters.h:380
float ** sidechainInputBuffers
de-interleaved incoming audio sidechain buffers
Definition: aufxplugin.h:284
virtual void sendHostMessage(const HostMessageInfo &hostMessageInfo)
process a message; by default it processes sendGUIUpdate to safely send a parameter change event but ...
Definition: aufxplugin.h:323
const ICustomView * getCustomViewPtr()
Definition: aufxplugin.h:400
virtual ComponentResult GetParameterValueStrings(AudioUnitScope inScope, AudioUnitParameterID inParameterID, CFArrayRef *outStrings)
get parameter string-lists (for string-list params only)
Definition: aufxplugin.cpp:690
customViewControllerMap customSubControllerMap
map of custom sub-controllers
Definition: AAXPluginParameters.h:732
virtual void pushDataValue(double data)
Definition: pluginstructures.h:1152
virtual void sendMessage(void *data)
Definition: aufxplugin.h:390
int currentPreset
current preset's index value
Definition: aufxplugin.h:288
virtual bool guiTimerPing()
Definition: aufxplugin.h:605
Information about a MIDI event.
Definition: pluginstructures.h:449
bool hasSidechain
sidechain flag
Definition: aufxplugin.h:278