@Falcosoft
And here it comes
So basicallly if I wrote my own C++ wrapper to your function, I could get accesss to just that functionality?
Will I be able to use the standard bass_vst. dll on top simultaneously?
Edit: You said that the call returns if the host is playing or not. So how is it possible to make the client vst start playing when the host does
Hi,
1. No, you cannot use both dlls at the same time.
2. The 2 versions should be fairly compatible so you should try first my version without any changes and see if it works without modifications with the current Bass.Net warapper.
3. If it's not then report back and I will add the missing exports (in theory my version has more exports than the standard version but it should not cause problems).
4. Actually you should not modify many things (only 2). You can find the details of the relevant commit here:
https://github.com/Falcosoft/BASS_VST/commit/32b24cbc4de53673f96fca7487be34334deb19acThe point is that you should change only some constants since other changes of the commit was done in a compatible way so no changes are required on the interface.
a. the definition of BASS_VST_AUDIO_MASTER from 3 to 4 (this way it can be used as a flag).
b. Add the definition of BASS_VST_TEMPO_REQUEST 8.
You said that the call returns if the host is playing or not. So how is it possible to make the client vst start playing when the host does
It is working this way:
With
BASS_VST_SetCallback(VstHandle, VstCallbackProc, NULL); you can define what callback the plugin should call when the plugin requires time/tempo info from the host.
The definition of your callback is:
typedef DWORD (CALLBACK VSTPROC)(DWORD vstHandle, DWORD action, DWORD param1, DWORD param2, void* user);First in your callback you should check if the action parameter is BASS_VST_TEMPO_REQUEST.
If it is then the last user parameter can be casted to a (VstTimeInfo*) struct.
Then you can set any fields of the VstTimeInfo to your real value.
In your case when you press play on your interface you should set that 1. your transportChanged state changed. 2. The state of playing become 1.
So in your callback you can write:
VstTimeInfo* vstTimeInfo = (VstTimeInfo*)user;
vstTimeInfo->flags = 0;
if (transportChanged) {
vstTimeInfo->flags |= kVstTransportChanged;
transportChanged = false;
}
if (playing) vstTimeInfo->flags |= kVstTransportPlaying;
return 1;
Ps: If you can share the VST version of your plugin somewhere please do. Then I could check if your plugin really is working this way or not.
I have visited the site of AKAI MPC Beats but it requires user registration that I would not like to do.