| @@ -19,7 +19,7 @@ | |||||
| /// changed: 26Jun2018, 27Jun2018, 29Jun2018, 01Jul2018, 02Jul2018, 06Jul2018, 13Jul2018 | /// changed: 26Jun2018, 27Jun2018, 29Jun2018, 01Jul2018, 02Jul2018, 06Jul2018, 13Jul2018 | ||||
| /// 26Jul2018, 04Aug2018, 05Aug2018, 06Aug2018, 07Aug2018, 09Aug2018, 11Aug2018 | /// 26Jul2018, 04Aug2018, 05Aug2018, 06Aug2018, 07Aug2018, 09Aug2018, 11Aug2018 | ||||
| /// 18Aug2018, 19Aug2018, 05Sep2018, 06Sep2018, 10Oct2018, 26Oct2018, 10Mar2019 | /// 18Aug2018, 19Aug2018, 05Sep2018, 06Sep2018, 10Oct2018, 26Oct2018, 10Mar2019 | ||||
| /// 12Mar2019 | |||||
| /// 12Mar2019, 07May2019 | |||||
| /// | /// | ||||
| /// | /// | ||||
| /// | /// | ||||
| @@ -32,6 +32,7 @@ | |||||
| // (note) causes reason to shut down when console is freed (when plugin is deleted) | // (note) causes reason to shut down when console is freed (when plugin is deleted) | ||||
| // #define USE_CONSOLE defined | // #define USE_CONSOLE defined | ||||
| // #define VST2_OPCODE_DEBUG defined | |||||
| #undef RACK_HOST | #undef RACK_HOST | ||||
| @@ -754,7 +755,9 @@ public: | |||||
| Dprintf("xxx vstrack_plugin: destroyResamplerStates() done\n"); | Dprintf("xxx vstrack_plugin: destroyResamplerStates() done\n"); | ||||
| #ifdef USE_CONSOLE | #ifdef USE_CONSOLE | ||||
| Sleep(5000); | |||||
| // FreeConsole(); | // FreeConsole(); | ||||
| #endif // USE_CONSOLE | #endif // USE_CONSOLE | ||||
| } | } | ||||
| @@ -1570,6 +1573,92 @@ void VSTPluginProcessReplacingFloat32(VSTPlugin *vstPlugin, | |||||
| #ifdef VST2_OPCODE_DEBUG | |||||
| static const char *vst2_opcode_names[] = { | |||||
| "effOpen", | |||||
| "effClose", | |||||
| "effSetProgram", | |||||
| "effGetProgram", | |||||
| "effSetProgramName", | |||||
| "effGetProgramName", | |||||
| "effGetParamLabel", | |||||
| "effGetParamDisplay", | |||||
| "effGetParamName", | |||||
| "DEPR_effGetVu", | |||||
| "effSetSampleRate", | |||||
| "effSetBlockSize", | |||||
| "effMainsChanged", | |||||
| "effEditGetRect", | |||||
| "effEditOpen", | |||||
| "effEditClose", | |||||
| "DEPR_effEditDraw", | |||||
| "DEPR_effEditMouse", | |||||
| "DEPR_effEditKey", | |||||
| "effEditIdle", | |||||
| "DEPR_effEditTop", | |||||
| "DEPR_effEditSleep", | |||||
| "DEPR_effIdentify", | |||||
| "effGetChunk", | |||||
| "effSetChunk", | |||||
| // extended: | |||||
| "effProcessEvents", | |||||
| "effCanBeAutomated", | |||||
| "effString2Parameter", | |||||
| "effGetNumProgramCategories", | |||||
| "effGetProgramNameIndexed", | |||||
| "DEPR_effCopyProgram", | |||||
| "DEPR_effConnectInput", | |||||
| "DEPR_effConnectOutput", | |||||
| "effGetInputProperties", | |||||
| "effGetOutputProperties", | |||||
| "effGetPlugCategory", | |||||
| "DEPR_effGetCurrentPosition", | |||||
| "DEPR_effGetDestinationBuffer", | |||||
| "effOfflineNotify", | |||||
| "effOfflinePrepare", | |||||
| "effOfflineRun", | |||||
| "effProcessVarIo", | |||||
| "effSetSpeakerArrangement", | |||||
| "DEPR_effSetBlockSizeAndSampleRate", | |||||
| "effSetBypass", | |||||
| "effGetEffectName", | |||||
| "DEPR_effGetErrorText", | |||||
| "effGetVendorString", | |||||
| "effGetProductString", | |||||
| "effGetVendorVersion", | |||||
| "effVendorSpecific", | |||||
| "effCanDo", | |||||
| "effGetTailSize", | |||||
| "DEPR_effIdle", | |||||
| "DEPR_effGetIcon", | |||||
| "DEPR_effSetViewPosition", | |||||
| "effGetParameterProperties", | |||||
| "DEPR_effKeysRequired", | |||||
| "effGetVstVersion", | |||||
| "effEditKeyDown", | |||||
| "effEditKeyUp", | |||||
| "effSetEditKnobMode", | |||||
| "effGetMidiProgramName", | |||||
| "effGetCurrentMidiProgram", | |||||
| "effGetMidiProgramCategory", | |||||
| "effHasMidiProgramsChanged", | |||||
| "effGetMidiKeyName", | |||||
| "effBeginSetProgram", | |||||
| "effEndSetProgram", | |||||
| "effGetSpeakerArrangement", | |||||
| "effShellGetNextPlugin", | |||||
| "effStartProcess", | |||||
| "effStopProcess", | |||||
| "effSetTotalSampleToProcess", | |||||
| "effSetPanLaw", | |||||
| "effBeginLoadBank", | |||||
| "effBeginLoadProgram", | |||||
| "effSetProcessPrecision", | |||||
| "effGetNumMidiInputChannels", | |||||
| "effGetNumMidiOutputChannels", | |||||
| }; | |||||
| #endif // VST2_OPCODE_DEBUG | |||||
| /** | /** | ||||
| * This is the plugin called by the host to communicate with the plugin, mainly to request information (like the | * This is the plugin called by the host to communicate with the plugin, mainly to request information (like the | ||||
| * vendor string, the plugin category...) or communicate state/changes (like open/close, frame rate...) | * vendor string, the plugin category...) or communicate state/changes (like open/close, frame rate...) | ||||
| @@ -1590,7 +1679,11 @@ VstIntPtr VSTPluginDispatcher(VSTPlugin *vstPlugin, | |||||
| void *ptr, | void *ptr, | ||||
| float opt | float opt | ||||
| ) { | ) { | ||||
| // Dprintf("vstrack_plugin: called VSTPluginDispatcher(%d)\n", opCode); | |||||
| #ifdef VST2_OPCODE_DEBUG | |||||
| Dprintf("vstrack_plugin: called VSTPluginDispatcher(%d) (%s)\n", opCode, vst2_opcode_names[opCode]); | |||||
| #else | |||||
| Dprintf("vstrack_plugin: called VSTPluginDispatcher(%d)\n", opCode); | |||||
| #endif // VST2_OPCODE_DEBUG | |||||
| VstIntPtr r = 0; | VstIntPtr r = 0; | ||||
| @@ -1641,6 +1734,9 @@ VstIntPtr VSTPluginDispatcher(VSTPlugin *vstPlugin, | |||||
| // request for the version | // request for the version | ||||
| return PLUGIN_VERSION; | return PLUGIN_VERSION; | ||||
| case effVendorSpecific: | |||||
| break; | |||||
| case effGetVstVersion: | case effGetVstVersion: | ||||
| r = kVstVersion; | r = kVstVersion; | ||||
| break; | break; | ||||
| @@ -1730,12 +1826,13 @@ VstIntPtr VSTPluginDispatcher(VSTPlugin *vstPlugin, | |||||
| // "8in8out" | // "8in8out" | ||||
| // "midiProgramNames" | // "midiProgramNames" | ||||
| // "conformsToWindowRules" | // "conformsToWindowRules" | ||||
| #ifdef VST2_OPCODE_DEBUG | |||||
| printf("xxx effCanDo \"%s\" ?\n", (char*)ptr); | |||||
| #endif // VST2_OPCODE_DEBUG | |||||
| if(!strcmp((char*)ptr, "receiveVstEvents")) | if(!strcmp((char*)ptr, "receiveVstEvents")) | ||||
| r = 1; | r = 1; | ||||
| else if(!strcmp((char*)ptr, "receiveVstMidiEvent")) // (note) required by Jeskola Buzz | else if(!strcmp((char*)ptr, "receiveVstMidiEvent")) // (note) required by Jeskola Buzz | ||||
| r = 1; | r = 1; | ||||
| else if(!strcmp((char*)ptr, "noRealTime")) | |||||
| r = 1; | |||||
| else | else | ||||
| r = 0; | r = 0; | ||||
| break; | break; | ||||