ASPiK SDK
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 
28 class IGUIWindowFrame;
29 class IGUIView;
30 
31 #ifdef AUPLUGIN
32 #import <CoreFoundation/CoreFoundation.h>
33 #import <AudioUnit/AudioUnit.h>
34 #import <AudioToolbox/AudioToolbox.h>
35 
36 typedef 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,
87  aaxPlugInCategory_Reverb = 0x00000008,
88  aaxPlugInCategory_Delay = 0x00000010,
92  aaxPlugInCategory_Dither = 0x00000100,
97  aaxPlugInCategory_Effect = 0x00002000,
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 
180 struct ResetInfo
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 {
208  APISpecificInfo ()
209  : aaxManufacturerID(0) /* change this in the plugin core constructor */
210  , aaxProductID(0) /* change this in the plugin core constructor */
211  , aaxEffectID("")
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 
227  aaxProductID = data.aaxProductID;
228  aaxEffectID = data.aaxEffectID;
229  aaxBundleID = data.aaxBundleID;
231 
232  fourCharCode = data.fourCharCode;
233  vst3FUID = data.vst3FUID;
234 
237  vst3BundleID = data.vst3BundleID;
238  auBundleID = data.auBundleID;
239  auBundleName = data.auBundleName;
240 
241  return *this;
242  }
243 
244  uint32_t aaxManufacturerID = 0;
245  uint32_t aaxProductID = 0;
246  std::string aaxEffectID;
247  std::string aaxBundleID;
248  uint32_t aaxPluginCategoryCode = 0;
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 {
333  GUIParameter()
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;
345  actualValue = data.actualValue;
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 {
373  PresetParameter ()
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;
387  actualValue = data.actualValue;
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 
417  presetIndex = data.presetIndex;
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 
483 enum 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 {
525  ChannelIOConfig ()
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 
561 struct midiEvent
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  {
570  midiPitchBendValue = 0;
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  {
589  midiPitchBendValue = 0;
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)
605  , midiSampleOffset(0)
606  , auxUintData1(0)
607  , auxUintData2(0)
608  , auxIntData1(-1)
609  , auxIntData2(-1)
610  , auxDoubleData1(0.0)
611  , auxDoubleData2(0.0)
612  , midiPitchBendValue(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 
622  midiMessage = data.midiMessage;
623  midiChannel = data.midiChannel;
624  midiData1 = data.midiData1;
625  midiData2 = data.midiData2;
627  auxUintData1 = data.auxUintData1;
628  auxUintData2 = data.auxUintData2;
629  auxIntData1 = data.auxIntData1;
630  auxIntData2 = data.auxIntData2;
635  midiIsDirty = data.midiIsDirty;
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 {
784  CreateGUIInfo()
785  : window(0)
786  , guiPluginConnector(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)
841  , bufferProcUpdate(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 
858  isSmoothing = data.isSmoothing;
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 
887 enum 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;
937  attributeID = data.attributeID;
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 
973 struct HostInfo
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;
1007  bool bTransportStateChanged = 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
1045 const uint32_t DEFAULT_AUDIO_BLOCK_SIZE = 64;
1046 const 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;
1073  uint32_t numAuxAudioInChannels = 0;
1074  uint32_t numAuxAudioOutChannels = 0;
1075 
1076  uint32_t currentBlock = 0;
1077  uint32_t blockSize = 64;
1078  uint32_t blockStartIndex = 0;
1079  uint32_t blockEndIndex = 0;
1080 
1082  void pushMidiEvent(midiEvent event) {
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 
1099  double absoluteBufferTime_Sec = 0.0;
1100  double BPM = 0.0;
1101  double timeSigNumerator = 0.0;
1102  uint32_t timeSigDenomintor = 0;
1103 
1104 protected:
1106  std::vector<midiEvent> midiEventList;
1107 };
1108 
1109 class IMidiEventQueue;
1110 
1123 {
1124  ProcessBufferInfo(){}
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;
1147  uint32_t numAuxAudioInChannels = 0;
1148  uint32_t numAuxAudioOutChannels = 0;
1149 
1150  uint32_t numFramesToProcess = 0;
1153 
1154  // --- for future use, VCVRack
1155  float* controlSignalInputs = nullptr;
1156  float* controlSignalOutputs = nullptr;
1157  uint32_t numControlSignalInputs = 0;
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;
1187  uint32_t numAuxAudioInChannels = 0;
1188  uint32_t numAuxAudioOutChannels = 0;
1189 
1192  uint32_t currentFrame = 0;
1193 
1194  // --- for future use, VCVRack
1195  float* controlSignalInputs = nullptr;
1196  float* controlSignalOutputs = nullptr;
1197  uint32_t numControlSignalInputs = 0;
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 {
1255  PluginDescriptor ()
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;
1425  midiControlName = aControl.midiControlName;
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;
1441  bool enableParamSmoothing = false;
1442  double smoothingTimeInMs = 0.0;
1443 };
1444 
1445 
1446 // --------------------------------------------------------------------------------------------------------------------------- //
1447 // --- INTERFACES
1448 // --------------------------------------------------------------------------------------------------------------------------- //
1449 
1462 {
1463 public:
1465  virtual void updateView() = 0;
1466 
1472  virtual void pushDataValue(double data) { }
1473 
1482  virtual void sendMessage(void* data) { }
1483 };
1484 
1497 {
1498 public:
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 {
1522 public:
1524  virtual void setGUIWindowFrame(IGUIWindowFrame* frame) = 0;
1525 };
1526 
1527 
1540 {
1541 public:
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 {
1611 public:
1613  virtual void sendHostMessage(const HostMessageInfo& hostMessageInfo) = 0;
1614 };
1615 
1628 {
1629 public:
1631  virtual uint32_t getEventCount() = 0;
1632 
1634  virtual bool fireMidiEvents(uint32_t uSampleOffset) = 0;
1635 };
1636 
1637 
1650 {
1651 public:
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 // --------------------------------------------------------------------------------------------------------------------------- //
1676 inline 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 
1693 inline std::string numberToString(int number)
1694 {
1695  std::ostringstream strm;
1696  strm << number;
1697  std::string str = strm.str();
1698  return str;
1699 }
1700 
1710 inline std::string numberToString(float number)
1711 {
1712  std::ostringstream strm;
1713  strm << number;
1714  std::string str = strm.str();
1715  return str;
1716 }
1717 
1727 inline std::string numberToString(double number)
1728 {
1729  std::ostringstream strm;
1730  strm << number;
1731  std::string str = strm.str();
1732  return str;
1733 }
1734 
1744 inline 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
virtual bool getWindowFrameSize(double &left, double &top, double &right, double &bottom)=0
uint32_t numAudioOutChannels
audio input channel count
Definition: pluginstructures.h:1072
virtual double getActualPluginParameter(int32_t controlID)
Definition: pluginstructures.h:1585
uint32_t aaxManufacturerID
aax manu ID
Definition: pluginstructures.h:244
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
Information package about the current DAW session. Sample rate and bit-depth of audio.
Definition: pluginstructures.h:1216
bool boundVariableUpdate
bound variable is being udpated
Definition: pluginstructures.h:871
bool bTransportStateChanged
only notifies a change, but not what was changed to...
Definition: pluginstructures.h:1007
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
Information that includes the message code as well as the message data.
Definition: pluginstructures.h:705
float ** outputs
audio output buffers
Definition: pluginstructures.h:1067
Attribute value smashed down into a union.
Definition: pluginstructures.h:900
float ** auxInputs
aux (sidechain) input buffers
Definition: pluginstructures.h:1068
int32_t auxIntData1
aux data (INT)
Definition: pluginstructures.h:648
uint32_t guiUpdateCode
unused
Definition: pluginstructures.h:458
std::string vst3BundleID
VST bundle ID /* MacOS only: this MUST match the bundle identifier in your info.plist file */...
Definition: pluginstructures.h:257
double dBPM
beats per minute, aka "tempo"
Definition: pluginstructures.h:978
double continousTimeSamples
project time, without loop (optional)
Definition: pluginstructures.h:987
double cycleStartMusic
Definition: pluginstructures.h:990
uint32_t midiControlCommand
MIDI CC type.
Definition: pluginstructures.h:1436
float ** auxOutputs
aux outputs - for future use
Definition: pluginstructures.h:1069
Plug-ins wrapped by a thrid party wrapper except synth plug-ins which = AAX_PlugInCategory_SWGenerato...
Definition: pluginstructures.h:96
bool bIsPlayingAU
notorously incorrect in Logic - once set to true, stays stuck there
Definition: pluginstructures.h:1006
bool hasCustomGUI
default on
Definition: pluginstructures.h:1282
bool bufferProcUpdate
update at top of buffer process
Definition: pluginstructures.h:872
float * auxAudioOutputFrame
aux output frame (array) for future use
Definition: pluginstructures.h:1183
Equalization.
Definition: pluginstructures.h:84
std::vector< PresetParameter > presetParameters
list of parameters for this preset
Definition: pluginstructures.h:427
bool useCustomData
custom data flag (reserved for future use)
Definition: pluginstructures.h:354
uint32_t numAudioInChannels
audio input channel count
Definition: pluginstructures.h:1145
double actualValue
value
Definition: pluginstructures.h:392
virtual void setNormalizedPluginParameter(int32_t controlID, double value)
Definition: pluginstructures.h:1582
std::vector< midiEvent > midiEventList
queue
Definition: pluginstructures.h:1106
float * controlSignalOutputs
control signals out (reserved for future use)
Definition: pluginstructures.h:1156
float ** inputs
audio input buffers
Definition: pluginstructures.h:1066
Dither, noise shaping, etc.
Definition: pluginstructures.h:92
uint32_t pluginTypeCode
FX or synth.
Definition: pluginstructures.h:1277
Interface for VST3 parameter value update queue (sample accurate automation)
Definition: pluginstructures.h:1649
bool wantsMIDI
want MIDI (don&#39;t need to actually use it)
Definition: pluginstructures.h:1281
Information package that arrives with each new audio frame; called internally from the buffer process...
Definition: pluginstructures.h:1176
attributeType
AttributeType identifier for ASPiK PluginParameter auxilliary storage system. You are free to impleme...
Definition: pluginstructures.h:887
int fourCharCode
the mystic and ancient 4-character code (oooh)
Definition: pluginstructures.h:251
double projectTimeMusic
musical position in quarter notes (1.0 equals 1 quarter note)
Definition: pluginstructures.h:988
ChannelIOConfig channelIOConfig
input/output channel I/O configuration pair
Definition: pluginstructures.h:1190
virtual void setActualPluginParameter(int32_t controlID, double value)
Definition: pluginstructures.h:1588
float * audioInputFrame
audio input frame (array)
Definition: pluginstructures.h:1180
uint32_t vst3SampleAccurateGranularity
sample accuracy granularity (update interval)
Definition: pluginstructures.h:256
uint32_t numControlSignalOutputs
num control signals out (reserved for future use)
Definition: pluginstructures.h:1158
uint32_t midiData1
BYTE data 1 as UINT.
Definition: pluginstructures.h:643
uint32_t getChannelCountForChannelIOConfig(uint32_t format)
Definition: pluginstructures.h:1336
uint32_t timeSigDenomintor
time signature denominator
Definition: pluginstructures.h:1102
PluginInfo & operator=(const PluginInfo &data)
Definition: pluginstructures.h:757
uint32_t bitDepth
wav file bit depth (not supported in all APIs)
Definition: pluginstructures.h:1238
IGUIPluginConnector * guiPluginConnector
GUI-to-plugin-shell interface.
Definition: pluginstructures.h:815
bool enableVST3SampleAccurateAutomation
flag for sample accurate automation
Definition: pluginstructures.h:255
ChannelIOConfig auxChannelIOConfig
aux input/output channel I/O configuration pair
Definition: pluginstructures.h:1152
virtual bool guiTimerPing()=0
int32_t trackpadIndex
trackpad or joystick index
Definition: pluginstructures.h:1434
uint32_t numAuxAudioOutChannels
audio input channel count
Definition: pluginstructures.h:1188
void * outMessageData
outgoing message data (interpretation depends on message)
Definition: pluginstructures.h:734
messageType
Message identifier for ASPiK Core messaging system.
Definition: pluginstructures.h:670
double absoluteBufferTime_Sec
the time in seconds of the sample index at top of buffer
Definition: pluginstructures.h:1099
void pushMidiEvent(midiEvent event)
Definition: pluginstructures.h:1082
Pitch processing.
Definition: pluginstructures.h:86
uint32_t controlID
ID value.
Definition: pluginstructures.h:352
uint32_t presetIndex
preset index
Definition: pluginstructures.h:424
virtual bool getValueAtOffset(long int _sampleOffset, double _previousValue, double &_nextValue)=0
int midiPitchBendValue
midi pitch bend value (14-bit)
Definition: pluginstructures.h:652
std::string pluginName
name (up to 31 chars)
Definition: pluginstructures.h:1274
bool enableParamSmoothing
param smoothing on joystick (can be CPU abusive)
Definition: pluginstructures.h:1441
IGUIWindowFrame * guiWindowFrame
GUI-to-frame interface (resizing)
Definition: pluginstructures.h:816
void * customData
custom data (reserved for future use)
Definition: pluginstructures.h:357
bool processFrames
want frames (default)
Definition: pluginstructures.h:1280
unsigned long long uAbsoluteFrameBufferIndex
the sample index at top of buffer
Definition: pluginstructures.h:976
double joystickValue
joystick value as a double
Definition: pluginstructures.h:1439
Information that defines a preset value as a control_ID::value data pair.
Definition: pluginstructures.h:371
attributeValue value
value in union form
Definition: pluginstructures.h:957
std::string vendorName
manufacturer name
Definition: pluginstructures.h:1276
virtual bool checkNonBoundValueChange(int tag, float normalizedValue)
Definition: pluginstructures.h:1570
uint32_t numControlSignalInputs
num control signals in (reserved for future use)
Definition: pluginstructures.h:1157
bool bIsPlayingAAX
flag if playing
Definition: pluginstructures.h:1016
HostInfo * hostInfo
pointer to host data for this buffer
Definition: pluginstructures.h:1161
virtual void enableGUIDesigner(bool enable)
Definition: pluginstructures.h:1506
Information about a paraemeter being updated. Used when bound variables are updated. Multiple advanced uses.
Definition: pluginstructures.h:834
const char * pathToDLL
complete path to the DLL (component) without trailing backslash
Definition: pluginstructures.h:767
virtual bool guiWillClose()=0
Sample rate and bit-depth information that is passed during the reset( ) function.
Definition: pluginstructures.h:180
bool isVSTSampleAccurateUpdate
param updated with VST sample accurate automation
Definition: pluginstructures.h:869
double sampleRate
sample rate
Definition: pluginstructures.h:1237
uint32_t samplesToNextClock
MIDI Clock Resolution (24 Per Quarter Note), can be negative (nearest)
Definition: pluginstructures.h:992
uint32_t numAudioOutChannels
audio input channel count
Definition: pluginstructures.h:1186
virtual void endParameterChangeGesture(int controlTag)
Definition: pluginstructures.h:1594
uint32_t numAuxAudioInChannels
audio input channel count
Definition: pluginstructures.h:1187
uint32_t midiMessage
BYTE message as UINT.
Definition: pluginstructures.h:641
uint32_t latencyInSamples
latency
Definition: pluginstructures.h:1283
virtual bool deRregisterSubcontroller(ICustomView *customViewConnector)
Definition: pluginstructures.h:1561
Phasing, flanging, chorus, etc.
Definition: pluginstructures.h:89
uint32_t numAuxAudioInChannels
aux input channel count
Definition: pluginstructures.h:1147
double timeSigNumerator
time signature numerator
Definition: pluginstructures.h:1101
double width
GUI width in pixels.
Definition: pluginstructures.h:819
uint32_t message
message code
Definition: pluginstructures.h:732
float * controlSignalOutputs
control signals out (reserved for future use)
Definition: pluginstructures.h:1196
Pan, auto-pan, upmix and downmix, and surround handling.
Definition: pluginstructures.h:93
pluginType
Use this enum to identify the plugin category.
Definition: pluginstructures.h:61
uint32_t inputChannelFormat
input format for this I/O pair
Definition: pluginstructures.h:545
Information package that arrives with each new audio buffer process cycle. Contains everything needed...
Definition: pluginstructures.h:1122
virtual bool getNextValue(double &_nextValue)=0
Information about a GUI update message; this is for sending GUI control information from the plugin c...
Definition: pluginstructures.h:443
virtual void checkSendUpdateGUI(int tag, float actualValue, bool loadingPreset, void *data1=0, void *data2=0)
Definition: pluginstructures.h:1573
Custom interface so that GUI can pass information to plugin shell in a thread-safe manner...
Definition: pluginstructures.h:1539
float fTimeSigNumerator
time signature numerator
Definition: pluginstructures.h:979
uint32_t uTimeSigDenomintor
time signature denominator
Definition: pluginstructures.h:980
std::string presetName
preset name
Definition: pluginstructures.h:425
bool midiControl
MIDI enabled.
Definition: pluginstructures.h:1435
bool bLooping
looping flag
Definition: pluginstructures.h:1018
Custom View interface to allow plugin core to create safe communication channels with GUI custom view...
Definition: pluginstructures.h:1461
ChannelIOConfig channelIOConfig
input/output channel I/O configuration pair
Definition: pluginstructures.h:1151
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
int32_t auxIntData2
aux data (INT)
Definition: pluginstructures.h:649
uint32_t nDeltaSampleOffsetToNextBeat
samples to next beat
Definition: pluginstructures.h:1008
Reverberation and room/space simulation.
Definition: pluginstructures.h:87
bool applyTaper
add tapering to udpate
Definition: pluginstructures.h:873
Incoming data from a vector joystick.
Definition: pluginstructures.h:276
virtual void parameterChanged(int32_t controlID, double actualValue, double normalizedValue)
Definition: pluginstructures.h:1576
double audioTimeStamp
time stamp (not all APIs)
Definition: pluginstructures.h:655
Compressor, expander, limiter, etc.
Definition: pluginstructures.h:85
hostMessage
Use this enum to identify a message to send to the plugin shell (host)
Definition: pluginstructures.h:483
aaxPlugInCategory
Use this enum to identify the AAX plugin category.
Definition: pluginstructures.h:81
Information package about the plugin itself, consisting mainly of simple strings and ID values...
Definition: pluginstructures.h:1253
double sampleRate
sample rate
Definition: pluginstructures.h:191
long long nTickPosition
"Tick" is represented here as 1/960000 of a quarter note
Definition: pluginstructures.h:1017
Definition: pluginstructures.h:485
uint32_t midiSampleOffset
sample offset of midi event within audio buffer
Definition: pluginstructures.h:645
uint32_t controlID
ID.
Definition: pluginstructures.h:391
Double buffered queue for MIDI messages.
Definition: pluginstructures.h:1627
double BPM
beats per minute, aka "tempo"
Definition: pluginstructures.h:1100
float ** auxInputs
aux (sidechain) input buffers
Definition: pluginstructures.h:1143
double dCycleEndBeat
loop end
Definition: pluginstructures.h:1012
Definition: pluginstructures.h:406
Virtual instruments, metronomes, and other software audio sources.
Definition: pluginstructures.h:95
uint32_t midiChannel
BYTE channel as UINT.
Definition: pluginstructures.h:642
bool loadingPreset
a preset is being loaded
Definition: pluginstructures.h:870
double auxDoubleData1
aux data (double)
Definition: pluginstructures.h:650
uint32_t blockSize
size of this block
Definition: pluginstructures.h:1077
virtual uint32_t getParameterIndex()=0
Structure for setting up block processing.
Definition: pluginstructures.h:1062
bool midiIsDirty
dirty flag
Definition: pluginstructures.h:654
bool hasSidechain
sidechain flag
Definition: pluginstructures.h:1279
virtual void beginParameterChangeGesture(int controlTag)
Definition: pluginstructures.h:1591
long long systemTime
system time in nanoseconds (optional)
Definition: pluginstructures.h:986
virtual double getNormalizedPluginParameter(int32_t controlID)
Definition: pluginstructures.h:1579
Structure of a pair of channel format enumerators that set an input/output channel I/O capability...
Definition: pluginstructures.h:523
IMidiEventQueue * midiEventQueue
MIDI event queue.
Definition: pluginstructures.h:1202
uint32_t numAudioInChannels
audio input channel count
Definition: pluginstructures.h:1185
uint32_t blockEndIndex
end
Definition: pluginstructures.h:1079
void * inMessageData
incoming message data (interpretation depends on message)
Definition: pluginstructures.h:733
uint32_t numAuxAudioOutChannels
audio input channel count
Definition: pluginstructures.h:1074
virtual uint32_t getEventCount()=0
Fixed hardware audio sources such as SampleCell.
Definition: pluginstructures.h:94
Identifiers, GUIDs and other strings and number id values, API specific.
Definition: pluginstructures.h:206
uint32_t aaxProductID
aax ID
Definition: pluginstructures.h:245
Special effects.
Definition: pluginstructures.h:97
uint32_t numAudioInChannels
audio input channel count
Definition: pluginstructures.h:1071
std::vector< GUIParameter > guiParameters
list of updates
Definition: pluginstructures.h:461
double tailTimeInMSec
tail time
Definition: pluginstructures.h:1284
uint32_t numAuxAudioOutChannels
aux output channel count (not used)
Definition: pluginstructures.h:1148
std::string vst3FUID
VST GUID.
Definition: pluginstructures.h:254
void * customData
unused
Definition: pluginstructures.h:464
void * window
window handle or NSView*
Definition: pluginstructures.h:814
Information about auxilliary parameter details - purely customizeable. This uses the attributeValue u...
Definition: pluginstructures.h:922
ChannelIOConfig auxChannelIOConfig
aux input/output channel I/O configuration pair
Definition: pluginstructures.h:1191
uint32_t bitDepth
bit depth (not available in all APIs)
Definition: pluginstructures.h:192
channelFormat
Use this enum to identify plugin channel formats. Steinberg calls these "speaker arrangements".
Definition: pluginstructures.h:114
std::string boolToStdString(bool value)
converts bool value to std::string
Definition: pluginstructures.h:1744
uint32_t numControlSignalInputs
num control signals in (reserved for future use)
Definition: pluginstructures.h:1197
uint32_t attributeID
attribute ID
Definition: pluginstructures.h:958
uint32_t numAudioOutChannels
audio output channel count
Definition: pluginstructures.h:1146
uint32_t midiData2
BYTE data 2 as UINT.
Definition: pluginstructures.h:644
uint32_t midiControlName
MIDI CC.
Definition: pluginstructures.h:1437
virtual bool registerSubcontroller(std::string subcontrollerName, ICustomView *customViewConnector)
Definition: pluginstructures.h:1558
double auxDoubleData2
aux data (double)
Definition: pluginstructures.h:651
virtual bool deRegisterCustomView(ICustomView *customViewConnector)=0
float * controlSignalInputs
control signals in (reserved for future use)
Definition: pluginstructures.h:1155
double barPositionMusic
last bar start position, in quarter notes
Definition: pluginstructures.h:989
double cycleEndMusic
cycle end in quarter notes
Definition: pluginstructures.h:991
uint32_t numAuxAudioInChannels
audio input channel count
Definition: pluginstructures.h:1073
virtual void sendMessage(void *data)
Definition: pluginstructures.h:1482
uint32_t numControlSignalOutputs
num control signals out (reserved for future use)
Definition: pluginstructures.h:1198
Distortion, saturation, and harmonic enhancement.
Definition: pluginstructures.h:90
uint32_t currentBlock
index of this block
Definition: pluginstructures.h:1076
Information that defines a single GUI parameter&#39;s possible values and ID.
Definition: pluginstructures.h:331
float * controlSignalInputs
control signals in (reserved for future use)
Definition: pluginstructures.h:1195
Information package a joystick or trackpad GUI interaction.
Definition: pluginstructures.h:1414
long long nLoopStartTick
start tick for loop
Definition: pluginstructures.h:1019
std::string aaxBundleID
AAX bundle /* MacOS only: this MUST match the bundle identifier in your info.plist file */...
Definition: pluginstructures.h:247
Structure that is used during GUI creation to safely pass information about the GUI size and interfac...
Definition: pluginstructures.h:782
double dCurrentMeasureDownBeat
current downbeat
Definition: pluginstructures.h:1009
virtual void setGUIWindowFrame(IGUIWindowFrame *frame)=0
auxGUIIdentifier
Identifier enum for aux parameter information. Not used in ASPiK though is used for RAFX plugins (not...
Definition: pluginstructures.h:158
std::string aaxEffectID
aax Effect ID
Definition: pluginstructures.h:246
virtual bool registerCustomView(std::string customViewName, ICustomView *customViewConnector)=0
uint32_t blockStartIndex
start
Definition: pluginstructures.h:1078
Custom interface to allow resizing of GUI window; this is mainly used for the GUI designer...
Definition: pluginstructures.h:1520
Custom interface to allow resizing of GUI window; this is mainly used for the GUI designer...
Definition: pluginstructures.h:1496
Structure that is used during the base class initilize( ) funciton call, after object instantiation i...
Definition: pluginstructures.h:753
uint32_t outputChannelFormat
output format for this I/O pair
Definition: pluginstructures.h:546
virtual uint32_t getNextNonBoundVariableTag(int startTag)
Definition: pluginstructures.h:1567
double dCurrentBeat
current DAW beat value
Definition: pluginstructures.h:1005
double actualValue
actual value
Definition: pluginstructures.h:353
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:973
double smoothingTimeInMs
JS smoothing time.
Definition: pluginstructures.h:1442
float * auxAudioInputFrame
aux input frame (array)
Definition: pluginstructures.h:1182
bool infiniteTailVST3
VST3 infinite tail flag.
Definition: pluginstructures.h:1285
uint32_t aaxPluginCategoryCode
aax plugin category
Definition: pluginstructures.h:248
uint32_t getDefaultChannelIOConfigForChannelCount(uint32_t channelCount)
Definition: pluginstructures.h:1294
virtual void updateView()=0
double dCycleStartBeat
loop start
Definition: pluginstructures.h:1011
virtual void sendHostMessage(const HostMessageInfo &hostMessageInfo)=0
std::string inMessageString
incoming message data as a std::string (interpretation depends on message)
Definition: pluginstructures.h:736
Noise reduction.
Definition: pluginstructures.h:91
uint32_t numFramesToProcess
frame count in this buffer
Definition: pluginstructures.h:1150
Custom interface to send the plugin shell a message from plugin core.
Definition: pluginstructures.h:1609
std::string outMessageString
outgoing message data as a std::string (interpretation depends on message)
Definition: pluginstructures.h:737
virtual uint32_t getNonBoundVariableCount()
Definition: pluginstructures.h:1564
bool korgVectorJoystickOrientation
vector joystick orientation
Definition: pluginstructures.h:1440
std::string numberToString(unsigned int number)
converts unsigned int value to std::string
Definition: pluginstructures.h:1676
double height
GUI height in pixels.
Definition: pluginstructures.h:820
float midiNormalizedPitchBendValue
normalized bitch bend value
Definition: pluginstructures.h:653
bool bIsCycling
looping
Definition: pluginstructures.h:1010
uint32_t midiControlChannel
MIDI CC Channel.
Definition: pluginstructures.h:1438
uint32_t currentFrame
index of this frame
Definition: pluginstructures.h:1192
IMidiEventQueue * midiEventQueue
MIDI event queue.
Definition: pluginstructures.h:1162
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 numSupportedAuxIOCombinations
should support at least main 3 combos
Definition: pluginstructures.h:1290
Delay and echo.
Definition: pluginstructures.h:88
virtual bool setWindowFrameSize(double left=0, double top=0, double right=0, double bottom=0)=0
virtual void pushDataValue(double data)
Definition: pluginstructures.h:1472
virtual bool guiDidOpen()=0
uint32_t auxUintData1
aux data (UINT)
Definition: pluginstructures.h:646
long long nLoopEndTick
end tick for loop
Definition: pluginstructures.h:1020
float ** inputs
audio input buffers
Definition: pluginstructures.h:1141
float ** auxOutputs
aux outputs - for future use
Definition: pluginstructures.h:1144
virtual bool fireMidiEvents(uint32_t uSampleOffset)=0
uint32_t auxUintData2
aux data (UINT)
Definition: pluginstructures.h:647
Information about a MIDI event.
Definition: pluginstructures.h:561
float ** outputs
audio output buffers
Definition: pluginstructures.h:1142
bool isSmoothing
param is being (bulk) smoothed
Definition: pluginstructures.h:868
bool useCustomData
unused
Definition: pluginstructures.h:467
HostInfo * hostInfo
pointer to host data for this buffer
Definition: pluginstructures.h:1201
double dAbsoluteFrameBufferTime
the time in seconds of the sample index at top of buffer
Definition: pluginstructures.h:977
float * audioOutputFrame
audio output frame (array)
Definition: pluginstructures.h:1181