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  uint32_t aaxManufacturerID = 0;
222  uint32_t aaxProductID = 0;
223  std::string aaxEffectID;
224  std::string aaxBundleID;
225  uint32_t aaxPluginCategoryCode = 0;
226 
227  // --- common to AU and AAX
228  int fourCharCode = 0;
229 
230  // --- VST3
231  std::string vst3FUID;
234  std::string vst3BundleID;
235 
236  // --- AU
237  std::string auBundleID;
238  std::string auBundleName;
239 
240  };
241 
254 {
256  : vectorA(0.0)
257  , vectorB(0.0)
258  , vectorC(0.0)
259  , vectorD(0.0)
260  , vectorACMix(0.0)
261  , vectorBDMix(0.0) {}
262 
263  VectorJoystickData(double _vectorA, double _vectorB, double _vectorC, double _vectorD, double _vectorACMix, double _vectorBDMix)
264  : vectorA(_vectorA)
265  , vectorB(_vectorB)
266  , vectorC(_vectorC)
267  , vectorD(_vectorD)
268  , vectorACMix(_vectorACMix)
269  , vectorBDMix(_vectorBDMix) {}
270 
271  double vectorA = 0.0;
272  double vectorB = 0.0;
273  double vectorC = 0.0;
274  double vectorD = 0.0;
275 
276  double vectorACMix = 0.0;
277  double vectorBDMix = 0.0;
278 };
279 
292 {
293  GUIParameter()
294  : controlID(0)
295  , actualValue(0.0)
296  , useCustomData(0)
297  , customData(0) {}
298 
299  uint32_t controlID = 0;
300  double actualValue = 0.0;
301  bool useCustomData = false;
302 
303  // --- for custom drawing, or other custom data
304  void* customData = nullptr;
305 };
306 
319 {
320  PresetParameter ()
321  : controlID(0)
322  , actualValue(0.0){}
323 
324  PresetParameter (uint32_t _controlID, double _actualValue)
325  : controlID(_controlID)
326  , actualValue(_actualValue){}
327 
328  uint32_t controlID = 0;
329  double actualValue = 0.0;
330 };
331 
344 {
345  PresetInfo(uint32_t _presetIndex, const char* _name)
346  : presetIndex(_presetIndex)
347  , presetName(_name) {}
348 
349  uint32_t presetIndex = 0;
350  std::string presetName;
351 
352  std::vector<PresetParameter> presetParameters;
353 };
354 
369 {
370  uint32_t guiUpdateCode = -1;
371 
372  // --- for control updates
373  std::vector<GUIParameter> guiParameters;
374 
375  // --- for custom draw updates (graphs, etc...)
376  void* customData = nullptr;
377 
378  // --- flag
379  bool useCustomData = false;
380 };
381 
395 enum hostMessage { sendGUIUpdate, sendRAFXStatusWndText };
396 
398 {
400  : hostMessage(0){}
401 
402  uint32_t hostMessage;
403  GUIParameter guiParameter; /* for single param updates */
404 
405  // --- for GUI messages
406  GUIUpdateData guiUpdateData; /* for multiple param updates */
407  std::string rafxStatusWndText;
408 };
409 
410 
423 {
424  ChannelIOConfig ()
425  : inputChannelFormat(kCFStereo)
426  , outputChannelFormat(kCFStereo) {}
427 
428  ChannelIOConfig (uint32_t _inputChannelFormat,
429  uint32_t _outputChannelFormat)
430  : inputChannelFormat(_inputChannelFormat)
431  , outputChannelFormat(_outputChannelFormat){}
432 
433  uint32_t inputChannelFormat = kCFStereo;
434  uint32_t outputChannelFormat = kCFStereo;
435 
436 };
437 
449 struct midiEvent
450 {
451  midiEvent(uint32_t _midiMessage, uint32_t _midiChannel, uint32_t _midiData1, uint32_t _midiData2, uint32_t _midiSampleOffset)
452  : midiMessage(_midiMessage)
453  , midiChannel(_midiChannel)
454  , midiData1(_midiData1)
455  , midiData2(_midiData2)
456  , midiSampleOffset(_midiSampleOffset)
457  {
458  midiPitchBendValue = 0;
460  midiIsDirty = false;
461  }
462 
463  midiEvent(uint32_t _midiMessage, uint32_t _midiChannel, uint32_t _midiData1, uint32_t _midiData2, uint32_t _midiSampleOffset, double _audioTimeStamp)
464  : midiMessage(_midiMessage)
465  , midiChannel(_midiChannel)
466  , midiData1(_midiData1)
467  , midiData2(_midiData2)
468  , midiSampleOffset(_midiSampleOffset)
469  , audioTimeStamp(_audioTimeStamp)
470  {
471  midiPitchBendValue = 0;
473  midiIsDirty = false;
474  }
475 
476  midiEvent ()
477  : midiMessage(0)
478  , midiChannel(0)
479  , midiData1(0)
480  , midiData2(0)
481  , midiSampleOffset(0)
482  , midiPitchBendValue(0)
484  , midiIsDirty(0)
485  , audioTimeStamp(0.0){}
486 
487  uint32_t midiMessage = 0;
488  uint32_t midiChannel = 0;
489  uint32_t midiData1 = 0;
490  uint32_t midiData2 = 0;
491  uint32_t midiSampleOffset = 0;
494  bool midiIsDirty = false;
495  double audioTimeStamp = 0.0;
496 };
497 
498 
511  PLUGINGUI_DIDOPEN, /* called after successful population of GUI frame, NOT called with GUI_USER_CUSTOMOPEN*/
512  PLUGINGUI_WILLCLOSE, /* called before window is destroyed, NOT called with GUI_USER_CUSTOM_CLOSE */
513  PLUGINGUI_TIMERPING, /* timer ping for custom views */
514  PLUGINGUI_REGISTER_CUSTOMVIEW, /* register a custom view */
515  PLUGINGUI_DE_REGISTER_CUSTOMVIEW, /* un-register a custom view */
516  PLUGINGUI_REGISTER_SUBCONTROLLER, /* register a subcontroller */
517  PLUGINGUI_DE_REGISTER_SUBCONTROLLER, /* un-register a subcontroller */
518  PLUGINGUI_QUERY_HASUSERCUSTOM, /* CUSTOM GUI - reply in bHasUserCustomView */
519  PLUGINGUI_USER_CUSTOMOPEN, /* CUSTOM GUI - create your custom GUI, you must supply the code */
520  PLUGINGUI_USER_CUSTOMCLOSE, /* CUSTOM GUI - destroy your custom GUI, you must supply the code */
521  PLUGINGUI_USER_CUSTOMSYNC, /* CUSTOM GUI - re-sync the GUI */
522  PLUGINGUI_EXTERNAL_SET_NORMVALUE, // for VST3??
523  PLUGINGUI_EXTERNAL_SET_ACTUALVALUE,
524  PLUGINGUI_EXTERNAL_GET_NORMVALUE, /* currently not used */
525  PLUGINGUI_EXTERNAL_GET_ACTUALVALUE,
526  PLUGINGUI_PARAMETER_CHANGED, /* for pluginCore->guiParameterChanged(nControlIndex, fValue); */
527  PLUGIN_QUERY_DESCRIPTION, /* fill in a Rafx2PluginDescriptor for host */
528  PLUGIN_QUERY_PARAMETER, /* fill in a Rafx2PluginParameter for host inMessageData = index of parameter*/
529  PLUGIN_QUERY_TRACKPAD_X,
530  PLUGIN_QUERY_TRACKPAD_Y
531 };
532 
533 
546 {
547  MessageInfo ()
548  : message(0)
549  , inMessageData(0)
550  , outMessageData(0){}
551 
552  MessageInfo (uint32_t _message)
553  : message(_message)
554  , inMessageData(0)
555  , outMessageData(0)
556  {}
557 
558  uint32_t message = 0;
559  void* inMessageData = nullptr;
560  void* outMessageData = nullptr;
561 
562  std::string inMessageString;
563  std::string outMessageString;
564 };
565 
578 {
579  CreateGUIInfo()
580  : window(0)
581  , guiPluginConnector(0)
582  , guiWindowFrame(0)
583  , width(0.0)
584  , height(0.0)
585  { }
586 
587  CreateGUIInfo(void* _window, IGUIPluginConnector* _guiPluginConnector, IGUIWindowFrame* _guiWindowFrame)
588  : window(_window)
589  , guiPluginConnector(_guiPluginConnector)
590  , guiWindowFrame(_guiWindowFrame)
591  , width(0.0)
592  , height(0.0)
593  { }
594 
595  void* window = nullptr;
598 
599  // --- returned
600  double width = 0.0;
601  double height = 0.0;
602 };
603 
616 {
618  : isSmoothing(0)
620  , loadingPreset(0)
622  , bufferProcUpdate(0)
623  , applyTaper(1){}
624 
625  ParameterUpdateInfo(bool _isSmoothing, bool _isVSTSampleAccurateUpdate)
626  : isSmoothing(_isSmoothing)
627  , isVSTSampleAccurateUpdate(_isVSTSampleAccurateUpdate) {
628  loadingPreset = false;
629  boundVariableUpdate = false;
630  bufferProcUpdate = false;
631  applyTaper = true;
632  }
633 
634  bool isSmoothing = false;
636  bool loadingPreset = false;
637  bool boundVariableUpdate = false;
638  bool bufferProcUpdate = false;
639  bool applyTaper = true;
640 };
641 
653 enum attributeType { isFloatAttribute, isDoubleAttribute, isIntAttribute, isUintAttribute, isBoolAttribute, isVoidPtrAttribute, isStringAttribute };
654 
667 {
668  float f;
669  double d;
670  int n;
671  unsigned int u;
672  bool b;
673  void* vp;
674 };
675 
689 {
691  : attributeID(0)
692  { memset(&value, 0, sizeof(attributeValue)); }
693 
694  AuxParameterAttribute(uint32_t _attributeID)
695  : attributeID(_attributeID) { }
696 
697  void reset(uint32_t _attributeID) { memset(&value, 0, sizeof(attributeValue)); attributeID = _attributeID; }
698 
699  void setFloatAttribute(float f) { value.f = f; }
700  void setDoubleAttribute(double d) { value.d = d; }
701  void setIntAttribute(int n) { value.n = n; }
702  void setUintAttribute(unsigned int u) { value.u = u; }
703  void setBoolAttribute(bool b) { value.b = b; }
704  void setVoidPtrAttribute(void* vp) { value.vp = vp; }
705 
706  float getFloatAttribute( ) { return value.f; }
707  double getDoubleAttribute( ) { return value.d; }
708  int getIntAttribute( ) { return value.n; }
709  unsigned int getUintAttribute( ) { return value.u; }
710  bool getBoolAttribute( ) { return value.b; }
711  void* getVoidPtrAttribute( ) { return value.vp; }
712 
714  uint32_t attributeID;
715 };
716 
729 struct HostInfo
730 {
731  // --- common to all APIs
732  unsigned long long uAbsoluteFrameBufferIndex = 0;
734  double dBPM = 0.0;
735  float fTimeSigNumerator = 0.f;
736  uint32_t uTimeSigDenomintor = 0;
737 
738  // --- VST3 Specific: note these use same variable names as VST3::struct ProcessContext
739  // see ..\VST3 SDK\pluginterfaces\vst\ivstprocesscontext.h for information on decoding these
740  //
741  uint32_t state = 0;
742  long long systemTime = 0;
743  double continousTimeSamples = 0.0;
744  double projectTimeMusic = 0.0;
745  double barPositionMusic = 0.0;
746  double cycleStartMusic = 0.0;
747  double cycleEndMusic = 0.0;
748  uint32_t samplesToNextClock = 0;
749  /*
750  IF you need SMPTE information, you need to get the information yourself at the start of the process( ) function
751  where the above values are filled out. See the variables here in VST3 SDK\pluginterfaces\vst\ivstprocesscontext.h:
752 
753  int32 smpteOffsetSubframes = 0; // --- SMPTE (sync) offset in subframes (1/80 of frame)
754  FrameRate frameRate; // --- frame rate
755  */
756 
757  // --- AU Specific
758  // see AUBase.h for definitions and information on decoding these
759  //
760  double dCurrentBeat = 0.0;
761  bool bIsPlayingAU = false;
762  bool bTransportStateChanged = false;
764  double dCurrentMeasureDownBeat = 0.0;
765  bool bIsCycling = false;
766  double dCycleStartBeat = 0.0;
767  double dCycleEndBeat = 0.0;
768 
769  // --- AAX Specific
770  // see AAX_ITransport.h for definitions and information on decoding these
771  bool bIsPlayingAAX = false;
772  long long nTickPosition = 0;
773  bool bLooping = false;
774  long long nLoopStartTick = 0;
775  long long nLoopEndTick = 0;
776  /*
777  NOTE: there are two optional functions that cause a performance hit in AAX; these are commented outs;
778  if you decide to use them, you should re-locate them to a non-realtime thread. Use at your own risk!
779 
780  int32_t nBars = 0;
781  int32_t nBeats = 0;
782  int64_t nDisplayTicks = 0;
783  int64_t nCustomTickPosition = 0;
784 
785  // --- There is a minor performance cost associated with using this API in Pro Tools. It should NOT be used excessively without need
786  midiTransport->GetBarBeatPosition(&nBars, &nBeats, &nDisplayTicks, nAbsoluteSampleLocation);
787 
788  // --- There is a minor performance cost associated with using this API in Pro Tools. It should NOT be used excessively without need
789  midiTransport->GetCustomTickPosition(&nCustomTickPosition, nAbsoluteSampleLocation);
790 
791  NOTE: if you need SMPTE or metronome information, you need to get the information yourself at the start of the ProcessAudio( ) function
792  see AAX_ITransport.h for definitions and information on decoding these
793  virtual AAX_Result GetTimeCodeInfo(AAX_EFrameRate* oFrameRate, int32_t* oOffset) const = 0;
794  virtual AAX_Result GetFeetFramesInfo(AAX_EFeetFramesRate* oFeetFramesRate, int64_t* oOffset) const = 0;
795  virtual AAX_Result IsMetronomeEnabled(int32_t* isEnabled) const = 0;
796  */
797 };
798 
799 class IMidiEventQueue;
800 
813 {
815 
816  /*
817  AAX -- MUST be float
818  AU --- Float32
819  RAFX2 --- float
820  VST3 --- float OR double
821  * \brief Subscribes an audio input context field
822  *
823  * Defines an audio in port for host-provided information in the algorithm's
824  * context structure.
825  *
826  * - Data type: float**
827  * - Data kind: An array of float arrays, one for each input channel
828  *
829  */
830  // --- audio inputs and outputs (arrays of channel-array pointers)
831  float** inputs = nullptr;
832  float** outputs = nullptr;
833  float** auxInputs = nullptr;
834  float** auxOutputs = nullptr;
835  uint32_t numAudioInChannels = 0;
836  uint32_t numAudioOutChannels = 0;
837  uint32_t numAuxAudioInChannels = 0;
838  uint32_t numAuxAudioOutChannels = 0;
839 
840  uint32_t numFramesToProcess = 0;
843 
844  // --- for future use, VCVRack
845  float* controlSignalInputs = nullptr;
846  float* controlSignalOutputs = nullptr;
847  uint32_t numControlSignalInputs = 0;
848  uint32_t numControlSignalOutputs = 0;
849 
850  // --- should make these const?
851  HostInfo* hostInfo = nullptr;
853 };
854 
867 {
868  ProcessFrameInfo(){ }
869 
870  float* audioInputFrame = nullptr;
871  float* audioOutputFrame = nullptr;
872  float* auxAudioInputFrame = nullptr;
873  float* auxAudioOutputFrame = nullptr;
874 
875  uint32_t numAudioInChannels = 0;
876  uint32_t numAudioOutChannels = 0;
877  uint32_t numAuxAudioInChannels = 0;
878  uint32_t numAuxAudioOutChannels = 0;
879 
882  uint32_t currentFrame = 0;
883 
884  // --- for future use, VCVRack
885  float* controlSignalInputs = nullptr;
886  float* controlSignalOutputs = nullptr;
887  uint32_t numControlSignalInputs = 0;
888  uint32_t numControlSignalOutputs = 0;
889 
890  // --- should make these const?
891  HostInfo* hostInfo = nullptr;
893 };
894 
907 {
909  : sampleRate(44100)
910  , bitDepth(16){}
911 
912  AudioProcDescriptor (double _sampleRate,
913  uint32_t _bitDepth)
914  : sampleRate(_sampleRate)
915  , bitDepth(_bitDepth){}
916 
917  double sampleRate = 44100.0;
918  uint32_t bitDepth = 16;
919 };
920 
921 
934 {
936  : pluginName("Long Plugin Name") // max 31 chars
937  , shortPluginName("ShortPIName") // max 15 chars
938  , vendorName("Plugin Developer")
939  , pluginTypeCode(pluginType::kFXPlugin) // FX or synth
940  , hasSidechain(0)
941  , processFrames(1) /* default operation */
942  , wantsMIDI(1) /* default operation */
943  , hasCustomGUI(1)
944  , latencyInSamples(0)
945  , tailTimeInMSec(0)
946  , infiniteTailVST3(0)
948  , supportedIOCombinations(0)
950  , supportedAuxIOCombinations(0)
951  {}
952 
953  // --- string descriptors
954  std::string pluginName;
955  std::string shortPluginName;
956  std::string vendorName;
957  uint32_t pluginTypeCode = 0;
958 
959  bool hasSidechain = false;
960  bool processFrames = true;
961  bool wantsMIDI = true;
962  bool hasCustomGUI = true;
963  uint32_t latencyInSamples = 0;
964  double tailTimeInMSec = 0.0;
965  bool infiniteTailVST3 = false;
966 
968  ChannelIOConfig* supportedIOCombinations;
969 
971  ChannelIOConfig* supportedAuxIOCombinations;
972 
974  uint32_t getDefaultChannelIOConfigForChannelCount(uint32_t channelCount)
975  {
976  switch(channelCount)
977  {
978  case 0:
979  return kCFNone;
980  case 1:
981  return kCFMono;
982  case 2:
983  return kCFStereo;
984  case 3:
985  return kCFLCR;
986  case 4:
987  return kCFQuad; // or kCFLCR
988  case 5:
989  return kCF5p0;
990  case 6:
991  return kCF5p1; // or kCF6p0
992  case 7:
993  return kCF6p1; // or kCF7p0Sony kCF7p0DTS
994  case 8:
995  return kCF7p1DTS; // or kCF7p1Sony or kCF7p1Proximity
996  case 9:
997  return kCF8p1; // or kCF9p0
998  case 10:
999  return kCF9p1; // or kCF10p0
1000  case 11:
1001  return kCF10p1;
1002  case 12:
1003  return kCF11p1; // or kCF10p2
1004  case 13:
1005  return kCF13p0; // or kCF12p2
1006  case 14:
1007  return kCF13p1;
1008  case 24:
1009  return kCF22p2;
1010 
1011  default:
1012  return 0;
1013  }
1014  }
1016  uint32_t getChannelCountForChannelIOConfig(uint32_t format)
1017  {
1018  switch(format)
1019  {
1020  case kCFNone:
1021  return 0;
1022 
1023  case kCFMono:
1024  return 1;
1025  case kCFStereo:
1026  return 2;
1027  case kCFLCR:
1028  return 3;
1029 
1030  case kCFQuad:
1031  case kCFLCRS:
1032  return 4;
1033 
1034  case kCF5p0:
1035  return 5;
1036 
1037  case kCF5p1:
1038  case kCF6p0:
1039  return 6;
1040 
1041  case kCF6p1:
1042  case kCF7p0Sony:
1043  case kCF7p0DTS:
1044  return 7;
1045 
1046  case kCF7p1Sony:
1047  case kCF7p1DTS:
1048  case kCF7p1Proximity:
1049  return 8;
1050 
1051  case kCF8p1:
1052  case kCF9p0:
1053  return 9;
1054 
1055  case kCF9p1:
1056  case kCF10p0:
1057  return 10;
1058 
1059  case kCF10p1:
1060  return 11;
1061 
1062  case kCF10p2:
1063  case kCF11p1:
1064  return 12;
1065 
1066  case kCF13p0:
1067  case kCF12p2:
1068  return 13;
1069 
1070  case kCF13p1:
1071  return 14;
1072 
1073  case kCF22p2:
1074  return 24;
1075 
1076  default:
1077  return 0;
1078  }
1079  return 0;
1080  }
1081 };
1082 
1095 {
1096  JSControl() {}
1097  JSControl& operator=(const JSControl& aControl)
1098  {
1099  if (this == &aControl)
1100  return *this;
1101 
1102  trackpadIndex = aControl.trackpadIndex;
1103  midiControl = aControl.midiControl;
1105  midiControlName = aControl.midiControlName;
1107  joystickValue = aControl.joystickValue;
1111  return *this;
1112  }
1113 
1114  int32_t trackpadIndex = -1;
1115  bool midiControl = false;
1116  uint32_t midiControlCommand = 0;
1117  uint32_t midiControlName = 0;
1118  uint32_t midiControlChannel = 0;
1119  double joystickValue = 0.0;
1121  bool enableParamSmoothing = false;
1122  double smoothingTimeInMs = 0.0;
1123 };
1124 
1125 
1126 // --------------------------------------------------------------------------------------------------------------------------- //
1127 // --- INTERFACES
1128 // --------------------------------------------------------------------------------------------------------------------------- //
1129 
1142 {
1143 public:
1145  virtual void updateView() = 0;
1146 
1152  virtual void pushDataValue(double data) { }
1153 
1162  virtual void sendMessage(void* data) { }
1163 };
1164 
1177 {
1178 public:
1180  virtual bool setWindowFrameSize(double left = 0, double top = 0, double right = 0, double bottom = 0) = 0;
1181 
1183  virtual bool getWindowFrameSize(double& left, double& top, double& right, double& bottom) = 0;
1184 
1186  virtual void enableGUIDesigner(bool enable) { }
1187 };
1188 
1201 {
1202 public:
1204  virtual void setGUIWindowFrame(IGUIWindowFrame* frame) = 0;
1205 };
1206 
1207 
1220 {
1221 public:
1223  virtual bool registerCustomView(std::string customViewName, ICustomView* customViewConnector) = 0;
1224 
1226  virtual bool deRegisterCustomView(ICustomView* customViewConnector) = 0;
1227 
1229  virtual bool guiDidOpen() = 0;
1230 
1232  virtual bool guiWillClose() = 0;
1233 
1235  virtual bool guiTimerPing() = 0;
1236 
1238  virtual bool registerSubcontroller(std::string subcontrollerName, ICustomView* customViewConnector) { return false; }
1239 
1241  virtual bool deRregisterSubcontroller(ICustomView* customViewConnector) { return false; }
1242 
1244  virtual uint32_t getNonBoundVariableCount() { return 0; }
1245 
1247  virtual uint32_t getNextNonBoundVariableTag(int startTag) { return -1; }
1248 
1250  virtual bool checkNonBoundValueChange(int tag, float normalizedValue) { return false; }
1251 
1253  virtual void checkSendUpdateGUI(int tag, float actualValue, bool loadingPreset, void* data1 = 0, void* data2 = 0) {}
1254 
1256  virtual void parameterChanged(int32_t controlID, double actualValue, double normalizedValue) {}
1257 
1259  virtual double getNormalizedPluginParameter(int32_t controlID) { return 0.0; }
1260 
1262  virtual void setNormalizedPluginParameter(int32_t controlID, double value) { }
1263 
1265  virtual double getActualPluginParameter(int32_t controlID) { return 0.0; }
1266 
1268  virtual void setActualPluginParameter(int32_t controlID, double value) { }
1269 
1271  virtual void beginParameterChangeGesture(int controlTag){ }
1272 
1274  virtual void endParameterChangeGesture(int controlTag){ }
1275 };
1276 
1277 
1290 {
1291 public:
1293  virtual void sendHostMessage(const HostMessageInfo& hostMessageInfo) = 0;
1294 };
1295 
1308 {
1309 public:
1311  virtual uint32_t getEventCount() = 0;
1312 
1314  virtual bool fireMidiEvents(uint32_t uSampleOffset) = 0;
1315 };
1316 
1317 
1330 {
1331 public:
1333  virtual uint32_t getParameterIndex() = 0;
1334 
1337  virtual bool getValueAtOffset(long int _sampleOffset, double _previousValue, double& _nextValue) = 0;
1338 
1341  virtual bool getNextValue(double& _nextValue) = 0;
1342 };
1343 
1344 // --------------------------------------------------------------------------------------------------------------------------- //
1345 // --- HELPER FUNCTIONS
1346 // --------------------------------------------------------------------------------------------------------------------------- //
1356 inline std::string numberToString(unsigned int number)
1357 {
1358  std::ostringstream strm;
1359  strm << number;
1360  std::string str = strm.str();
1361  return str;
1362 }
1363 
1373 inline std::string numberToString(int number)
1374 {
1375  std::ostringstream strm;
1376  strm << number;
1377  std::string str = strm.str();
1378  return str;
1379 }
1380 
1390 inline std::string numberToString(float number)
1391 {
1392  std::ostringstream strm;
1393  strm << number;
1394  std::string str = strm.str();
1395  return str;
1396 }
1397 
1407 inline std::string numberToString(double number)
1408 {
1409  std::ostringstream strm;
1410  strm << number;
1411  std::string str = strm.str();
1412  return str;
1413 }
1414 
1424 inline std::string boolToStdString(bool value)
1425 {
1426  std::string returnString;
1427  if (value) returnString.assign("true");
1428  else returnString.assign("false");
1429  return returnString;
1430 }
1431 
1432 
1433 #endif //_pluginstructures_h
virtual bool getWindowFrameSize(double &left, double &top, double &right, double &bottom)=0
virtual double getActualPluginParameter(int32_t controlID)
Definition: pluginstructures.h:1265
uint32_t aaxManufacturerID
aax manu ID
Definition: pluginstructures.h:221
uint32_t numSupportedIOCombinations
should support at least main 3 combos
Definition: pluginstructures.h:967
std::string shortPluginName
name (up to 15 chars)
Definition: pluginstructures.h:955
Information package about the current DAW session. Sample rate and bit-depth of audio.
Definition: pluginstructures.h:906
bool boundVariableUpdate
bound variable is being udpated
Definition: pluginstructures.h:637
bool bTransportStateChanged
only notifies a change, but not what was changed to...
Definition: pluginstructures.h:762
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:238
Information that includes the message code as well as the message data.
Definition: pluginstructures.h:545
Attribute value smashed down into a union.
Definition: pluginstructures.h:666
uint32_t guiUpdateCode
unused
Definition: pluginstructures.h:370
std::string vst3BundleID
VST bundle ID /* MacOS only: this MUST match the bundle identifier in your info.plist file */...
Definition: pluginstructures.h:234
double dBPM
beats per minute, aka "tempo"
Definition: pluginstructures.h:734
double continousTimeSamples
project time, without loop (optional)
Definition: pluginstructures.h:743
double cycleStartMusic
Definition: pluginstructures.h:746
uint32_t midiControlCommand
MIDI CC type.
Definition: pluginstructures.h:1116
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:761
bool hasCustomGUI
default on
Definition: pluginstructures.h:962
bool bufferProcUpdate
update at top of buffer process
Definition: pluginstructures.h:638
float * auxAudioOutputFrame
aux output frame (array) for future use
Definition: pluginstructures.h:873
Equalization.
Definition: pluginstructures.h:84
std::vector< PresetParameter > presetParameters
list of parameters for this preset
Definition: pluginstructures.h:352
bool useCustomData
custom data flag (reserved for future use)
Definition: pluginstructures.h:301
uint32_t numAudioInChannels
audio input channel count
Definition: pluginstructures.h:835
double actualValue
value
Definition: pluginstructures.h:329
virtual void setNormalizedPluginParameter(int32_t controlID, double value)
Definition: pluginstructures.h:1262
float * controlSignalOutputs
control signals out (reserved for future use)
Definition: pluginstructures.h:846
Dither, noise shaping, etc.
Definition: pluginstructures.h:92
uint32_t pluginTypeCode
FX or synth.
Definition: pluginstructures.h:957
Interface for VST3 parameter value update queue (sample accurate automation)
Definition: pluginstructures.h:1329
bool wantsMIDI
want MIDI (don&#39;t need to actually use it)
Definition: pluginstructures.h:961
Information package that arrives with each new audio frame; called internally from the buffer process...
Definition: pluginstructures.h:866
attributeType
AttributeType identifier for ASPiK PluginParameter auxilliary storage system. You are free to impleme...
Definition: pluginstructures.h:653
int fourCharCode
the mystic and ancient 4-character code (oooh)
Definition: pluginstructures.h:228
double vectorBDMix
BD mix.
Definition: pluginstructures.h:277
double projectTimeMusic
musical position in quarter notes (1.0 equals 1 quarter note)
Definition: pluginstructures.h:744
ChannelIOConfig channelIOConfig
input/output channel I/O configuration pair
Definition: pluginstructures.h:880
virtual void setActualPluginParameter(int32_t controlID, double value)
Definition: pluginstructures.h:1268
float * audioInputFrame
audio input frame (array)
Definition: pluginstructures.h:870
uint32_t vst3SampleAccurateGranularity
sample accuracy granularity (update interval)
Definition: pluginstructures.h:233
uint32_t numControlSignalOutputs
num control signals out (reserved for future use)
Definition: pluginstructures.h:848
uint32_t midiData1
BYTE data 1 as UINT.
Definition: pluginstructures.h:489
uint32_t getChannelCountForChannelIOConfig(uint32_t format)
Definition: pluginstructures.h:1016
uint32_t bitDepth
wav file bit depth (not supported in all APIs)
Definition: pluginstructures.h:918
IGUIPluginConnector * guiPluginConnector
GUI-to-plugin-shell interface.
Definition: pluginstructures.h:596
bool enableVST3SampleAccurateAutomation
flag for sample accurate automation
Definition: pluginstructures.h:232
ChannelIOConfig auxChannelIOConfig
aux input/output channel I/O configuration pair
Definition: pluginstructures.h:842
virtual bool guiTimerPing()=0
int32_t trackpadIndex
trackpad or joystick index
Definition: pluginstructures.h:1114
uint32_t numAuxAudioOutChannels
audio input channel count
Definition: pluginstructures.h:878
void * outMessageData
outgoing message data (interpretation depends on message)
Definition: pluginstructures.h:560
messageType
Message identifier for ASPiK Core messaging system.
Definition: pluginstructures.h:510
Pitch processing.
Definition: pluginstructures.h:86
uint32_t controlID
ID value.
Definition: pluginstructures.h:299
uint32_t presetIndex
preset index
Definition: pluginstructures.h:349
virtual bool getValueAtOffset(long int _sampleOffset, double _previousValue, double &_nextValue)=0
int midiPitchBendValue
midi pitch bend value (14-bit)
Definition: pluginstructures.h:492
std::string pluginName
name (up to 31 chars)
Definition: pluginstructures.h:954
bool enableParamSmoothing
param smoothing on joystick (can be CPU abusive)
Definition: pluginstructures.h:1121
IGUIWindowFrame * guiWindowFrame
GUI-to-frame interface (resizing)
Definition: pluginstructures.h:597
void * customData
custom data (reserved for future use)
Definition: pluginstructures.h:304
bool processFrames
want frames (default)
Definition: pluginstructures.h:960
unsigned long long uAbsoluteFrameBufferIndex
the sample index at top of buffer
Definition: pluginstructures.h:732
double joystickValue
joystick value as a double
Definition: pluginstructures.h:1119
Information that defines a preset value as a control_ID::value data pair.
Definition: pluginstructures.h:318
attributeValue value
value in union form
Definition: pluginstructures.h:713
std::string vendorName
manufacturer name
Definition: pluginstructures.h:956
virtual bool checkNonBoundValueChange(int tag, float normalizedValue)
Definition: pluginstructures.h:1250
uint32_t numControlSignalInputs
num control signals in (reserved for future use)
Definition: pluginstructures.h:847
bool bIsPlayingAAX
flag if playing
Definition: pluginstructures.h:771
HostInfo * hostInfo
pointer to host data for this buffer
Definition: pluginstructures.h:851
virtual void enableGUIDesigner(bool enable)
Definition: pluginstructures.h:1186
Information about a paraemeter being updated. Used when bound variables are updated. Multiple advanced uses.
Definition: pluginstructures.h:615
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:635
double sampleRate
sample rate
Definition: pluginstructures.h:917
uint32_t samplesToNextClock
MIDI Clock Resolution (24 Per Quarter Note), can be negative (nearest)
Definition: pluginstructures.h:748
double vectorA
A value.
Definition: pluginstructures.h:271
uint32_t numAudioOutChannels
audio input channel count
Definition: pluginstructures.h:876
virtual void endParameterChangeGesture(int controlTag)
Definition: pluginstructures.h:1274
uint32_t numAuxAudioInChannels
audio input channel count
Definition: pluginstructures.h:877
uint32_t midiMessage
BYTE message as UINT.
Definition: pluginstructures.h:487
uint32_t latencyInSamples
latency
Definition: pluginstructures.h:963
virtual bool deRregisterSubcontroller(ICustomView *customViewConnector)
Definition: pluginstructures.h:1241
Phasing, flanging, chorus, etc.
Definition: pluginstructures.h:89
uint32_t numAuxAudioInChannels
aux input channel count
Definition: pluginstructures.h:837
double width
GUI width in pixels.
Definition: pluginstructures.h:600
uint32_t message
message code
Definition: pluginstructures.h:558
float * controlSignalOutputs
control signals out (reserved for future use)
Definition: pluginstructures.h:886
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:433
Information package that arrives with each new audio buffer process cycle. Contains everything needed...
Definition: pluginstructures.h:812
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:368
virtual void checkSendUpdateGUI(int tag, float actualValue, bool loadingPreset, void *data1=0, void *data2=0)
Definition: pluginstructures.h:1253
Custom interface so that GUI can pass information to plugin shell in a thread-safe manner...
Definition: pluginstructures.h:1219
float fTimeSigNumerator
time signature numerator
Definition: pluginstructures.h:735
uint32_t uTimeSigDenomintor
time signature denominator
Definition: pluginstructures.h:736
std::string presetName
preset name
Definition: pluginstructures.h:350
bool midiControl
MIDI enabled.
Definition: pluginstructures.h:1115
bool bLooping
looping flag
Definition: pluginstructures.h:773
Custom View interface to allow plugin core to create safe communication channels with GUI custom view...
Definition: pluginstructures.h:1141
ChannelIOConfig channelIOConfig
input/output channel I/O configuration pair
Definition: pluginstructures.h:841
uint32_t state
a combination of the values from StatesAndFlags; use to decode validity of other VST3 items in this s...
Definition: pluginstructures.h:741
uint32_t nDeltaSampleOffsetToNextBeat
samples to next beat
Definition: pluginstructures.h:763
Reverberation and room/space simulation.
Definition: pluginstructures.h:87
bool applyTaper
add tapering to udpate
Definition: pluginstructures.h:639
Incoming data from a vector joystick.
Definition: pluginstructures.h:253
virtual void parameterChanged(int32_t controlID, double actualValue, double normalizedValue)
Definition: pluginstructures.h:1256
double audioTimeStamp
time stamp (not all APIs)
Definition: pluginstructures.h:495
Compressor, expander, limiter, etc.
Definition: pluginstructures.h:85
double vectorACMix
AC mix.
Definition: pluginstructures.h:276
hostMessage
Use this enum to identify a message to send to the plugin shell (host)
Definition: pluginstructures.h:395
double vectorD
D value.
Definition: pluginstructures.h:274
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:933
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:772
Definition: pluginstructures.h:397
uint32_t midiSampleOffset
sample offset of midi event within audio buffer
Definition: pluginstructures.h:491
uint32_t controlID
ID.
Definition: pluginstructures.h:328
Double buffered queue for MIDI messages.
Definition: pluginstructures.h:1307
float ** auxInputs
aux (sidechain) input buffers
Definition: pluginstructures.h:833
double dCycleEndBeat
loop end
Definition: pluginstructures.h:767
Definition: pluginstructures.h:343
Virtual instruments, metronomes, and other software audio sources.
Definition: pluginstructures.h:95
uint32_t midiChannel
BYTE channel as UINT.
Definition: pluginstructures.h:488
bool loadingPreset
a preset is being loaded
Definition: pluginstructures.h:636
virtual uint32_t getParameterIndex()=0
bool midiIsDirty
dirty flag
Definition: pluginstructures.h:494
double vectorC
C value.
Definition: pluginstructures.h:273
bool hasSidechain
sidechain flag
Definition: pluginstructures.h:959
virtual void beginParameterChangeGesture(int controlTag)
Definition: pluginstructures.h:1271
long long systemTime
system time in nanoseconds (optional)
Definition: pluginstructures.h:742
virtual double getNormalizedPluginParameter(int32_t controlID)
Definition: pluginstructures.h:1259
Structure of a pair of channel format enumerators that set an input/output channel I/O capability...
Definition: pluginstructures.h:422
IMidiEventQueue * midiEventQueue
MIDI event queue.
Definition: pluginstructures.h:892
uint32_t numAudioInChannels
audio input channel count
Definition: pluginstructures.h:875
void * inMessageData
incoming message data (interpretation depends on message)
Definition: pluginstructures.h:559
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:222
Special effects.
Definition: pluginstructures.h:97
std::vector< GUIParameter > guiParameters
list of updates
Definition: pluginstructures.h:373
double tailTimeInMSec
tail time
Definition: pluginstructures.h:964
uint32_t numAuxAudioOutChannels
aux output channel count (not used)
Definition: pluginstructures.h:838
std::string vst3FUID
VST GUID.
Definition: pluginstructures.h:231
void * customData
unused
Definition: pluginstructures.h:376
void * window
window handle or NSView*
Definition: pluginstructures.h:595
Information about auxilliary parameter details - purely customizeable. This uses the attributeValue u...
Definition: pluginstructures.h:688
ChannelIOConfig auxChannelIOConfig
aux input/output channel I/O configuration pair
Definition: pluginstructures.h:881
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:1424
uint32_t numControlSignalInputs
num control signals in (reserved for future use)
Definition: pluginstructures.h:887
uint32_t attributeID
attribute ID
Definition: pluginstructures.h:714
uint32_t numAudioOutChannels
audio output channel count
Definition: pluginstructures.h:836
uint32_t midiData2
BYTE data 2 as UINT.
Definition: pluginstructures.h:490
uint32_t midiControlName
MIDI CC.
Definition: pluginstructures.h:1117
virtual bool registerSubcontroller(std::string subcontrollerName, ICustomView *customViewConnector)
Definition: pluginstructures.h:1238
virtual bool deRegisterCustomView(ICustomView *customViewConnector)=0
float * controlSignalInputs
control signals in (reserved for future use)
Definition: pluginstructures.h:845
double barPositionMusic
last bar start position, in quarter notes
Definition: pluginstructures.h:745
double cycleEndMusic
cycle end in quarter notes
Definition: pluginstructures.h:747
virtual void sendMessage(void *data)
Definition: pluginstructures.h:1162
uint32_t numControlSignalOutputs
num control signals out (reserved for future use)
Definition: pluginstructures.h:888
Distortion, saturation, and harmonic enhancement.
Definition: pluginstructures.h:90
Information that defines a single GUI parameter&#39;s possible values and ID.
Definition: pluginstructures.h:291
float * controlSignalInputs
control signals in (reserved for future use)
Definition: pluginstructures.h:885
Information package a joystick or trackpad GUI interaction.
Definition: pluginstructures.h:1094
long long nLoopStartTick
start tick for loop
Definition: pluginstructures.h:774
std::string aaxBundleID
AAX bundle /* MacOS only: this MUST match the bundle identifier in your info.plist file */...
Definition: pluginstructures.h:224
Structure that is used during GUI creation to safely pass information about the GUI size and interfac...
Definition: pluginstructures.h:577
double dCurrentMeasureDownBeat
current downbeat
Definition: pluginstructures.h:764
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:223
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:1200
Custom interface to allow resizing of GUI window; this is mainly used for the GUI designer...
Definition: pluginstructures.h:1176
uint32_t outputChannelFormat
output format for this I/O pair
Definition: pluginstructures.h:434
virtual uint32_t getNextNonBoundVariableTag(int startTag)
Definition: pluginstructures.h:1247
double dCurrentBeat
current DAW beat value
Definition: pluginstructures.h:760
double actualValue
actual value
Definition: pluginstructures.h:300
Information from the host that is updated on each buffer process cycle; includes BPM, time signature, SMPTE and other data. The values in the stock structure are consistent across most APIs, however others may be added (commnted out here)
Definition: pluginstructures.h:729
double smoothingTimeInMs
JS smoothing time.
Definition: pluginstructures.h:1122
float * auxAudioInputFrame
aux input frame (array)
Definition: pluginstructures.h:872
bool infiniteTailVST3
VST3 infinite tail flag.
Definition: pluginstructures.h:965
uint32_t aaxPluginCategoryCode
aax plugin category
Definition: pluginstructures.h:225
uint32_t getDefaultChannelIOConfigForChannelCount(uint32_t channelCount)
Definition: pluginstructures.h:974
virtual void updateView()=0
double dCycleStartBeat
loop start
Definition: pluginstructures.h:766
virtual void sendHostMessage(const HostMessageInfo &hostMessageInfo)=0
std::string inMessageString
incoming message data as a std::string (interpretation depends on message)
Definition: pluginstructures.h:562
Noise reduction.
Definition: pluginstructures.h:91
uint32_t numFramesToProcess
frame count in this buffer
Definition: pluginstructures.h:840
Custom interface to send the plugin shell a message from plugin core.
Definition: pluginstructures.h:1289
std::string outMessageString
outgoing message data as a std::string (interpretation depends on message)
Definition: pluginstructures.h:563
virtual uint32_t getNonBoundVariableCount()
Definition: pluginstructures.h:1244
bool korgVectorJoystickOrientation
vector joystick orientation
Definition: pluginstructures.h:1120
std::string numberToString(unsigned int number)
converts unsigned int value to std::string
Definition: pluginstructures.h:1356
double height
GUI height in pixels.
Definition: pluginstructures.h:601
float midiNormalizedPitchBendValue
normalized bitch bend value
Definition: pluginstructures.h:493
bool bIsCycling
looping
Definition: pluginstructures.h:765
uint32_t midiControlChannel
MIDI CC Channel.
Definition: pluginstructures.h:1118
uint32_t currentFrame
index of this frame
Definition: pluginstructures.h:882
IMidiEventQueue * midiEventQueue
MIDI event queue.
Definition: pluginstructures.h:852
std::string auBundleID
AU bundle ID /* MacOS only: this MUST match the bundle identifier in your info.plist file */...
Definition: pluginstructures.h:237
uint32_t numSupportedAuxIOCombinations
should support at least main 3 combos
Definition: pluginstructures.h:970
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:1152
virtual bool guiDidOpen()=0
long long nLoopEndTick
end tick for loop
Definition: pluginstructures.h:775
float ** inputs
audio input buffers
Definition: pluginstructures.h:831
float ** auxOutputs
aux outputs - for future use
Definition: pluginstructures.h:834
virtual bool fireMidiEvents(uint32_t uSampleOffset)=0
Information about a MIDI event.
Definition: pluginstructures.h:449
double vectorB
Bvalue.
Definition: pluginstructures.h:272
float ** outputs
audio output buffers
Definition: pluginstructures.h:832
bool isSmoothing
param is being (bulk) smoothed
Definition: pluginstructures.h:634
bool useCustomData
unused
Definition: pluginstructures.h:379
HostInfo * hostInfo
pointer to host data for this buffer
Definition: pluginstructures.h:891
double dAbsoluteFrameBufferTime
the time in seconds of the sample index at top of buffer
Definition: pluginstructures.h:733
float * audioOutputFrame
audio output frame (array)
Definition: pluginstructures.h:871