User defined VST callback method to be used with BASS_VST_SetCallback(Int32, VSTPROC, IntPtr).
Namespace: Un4seen.Bass.AddOn.Vst
Assembly: Bass.Net (in Bass.Net.dll) Version: 2.4.17.5
Syntax
public delegate int VSTPROC( int vstHandle, BASSVSTAction action, int param1, int param2, IntPtr user )
Parameters
- vstHandle
- Type: SystemInt32
The VST plugin handle as returned from BASS_VST_ChannelSetDSP(Int32, String, BASSVSTDsp, Int32). - action
- Type: Un4seen.Bass.AddOn.VstBASSVSTAction
The action parameter, one of the BASSVSTAction values (see below). - param1
- Type: SystemInt32
The first parameter (see the VST SDK for further details). - param2
- Type: SystemInt32
The second parameter (see the VST SDK for further details). - user
- Type: SystemIntPtr
The user parameter as specified in the BASS_VST_SetCallback(Int32, VSTPROC, IntPtr) call.
Return Value
Type: Int32Unless defined otherwise, the callback function should always return 0.
Remarks
The callback function is called with one of the following actions (see BASSVSTAction):
Actions: | |
---|---|
BASS_VST_PARAM_CHANGED | Some parameters are changed by the editor opened by BASS_VST_EmbedEditor(Int32, IntPtr), NOT called if you call BASS_VST_SetParam(Int32, Int32, Single).
param1=oldParamNum, param2=newParamNum; might be used to detect changes in the number of parameters in case the VST uses dynamic parameter numbers. |
BASS_VST_EDITOR_RESIZED | The embedded editor window should be resized, the new width/height can be found in param1/param2 and in BASS_VST_GetInfo(Int32, BASS_VST_INFO). |
BASS_VST_AUDIO_MASTER | Can be used to subclass the audioMaster callback (see the VST SDK), param1 is a pointer to a BASS_VST_AUDIO_MASTER_PARAM structure. |
Examples
private VSTPROC _myVstProc; // keep the callback delegate in a global member ... // your VST callback - referenced below by BASS_VST_SetCallback() private int YourVstProc(int vstHandle, BASSVSTAction action, int param1, int param2, IntPtr user) { switch (action) { case BASSVSTAction.BASS_VST_PARAM_CHANGED: // we get notified that the user has changed some sliders in the editor - // do what to do here ... break; case BASSVSTAction.BASS_VST_EDITOR_RESIZED: // the editor window requests a new size, // maybe we should resize the window the editor is embedded in? // the new width/height can be found in param1/param2 break; case BASSVSTAction.BASS_VST_AUDIO_MASTER: // this is only for people familiar with the VST SDK, // param1 is a pointer to a BASS_VST_AUDIO_MASTER_PARAM structure // which contains all information needed break; } return 0; } ... // open the VST editor (e.g. if we are inside a System.Windows.Forms.Form) BassVst.BASS_VST_EmbedEditor(vstHandle, this.Handle); // we want to get notified for parameter changes etc. _myVstProc = new VSTPROC(YourVstProc); BassVst.BASS_VST_SetCallback(vstHandle, _myVstProc, IntPtr.Zero);
See Also