ASPiK SDK
Loading...
Searching...
No Matches
pluginstructures.h
Go to the documentation of this file.
1// -----------------------------------------------------------------------------
2// ASPiK Plugin Kernel File: pluginstructures.h
3//
12// -----------------------------------------------------------------------------
13#ifndef _pluginstructures_h
14#define _pluginstructures_h
15
16// --- support multichannel operation up to 128 channels
17#define MAX_CHANNEL_COUNT 128
18
19#include <string>
20#include <sstream>
21#include <vector>
22#include <stdint.h>
23
24#include "readerwriterqueue.h"
25#include "atomicops.h"
26
28class IGUIWindowFrame;
29class IGUIView;
30
31#ifdef AUPLUGIN
32#import <CoreFoundation/CoreFoundation.h>
33#import <AudioUnit/AudioUnit.h>
34#import <AudioToolbox/AudioToolbox.h>
35
36typedef struct
37{
38 void* pWindow;
39 float width;
40 float height;
41 AudioUnit au;
42 IGUIWindowFrame* pGUIFrame;
43 IGUIView* pGUIView;
44} VIEW_STRUCT;
45#endif
46
47
62{
63 kFXPlugin,
64 kSynthPlugin
65};
66
82{
83 aaxPlugInCategory_None = 0x00000000,
84 aaxPlugInCategory_EQ = 0x00000001,
98};
99
115{
116 kCFNone,
117 kCFMono,
118 kCFStereo,
119 kCFLCR,
120 kCFLCRS,
121 kCFQuad,
122 kCF5p0,
123 kCF5p1,
124 kCF6p0,
125 kCF6p1,
126 kCF7p0Sony,
127 kCF7p0DTS,
128 kCF7p1Sony,
129 kCF7p1DTS,
130 kCF7p1Proximity,
131
132 /* the following are NOT directly suppported by AAX/AU */
133 kCF8p1,
134 kCF9p0,
135 kCF9p1,
136 kCF10p0,
137 kCF10p1,
138 kCF10p2,
139 kCF11p0,
140 kCF11p1,
141 kCF12p2,
142 kCF13p0,
143 kCF13p1,
144 kCF22p2,
145};
146
159{
160 GUIKnobGraphic,
161 GUI2SSButtonStyle,
162 EnableMIDIControl,
163 MIDIControlChannel,
164 MIDIControlIndex,
165 midiControlData,
166 guiControlData
167};
168
181{
182 ResetInfo()
183 : sampleRate(44100)
184 , bitDepth(16) {}
185
186 ResetInfo(double _sampleRate,
187 uint32_t _bitDepth)
188 : sampleRate(_sampleRate)
189 , bitDepth(_bitDepth) {}
190
191 double sampleRate = 0.0;
192 uint32_t bitDepth = 0;
193};
194
207{
209 : aaxManufacturerID(0) /* change this in the plugin core constructor */
210 , aaxProductID(0) /* change this in the plugin core constructor */
211 , aaxEffectID("")
212 , aaxPluginCategoryCode(aaxPlugInCategory::aaxPlugInCategory_Effect)
213 , fourCharCode(0)
214 , vst3FUID("")
217 , vst3BundleID("")
218 , auBundleID("")
219 {}
220
221 APISpecificInfo& operator=(const APISpecificInfo& data) // need this override for collections to work
222 {
223 if (this == &data)
224 return *this;
225
231
233 vst3FUID = data.vst3FUID;
234
238 auBundleID = data.auBundleID;
240
241 return *this;
242 }
243
244 uint32_t aaxManufacturerID = 0;
245 uint32_t aaxProductID = 0;
246 std::string aaxEffectID;
247 std::string aaxBundleID;
249
250 // --- common to AU and AAX
251 int fourCharCode = 0;
252
253 // --- VST3
254 std::string vst3FUID;
257 std::string vst3BundleID;
258
259 // --- AU
260 std::string auBundleID;
261 std::string auBundleName;
262
263 };
264
277{
279 : vectorA(0.0)
280 , vectorB(0.0)
281 , vectorC(0.0)
282 , vectorD(0.0)
283 , vectorACMix(0.0)
284 , vectorBDMix(0.0) {}
285
286 VectorJoystickData(double _vectorA, double _vectorB, double _vectorC, double _vectorD, double _vectorACMix, double _vectorBDMix)
287 : vectorA(_vectorA)
288 , vectorB(_vectorB)
289 , vectorC(_vectorC)
290 , vectorD(_vectorD)
291 , vectorACMix(_vectorACMix)
292 , vectorBDMix(_vectorBDMix) {}
293
294 VectorJoystickData& operator=(const VectorJoystickData& vsData) // need this override for collections to work
295 {
296 if (this == &vsData)
297 return *this;
298
299 vectorA = vsData.vectorA;
300 vectorB = vsData.vectorB;
301 vectorC = vsData.vectorC;
302 vectorD = vsData.vectorD;
303
304 vectorACMix = vsData.vectorACMix;
305 vectorBDMix = vsData.vectorBDMix;
306
307 return *this;
308 }
309
310 double vectorA = 0.0;
311 double vectorB = 0.0;
312 double vectorC = 0.0;
313 double vectorD = 0.0;
314
315 double vectorACMix = 0.0;
316 double vectorBDMix = 0.0;
317};
318
319
332{
334 : controlID(0)
335 , actualValue(0.0)
336 , useCustomData(0)
337 , customData(0) {}
338
339 GUIParameter& operator=(const GUIParameter& data) // need this override for collections to work
340 {
341 if (this == &data)
342 return *this;
343
344 controlID = data.controlID;
347 customData = data.customData;
348
349 return *this;
350 }
351
352 uint32_t controlID = 0;
353 double actualValue = 0.0;
354 bool useCustomData = false;
355
356 // --- for custom drawing, or other custom data
357 void* customData = nullptr;
358};
359
372{
374 : controlID(0)
375 , actualValue(0.0){}
376
377 PresetParameter (uint32_t _controlID, double _actualValue)
378 : controlID(_controlID)
379 , actualValue(_actualValue){}
380
381 PresetParameter& operator=(const PresetParameter& data) // need this override for collections to work
382 {
383 if (this == &data)
384 return *this;
385
386 controlID = data.controlID;
388 return *this;
389 }
390
391 uint32_t controlID = 0;
392 double actualValue = 0.0;
393};
394
407{
408 PresetInfo(uint32_t _presetIndex, const char* _name)
409 : presetIndex(_presetIndex)
410 , presetName(_name) {}
411
412 PresetInfo& operator=(const PresetInfo& data) // need this override for collections to work
413 {
414 if (this == &data)
415 return *this;
416
418 presetName = data.presetName;
420
421 return *this;
422 }
423
424 uint32_t presetIndex = 0;
425 std::string presetName;
426
427 std::vector<PresetParameter> presetParameters;
428};
429
444{
445 GUIUpdateData& operator=(const GUIUpdateData& data) // need this override for collections to work
446 {
447 if (this == &data)
448 return *this;
449
452 customData = data.customData;
454
455 return *this;
456 }
457
458 uint32_t guiUpdateCode = -1;
459
460 // --- for control updates
461 std::vector<GUIParameter> guiParameters;
462
463 // --- for custom draw updates (graphs, etc...)
464 void* customData = nullptr;
465
466 // --- flag
467 bool useCustomData = false;
468};
469
483enum hostMessage { sendGUIUpdate, sendRAFXStatusWndText };
484
486{
488 : hostMessage(0){}
489
490 HostMessageInfo& operator=(const HostMessageInfo& data) // need this override for collections to work
491 {
492 if (this == &data)
493 return *this;
494
495 hostMessage = data.hostMessage;
496 guiParameter = data.guiParameter;
497 guiUpdateData = data.guiUpdateData;
498 rafxStatusWndText = data.rafxStatusWndText;
499
500 return *this;
501 }
502
503 uint32_t hostMessage = 0;
504 GUIParameter guiParameter; /* for single param updates */
505
506 // --- for GUI messages
507 GUIUpdateData guiUpdateData; /* for multiple param updates */
508 std::string rafxStatusWndText;
509};
510
511
524{
526 : inputChannelFormat(kCFStereo)
527 , outputChannelFormat(kCFStereo) {}
528
529 ChannelIOConfig (uint32_t _inputChannelFormat,
530 uint32_t _outputChannelFormat)
531 : inputChannelFormat(_inputChannelFormat)
532 , outputChannelFormat(_outputChannelFormat){}
533
534 ChannelIOConfig& operator=(const ChannelIOConfig& data) // need this override for collections to work
535 {
536 if (this == &data)
537 return *this;
538
541
542 return *this;
543 }
544
545 uint32_t inputChannelFormat = kCFStereo;
546 uint32_t outputChannelFormat = kCFStereo;
547
548};
549
562{
563 midiEvent(uint32_t _midiMessage, uint32_t _midiChannel, uint32_t _midiData1, uint32_t _midiData2, uint32_t _midiSampleOffset)
564 : midiMessage(_midiMessage)
565 , midiChannel(_midiChannel)
566 , midiData1(_midiData1)
567 , midiData2(_midiData2)
568 , midiSampleOffset(_midiSampleOffset)
569 {
572 midiIsDirty = false;
573 auxUintData1 = 0;
574 auxUintData2 = 0;
575 auxIntData1 = -1;
576 auxIntData2 = -1;
577 auxDoubleData1 = 0.0;
578 auxDoubleData2 = 0.0;
579 }
580
581 midiEvent(uint32_t _midiMessage, uint32_t _midiChannel, uint32_t _midiData1, uint32_t _midiData2, uint32_t _midiSampleOffset, double _audioTimeStamp)
582 : midiMessage(_midiMessage)
583 , midiChannel(_midiChannel)
584 , midiData1(_midiData1)
585 , midiData2(_midiData2)
586 , midiSampleOffset(_midiSampleOffset)
587 , audioTimeStamp(_audioTimeStamp)
588 {
591 midiIsDirty = false;
592 auxUintData1 = 0;
593 auxUintData2 = 0;
594 auxIntData1 = -1;
595 auxIntData2 = -1;
596 auxDoubleData1 = 0.0;
597 auxDoubleData2 = 0.0;
598 }
599
600 midiEvent ()
601 : midiMessage(0)
602 , midiChannel(0)
603 , midiData1(0)
604 , midiData2(0)
606 , auxUintData1(0)
607 , auxUintData2(0)
608 , auxIntData1(-1)
609 , auxIntData2(-1)
610 , auxDoubleData1(0.0)
611 , auxDoubleData2(0.0)
614 , midiIsDirty(0)
615 , audioTimeStamp(0.0){}
616
617 midiEvent& operator=(const midiEvent& data) // need this override for collections to work
618 {
619 if (this == &data)
620 return *this;
621
624 midiData1 = data.midiData1;
625 midiData2 = data.midiData2;
637
638 return *this;
639 }
640
641 uint32_t midiMessage = 0;
642 uint32_t midiChannel = 0;
643 uint32_t midiData1 = 0;
644 uint32_t midiData2 = 0;
645 uint32_t midiSampleOffset = 0;
646 uint32_t auxUintData1 = 0;
647 uint32_t auxUintData2 = 0;
648 int32_t auxIntData1 = 0;
649 int32_t auxIntData2 = 0;
650 double auxDoubleData1 = 0.0;
651 double auxDoubleData2 = 0.0;
654 bool midiIsDirty = false;
655 double audioTimeStamp = 0.0;
656};
657
658
671 PLUGINGUI_DIDOPEN, /* called after successful population of GUI frame, NOT called with GUI_USER_CUSTOMOPEN*/
672 PLUGINGUI_WILLCLOSE, /* called before window is destroyed, NOT called with GUI_USER_CUSTOM_CLOSE */
673 PLUGINGUI_TIMERPING, /* timer ping for custom views */
674 PLUGINGUI_REGISTER_CUSTOMVIEW, /* register a custom view */
675 PLUGINGUI_DE_REGISTER_CUSTOMVIEW, /* un-register a custom view */
676 PLUGINGUI_REGISTER_SUBCONTROLLER, /* register a subcontroller */
677 PLUGINGUI_DE_REGISTER_SUBCONTROLLER, /* un-register a subcontroller */
678 PLUGINGUI_QUERY_HASUSERCUSTOM, /* CUSTOM GUI - reply in bHasUserCustomView */
679 PLUGINGUI_USER_CUSTOMOPEN, /* CUSTOM GUI - create your custom GUI, you must supply the code */
680 PLUGINGUI_USER_CUSTOMCLOSE, /* CUSTOM GUI - destroy your custom GUI, you must supply the code */
681 PLUGINGUI_USER_CUSTOMSYNC, /* CUSTOM GUI - re-sync the GUI */
682 PLUGINGUI_EXTERNAL_SET_NORMVALUE, // for VST3??
683 PLUGINGUI_EXTERNAL_SET_ACTUALVALUE,
684 PLUGINGUI_EXTERNAL_GET_NORMVALUE, /* currently not used */
685 PLUGINGUI_EXTERNAL_GET_ACTUALVALUE,
686 PLUGINGUI_PARAMETER_CHANGED, /* for pluginCore->guiParameterChanged(nControlIndex, fValue); */
687 PLUGIN_QUERY_DESCRIPTION, /* fill in a Rafx2PluginDescriptor for host */
688 PLUGIN_QUERY_PARAMETER, /* fill in a Rafx2PluginParameter for host inMessageData = index of parameter*/
689 PLUGIN_QUERY_TRACKPAD_X,
690 PLUGIN_QUERY_TRACKPAD_Y,
691};
692
693
706{
707 MessageInfo ()
708 : message(0)
709 , inMessageData(0)
710 , outMessageData(0){}
711
712 MessageInfo (uint32_t _message)
713 : message(_message)
714 , inMessageData(0)
715 , outMessageData(0)
716 {}
717
718 MessageInfo& operator=(const MessageInfo& data) // need this override for collections to work
719 {
720 if (this == &data)
721 return *this;
722
723 message = data.message;
728
729 return *this;
730 }
731
732 uint32_t message = 0;
733 void* inMessageData = nullptr;
734 void* outMessageData = nullptr;
735
736 std::string inMessageString;
737 std::string outMessageString;
738};
739
754{
755 PluginInfo() {}
756
757 PluginInfo& operator=(const PluginInfo& data) // need this override for collections to work
758 {
759 if (this == &data)
760 return *this;
761
762 pathToDLL = data.pathToDLL;
763
764 return *this;
765 }
766
767 const char* pathToDLL;
768};
769
770
783{
785 : window(0)
787 , guiWindowFrame(0)
788 , width(0.0)
789 , height(0.0)
790 { }
791
792 CreateGUIInfo(void* _window, IGUIPluginConnector* _guiPluginConnector, IGUIWindowFrame* _guiWindowFrame)
793 : window(_window)
794 , guiPluginConnector(_guiPluginConnector)
795 , guiWindowFrame(_guiWindowFrame)
796 , width(0.0)
797 , height(0.0)
798 { }
799
800 CreateGUIInfo& operator=(const CreateGUIInfo& data) // need this override for collections to work
801 {
802 if (this == &data)
803 return *this;
804
805 window = data.window;
808 width = data.width;
809 height = data.height;
810
811 return *this;
812 }
813
814 void* window = nullptr;
817
818 // --- returned
819 double width = 0.0;
820 double height = 0.0;
821};
822
835{
837 : isSmoothing(0)
839 , loadingPreset(0)
842 , applyTaper(1){}
843
844 ParameterUpdateInfo(bool _isSmoothing, bool _isVSTSampleAccurateUpdate)
845 : isSmoothing(_isSmoothing)
846 , isVSTSampleAccurateUpdate(_isVSTSampleAccurateUpdate) {
847 loadingPreset = false;
848 boundVariableUpdate = false;
849 bufferProcUpdate = false;
850 applyTaper = true;
851 }
852
853 ParameterUpdateInfo& operator=(const ParameterUpdateInfo& data) // need this override for collections to work
854 {
855 if (this == &data)
856 return *this;
857
863 applyTaper = data.applyTaper;
864
865 return *this;
866 }
867
868 bool isSmoothing = false;
870 bool loadingPreset = false;
871 bool boundVariableUpdate = false;
872 bool bufferProcUpdate = false;
873 bool applyTaper = true;
874};
875
887enum attributeType { isFloatAttribute, isDoubleAttribute, isIntAttribute, isUintAttribute, isBoolAttribute, isVoidPtrAttribute, isStringAttribute };
888
901{
902 float f;
903 double d;
904 int n;
905 unsigned int u;
906 bool b;
907 void* vp;
908};
909
923{
925 : attributeID(0)
926 { memset(&value, 0, sizeof(attributeValue)); }
927
928 AuxParameterAttribute(uint32_t _attributeID)
929 : attributeID(_attributeID) { }
930
931 AuxParameterAttribute& operator=(const AuxParameterAttribute& data) // need this override for collections to work
932 {
933 if (this == &data)
934 return *this;
935
936 value = data.value;
938 return *this;
939 }
940
941 void reset(uint32_t _attributeID) { memset(&value, 0, sizeof(attributeValue)); attributeID = _attributeID; }
942
943 void setFloatAttribute(float f) { value.f = f; }
944 void setDoubleAttribute(double d) { value.d = d; }
945 void setIntAttribute(int n) { value.n = n; }
946 void setUintAttribute(unsigned int u) { value.u = u; }
947 void setBoolAttribute(bool b) { value.b = b; }
948 void setVoidPtrAttribute(void* vp) { value.vp = vp; }
949
950 float getFloatAttribute( ) { return value.f; }
951 double getDoubleAttribute( ) { return value.d; }
952 int getIntAttribute( ) { return value.n; }
953 unsigned int getUintAttribute( ) { return value.u; }
954 bool getBoolAttribute( ) { return value.b; }
955 void* getVoidPtrAttribute( ) { return value.vp; }
956
958 uint32_t attributeID = 0;
959};
960
974{
975 // --- common to all APIs
976 unsigned long long uAbsoluteFrameBufferIndex = 0;
978 double dBPM = 0.0;
979 float fTimeSigNumerator = 0.f;
980 uint32_t uTimeSigDenomintor = 0;
981
982 // --- VST3 Specific: note these use same variable names as VST3::struct ProcessContext
983 // see ..\VST3 SDK\pluginterfaces\vst\ivstprocesscontext.h for information on decoding these
984 //
985 uint32_t state = 0;
986 long long systemTime = 0;
987 double continousTimeSamples = 0.0;
988 double projectTimeMusic = 0.0;
989 double barPositionMusic = 0.0;
990 double cycleStartMusic = 0.0;
991 double cycleEndMusic = 0.0;
992 uint32_t samplesToNextClock = 0;
993 bool enableVSTSampleAccurateAutomation = false;
994 /*
995 IF you need SMPTE information, you need to get the information yourself at the start of the process( ) function
996 where the above values are filled out. See the variables here in VST3 SDK\pluginterfaces\vst\ivstprocesscontext.h:
997
998 int32 smpteOffsetSubframes = 0; // --- SMPTE (sync) offset in subframes (1/80 of frame)
999 FrameRate frameRate; // --- frame rate
1000 */
1001
1002 // --- AU Specific
1003 // see AUBase.h for definitions and information on decoding these
1004 //
1005 double dCurrentBeat = 0.0;
1006 bool bIsPlayingAU = false;
1010 bool bIsCycling = false;
1011 double dCycleStartBeat = 0.0;
1012 double dCycleEndBeat = 0.0;
1013
1014 // --- AAX Specific
1015 // see AAX_ITransport.h for definitions and information on decoding these
1016 bool bIsPlayingAAX = false;
1017 long long nTickPosition = 0;
1018 bool bLooping = false;
1019 long long nLoopStartTick = 0;
1020 long long nLoopEndTick = 0;
1021 /*
1022 NOTE: there are two optional functions that cause a performance hit in AAX; these are commented outs;
1023 if you decide to use them, you should re-locate them to a non-realtime thread. Use at your own risk!
1024
1025 int32_t nBars = 0;
1026 int32_t nBeats = 0;
1027 int64_t nDisplayTicks = 0;
1028 int64_t nCustomTickPosition = 0;
1029
1030 // --- There is a minor performance cost associated with using this API in Pro Tools. It should NOT be used excessively without need
1031 midiTransport->GetBarBeatPosition(&nBars, &nBeats, &nDisplayTicks, nAbsoluteSampleLocation);
1032
1033 // --- There is a minor performance cost associated with using this API in Pro Tools. It should NOT be used excessively without need
1034 midiTransport->GetCustomTickPosition(&nCustomTickPosition, nAbsoluteSampleLocation);
1035
1036 NOTE: if you need SMPTE or metronome information, you need to get the information yourself at the start of the ProcessAudio( ) function
1037 see AAX_ITransport.h for definitions and information on decoding these
1038 virtual AAX_Result GetTimeCodeInfo(AAX_EFrameRate* oFrameRate, int32_t* oOffset) const = 0;
1039 virtual AAX_Result GetFeetFramesInfo(AAX_EFeetFramesRate* oFeetFramesRate, int64_t* oOffset) const = 0;
1040 virtual AAX_Result IsMetronomeEnabled(int32_t* isEnabled) const = 0;
1041 */
1042};
1043
1044// --- block size constants
1045const uint32_t DEFAULT_AUDIO_BLOCK_SIZE = 64;
1046const uint32_t WANT_WHOLE_BUFFER = 0; // --- reserved for full buffer
1047
1063{
1064 ProcessBlockInfo() { }
1065
1066 float** inputs = nullptr;
1067 float** outputs = nullptr;
1068 float** auxInputs = nullptr;
1069 float** auxOutputs = nullptr;
1070
1071 uint32_t numAudioInChannels = 0;
1072 uint32_t numAudioOutChannels = 0;
1075
1076 uint32_t currentBlock = 0;
1077 uint32_t blockSize = 64;
1078 uint32_t blockStartIndex = 0;
1079 uint32_t blockEndIndex = 0;
1080
1083 midiEventList.push_back(event);
1084 }
1085 void clearMidiEvents() {
1086 midiEventList.clear();
1087 }
1088 uint32_t getMidiEventCount() {
1089 return midiEventList.size();
1090 }
1091 midiEvent* getMidiEvent(uint32_t index) {
1092 if (index >= getMidiEventCount())
1093 return nullptr;
1094
1095 return &midiEventList[index];
1096 }
1097
1100 double BPM = 0.0;
1101 double timeSigNumerator = 0.0;
1102 uint32_t timeSigDenomintor = 0;
1103
1104protected:
1106 std::vector<midiEvent> midiEventList;
1107};
1108
1109class IMidiEventQueue;
1110
1123{
1125
1126 /*
1127 AAX -- MUST be float
1128 AU --- Float32
1129 RAFX2 --- float
1130 VST3 --- float OR double
1131 * \brief Subscribes an audio input context field
1132 *
1133 * Defines an audio in port for host-provided information in the algorithm's
1134 * context structure.
1135 *
1136 * - Data type: float**
1137 * - Data kind: An array of float arrays, one for each input channel
1138 *
1139 */
1140 // --- audio inputs and outputs (arrays of channel-array pointers)
1141 float** inputs = nullptr;
1142 float** outputs = nullptr;
1143 float** auxInputs = nullptr;
1144 float** auxOutputs = nullptr;
1145 uint32_t numAudioInChannels = 0;
1146 uint32_t numAudioOutChannels = 0;
1149
1150 uint32_t numFramesToProcess = 0;
1153
1154 // --- for future use, VCVRack
1155 float* controlSignalInputs = nullptr;
1156 float* controlSignalOutputs = nullptr;
1159
1160 // --- should make these const?
1161 HostInfo* hostInfo = nullptr;
1163};
1164
1177{
1178 ProcessFrameInfo(){ }
1179
1180 float* audioInputFrame = nullptr;
1181 float* audioOutputFrame = nullptr;
1182 float* auxAudioInputFrame = nullptr;
1183 float* auxAudioOutputFrame = nullptr;
1184
1185 uint32_t numAudioInChannels = 0;
1186 uint32_t numAudioOutChannels = 0;
1189
1192 uint32_t currentFrame = 0;
1193
1194 // --- for future use, VCVRack
1195 float* controlSignalInputs = nullptr;
1196 float* controlSignalOutputs = nullptr;
1199
1200 // --- should make these const?
1201 HostInfo* hostInfo = nullptr;
1203};
1204
1217{
1219 : sampleRate(44100)
1220 , bitDepth(16){}
1221
1222 AudioProcDescriptor (double _sampleRate,
1223 uint32_t _bitDepth)
1224 : sampleRate(_sampleRate)
1225 , bitDepth(_bitDepth){}
1226
1227 AudioProcDescriptor& operator=(const AudioProcDescriptor& data) // need this override for collections to work
1228 {
1229 if (this == &data)
1230 return *this;
1231
1232 sampleRate = data.sampleRate;
1233 bitDepth = data.bitDepth;
1234 return *this;
1235 }
1236
1237 double sampleRate = 44100.0;
1238 uint32_t bitDepth = 16;
1239};
1240
1241
1254{
1256 : pluginName("Long Plugin Name") // max 31 chars
1257 , shortPluginName("ShortPIName") // max 15 chars
1258 , vendorName("Plugin Developer")
1259 , pluginTypeCode(pluginType::kFXPlugin) // FX or synth
1260 , hasSidechain(0)
1261 , processFrames(1) /* default operation */
1262 , wantsMIDI(1) /* default operation */
1263 , hasCustomGUI(1)
1264 , latencyInSamples(0)
1265 , tailTimeInMSec(0)
1266 , infiniteTailVST3(0)
1268 , supportedIOCombinations(0)
1270 , supportedAuxIOCombinations(0)
1271 {}
1272
1273 // --- string descriptors
1274 std::string pluginName;
1275 std::string shortPluginName;
1276 std::string vendorName;
1277 uint32_t pluginTypeCode = 0;
1278
1279 bool hasSidechain = false;
1280 bool processFrames = true;
1281 bool wantsMIDI = true;
1282 bool hasCustomGUI = true;
1283 uint32_t latencyInSamples = 0;
1284 double tailTimeInMSec = 0.0;
1285 bool infiniteTailVST3 = false;
1286
1288 ChannelIOConfig* supportedIOCombinations;
1289
1291 ChannelIOConfig* supportedAuxIOCombinations;
1292
1294 uint32_t getDefaultChannelIOConfigForChannelCount(uint32_t channelCount)
1295 {
1296 switch(channelCount)
1297 {
1298 case 0:
1299 return kCFNone;
1300 case 1:
1301 return kCFMono;
1302 case 2:
1303 return kCFStereo;
1304 case 3:
1305 return kCFLCR;
1306 case 4:
1307 return kCFQuad; // or kCFLCR
1308 case 5:
1309 return kCF5p0;
1310 case 6:
1311 return kCF5p1; // or kCF6p0
1312 case 7:
1313 return kCF6p1; // or kCF7p0Sony kCF7p0DTS
1314 case 8:
1315 return kCF7p1DTS; // or kCF7p1Sony or kCF7p1Proximity
1316 case 9:
1317 return kCF8p1; // or kCF9p0
1318 case 10:
1319 return kCF9p1; // or kCF10p0
1320 case 11:
1321 return kCF10p1;
1322 case 12:
1323 return kCF11p1; // or kCF10p2
1324 case 13:
1325 return kCF13p0; // or kCF12p2
1326 case 14:
1327 return kCF13p1;
1328 case 24:
1329 return kCF22p2;
1330
1331 default:
1332 return 0;
1333 }
1334 }
1336 uint32_t getChannelCountForChannelIOConfig(uint32_t format)
1337 {
1338 switch(format)
1339 {
1340 case kCFNone:
1341 return 0;
1342
1343 case kCFMono:
1344 return 1;
1345 case kCFStereo:
1346 return 2;
1347 case kCFLCR:
1348 return 3;
1349
1350 case kCFQuad:
1351 case kCFLCRS:
1352 return 4;
1353
1354 case kCF5p0:
1355 return 5;
1356
1357 case kCF5p1:
1358 case kCF6p0:
1359 return 6;
1360
1361 case kCF6p1:
1362 case kCF7p0Sony:
1363 case kCF7p0DTS:
1364 return 7;
1365
1366 case kCF7p1Sony:
1367 case kCF7p1DTS:
1368 case kCF7p1Proximity:
1369 return 8;
1370
1371 case kCF8p1:
1372 case kCF9p0:
1373 return 9;
1374
1375 case kCF9p1:
1376 case kCF10p0:
1377 return 10;
1378
1379 case kCF10p1:
1380 return 11;
1381
1382 case kCF10p2:
1383 case kCF11p1:
1384 return 12;
1385
1386 case kCF13p0:
1387 case kCF12p2:
1388 return 13;
1389
1390 case kCF13p1:
1391 return 14;
1392
1393 case kCF22p2:
1394 return 24;
1395
1396 default:
1397 return 0;
1398 }
1399 return 0;
1400 }
1401};
1402
1415{
1416 JSControl() {}
1417 JSControl& operator=(const JSControl& aControl)
1418 {
1419 if (this == &aControl)
1420 return *this;
1421
1422 trackpadIndex = aControl.trackpadIndex;
1423 midiControl = aControl.midiControl;
1427 joystickValue = aControl.joystickValue;
1431 return *this;
1432 }
1433
1434 int32_t trackpadIndex = -1;
1435 bool midiControl = false;
1436 uint32_t midiControlCommand = 0;
1437 uint32_t midiControlName = 0;
1438 uint32_t midiControlChannel = 0;
1439 double joystickValue = 0.0;
1442 double smoothingTimeInMs = 0.0;
1443};
1444
1445
1446// --------------------------------------------------------------------------------------------------------------------------- //
1447// --- INTERFACES
1448// --------------------------------------------------------------------------------------------------------------------------- //
1449
1462{
1463public:
1465 virtual void updateView() = 0;
1466
1472 virtual void pushDataValue(double data) { }
1473
1482 virtual void sendMessage(void* data) { }
1483};
1484
1497{
1498public:
1500 virtual bool setWindowFrameSize(double left = 0, double top = 0, double right = 0, double bottom = 0) = 0;
1501
1503 virtual bool getWindowFrameSize(double& left, double& top, double& right, double& bottom) = 0;
1504
1506 virtual void enableGUIDesigner(bool enable) { }
1507};
1508
1521{
1522public:
1524 virtual void setGUIWindowFrame(IGUIWindowFrame* frame) = 0;
1525};
1526
1527
1540{
1541public:
1543 virtual bool registerCustomView(std::string customViewName, ICustomView* customViewConnector) = 0;
1544
1546 virtual bool deRegisterCustomView(ICustomView* customViewConnector) = 0;
1547
1549 virtual bool guiDidOpen() = 0;
1550
1552 virtual bool guiWillClose() = 0;
1553
1555 virtual bool guiTimerPing() = 0;
1556
1558 virtual bool registerSubcontroller(std::string subcontrollerName, ICustomView* customViewConnector) { return false; }
1559
1561 virtual bool deRregisterSubcontroller(ICustomView* customViewConnector) { return false; }
1562
1564 virtual uint32_t getNonBoundVariableCount() { return 0; }
1565
1567 virtual uint32_t getNextNonBoundVariableTag(int startTag) { return -1; }
1568
1570 virtual bool checkNonBoundValueChange(int tag, float normalizedValue) { return false; }
1571
1573 virtual void checkSendUpdateGUI(int tag, float actualValue, bool loadingPreset, void* data1 = 0, void* data2 = 0) {}
1574
1576 virtual void parameterChanged(int32_t controlID, double actualValue, double normalizedValue) {}
1577
1579 virtual double getNormalizedPluginParameter(int32_t controlID) { return 0.0; }
1580
1582 virtual void setNormalizedPluginParameter(int32_t controlID, double value) { }
1583
1585 virtual double getActualPluginParameter(int32_t controlID) { return 0.0; }
1586
1588 virtual void setActualPluginParameter(int32_t controlID, double value) { }
1589
1591 virtual void beginParameterChangeGesture(int controlTag){ }
1592
1594 virtual void endParameterChangeGesture(int controlTag){ }
1595};
1596
1597
1610{
1611public:
1613 virtual void sendHostMessage(const HostMessageInfo& hostMessageInfo) = 0;
1614};
1615
1628{
1629public:
1631 virtual uint32_t getEventCount() = 0;
1632
1634 virtual bool fireMidiEvents(uint32_t uSampleOffset) = 0;
1635};
1636
1637
1650{
1651public:
1653 virtual uint32_t getParameterIndex() = 0;
1654
1657 virtual bool getValueAtOffset(long int _sampleOffset, double _previousValue, double& _nextValue) = 0;
1658
1661 virtual bool getNextValue(double& _nextValue) = 0;
1662};
1663
1664// --------------------------------------------------------------------------------------------------------------------------- //
1665// --- HELPER FUNCTIONS
1666// --------------------------------------------------------------------------------------------------------------------------- //
1676inline std::string numberToString(unsigned int number)
1677{
1678 std::ostringstream strm;
1679 strm << number;
1680 std::string str = strm.str();
1681 return str;
1682}
1683
1693inline std::string numberToString(int number)
1694{
1695 std::ostringstream strm;
1696 strm << number;
1697 std::string str = strm.str();
1698 return str;
1699}
1700
1710inline std::string numberToString(float number)
1711{
1712 std::ostringstream strm;
1713 strm << number;
1714 std::string str = strm.str();
1715 return str;
1716}
1717
1727inline std::string numberToString(double number)
1728{
1729 std::ostringstream strm;
1730 strm << number;
1731 std::string str = strm.str();
1732 return str;
1733}
1734
1744inline std::string boolToStdString(bool value)
1745{
1746 std::string returnString;
1747 if (value) returnString.assign("true");
1748 else returnString.assign("false");
1749 return returnString;
1750}
1751
1752
1753#endif //_pluginstructures_h
Custom View interface to allow plugin core to create safe communication channels with GUI custom view...
Definition: pluginstructures.h:1462
virtual void updateView()=0
virtual void pushDataValue(double data)
Definition: pluginstructures.h:1472
virtual void sendMessage(void *data)
Definition: pluginstructures.h:1482
Custom interface so that GUI can pass information to plugin shell in a thread-safe manner.
Definition: pluginstructures.h:1540
virtual bool deRegisterCustomView(ICustomView *customViewConnector)=0
virtual void beginParameterChangeGesture(int controlTag)
Definition: pluginstructures.h:1591
virtual bool registerCustomView(std::string customViewName, ICustomView *customViewConnector)=0
virtual bool guiTimerPing()=0
virtual double getNormalizedPluginParameter(int32_t controlID)
Definition: pluginstructures.h:1579
virtual void setNormalizedPluginParameter(int32_t controlID, double value)
Definition: pluginstructures.h:1582
virtual void endParameterChangeGesture(int controlTag)
Definition: pluginstructures.h:1594
virtual void parameterChanged(int32_t controlID, double actualValue, double normalizedValue)
Definition: pluginstructures.h:1576
virtual void setActualPluginParameter(int32_t controlID, double value)
Definition: pluginstructures.h:1588
virtual double getActualPluginParameter(int32_t controlID)
Definition: pluginstructures.h:1585
virtual bool guiDidOpen()=0
virtual bool deRregisterSubcontroller(ICustomView *customViewConnector)
Definition: pluginstructures.h:1561
virtual bool checkNonBoundValueChange(int tag, float normalizedValue)
Definition: pluginstructures.h:1570
virtual bool guiWillClose()=0
virtual uint32_t getNextNonBoundVariableTag(int startTag)
Definition: pluginstructures.h:1567
virtual bool registerSubcontroller(std::string subcontrollerName, ICustomView *customViewConnector)
Definition: pluginstructures.h:1558
virtual uint32_t getNonBoundVariableCount()
Definition: pluginstructures.h:1564
virtual void checkSendUpdateGUI(int tag, float actualValue, bool loadingPreset, void *data1=0, void *data2=0)
Definition: pluginstructures.h:1573
Custom interface to allow resizing of GUI window; this is mainly used for the GUI designer.
Definition: pluginstructures.h:1521
virtual void setGUIWindowFrame(IGUIWindowFrame *frame)=0
Custom interface to allow resizing of GUI window; this is mainly used for the GUI designer.
Definition: pluginstructures.h:1497
virtual bool setWindowFrameSize(double left=0, double top=0, double right=0, double bottom=0)=0
virtual bool getWindowFrameSize(double &left, double &top, double &right, double &bottom)=0
virtual void enableGUIDesigner(bool enable)
Definition: pluginstructures.h:1506
Double buffered queue for MIDI messages.
Definition: pluginstructures.h:1628
virtual bool fireMidiEvents(uint32_t uSampleOffset)=0
virtual uint32_t getEventCount()=0
Interface for VST3 parameter value update queue (sample accurate automation)
Definition: pluginstructures.h:1650
virtual uint32_t getParameterIndex()=0
virtual bool getValueAtOffset(long int _sampleOffset, double _previousValue, double &_nextValue)=0
virtual bool getNextValue(double &_nextValue)=0
Custom interface to send the plugin shell a message from plugin core.
Definition: pluginstructures.h:1610
virtual void sendHostMessage(const HostMessageInfo &hostMessageInfo)=0
std::string numberToString(unsigned int number)
converts unsigned int value to std::string
Definition: pluginstructures.h:1676
std::string boolToStdString(bool value)
converts bool value to std::string
Definition: pluginstructures.h:1744
auxGUIIdentifier
Identifier enum for aux parameter information. Not used in ASPiK though is used for RAFX plugins (not...
Definition: pluginstructures.h:159
hostMessage
Use this enum to identify a message to send to the plugin shell (host)
Definition: pluginstructures.h:483
channelFormat
Use this enum to identify plugin channel formats. Steinberg calls these "speaker arrangements".
Definition: pluginstructures.h:115
messageType
Message identifier for ASPiK Core messaging system.
Definition: pluginstructures.h:670
pluginType
Use this enum to identify the plugin category.
Definition: pluginstructures.h:62
aaxPlugInCategory
Use this enum to identify the AAX plugin category.
Definition: pluginstructures.h:82
attributeType
AttributeType identifier for ASPiK PluginParameter auxilliary storage system. You are free to impleme...
Definition: pluginstructures.h:887
@ aaxPlugInCategory_Harmonic
Distortion, saturation, and harmonic enhancement.
Definition: pluginstructures.h:90
@ aaxPlugInCategory_SWGenerators
Virtual instruments, metronomes, and other software audio sources.
Definition: pluginstructures.h:95
@ aaxPlugInCategory_Effect
Special effects.
Definition: pluginstructures.h:97
@ aaxPlugInCategory_Dither
Dither, noise shaping, etc.
Definition: pluginstructures.h:92
@ aaxPlugInCategory_Modulation
Phasing, flanging, chorus, etc.
Definition: pluginstructures.h:89
@ aaxPlugInCategory_PitchShift
Pitch processing.
Definition: pluginstructures.h:86
@ aaxPlugInCategory_NoiseReduction
Noise reduction.
Definition: pluginstructures.h:91
@ aaxPlugInCategory_Reverb
Reverberation and room/space simulation.
Definition: pluginstructures.h:87
@ aaxPlugInCategory_WrappedPlugin
Plug-ins wrapped by a thrid party wrapper except synth plug-ins which = AAX_PlugInCategory_SWGenerato...
Definition: pluginstructures.h:96
@ aaxPlugInCategory_Dynamics
Compressor, expander, limiter, etc.
Definition: pluginstructures.h:85
@ aaxPlugInCategory_HWGenerators
Fixed hardware audio sources such as SampleCell.
Definition: pluginstructures.h:94
@ aaxPlugInCategory_SoundField
Pan, auto-pan, upmix and downmix, and surround handling.
Definition: pluginstructures.h:93
@ aaxPlugInCategory_EQ
Equalization.
Definition: pluginstructures.h:84
@ aaxPlugInCategory_Delay
Delay and echo.
Definition: pluginstructures.h:88
Identifiers, GUIDs and other strings and number id values, API specific.
Definition: pluginstructures.h:207
uint32_t aaxManufacturerID
aax manu ID
Definition: pluginstructures.h:244
std::string auBundleName
AU bundle name /* MacOS only: this MUST match the bundle name which is the same as the project name *...
Definition: pluginstructures.h:261
std::string auBundleID
AU bundle ID /* MacOS only: this MUST match the bundle identifier in your info.plist file *‍/.
Definition: pluginstructures.h:260
uint32_t aaxProductID
aax ID
Definition: pluginstructures.h:245
std::string aaxEffectID
aax Effect ID
Definition: pluginstructures.h:246
std::string aaxBundleID
AAX bundle /* MacOS only: this MUST match the bundle identifier in your info.plist file *‍/.
Definition: pluginstructures.h:247
uint32_t vst3SampleAccurateGranularity
sample accuracy granularity (update interval)
Definition: pluginstructures.h:256
uint32_t aaxPluginCategoryCode
aax plugin category
Definition: pluginstructures.h:248
std::string vst3BundleID
VST bundle ID /* MacOS only: this MUST match the bundle identifier in your info.plist file *‍/.
Definition: pluginstructures.h:257
bool enableVST3SampleAccurateAutomation
flag for sample accurate automation
Definition: pluginstructures.h:255
int fourCharCode
the mystic and ancient 4-character code (oooh)
Definition: pluginstructures.h:251
std::string vst3FUID
VST GUID.
Definition: pluginstructures.h:254
Information package about the current DAW session. Sample rate and bit-depth of audio.
Definition: pluginstructures.h:1217
double sampleRate
sample rate
Definition: pluginstructures.h:1237
uint32_t bitDepth
wav file bit depth (not supported in all APIs)
Definition: pluginstructures.h:1238
Information about auxilliary parameter details - purely customizeable. This uses the attributeValue u...
Definition: pluginstructures.h:923
attributeValue value
value in union form
Definition: pluginstructures.h:957
uint32_t attributeID
attribute ID
Definition: pluginstructures.h:958
Structure of a pair of channel format enumerators that set an input/output channel I/O capability.
Definition: pluginstructures.h:524
uint32_t inputChannelFormat
input format for this I/O pair
Definition: pluginstructures.h:545
uint32_t outputChannelFormat
output format for this I/O pair
Definition: pluginstructures.h:546
Structure that is used during GUI creation to safely pass information about the GUI size and interfac...
Definition: pluginstructures.h:783
double width
GUI width in pixels.
Definition: pluginstructures.h:819
IGUIPluginConnector * guiPluginConnector
GUI-to-plugin-shell interface.
Definition: pluginstructures.h:815
void * window
window handle or NSView*
Definition: pluginstructures.h:814
IGUIWindowFrame * guiWindowFrame
GUI-to-frame interface (resizing)
Definition: pluginstructures.h:816
double height
GUI height in pixels.
Definition: pluginstructures.h:820
Information that defines a single GUI parameter's possible values and ID.
Definition: pluginstructures.h:332
double actualValue
actual value
Definition: pluginstructures.h:353
bool useCustomData
custom data flag (reserved for future use)
Definition: pluginstructures.h:354
void * customData
custom data (reserved for future use)
Definition: pluginstructures.h:357
uint32_t controlID
ID value.
Definition: pluginstructures.h:352
Information about a GUI update message; this is for sending GUI control information from the plugin c...
Definition: pluginstructures.h:444
bool useCustomData
unused
Definition: pluginstructures.h:467
void * customData
unused
Definition: pluginstructures.h:464
std::vector< GUIParameter > guiParameters
list of updates
Definition: pluginstructures.h:461
uint32_t guiUpdateCode
unused
Definition: pluginstructures.h:458
Information from the host that is updated on each buffer process cycle; includes BPM,...
Definition: pluginstructures.h:974
uint32_t samplesToNextClock
MIDI Clock Resolution (24 Per Quarter Note), can be negative (nearest)
Definition: pluginstructures.h:992
long long systemTime
system time in nanoseconds (optional)
Definition: pluginstructures.h:986
long long nLoopEndTick
end tick for loop
Definition: pluginstructures.h:1020
double projectTimeMusic
musical position in quarter notes (1.0 equals 1 quarter note)
Definition: pluginstructures.h:988
bool bIsPlayingAU
notorously incorrect in Logic - once set to true, stays stuck there
Definition: pluginstructures.h:1006
long long nTickPosition
"Tick" is represented here as 1/960000 of a quarter note
Definition: pluginstructures.h:1017
bool bTransportStateChanged
only notifies a change, but not what was changed to...
Definition: pluginstructures.h:1007
double barPositionMusic
last bar start position, in quarter notes
Definition: pluginstructures.h:989
bool bIsCycling
looping
Definition: pluginstructures.h:1010
double continousTimeSamples
project time, without loop (optional)
Definition: pluginstructures.h:987
uint32_t uTimeSigDenomintor
time signature denominator
Definition: pluginstructures.h:980
bool bIsPlayingAAX
flag if playing
Definition: pluginstructures.h:1016
float fTimeSigNumerator
time signature numerator
Definition: pluginstructures.h:979
uint32_t nDeltaSampleOffsetToNextBeat
samples to next beat
Definition: pluginstructures.h:1008
double dCycleStartBeat
loop start
Definition: pluginstructures.h:1011
long long nLoopStartTick
start tick for loop
Definition: pluginstructures.h:1019
double dCurrentMeasureDownBeat
current downbeat
Definition: pluginstructures.h:1009
double dBPM
beats per minute, aka "tempo"
Definition: pluginstructures.h:978
double cycleStartMusic
Definition: pluginstructures.h:990
double dCurrentBeat
current DAW beat value
Definition: pluginstructures.h:1005
double dCycleEndBeat
loop end
Definition: pluginstructures.h:1012
double dAbsoluteFrameBufferTime
the time in seconds of the sample index at top of buffer
Definition: pluginstructures.h:977
unsigned long long uAbsoluteFrameBufferIndex
the sample index at top of buffer
Definition: pluginstructures.h:976
uint32_t state
a combination of the values from StatesAndFlags; use to decode validity of other VST3 items in this s...
Definition: pluginstructures.h:985
double cycleEndMusic
cycle end in quarter notes
Definition: pluginstructures.h:991
bool bLooping
looping flag
Definition: pluginstructures.h:1018
Definition: pluginstructures.h:486
Information package a joystick or trackpad GUI interaction.
Definition: pluginstructures.h:1415
bool korgVectorJoystickOrientation
vector joystick orientation
Definition: pluginstructures.h:1440
uint32_t midiControlCommand
MIDI CC type.
Definition: pluginstructures.h:1436
uint32_t midiControlName
MIDI CC.
Definition: pluginstructures.h:1437
bool midiControl
MIDI enabled.
Definition: pluginstructures.h:1435
double joystickValue
joystick value as a double
Definition: pluginstructures.h:1439
bool enableParamSmoothing
param smoothing on joystick (can be CPU abusive)
Definition: pluginstructures.h:1441
int32_t trackpadIndex
trackpad or joystick index
Definition: pluginstructures.h:1434
double smoothingTimeInMs
JS smoothing time.
Definition: pluginstructures.h:1442
uint32_t midiControlChannel
MIDI CC Channel.
Definition: pluginstructures.h:1438
Information that includes the message code as well as the message data.
Definition: pluginstructures.h:706
void * inMessageData
incoming message data (interpretation depends on message)
Definition: pluginstructures.h:733
uint32_t message
message code
Definition: pluginstructures.h:732
std::string inMessageString
incoming message data as a std::string (interpretation depends on message)
Definition: pluginstructures.h:736
void * outMessageData
outgoing message data (interpretation depends on message)
Definition: pluginstructures.h:734
std::string outMessageString
outgoing message data as a std::string (interpretation depends on message)
Definition: pluginstructures.h:737
Information about a paraemeter being updated. Used when bound variables are updated....
Definition: pluginstructures.h:835
bool bufferProcUpdate
update at top of buffer process
Definition: pluginstructures.h:872
bool applyTaper
add tapering to udpate
Definition: pluginstructures.h:873
bool boundVariableUpdate
bound variable is being udpated
Definition: pluginstructures.h:871
bool isVSTSampleAccurateUpdate
param updated with VST sample accurate automation
Definition: pluginstructures.h:869
bool isSmoothing
param is being (bulk) smoothed
Definition: pluginstructures.h:868
bool loadingPreset
a preset is being loaded
Definition: pluginstructures.h:870
Information package about the plugin itself, consisting mainly of simple strings and ID values.
Definition: pluginstructures.h:1254
bool infiniteTailVST3
VST3 infinite tail flag.
Definition: pluginstructures.h:1285
bool processFrames
want frames (default)
Definition: pluginstructures.h:1280
uint32_t pluginTypeCode
FX or synth.
Definition: pluginstructures.h:1277
bool hasCustomGUI
default on
Definition: pluginstructures.h:1282
uint32_t numSupportedIOCombinations
should support at least main 3 combos
Definition: pluginstructures.h:1287
std::string shortPluginName
name (up to 15 chars)
Definition: pluginstructures.h:1275
double tailTimeInMSec
tail time
Definition: pluginstructures.h:1284
uint32_t getDefaultChannelIOConfigForChannelCount(uint32_t channelCount)
Definition: pluginstructures.h:1294
uint32_t getChannelCountForChannelIOConfig(uint32_t format)
Definition: pluginstructures.h:1336
std::string vendorName
manufacturer name
Definition: pluginstructures.h:1276
std::string pluginName
name (up to 31 chars)
Definition: pluginstructures.h:1274
bool wantsMIDI
want MIDI (don't need to actually use it)
Definition: pluginstructures.h:1281
bool hasSidechain
sidechain flag
Definition: pluginstructures.h:1279
uint32_t latencyInSamples
latency
Definition: pluginstructures.h:1283
uint32_t numSupportedAuxIOCombinations
should support at least main 3 combos
Definition: pluginstructures.h:1290
Structure that is used during the base class initilize( ) funciton call, after object instantiation i...
Definition: pluginstructures.h:754
PluginInfo & operator=(const PluginInfo &data)
Definition: pluginstructures.h:757
const char * pathToDLL
complete path to the DLL (component) without trailing backslash
Definition: pluginstructures.h:767
Definition: pluginstructures.h:407
uint32_t presetIndex
preset index
Definition: pluginstructures.h:424
std::string presetName
preset name
Definition: pluginstructures.h:425
std::vector< PresetParameter > presetParameters
list of parameters for this preset
Definition: pluginstructures.h:427
Information that defines a preset value as a control_ID::value data pair.
Definition: pluginstructures.h:372
uint32_t controlID
ID.
Definition: pluginstructures.h:391
double actualValue
value
Definition: pluginstructures.h:392
Structure for setting up block processing.
Definition: pluginstructures.h:1063
double BPM
beats per minute, aka "tempo"
Definition: pluginstructures.h:1100
uint32_t numAuxAudioInChannels
audio input channel count
Definition: pluginstructures.h:1073
uint32_t numAuxAudioOutChannels
audio input channel count
Definition: pluginstructures.h:1074
uint32_t blockSize
size of this block
Definition: pluginstructures.h:1077
float ** inputs
audio input buffers
Definition: pluginstructures.h:1066
float ** auxOutputs
aux outputs - for future use
Definition: pluginstructures.h:1069
float ** outputs
audio output buffers
Definition: pluginstructures.h:1067
uint32_t numAudioOutChannels
audio input channel count
Definition: pluginstructures.h:1072
float ** auxInputs
aux (sidechain) input buffers
Definition: pluginstructures.h:1068
uint32_t currentBlock
index of this block
Definition: pluginstructures.h:1076
double absoluteBufferTime_Sec
the time in seconds of the sample index at top of buffer
Definition: pluginstructures.h:1099
std::vector< midiEvent > midiEventList
queue
Definition: pluginstructures.h:1106
uint32_t numAudioInChannels
audio input channel count
Definition: pluginstructures.h:1071
uint32_t timeSigDenomintor
time signature denominator
Definition: pluginstructures.h:1102
uint32_t blockStartIndex
start
Definition: pluginstructures.h:1078
void pushMidiEvent(midiEvent event)
Definition: pluginstructures.h:1082
double timeSigNumerator
time signature numerator
Definition: pluginstructures.h:1101
uint32_t blockEndIndex
end
Definition: pluginstructures.h:1079
Information package that arrives with each new audio buffer process cycle. Contains everything needed...
Definition: pluginstructures.h:1123
float ** auxInputs
aux (sidechain) input buffers
Definition: pluginstructures.h:1143
uint32_t numAudioOutChannels
audio output channel count
Definition: pluginstructures.h:1146
ChannelIOConfig channelIOConfig
input/output channel I/O configuration pair
Definition: pluginstructures.h:1151
uint32_t numAuxAudioInChannels
aux input channel count
Definition: pluginstructures.h:1147
HostInfo * hostInfo
pointer to host data for this buffer
Definition: pluginstructures.h:1161
float * controlSignalInputs
control signals in (reserved for future use)
Definition: pluginstructures.h:1155
float ** auxOutputs
aux outputs - for future use
Definition: pluginstructures.h:1144
float ** inputs
audio input buffers
Definition: pluginstructures.h:1141
uint32_t numControlSignalInputs
num control signals in (reserved for future use)
Definition: pluginstructures.h:1157
float * controlSignalOutputs
control signals out (reserved for future use)
Definition: pluginstructures.h:1156
uint32_t numFramesToProcess
frame count in this buffer
Definition: pluginstructures.h:1150
ChannelIOConfig auxChannelIOConfig
aux input/output channel I/O configuration pair
Definition: pluginstructures.h:1152
uint32_t numAudioInChannels
audio input channel count
Definition: pluginstructures.h:1145
uint32_t numAuxAudioOutChannels
aux output channel count (not used)
Definition: pluginstructures.h:1148
uint32_t numControlSignalOutputs
num control signals out (reserved for future use)
Definition: pluginstructures.h:1158
IMidiEventQueue * midiEventQueue
MIDI event queue.
Definition: pluginstructures.h:1162
float ** outputs
audio output buffers
Definition: pluginstructures.h:1142
Information package that arrives with each new audio frame; called internally from the buffer process...
Definition: pluginstructures.h:1177
uint32_t numAudioOutChannels
audio input channel count
Definition: pluginstructures.h:1186
uint32_t numControlSignalInputs
num control signals in (reserved for future use)
Definition: pluginstructures.h:1197
IMidiEventQueue * midiEventQueue
MIDI event queue.
Definition: pluginstructures.h:1202
float * controlSignalInputs
control signals in (reserved for future use)
Definition: pluginstructures.h:1195
uint32_t numAuxAudioOutChannels
audio input channel count
Definition: pluginstructures.h:1188
ChannelIOConfig channelIOConfig
input/output channel I/O configuration pair
Definition: pluginstructures.h:1190
float * controlSignalOutputs
control signals out (reserved for future use)
Definition: pluginstructures.h:1196
ChannelIOConfig auxChannelIOConfig
aux input/output channel I/O configuration pair
Definition: pluginstructures.h:1191
uint32_t numControlSignalOutputs
num control signals out (reserved for future use)
Definition: pluginstructures.h:1198
float * auxAudioInputFrame
aux input frame (array)
Definition: pluginstructures.h:1182
uint32_t numAudioInChannels
audio input channel count
Definition: pluginstructures.h:1185
uint32_t numAuxAudioInChannels
audio input channel count
Definition: pluginstructures.h:1187
float * auxAudioOutputFrame
aux output frame (array) for future use
Definition: pluginstructures.h:1183
float * audioInputFrame
audio input frame (array)
Definition: pluginstructures.h:1180
uint32_t currentFrame
index of this frame
Definition: pluginstructures.h:1192
float * audioOutputFrame
audio output frame (array)
Definition: pluginstructures.h:1181
HostInfo * hostInfo
pointer to host data for this buffer
Definition: pluginstructures.h:1201
Sample rate and bit-depth information that is passed during the reset( ) function.
Definition: pluginstructures.h:181
uint32_t bitDepth
bit depth (not available in all APIs)
Definition: pluginstructures.h:192
double sampleRate
sample rate
Definition: pluginstructures.h:191
Incoming data from a vector joystick.
Definition: pluginstructures.h:277
Information about a MIDI event.
Definition: pluginstructures.h:562
double auxDoubleData2
aux data (double)
Definition: pluginstructures.h:651
int midiPitchBendValue
midi pitch bend value (14-bit)
Definition: pluginstructures.h:652
uint32_t auxUintData1
aux data (UINT)
Definition: pluginstructures.h:646
int32_t auxIntData1
aux data (INT)
Definition: pluginstructures.h:648
int32_t auxIntData2
aux data (INT)
Definition: pluginstructures.h:649
uint32_t midiData1
BYTE data 1 as UINT.
Definition: pluginstructures.h:643
float midiNormalizedPitchBendValue
normalized bitch bend value
Definition: pluginstructures.h:653
uint32_t midiMessage
BYTE message as UINT.
Definition: pluginstructures.h:641
double audioTimeStamp
time stamp (not all APIs)
Definition: pluginstructures.h:655
uint32_t auxUintData2
aux data (UINT)
Definition: pluginstructures.h:647
uint32_t midiChannel
BYTE channel as UINT.
Definition: pluginstructures.h:642
double auxDoubleData1
aux data (double)
Definition: pluginstructures.h:650
uint32_t midiSampleOffset
sample offset of midi event within audio buffer
Definition: pluginstructures.h:645
bool midiIsDirty
dirty flag
Definition: pluginstructures.h:654
uint32_t midiData2
BYTE data 2 as UINT.
Definition: pluginstructures.h:644
Attribute value smashed down into a union.
Definition: pluginstructures.h:901