C++:
VstIntPtr function dispatcher(AEffect* e, VstInt32 opcode, VstInt32 index, VstIntPtr value,
void* ptr, float opt);
Delphi:
function dispatcher(e: PAEffect; opcode, index: VstInt32; value: VstIntPtr; ptr: pointer;
opt: Single): VstIntPtr; cdecl;
always returns 0, unless otherwise defined.
all string-pointers points to zero terminated strings.
e[ ]: = plugin receives as entry parameter
x[ ]: = plugin returns to host
dispatcher() function using opcode 69:
69. effGetSpeakerArrangement
>= VST2.3
@see AudioEffectX::getSpeakerArrangement()
e[value]: pointer to VstSpeakerArrangement** pluginInput
e[ptr]: pointer to VstSpeakerArrangement** pluginOutput
x[return]: 1 = successful
C++ method:
bool AudioEffectX::getSpeakerArrangement(VstSpeakerArrangement** pluginInput, VstSpeakerArrangement** pluginOutput)
Delphi method:
function AudioEffectX.getSpeakerArrangement(var pluginInput,pluginOutput: PVstSpeakerArrangement): boolean;
VstSpeakerArrangement structure:
struct VstSpeakerArrangement
{
VstInt32 type; // e.g. #kSpeakerArr51 for 5.1 @see VstSpeakerArrangementType
VstInt32 numChannels; // number of channels in this speaker arrangement
VstSpeakerProperties speakers[8]; // variable sized speaker array
};
VstSpeakerArrangementType constants:
enum VstSpeakerArrangementType
{
kSpeakerArrUserDefined = -2, // -2=user defined
kSpeakerArrEmpty = -1, // -1=empty arrangement
kSpeakerArrMono = 0, // 0=M
kSpeakerArrStereo, // 1=L R
kSpeakerArrStereoSurround, // 2=Ls Rs
kSpeakerArrStereoCenter, // 3=Lc Rc
kSpeakerArrStereoSide, // 4=Sl Sr
kSpeakerArrStereoCLfe, // 5=C Lfe
kSpeakerArr30Cine, // 6=L R C
kSpeakerArr30Music, // 7=L R S
kSpeakerArr31Cine, // 8=L R C Lfe
kSpeakerArr31Music, // 9=L R Lfe S
kSpeakerArr40Cine, // 10=L R C S (LCRS)
kSpeakerArr40Music, // 11=L R Ls Rs (Quadro)
kSpeakerArr41Cine, // 12=L R C Lfe S (LCRS+Lfe)
kSpeakerArr41Music, // 13=L R Lfe Ls Rs (Quadro+Lfe)
kSpeakerArr50, // 14=L R C Ls Rs
kSpeakerArr51, // 15=L R C Lfe Ls Rs
kSpeakerArr60Cine, // 16=L R C Ls Rs Cs
kSpeakerArr60Music, // 17=L R Ls Rs Sl Sr
kSpeakerArr61Cine, // 18=L R C Lfe Ls Rs Cs
kSpeakerArr61Music, // 19=L R Lfe Ls Rs Sl Sr
kSpeakerArr70Cine, // 20=L R C Ls Rs Lc Rc
kSpeakerArr70Music, // 21=L R C Ls Rs Sl Sr
kSpeakerArr71Cine, // 22=L R C Lfe Ls Rs Lc Rc
kSpeakerArr71Music, // 23=L R C Lfe Ls Rs Sl Sr
kSpeakerArr80Cine, // 24=L R C Ls Rs Lc Rc Cs
kSpeakerArr80Music, // 25=L R C Ls Rs Cs Sl Sr
kSpeakerArr81Cine, // 26=L R C Lfe Ls Rs Lc Rc Cs
kSpeakerArr81Music, // 27=L R C Lfe Ls Rs Cs Sl Sr
kSpeakerArr102, // 28=L R C Lfe Ls Rs Tfl Tfc Tfr Trl Trr Lfe2
kNumSpeakerArr
};