ASPiK SDK
pluginstructures.h
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,
85  aaxPlugInCategory_Dynamics = 0x00000002,
86  aaxPlugInCategory_PitchShift = 0x00000004,
87  aaxPlugInCategory_Reverb = 0x00000008,
88  aaxPlugInCategory_Delay = 0x00000010,
89  aaxPlugInCategory_Modulation = 0x00000020,
90  aaxPlugInCategory_Harmonic = 0x00000040,
91  aaxPlugInCategory_NoiseReduction = 0x00000080,
92  aaxPlugInCategory_Dither = 0x00000100,
93  aaxPlugInCategory_SoundField = 0x00000200,
94  aaxPlugInCategory_HWGenerators = 0x00000400,
95  aaxPlugInCategory_SWGenerators = 0x00000800,
96  aaxPlugInCategory_WrappedPlugin = 0x00001000,
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("")
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 
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 class IMidiEventQueue;
1045 
1058 {
1059  ProcessBufferInfo(){}
1060 
1061  /*
1062  AAX -- MUST be float
1063  AU --- Float32
1064  RAFX2 --- float
1065  VST3 --- float OR double
1066  * \brief Subscribes an audio input context field
1067  *
1068  * Defines an audio in port for host-provided information in the algorithm's
1069  * context structure.
1070  *
1071  * - Data type: float**
1072  * - Data kind: An array of float arrays, one for each input channel
1073  *
1074  */
1075  // --- audio inputs and outputs (arrays of channel-array pointers)
1076  float** inputs = nullptr;
1077  float** outputs = nullptr;
1078  float** auxInputs = nullptr;
1079  float** auxOutputs = nullptr;
1080  uint32_t numAudioInChannels = 0;
1081  uint32_t numAudioOutChannels = 0;
1082  uint32_t numAuxAudioInChannels = 0;
1083  uint32_t numAuxAudioOutChannels = 0;
1084 
1085  uint32_t numFramesToProcess = 0;
1088 
1089  // --- for future use, VCVRack
1090  float* controlSignalInputs = nullptr;
1091  float* controlSignalOutputs = nullptr;
1092  uint32_t numControlSignalInputs = 0;
1094 
1095  // --- should make these const?
1096  HostInfo* hostInfo = nullptr;
1098 };
1099 
1112 {
1113  ProcessFrameInfo(){ }
1114 
1115  float* audioInputFrame = nullptr;
1116  float* audioOutputFrame = nullptr;
1117  float* auxAudioInputFrame = nullptr;
1118  float* auxAudioOutputFrame = nullptr;
1119 
1120  uint32_t numAudioInChannels = 0;
1121  uint32_t numAudioOutChannels = 0;
1122  uint32_t numAuxAudioInChannels = 0;
1123  uint32_t numAuxAudioOutChannels = 0;
1124 
1127  uint32_t currentFrame = 0;
1128 
1129  // --- for future use, VCVRack
1130  float* controlSignalInputs = nullptr;
1131  float* controlSignalOutputs = nullptr;
1132  uint32_t numControlSignalInputs = 0;
1134 
1135  // --- should make these const?
1136  HostInfo* hostInfo = nullptr;
1138 };
1139 
1152 {
1154  : sampleRate(44100)
1155  , bitDepth(16){}
1156 
1157  AudioProcDescriptor (double _sampleRate,
1158  uint32_t _bitDepth)
1159  : sampleRate(_sampleRate)
1160  , bitDepth(_bitDepth){}
1161 
1162  AudioProcDescriptor& operator=(const AudioProcDescriptor& data) // need this override for collections to work
1163  {
1164  if (this == &data)
1165  return *this;
1166 
1167  sampleRate = data.sampleRate;
1168  bitDepth = data.bitDepth;
1169  return *this;
1170  }
1171 
1172  double sampleRate = 44100.0;
1173  uint32_t bitDepth = 16;
1174 };
1175 
1176 
1189 {
1190  PluginDescriptor ()
1191  : pluginName("Long Plugin Name") // max 31 chars
1192  , shortPluginName("ShortPIName") // max 15 chars
1193  , vendorName("Plugin Developer")
1194  , pluginTypeCode(pluginType::kFXPlugin) // FX or synth
1195  , hasSidechain(0)
1196  , processFrames(1) /* default operation */
1197  , wantsMIDI(1) /* default operation */
1198  , hasCustomGUI(1)
1199  , latencyInSamples(0)
1200  , tailTimeInMSec(0)
1201  , infiniteTailVST3(0)
1203  , supportedIOCombinations(0)
1205  , supportedAuxIOCombinations(0)
1206  {}
1207 
1208  // --- string descriptors
1209  std::string pluginName;
1210  std::string shortPluginName;
1211  std::string vendorName;
1212  uint32_t pluginTypeCode = 0;
1213 
1214  bool hasSidechain = false;
1215  bool processFrames = true;
1216  bool wantsMIDI = true;
1217  bool hasCustomGUI = true;
1218  uint32_t latencyInSamples = 0;
1219  double tailTimeInMSec = 0.0;
1220  bool infiniteTailVST3 = false;
1221 
1223  ChannelIOConfig* supportedIOCombinations;
1224 
1226  ChannelIOConfig* supportedAuxIOCombinations;
1227 
1229  uint32_t getDefaultChannelIOConfigForChannelCount(uint32_t channelCount)
1230  {
1231  switch(channelCount)
1232  {
1233  case 0:
1234  return kCFNone;
1235  case 1:
1236  return kCFMono;
1237  case 2:
1238  return kCFStereo;
1239  case 3:
1240  return kCFLCR;
1241  case 4:
1242  return kCFQuad; // or kCFLCR
1243  case 5:
1244  return kCF5p0;
1245  case 6:
1246  return kCF5p1; // or kCF6p0
1247  case 7:
1248  return kCF6p1; // or kCF7p0Sony kCF7p0DTS
1249  case 8:
1250  return kCF7p1DTS; // or kCF7p1Sony or kCF7p1Proximity
1251  case 9:
1252  return kCF8p1; // or kCF9p0
1253  case 10:
1254  return kCF9p1; // or kCF10p0
1255  case 11:
1256  return kCF10p1;
1257  case 12:
1258  return kCF11p1; // or kCF10p2
1259  case 13:
1260  return kCF13p0; // or kCF12p2
1261  case 14:
1262  return kCF13p1;
1263  case 24:
1264  return kCF22p2;
1265 
1266  default:
1267  return 0;
1268  }
1269  }
1271  uint32_t getChannelCountForChannelIOConfig(uint32_t format)
1272  {
1273  switch(format)
1274  {
1275  case kCFNone:
1276  return 0;
1277 
1278  case kCFMono:
1279  return 1;
1280  case kCFStereo:
1281  return 2;
1282  case kCFLCR:
1283  return 3;
1284 
1285  case kCFQuad:
1286  case kCFLCRS:
1287  return 4;
1288 
1289  case kCF5p0:
1290  return 5;
1291 
1292  case kCF5p1:
1293  case kCF6p0:
1294  return 6;
1295 
1296  case kCF6p1:
1297  case kCF7p0Sony:
1298  case kCF7p0DTS:
1299  return 7;
1300 
1301  case kCF7p1Sony:
1302  case kCF7p1DTS:
1303  case kCF7p1Proximity:
1304  return 8;
1305 
1306  case kCF8p1:
1307  case kCF9p0:
1308  return 9;
1309 
1310  case kCF9p1:
1311  case kCF10p0:
1312  return 10;
1313 
1314  case kCF10p1:
1315  return 11;
1316 
1317  case kCF10p2:
1318  case kCF11p1:
1319  return 12;
1320 
1321  case kCF13p0:
1322  case kCF12p2:
1323  return 13;
1324 
1325  case kCF13p1:
1326  return 14;
1327 
1328  case kCF22p2:
1329  return 24;
1330 
1331  default:
1332  return 0;
1333  }
1334  return 0;
1335  }
1336 };
1337 
1350 {
1351  JSControl() {}
1352  JSControl& operator=(const JSControl& aControl)
1353  {
1354  if (this == &aControl)
1355  return *this;
1356 
1357  trackpadIndex = aControl.trackpadIndex;
1358  midiControl = aControl.midiControl;
1360  midiControlName = aControl.midiControlName;
1362  joystickValue = aControl.joystickValue;
1366  return *this;
1367  }
1368 
1369  int32_t trackpadIndex = -1;
1370  bool midiControl = false;
1371  uint32_t midiControlCommand = 0;
1372  uint32_t midiControlName = 0;
1373  uint32_t midiControlChannel = 0;
1374  double joystickValue = 0.0;
1376  bool enableParamSmoothing = false;
1377  double smoothingTimeInMs = 0.0;
1378 };
1379 
1380 
1381 // --------------------------------------------------------------------------------------------------------------------------- //
1382 // --- INTERFACES
1383 // --------------------------------------------------------------------------------------------------------------------------- //
1384 
1397 {
1398 public:
1400  virtual void updateView() = 0;
1401 
1407  virtual void pushDataValue(double data) { }
1408 
1417  virtual void sendMessage(void* data) { }
1418 };
1419 
1432 {
1433 public:
1435  virtual bool setWindowFrameSize(double left = 0, double top = 0, double right = 0, double bottom = 0) = 0;
1436 
1438  virtual bool getWindowFrameSize(double& left, double& top, double& right, double& bottom) = 0;
1439 
1441  virtual void enableGUIDesigner(bool enable) { }
1442 };
1443 
1456 {
1457 public:
1459  virtual void setGUIWindowFrame(IGUIWindowFrame* frame) = 0;
1460 };
1461 
1462 
1475 {
1476 public:
1478  virtual bool registerCustomView(std::string customViewName, ICustomView* customViewConnector) = 0;
1479 
1481  virtual bool deRegisterCustomView(ICustomView* customViewConnector) = 0;
1482 
1484  virtual bool guiDidOpen() = 0;
1485 
1487  virtual bool guiWillClose() = 0;
1488 
1490  virtual bool guiTimerPing() = 0;
1491 
1493  virtual bool registerSubcontroller(std::string subcontrollerName, ICustomView* customViewConnector) { return false; }
1494 
1496  virtual bool deRregisterSubcontroller(ICustomView* customViewConnector) { return false; }
1497 
1499  virtual uint32_t getNonBoundVariableCount() { return 0; }
1500 
1502  virtual uint32_t getNextNonBoundVariableTag(int startTag) { return -1; }
1503 
1505  virtual bool checkNonBoundValueChange(int tag, float normalizedValue) { return false; }
1506 
1508  virtual void checkSendUpdateGUI(int tag, float actualValue, bool loadingPreset, void* data1 = 0, void* data2 = 0) {}
1509 
1511  virtual void parameterChanged(int32_t controlID, double actualValue, double normalizedValue) {}
1512 
1514  virtual double getNormalizedPluginParameter(int32_t controlID) { return 0.0; }
1515 
1517  virtual void setNormalizedPluginParameter(int32_t controlID, double value) { }
1518 
1520  virtual double getActualPluginParameter(int32_t controlID) { return 0.0; }
1521 
1523  virtual void setActualPluginParameter(int32_t controlID, double value) { }
1524 
1526  virtual void beginParameterChangeGesture(int controlTag){ }
1527 
1529  virtual void endParameterChangeGesture(int controlTag){ }
1530 };
1531 
1532 
1545 {
1546 public:
1548  virtual void sendHostMessage(const HostMessageInfo& hostMessageInfo) = 0;
1549 };
1550 
1563 {
1564 public:
1566  virtual uint32_t getEventCount() = 0;
1567 
1569  virtual bool fireMidiEvents(uint32_t uSampleOffset) = 0;
1570 };
1571 
1572 
1585 {
1586 public:
1588  virtual uint32_t getParameterIndex() = 0;
1589 
1592  virtual bool getValueAtOffset(long int _sampleOffset, double _previousValue, double& _nextValue) = 0;
1593 
1596  virtual bool getNextValue(double& _nextValue) = 0;
1597 };
1598 
1599 // --------------------------------------------------------------------------------------------------------------------------- //
1600 // --- HELPER FUNCTIONS
1601 // --------------------------------------------------------------------------------------------------------------------------- //
1611 inline std::string numberToString(unsigned int number)
1612 {
1613  std::ostringstream strm;
1614  strm << number;
1615  std::string str = strm.str();
1616  return str;
1617 }
1618 
1628 inline std::string numberToString(int number)
1629 {
1630  std::ostringstream strm;
1631  strm << number;
1632  std::string str = strm.str();
1633  return str;
1634 }
1635 
1645 inline std::string numberToString(float number)
1646 {
1647  std::ostringstream strm;
1648  strm << number;
1649  std::string str = strm.str();
1650  return str;
1651 }
1652 
1662 inline std::string numberToString(double number)
1663 {
1664  std::ostringstream strm;
1665  strm << number;
1666  std::string str = strm.str();
1667  return str;
1668 }
1669 
1679 inline std::string boolToStdString(bool value)
1680 {
1681  std::string returnString;
1682  if (value) returnString.assign("true");
1683  else returnString.assign("false");
1684  return returnString;
1685 }
1686 
1687 
1688 #endif //_pluginstructures_h
virtual bool getWindowFrameSize(double &left, double &top, double &right, double &bottom)=0
virtual double getActualPluginParameter(int32_t controlID)
Definition: pluginstructures.h:1520
uint32_t aaxManufacturerID
aax manu ID
Definition: pluginstructures.h:244
uint32_t numSupportedIOCombinations
should support at least main 3 combos
Definition: pluginstructures.h:1222
std::string shortPluginName
name (up to 15 chars)
Definition: pluginstructures.h:1210
Information package about the current DAW session. Sample rate and bit-depth of audio.
Definition: pluginstructures.h:1151
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
Attribute value smashed down into a union.
Definition: pluginstructures.h:900
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
const char * pathToDLL
complete path to the DLL (component) without trailing backslash
Definition: pluginstructures.h:767
uint32_t midiControlCommand
MIDI CC type.
Definition: pluginstructures.h:1371
bool bIsPlayingAU
notorously incorrect in Logic - once set to true, stays stuck there
Definition: pluginstructures.h:1006
bool hasCustomGUI
default on
Definition: pluginstructures.h:1217
bool bufferProcUpdate
update at top of buffer process
Definition: pluginstructures.h:872
float ** auxInputs
aux (sidechain) input buffers
Definition: pluginstructures.h:1078
bool useCustomData
custom data flag (reserved for future use)
Definition: pluginstructures.h:354
uint32_t numAudioInChannels
audio input channel count
Definition: pluginstructures.h:1080
double actualValue
value
Definition: pluginstructures.h:392
virtual void setNormalizedPluginParameter(int32_t controlID, double value)
Definition: pluginstructures.h:1517
uint32_t pluginTypeCode
FX or synth.
Definition: pluginstructures.h:1212
Interface for VST3 parameter value update queue (sample accurate automation)
Definition: pluginstructures.h:1584
bool wantsMIDI
want MIDI (don&#39;t need to actually use it)
Definition: pluginstructures.h:1216
Information package that arrives with each new audio frame; called internally from the buffer process...
Definition: pluginstructures.h:1111
std::vector< GUIParameter > guiParameters
list of updates
Definition: pluginstructures.h:461
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:1125
virtual void setActualPluginParameter(int32_t controlID, double value)
Definition: pluginstructures.h:1523
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:1093
uint32_t midiData1
BYTE data 1 as UINT.
Definition: pluginstructures.h:643
uint32_t getChannelCountForChannelIOConfig(uint32_t format)
Definition: pluginstructures.h:1271
PluginInfo & operator=(const PluginInfo &data)
Definition: pluginstructures.h:757
uint32_t bitDepth
wav file bit depth (not supported in all APIs)
Definition: pluginstructures.h:1173
bool enableVST3SampleAccurateAutomation
flag for sample accurate automation
Definition: pluginstructures.h:255
ChannelIOConfig auxChannelIOConfig
aux input/output channel I/O configuration pair
Definition: pluginstructures.h:1087
virtual bool guiTimerPing()=0
int32_t trackpadIndex
trackpad or joystick index
Definition: pluginstructures.h:1369
uint32_t numAuxAudioOutChannels
audio input channel count
Definition: pluginstructures.h:1123
messageType
Message identifier for ASPiK Core messaging system.
Definition: pluginstructures.h:670
float * controlSignalOutputs
control signals out (reserved for future use)
Definition: pluginstructures.h:1091
uint32_t controlID
ID value.
Definition: pluginstructures.h:352
uint32_t presetIndex
preset index
Definition: pluginstructures.h:424
std::vector< PresetParameter > presetParameters
list of parameters for this preset
Definition: pluginstructures.h:427
float * controlSignalInputs
control signals in (reserved for future use)
Definition: pluginstructures.h:1090
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:1209
bool enableParamSmoothing
param smoothing on joystick (can be CPU abusive)
Definition: pluginstructures.h:1376
bool processFrames
want frames (default)
Definition: pluginstructures.h:1215
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:1374
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:1211
virtual bool checkNonBoundValueChange(int tag, float normalizedValue)
Definition: pluginstructures.h:1505
uint32_t numControlSignalInputs
num control signals in (reserved for future use)
Definition: pluginstructures.h:1092
bool bIsPlayingAAX
flag if playing
Definition: pluginstructures.h:1016
virtual void enableGUIDesigner(bool enable)
Definition: pluginstructures.h:1441
float * audioInputFrame
audio input frame (array)
Definition: pluginstructures.h:1115
Information about a paraemeter being updated. Used when bound variables are updated. Multiple advanced uses.
Definition: pluginstructures.h:834
virtual bool guiWillClose()=0
Sample rate and bit-depth information that is passed during the reset( ) function.
Definition: pluginstructures.h:180
void * outMessageData
outgoing message data (interpretation depends on message)
Definition: pluginstructures.h:734
bool isVSTSampleAccurateUpdate
param updated with VST sample accurate automation
Definition: pluginstructures.h:869
double sampleRate
sample rate
Definition: pluginstructures.h:1172
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:1121
virtual void endParameterChangeGesture(int controlTag)
Definition: pluginstructures.h:1529
float ** auxOutputs
aux outputs - for future use
Definition: pluginstructures.h:1079
uint32_t numAuxAudioInChannels
audio input channel count
Definition: pluginstructures.h:1122
uint32_t midiMessage
BYTE message as UINT.
Definition: pluginstructures.h:641
uint32_t latencyInSamples
latency
Definition: pluginstructures.h:1218
virtual bool deRregisterSubcontroller(ICustomView *customViewConnector)
Definition: pluginstructures.h:1496
uint32_t numAuxAudioInChannels
aux input channel count
Definition: pluginstructures.h:1082
float ** outputs
audio output buffers
Definition: pluginstructures.h:1077
double width
GUI width in pixels.
Definition: pluginstructures.h:819
uint32_t message
message code
Definition: pluginstructures.h:732
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:1057
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:1508
Custom interface so that GUI can pass information to plugin shell in a thread-safe manner...
Definition: pluginstructures.h:1474
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:1370
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:1396
IMidiEventQueue * midiEventQueue
MIDI event queue.
Definition: pluginstructures.h:1097
ChannelIOConfig channelIOConfig
input/output channel I/O configuration pair
Definition: pluginstructures.h:1086
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
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:1511
double audioTimeStamp
time stamp (not all APIs)
Definition: pluginstructures.h:655
hostMessage
Use this enum to identify a message to send to the plugin shell (host)
Definition: pluginstructures.h:483
IGUIWindowFrame * guiWindowFrame
GUI-to-frame interface (resizing)
Definition: pluginstructures.h:816
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:1188
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:1562
void * customData
unused
Definition: pluginstructures.h:464
double dCycleEndBeat
loop end
Definition: pluginstructures.h:1012
Definition: pluginstructures.h:406
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
IGUIPluginConnector * guiPluginConnector
GUI-to-plugin-shell interface.
Definition: pluginstructures.h:815
virtual uint32_t getParameterIndex()=0
bool midiIsDirty
dirty flag
Definition: pluginstructures.h:654
HostInfo * hostInfo
pointer to host data for this buffer
Definition: pluginstructures.h:1096
bool hasSidechain
sidechain flag
Definition: pluginstructures.h:1214
virtual void beginParameterChangeGesture(int controlTag)
Definition: pluginstructures.h:1526
long long systemTime
system time in nanoseconds (optional)
Definition: pluginstructures.h:986
virtual double getNormalizedPluginParameter(int32_t controlID)
Definition: pluginstructures.h:1514
float * audioOutputFrame
audio output frame (array)
Definition: pluginstructures.h:1116
Structure of a pair of channel format enumerators that set an input/output channel I/O capability...
Definition: pluginstructures.h:523
uint32_t numAudioInChannels
audio input channel count
Definition: pluginstructures.h:1120
virtual uint32_t getEventCount()=0
Identifiers, GUIDs and other strings and number id values, API specific.
Definition: pluginstructures.h:206
void * inMessageData
incoming message data (interpretation depends on message)
Definition: pluginstructures.h:733
float ** inputs
audio input buffers
Definition: pluginstructures.h:1076
uint32_t aaxProductID
aax ID
Definition: pluginstructures.h:245
float * controlSignalOutputs
control signals out (reserved for future use)
Definition: pluginstructures.h:1131
double tailTimeInMSec
tail time
Definition: pluginstructures.h:1219
uint32_t numAuxAudioOutChannels
aux output channel count (not used)
Definition: pluginstructures.h:1083
std::string vst3FUID
VST GUID.
Definition: pluginstructures.h:254
float * controlSignalInputs
control signals in (reserved for future use)
Definition: pluginstructures.h:1130
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:1126
float * auxAudioInputFrame
aux input frame (array)
Definition: pluginstructures.h:1117
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:1679
uint32_t numControlSignalInputs
num control signals in (reserved for future use)
Definition: pluginstructures.h:1132
uint32_t attributeID
attribute ID
Definition: pluginstructures.h:958
uint32_t numAudioOutChannels
audio output channel count
Definition: pluginstructures.h:1081
uint32_t midiData2
BYTE data 2 as UINT.
Definition: pluginstructures.h:644
uint32_t midiControlName
MIDI CC.
Definition: pluginstructures.h:1372
virtual bool registerSubcontroller(std::string subcontrollerName, ICustomView *customViewConnector)
Definition: pluginstructures.h:1493
double auxDoubleData2
aux data (double)
Definition: pluginstructures.h:651
virtual bool deRegisterCustomView(ICustomView *customViewConnector)=0
double barPositionMusic
last bar start position, in quarter notes
Definition: pluginstructures.h:989
double cycleEndMusic
cycle end in quarter notes
Definition: pluginstructures.h:991
virtual void sendMessage(void *data)
Definition: pluginstructures.h:1417
uint32_t numControlSignalOutputs
num control signals out (reserved for future use)
Definition: pluginstructures.h:1133
void * window
window handle or NSView*
Definition: pluginstructures.h:814
Information that defines a single GUI parameter&#39;s possible values and ID.
Definition: pluginstructures.h:331
Information package a joystick or trackpad GUI interaction.
Definition: pluginstructures.h:1349
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
float * auxAudioOutputFrame
aux output frame (array) for future use
Definition: pluginstructures.h:1118
virtual bool registerCustomView(std::string customViewName, ICustomView *customViewConnector)=0
Custom interface to allow resizing of GUI window; this is mainly used for the GUI designer...
Definition: pluginstructures.h:1455
Custom interface to allow resizing of GUI window; this is mainly used for the GUI designer...
Definition: pluginstructures.h:1431
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:1502
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:1377
bool infiniteTailVST3
VST3 infinite tail flag.
Definition: pluginstructures.h:1220
uint32_t aaxPluginCategoryCode
aax plugin category
Definition: pluginstructures.h:248
uint32_t getDefaultChannelIOConfigForChannelCount(uint32_t channelCount)
Definition: pluginstructures.h:1229
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
uint32_t numFramesToProcess
frame count in this buffer
Definition: pluginstructures.h:1085
Custom interface to send the plugin shell a message from plugin core.
Definition: pluginstructures.h:1544
HostInfo * hostInfo
pointer to host data for this buffer
Definition: pluginstructures.h:1136
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:1499
bool korgVectorJoystickOrientation
vector joystick orientation
Definition: pluginstructures.h:1375
std::string numberToString(unsigned int number)
converts unsigned int value to std::string
Definition: pluginstructures.h:1611
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:1373
uint32_t currentFrame
index of this frame
Definition: pluginstructures.h:1127
std::string auBundleID
AU bundle ID /* MacOS only: this MUST match the bundle identifier in your info.plist file */...
Definition: pluginstructures.h:260
IMidiEventQueue * midiEventQueue
MIDI event queue.
Definition: pluginstructures.h:1137
uint32_t numSupportedAuxIOCombinations
should support at least main 3 combos
Definition: pluginstructures.h:1225
void * customData
custom data (reserved for future use)
Definition: pluginstructures.h:357
virtual bool setWindowFrameSize(double left=0, double top=0, double right=0, double bottom=0)=0
virtual void pushDataValue(double data)
Definition: pluginstructures.h:1407
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
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
bool isSmoothing
param is being (bulk) smoothed
Definition: pluginstructures.h:868
bool useCustomData
unused
Definition: pluginstructures.h:467
double dAbsoluteFrameBufferTime
the time in seconds of the sample index at top of buffer
Definition: pluginstructures.h:977