From 61b27097b71852aefc84bf9987602df0266ae301 Mon Sep 17 00:00:00 2001 From: Anthony Nicholls Date: Mon, 5 Jun 2023 15:22:54 +0100 Subject: [PATCH] AAX: Allow runtime custom search paths for a page table file --- BREAKING-CHANGES.txt | 30 +++- .../Builds/Android/app/CMakeLists.txt | 12 +- .../VisualStudio2017/DemoRunner_App.vcxproj | 8 +- .../DemoRunner_App.vcxproj.filters | 12 +- .../VisualStudio2019/DemoRunner_App.vcxproj | 8 +- .../DemoRunner_App.vcxproj.filters | 12 +- .../VisualStudio2022/DemoRunner_App.vcxproj | 8 +- .../DemoRunner_App.vcxproj.filters | 12 +- .../Plugins/ReaperEmbeddedViewPluginDemo.h | 148 +++++++++++------- .../Builds/Android/app/CMakeLists.txt | 12 +- .../AudioPerformanceTest_App.vcxproj | 8 +- .../AudioPerformanceTest_App.vcxproj.filters | 12 +- .../Builds/Android/app/CMakeLists.txt | 12 +- .../AudioPluginHost_App.vcxproj | 8 +- .../AudioPluginHost_App.vcxproj.filters | 12 +- .../AudioPluginHost_App.vcxproj | 8 +- .../AudioPluginHost_App.vcxproj.filters | 12 +- .../AudioPluginHost_App.vcxproj | 8 +- .../AudioPluginHost_App.vcxproj.filters | 12 +- .../Builds/Android/app/CMakeLists.txt | 12 +- .../NetworkGraphicsDemo_App.vcxproj | 8 +- .../NetworkGraphicsDemo_App.vcxproj.filters | 12 +- .../UnitTestRunner_ConsoleApp.vcxproj | 8 +- .../UnitTestRunner_ConsoleApp.vcxproj.filters | 12 +- .../UnitTestRunner_ConsoleApp.vcxproj | 8 +- .../UnitTestRunner_ConsoleApp.vcxproj.filters | 12 +- .../UnitTestRunner_ConsoleApp.vcxproj | 8 +- .../UnitTestRunner_ConsoleApp.vcxproj.filters | 12 +- .../WindowsDLL_StaticLibrary.vcxproj | 8 +- .../WindowsDLL_StaticLibrary.vcxproj.filters | 12 +- .../juce_audio_plugin_client_AAX.cpp | 26 +-- .../juce_audio_plugin_client_VST2.cpp | 6 +- .../juce_audio_plugin_client_VST3.cpp | 8 +- .../juce_audio_processors.cpp | 3 +- .../juce_audio_processors.h | 3 +- .../processors/juce_AudioProcessor.cpp | 122 +++++++-------- .../processors/juce_AudioProcessor.h | 47 ++++-- .../utilities/juce_AAXClientExtensions.cpp | 103 ++++++++++++ .../utilities/juce_AAXClientExtensions.h | 83 ++++++++++ ...dler.cpp => juce_VST2ClientExtensions.cpp} | 10 +- ...kHandler.h => juce_VST2ClientExtensions.h} | 27 ++-- .../utilities/juce_VST3ClientExtensions.h | 10 +- 42 files changed, 656 insertions(+), 258 deletions(-) create mode 100644 modules/juce_audio_processors/utilities/juce_AAXClientExtensions.cpp create mode 100644 modules/juce_audio_processors/utilities/juce_AAXClientExtensions.h rename modules/juce_audio_processors/utilities/{juce_VSTCallbackHandler.cpp => juce_VST2ClientExtensions.cpp} (62%) rename modules/juce_audio_processors/utilities/{juce_VSTCallbackHandler.h => juce_VST2ClientExtensions.h} (68%) diff --git a/BREAKING-CHANGES.txt b/BREAKING-CHANGES.txt index 2c54649b35..8f98892fd3 100644 --- a/BREAKING-CHANGES.txt +++ b/BREAKING-CHANGES.txt @@ -4,6 +4,31 @@ JUCE breaking changes develop ======= +Change +------ +AudioProcessor::getAAXPluginIDForMainBusConfig() has been deprecated. + +Possible Issues +--------------- +Any AudioProcessor overriding this method will fail to compile. + +Workaround +---------- +- Create an object which inherits from AAXClientExtensions. +- In the object override and implement getPluginIDForMainBusConfig(). +- In the AudioProcessor override getAAXClientExtensions() and return a pointer + to the object. + +Rationale +--------- +Additional AAX specific functionality was required in the audio processor. +Rather than continuing to grow and expand the AudioProcessor class with format +specific functionality, separating this concern into a new class allows for +greater expansion for those that need it without burdening those that don't. +Moving this function into this class improves consistency both with the new +functionality and with similar functionality for the VST2 and VST3 formats. + + Change ------ Unique device IDs on Windows have been updated to use a more reliable SMBIOS @@ -24,8 +49,9 @@ to switch to using SystemStats::getMachineIdentifiers() instead. Rationale --------- -This update ensures the generation of more stable and reliable unique device IDs, -while also maintaining backward compatibility with the previous ID generation methods. +This update ensures the generation of more stable and reliable unique device +IDs, while also maintaining backward compatibility with the previous ID +generation methods. Change diff --git a/examples/DemoRunner/Builds/Android/app/CMakeLists.txt b/examples/DemoRunner/Builds/Android/app/CMakeLists.txt index 635a2d1b4b..66c66df04e 100644 --- a/examples/DemoRunner/Builds/Android/app/CMakeLists.txt +++ b/examples/DemoRunner/Builds/Android/app/CMakeLists.txt @@ -785,6 +785,8 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_processors/utilities/ARA/juce_ARAPlugInInstanceRoles.h" "../../../../../modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.cpp" "../../../../../modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.h" + "../../../../../modules/juce_audio_processors/utilities/juce_AAXClientExtensions.cpp" + "../../../../../modules/juce_audio_processors/utilities/juce_AAXClientExtensions.h" "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterBool.cpp" "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterBool.h" "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterChoice.cpp" @@ -807,9 +809,9 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_processors/utilities/juce_PluginHostType.h" "../../../../../modules/juce_audio_processors/utilities/juce_RangedAudioParameter.cpp" "../../../../../modules/juce_audio_processors/utilities/juce_RangedAudioParameter.h" + "../../../../../modules/juce_audio_processors/utilities/juce_VST2ClientExtensions.cpp" + "../../../../../modules/juce_audio_processors/utilities/juce_VST2ClientExtensions.h" "../../../../../modules/juce_audio_processors/utilities/juce_VST3ClientExtensions.h" - "../../../../../modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.cpp" - "../../../../../modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.h" "../../../../../modules/juce_audio_processors/juce_audio_processors.cpp" "../../../../../modules/juce_audio_processors/juce_audio_processors.mm" "../../../../../modules/juce_audio_processors/juce_audio_processors_ara.cpp" @@ -2844,6 +2846,8 @@ set_source_files_properties( "../../../../../modules/juce_audio_processors/utilities/ARA/juce_ARAPlugInInstanceRoles.h" "../../../../../modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.cpp" "../../../../../modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.h" + "../../../../../modules/juce_audio_processors/utilities/juce_AAXClientExtensions.cpp" + "../../../../../modules/juce_audio_processors/utilities/juce_AAXClientExtensions.h" "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterBool.cpp" "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterBool.h" "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterChoice.cpp" @@ -2866,9 +2870,9 @@ set_source_files_properties( "../../../../../modules/juce_audio_processors/utilities/juce_PluginHostType.h" "../../../../../modules/juce_audio_processors/utilities/juce_RangedAudioParameter.cpp" "../../../../../modules/juce_audio_processors/utilities/juce_RangedAudioParameter.h" + "../../../../../modules/juce_audio_processors/utilities/juce_VST2ClientExtensions.cpp" + "../../../../../modules/juce_audio_processors/utilities/juce_VST2ClientExtensions.h" "../../../../../modules/juce_audio_processors/utilities/juce_VST3ClientExtensions.h" - "../../../../../modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.cpp" - "../../../../../modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.h" "../../../../../modules/juce_audio_processors/juce_audio_processors.cpp" "../../../../../modules/juce_audio_processors/juce_audio_processors.mm" "../../../../../modules/juce_audio_processors/juce_audio_processors_ara.cpp" diff --git a/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj b/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj index 6aa086618c..06bb5ff33e 100644 --- a/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj +++ b/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj @@ -992,6 +992,9 @@ true + + true + true @@ -1022,7 +1025,7 @@ true - + true @@ -3204,6 +3207,7 @@ + @@ -3216,8 +3220,8 @@ + - diff --git a/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters b/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters index f178355a52..862d9fbdf6 100644 --- a/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters +++ b/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters @@ -1588,6 +1588,9 @@ JUCE Modules\juce_audio_processors\utilities\ARA + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -1618,7 +1621,7 @@ JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities @@ -4836,6 +4839,9 @@ JUCE Modules\juce_audio_processors\utilities\ARA + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -4872,10 +4878,10 @@ JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities diff --git a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj index 3dbde96cec..5fc1879092 100644 --- a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj +++ b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj @@ -992,6 +992,9 @@ true + + true + true @@ -1022,7 +1025,7 @@ true - + true @@ -3204,6 +3207,7 @@ + @@ -3216,8 +3220,8 @@ + - diff --git a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters index f60a5e9ce9..39f25b4a8b 100644 --- a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters +++ b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters @@ -1588,6 +1588,9 @@ JUCE Modules\juce_audio_processors\utilities\ARA + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -1618,7 +1621,7 @@ JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities @@ -4836,6 +4839,9 @@ JUCE Modules\juce_audio_processors\utilities\ARA + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -4872,10 +4878,10 @@ JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities diff --git a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj index 649ad32b5b..a99ce6e0e9 100644 --- a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj +++ b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj @@ -992,6 +992,9 @@ true + + true + true @@ -1022,7 +1025,7 @@ true - + true @@ -3204,6 +3207,7 @@ + @@ -3216,8 +3220,8 @@ + - diff --git a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters index 02ec327c69..95104d169c 100644 --- a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters +++ b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters @@ -1588,6 +1588,9 @@ JUCE Modules\juce_audio_processors\utilities\ARA + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -1618,7 +1621,7 @@ JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities @@ -4836,6 +4839,9 @@ JUCE Modules\juce_audio_processors\utilities\ARA + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -4872,10 +4878,10 @@ JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities diff --git a/examples/Plugins/ReaperEmbeddedViewPluginDemo.h b/examples/Plugins/ReaperEmbeddedViewPluginDemo.h index dbc5f71877..ea0065d54e 100644 --- a/examples/Plugins/ReaperEmbeddedViewPluginDemo.h +++ b/examples/Plugins/ReaperEmbeddedViewPluginDemo.h @@ -104,6 +104,8 @@ struct EmbeddedViewListener virtual Steinberg::TPtrInt handledEmbeddedUIMessage (int msg, Steinberg::TPtrInt parm2, Steinberg::TPtrInt parm3) = 0; + + virtual void setGlobalBypassFunction (void (*) (int)) = 0; }; JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wnon-virtual-dtor") @@ -144,6 +146,85 @@ private: JUCE_END_IGNORE_WARNINGS_GCC_LIKE +class VST2Extensions : public VSTCallbackHandler +{ +public: + explicit VST2Extensions (EmbeddedViewListener& l) + : listener (l) {} + + pointer_sized_int handleVstPluginCanDo (int32, pointer_sized_int, void* ptr, float) override + { + if (auto* str = static_cast (ptr)) + { + if (strcmp (str, "hasCockosEmbeddedUI") == 0) + return 0xbeef0000; + + if (strcmp (str, "hasCockosExtensions") == 0) + return 0xbeef0000; + } + + return 0; + } + + pointer_sized_int handleVstManufacturerSpecific (int32 index, + pointer_sized_int value, + void* ptr, + float opt) override + { + // The docstring at the top of reaper_plugin_fx_embed.h specifies + // that the index will always be effEditDraw, which is now deprecated. + if (index != __effEditDrawDeprecated) + return 0; + + return (pointer_sized_int) listener.handledEmbeddedUIMessage ((int) opt, + (Steinberg::TPtrInt) value, + (Steinberg::TPtrInt) ptr); + } + + void handleVstHostCallbackAvailable (std::function&& hostcb) override + { + char functionName[] = "BypassFxAllTracks"; + listener.setGlobalBypassFunction (reinterpret_cast (hostcb ((int32_t) 0xdeadbeef, (int32_t) 0xdeadf00d, 0, functionName, 0.0))); + } + +private: + EmbeddedViewListener& listener; +}; + +class VST3Extensions : public VST3ClientExtensions +{ +public: + explicit VST3Extensions (EmbeddedViewListener& l) + : listener (l) {} + + int32_t queryIEditController (const Steinberg::TUID tuid, void** obj) override + { + if (embeddedUi.queryInterface (tuid, obj) == Steinberg::kResultOk) + return Steinberg::kResultOk; + + *obj = nullptr; + return Steinberg::kNoInterface; + } + + void setIHostApplication (Steinberg::FUnknown* ptr) override + { + if (ptr == nullptr) + return; + + void* objPtr = nullptr; + + if (ptr->queryInterface (reaper::IReaperHostApplication::iid, &objPtr) == Steinberg::kResultOk) + { + if (void* fnPtr = static_cast (objPtr)->getReaperApi ("BypassFxAllTracks")) + listener.setGlobalBypassFunction (reinterpret_cast (fnPtr)); + } + } + +private: + EmbeddedViewListener& listener; + EmbeddedUI embeddedUi { listener }; +}; + //============================================================================== class Editor : public AudioProcessorEditor { @@ -182,8 +263,6 @@ private: //============================================================================== class ReaperEmbeddedViewDemo : public AudioProcessor, - public VSTCallbackHandler, - public VST3ClientExtensions, private EmbeddedViewListener, private Timer { @@ -236,63 +315,8 @@ public: false).readFloat()); } - int32_t queryIEditController (const Steinberg::TUID tuid, void** obj) override - { - if (embeddedUi.queryInterface (tuid, obj) == Steinberg::kResultOk) - return Steinberg::kResultOk; - - *obj = nullptr; - return Steinberg::kNoInterface; - } - - void setIHostApplication (Steinberg::FUnknown* ptr) override - { - if (ptr == nullptr) - return; - - void* objPtr = nullptr; - - if (ptr->queryInterface (reaper::IReaperHostApplication::iid, &objPtr) == Steinberg::kResultOk) - { - if (void* fnPtr = static_cast (objPtr)->getReaperApi ("BypassFxAllTracks")) - globalBypassFn = reinterpret_cast (fnPtr); - } - } - - pointer_sized_int handleVstPluginCanDo (int32, pointer_sized_int, void* ptr, float) override - { - if (auto* str = static_cast (ptr)) - { - if (strcmp (str, "hasCockosEmbeddedUI") == 0) - return 0xbeef0000; - - if (strcmp (str, "hasCockosExtensions") == 0) - return 0xbeef0000; - } - - return 0; - } - - pointer_sized_int handleVstManufacturerSpecific (int32 index, - pointer_sized_int value, - void* ptr, - float opt) override - { - // The docstring at the top of reaper_plugin_fx_embed.h specifies - // that the index will always be effEditDraw, which is now deprecated. - if (index != __effEditDrawDeprecated) - return 0; - - return (pointer_sized_int) handledEmbeddedUIMessage ((int) opt, - (Steinberg::TPtrInt) value, - (Steinberg::TPtrInt) ptr); - } - - void handleVstHostCallbackAvailable (std::function&& hostcb) override - { - char functionName[] = "BypassFxAllTracks"; - globalBypassFn = reinterpret_cast (hostcb ((int32_t) 0xdeadbeef, (int32_t) 0xdeadf00d, 0, functionName, 0.0)); - } + VST2ClientExtensions* getVST2ClientExtensions() override { return &vst2Extensions; } + VST3ClientExtensions* getVST3ClientExtensions() override { return &vst3Extensions; } private: template @@ -414,10 +438,14 @@ private: return 0; } + void setGlobalBypassFunction (void (*fn) (int)) override { globalBypassFn = fn; } + AudioParameterFloat* gain = nullptr; void (*globalBypassFn) (int) = nullptr; - EmbeddedUI embeddedUi { *this }; std::atomic storedLevel { 0.0f }; float levelToDraw = 0.0f; + + VST2Extensions vst2Extensions { *this }; + VST3Extensions vst3Extensions { *this }; }; diff --git a/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt b/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt index e28de3083c..c2ee6310b1 100644 --- a/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt +++ b/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt @@ -757,6 +757,8 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_processors/utilities/ARA/juce_ARAPlugInInstanceRoles.h" "../../../../../modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.cpp" "../../../../../modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.h" + "../../../../../modules/juce_audio_processors/utilities/juce_AAXClientExtensions.cpp" + "../../../../../modules/juce_audio_processors/utilities/juce_AAXClientExtensions.h" "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterBool.cpp" "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterBool.h" "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterChoice.cpp" @@ -779,9 +781,9 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_processors/utilities/juce_PluginHostType.h" "../../../../../modules/juce_audio_processors/utilities/juce_RangedAudioParameter.cpp" "../../../../../modules/juce_audio_processors/utilities/juce_RangedAudioParameter.h" + "../../../../../modules/juce_audio_processors/utilities/juce_VST2ClientExtensions.cpp" + "../../../../../modules/juce_audio_processors/utilities/juce_VST2ClientExtensions.h" "../../../../../modules/juce_audio_processors/utilities/juce_VST3ClientExtensions.h" - "../../../../../modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.cpp" - "../../../../../modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.h" "../../../../../modules/juce_audio_processors/juce_audio_processors.cpp" "../../../../../modules/juce_audio_processors/juce_audio_processors.mm" "../../../../../modules/juce_audio_processors/juce_audio_processors_ara.cpp" @@ -2514,6 +2516,8 @@ set_source_files_properties( "../../../../../modules/juce_audio_processors/utilities/ARA/juce_ARAPlugInInstanceRoles.h" "../../../../../modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.cpp" "../../../../../modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.h" + "../../../../../modules/juce_audio_processors/utilities/juce_AAXClientExtensions.cpp" + "../../../../../modules/juce_audio_processors/utilities/juce_AAXClientExtensions.h" "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterBool.cpp" "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterBool.h" "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterChoice.cpp" @@ -2536,9 +2540,9 @@ set_source_files_properties( "../../../../../modules/juce_audio_processors/utilities/juce_PluginHostType.h" "../../../../../modules/juce_audio_processors/utilities/juce_RangedAudioParameter.cpp" "../../../../../modules/juce_audio_processors/utilities/juce_RangedAudioParameter.h" + "../../../../../modules/juce_audio_processors/utilities/juce_VST2ClientExtensions.cpp" + "../../../../../modules/juce_audio_processors/utilities/juce_VST2ClientExtensions.h" "../../../../../modules/juce_audio_processors/utilities/juce_VST3ClientExtensions.h" - "../../../../../modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.cpp" - "../../../../../modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.h" "../../../../../modules/juce_audio_processors/juce_audio_processors.cpp" "../../../../../modules/juce_audio_processors/juce_audio_processors.mm" "../../../../../modules/juce_audio_processors/juce_audio_processors_ara.cpp" diff --git a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj index d40810ae98..aee36638ec 100644 --- a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj +++ b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj @@ -973,6 +973,9 @@ true + + true + true @@ -1003,7 +1006,7 @@ true - + true @@ -2805,6 +2808,7 @@ + @@ -2817,8 +2821,8 @@ + - diff --git a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters index 689f9381de..4568206c30 100644 --- a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters +++ b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters @@ -1438,6 +1438,9 @@ JUCE Modules\juce_audio_processors\utilities\ARA + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -1468,7 +1471,7 @@ JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities @@ -4257,6 +4260,9 @@ JUCE Modules\juce_audio_processors\utilities\ARA + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -4293,10 +4299,10 @@ JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities diff --git a/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt b/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt index 4650bcedde..1f27d52d7f 100644 --- a/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt +++ b/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt @@ -790,6 +790,8 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_processors/utilities/ARA/juce_ARAPlugInInstanceRoles.h" "../../../../../modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.cpp" "../../../../../modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.h" + "../../../../../modules/juce_audio_processors/utilities/juce_AAXClientExtensions.cpp" + "../../../../../modules/juce_audio_processors/utilities/juce_AAXClientExtensions.h" "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterBool.cpp" "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterBool.h" "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterChoice.cpp" @@ -812,9 +814,9 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_processors/utilities/juce_PluginHostType.h" "../../../../../modules/juce_audio_processors/utilities/juce_RangedAudioParameter.cpp" "../../../../../modules/juce_audio_processors/utilities/juce_RangedAudioParameter.h" + "../../../../../modules/juce_audio_processors/utilities/juce_VST2ClientExtensions.cpp" + "../../../../../modules/juce_audio_processors/utilities/juce_VST2ClientExtensions.h" "../../../../../modules/juce_audio_processors/utilities/juce_VST3ClientExtensions.h" - "../../../../../modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.cpp" - "../../../../../modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.h" "../../../../../modules/juce_audio_processors/juce_audio_processors.cpp" "../../../../../modules/juce_audio_processors/juce_audio_processors.mm" "../../../../../modules/juce_audio_processors/juce_audio_processors_ara.cpp" @@ -2702,6 +2704,8 @@ set_source_files_properties( "../../../../../modules/juce_audio_processors/utilities/ARA/juce_ARAPlugInInstanceRoles.h" "../../../../../modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.cpp" "../../../../../modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.h" + "../../../../../modules/juce_audio_processors/utilities/juce_AAXClientExtensions.cpp" + "../../../../../modules/juce_audio_processors/utilities/juce_AAXClientExtensions.h" "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterBool.cpp" "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterBool.h" "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterChoice.cpp" @@ -2724,9 +2728,9 @@ set_source_files_properties( "../../../../../modules/juce_audio_processors/utilities/juce_PluginHostType.h" "../../../../../modules/juce_audio_processors/utilities/juce_RangedAudioParameter.cpp" "../../../../../modules/juce_audio_processors/utilities/juce_RangedAudioParameter.h" + "../../../../../modules/juce_audio_processors/utilities/juce_VST2ClientExtensions.cpp" + "../../../../../modules/juce_audio_processors/utilities/juce_VST2ClientExtensions.h" "../../../../../modules/juce_audio_processors/utilities/juce_VST3ClientExtensions.h" - "../../../../../modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.cpp" - "../../../../../modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.h" "../../../../../modules/juce_audio_processors/juce_audio_processors.cpp" "../../../../../modules/juce_audio_processors/juce_audio_processors.mm" "../../../../../modules/juce_audio_processors/juce_audio_processors_ara.cpp" diff --git a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj index 68b1d39397..ec87885b73 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj +++ b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj @@ -981,6 +981,9 @@ true + + true + true @@ -1011,7 +1014,7 @@ true - + true @@ -2988,6 +2991,7 @@ + @@ -3000,8 +3004,8 @@ + - diff --git a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters index a0ff6b17e9..3cd5ae6558 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters +++ b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters @@ -1513,6 +1513,9 @@ JUCE Modules\juce_audio_processors\utilities\ARA + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -1543,7 +1546,7 @@ JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities @@ -4536,6 +4539,9 @@ JUCE Modules\juce_audio_processors\utilities\ARA + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -4572,10 +4578,10 @@ JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities diff --git a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj index cd734941d9..754e772f21 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj +++ b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj @@ -981,6 +981,9 @@ true + + true + true @@ -1011,7 +1014,7 @@ true - + true @@ -2988,6 +2991,7 @@ + @@ -3000,8 +3004,8 @@ + - diff --git a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters index c14ec7c3c5..0731c8b19d 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters +++ b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters @@ -1513,6 +1513,9 @@ JUCE Modules\juce_audio_processors\utilities\ARA + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -1543,7 +1546,7 @@ JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities @@ -4536,6 +4539,9 @@ JUCE Modules\juce_audio_processors\utilities\ARA + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -4572,10 +4578,10 @@ JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities diff --git a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj index 25d1d76e91..dbfd9533e6 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj +++ b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj @@ -981,6 +981,9 @@ true + + true + true @@ -1011,7 +1014,7 @@ true - + true @@ -2988,6 +2991,7 @@ + @@ -3000,8 +3004,8 @@ + - diff --git a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters index d05fd38560..f9e43cfb26 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters +++ b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters @@ -1513,6 +1513,9 @@ JUCE Modules\juce_audio_processors\utilities\ARA + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -1543,7 +1546,7 @@ JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities @@ -4536,6 +4539,9 @@ JUCE Modules\juce_audio_processors\utilities\ARA + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -4572,10 +4578,10 @@ JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities diff --git a/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt b/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt index 82c8c2e513..cd4b759262 100644 --- a/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt +++ b/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt @@ -761,6 +761,8 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_processors/utilities/ARA/juce_ARAPlugInInstanceRoles.h" "../../../../../modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.cpp" "../../../../../modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.h" + "../../../../../modules/juce_audio_processors/utilities/juce_AAXClientExtensions.cpp" + "../../../../../modules/juce_audio_processors/utilities/juce_AAXClientExtensions.h" "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterBool.cpp" "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterBool.h" "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterChoice.cpp" @@ -783,9 +785,9 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_audio_processors/utilities/juce_PluginHostType.h" "../../../../../modules/juce_audio_processors/utilities/juce_RangedAudioParameter.cpp" "../../../../../modules/juce_audio_processors/utilities/juce_RangedAudioParameter.h" + "../../../../../modules/juce_audio_processors/utilities/juce_VST2ClientExtensions.cpp" + "../../../../../modules/juce_audio_processors/utilities/juce_VST2ClientExtensions.h" "../../../../../modules/juce_audio_processors/utilities/juce_VST3ClientExtensions.h" - "../../../../../modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.cpp" - "../../../../../modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.h" "../../../../../modules/juce_audio_processors/juce_audio_processors.cpp" "../../../../../modules/juce_audio_processors/juce_audio_processors.mm" "../../../../../modules/juce_audio_processors/juce_audio_processors_ara.cpp" @@ -2598,6 +2600,8 @@ set_source_files_properties( "../../../../../modules/juce_audio_processors/utilities/ARA/juce_ARAPlugInInstanceRoles.h" "../../../../../modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.cpp" "../../../../../modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.h" + "../../../../../modules/juce_audio_processors/utilities/juce_AAXClientExtensions.cpp" + "../../../../../modules/juce_audio_processors/utilities/juce_AAXClientExtensions.h" "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterBool.cpp" "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterBool.h" "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterChoice.cpp" @@ -2620,9 +2624,9 @@ set_source_files_properties( "../../../../../modules/juce_audio_processors/utilities/juce_PluginHostType.h" "../../../../../modules/juce_audio_processors/utilities/juce_RangedAudioParameter.cpp" "../../../../../modules/juce_audio_processors/utilities/juce_RangedAudioParameter.h" + "../../../../../modules/juce_audio_processors/utilities/juce_VST2ClientExtensions.cpp" + "../../../../../modules/juce_audio_processors/utilities/juce_VST2ClientExtensions.h" "../../../../../modules/juce_audio_processors/utilities/juce_VST3ClientExtensions.h" - "../../../../../modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.cpp" - "../../../../../modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.h" "../../../../../modules/juce_audio_processors/juce_audio_processors.cpp" "../../../../../modules/juce_audio_processors/juce_audio_processors.mm" "../../../../../modules/juce_audio_processors/juce_audio_processors_ara.cpp" diff --git a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj index 8d490ddbf7..83fa131667 100644 --- a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj +++ b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj @@ -973,6 +973,9 @@ true + + true + true @@ -1003,7 +1006,7 @@ true - + true @@ -2896,6 +2899,7 @@ + @@ -2908,8 +2912,8 @@ + - diff --git a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters index c216e50ae2..a6214b3502 100644 --- a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters +++ b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters @@ -1468,6 +1468,9 @@ JUCE Modules\juce_audio_processors\utilities\ARA + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -1498,7 +1501,7 @@ JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities @@ -4398,6 +4401,9 @@ JUCE Modules\juce_audio_processors\utilities\ARA + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -4434,10 +4440,10 @@ JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities diff --git a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj index e0cb48eb37..2db847c3d5 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj +++ b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj @@ -989,6 +989,9 @@ true + + true + true @@ -1019,7 +1022,7 @@ true - + true @@ -3054,6 +3057,7 @@ + @@ -3066,8 +3070,8 @@ + - diff --git a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters index ddd189d265..8007173095 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters +++ b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters @@ -1537,6 +1537,9 @@ JUCE Modules\juce_audio_processors\utilities\ARA + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -1567,7 +1570,7 @@ JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities @@ -4626,6 +4629,9 @@ JUCE Modules\juce_audio_processors\utilities\ARA + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -4662,10 +4668,10 @@ JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities diff --git a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj index cc596e814b..8a74c01266 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj +++ b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj @@ -989,6 +989,9 @@ true + + true + true @@ -1019,7 +1022,7 @@ true - + true @@ -3054,6 +3057,7 @@ + @@ -3066,8 +3070,8 @@ + - diff --git a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters index eb238e3165..b87b23c093 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters +++ b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters @@ -1537,6 +1537,9 @@ JUCE Modules\juce_audio_processors\utilities\ARA + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -1567,7 +1570,7 @@ JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities @@ -4626,6 +4629,9 @@ JUCE Modules\juce_audio_processors\utilities\ARA + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -4662,10 +4668,10 @@ JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities diff --git a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj index d9eb92d9c8..4bd9ebbc02 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj +++ b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj @@ -989,6 +989,9 @@ true + + true + true @@ -1019,7 +1022,7 @@ true - + true @@ -3054,6 +3057,7 @@ + @@ -3066,8 +3070,8 @@ + - diff --git a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters index b2e0114227..1df33f0f40 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters +++ b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters @@ -1537,6 +1537,9 @@ JUCE Modules\juce_audio_processors\utilities\ARA + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -1567,7 +1570,7 @@ JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities @@ -4626,6 +4629,9 @@ JUCE Modules\juce_audio_processors\utilities\ARA + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -4662,10 +4668,10 @@ JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities diff --git a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj index 48bc93caaf..d913190802 100644 --- a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj +++ b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj @@ -972,6 +972,9 @@ true + + true + true @@ -1002,7 +1005,7 @@ true - + true @@ -2872,6 +2875,7 @@ + @@ -2884,8 +2888,8 @@ + - diff --git a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters index 719440f3e5..9c39d38dae 100644 --- a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters +++ b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters @@ -1465,6 +1465,9 @@ JUCE Modules\juce_audio_processors\utilities\ARA + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -1495,7 +1498,7 @@ JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities @@ -4365,6 +4368,9 @@ JUCE Modules\juce_audio_processors\utilities\ARA + + JUCE Modules\juce_audio_processors\utilities + JUCE Modules\juce_audio_processors\utilities @@ -4401,10 +4407,10 @@ JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities - + JUCE Modules\juce_audio_processors\utilities diff --git a/modules/juce_audio_plugin_client/juce_audio_plugin_client_AAX.cpp b/modules/juce_audio_plugin_client/juce_audio_plugin_client_AAX.cpp index 222a20483b..1b0140877b 100644 --- a/modules/juce_audio_plugin_client/juce_audio_plugin_client_AAX.cpp +++ b/modules/juce_audio_plugin_client/juce_audio_plugin_client_AAX.cpp @@ -2480,11 +2480,13 @@ namespace AAXClasses properties->AddProperty (AAX_eProperty_InputStemFormat, static_cast (aaxInputFormat)); properties->AddProperty (AAX_eProperty_OutputStemFormat, static_cast (aaxOutputFormat)); + const auto& extensions = processor.getAAXClientExtensions(); + // This value needs to match the RTAS wrapper's Type ID, so that // the host knows that the RTAS/AAX plugins are equivalent. - const int32 pluginID = processor.getAAXPluginIDForMainBusConfig (fullLayout.getMainInputChannelSet(), - fullLayout.getMainOutputChannelSet(), - false); + const auto pluginID = extensions.getPluginIDForMainBusConfig (fullLayout.getMainInputChannelSet(), + fullLayout.getMainOutputChannelSet(), + false); // The plugin id generated from your AudioProcessor's getAAXPluginIDForMainBusConfig callback // it not unique. Please fix your implementation! @@ -2495,9 +2497,9 @@ namespace AAXClasses #if ! JucePlugin_AAXDisableAudioSuite properties->AddProperty (AAX_eProperty_PlugInID_AudioSuite, - processor.getAAXPluginIDForMainBusConfig (fullLayout.getMainInputChannelSet(), - fullLayout.getMainOutputChannelSet(), - true)); + extensions.getPluginIDForMainBusConfig (fullLayout.getMainInputChannelSet(), + fullLayout.getMainOutputChannelSet(), + true)); #endif #if JucePlugin_AAXDisableMultiMono @@ -2601,11 +2603,13 @@ namespace AAXClasses const int numMeters = addAAXMeters (*plugin, descriptor); - #ifdef JucePlugin_AAXPageTableFile - // optional page table setting - define this macro in your project if you want - // to set this value - see Avid documentation for details about its format. - descriptor.AddResourceInfo (AAX_eResourceType_PageTable, JucePlugin_AAXPageTableFile); - #endif + const auto& extensions = plugin->getAAXClientExtensions(); + + if (const auto searchPath = extensions.getPageFileSearchPath().getFullPathName(); searchPath.isNotEmpty()) + descriptor.AddResourceInfo (AAX_eResourceType_PageTableDir, searchPath.toRawUTF8()); + + if (const auto filename = extensions.getPageFileName(); filename.isNotEmpty()) + descriptor.AddResourceInfo (AAX_eResourceType_PageTable, filename.toRawUTF8()); check (descriptor.AddProcPtr ((void*) JuceAAX_GUI::Create, kAAX_ProcPtrID_Create_EffectGUI)); check (descriptor.AddProcPtr ((void*) JuceAAX_Processor::Create, kAAX_ProcPtrID_Create_EffectParameters)); diff --git a/modules/juce_audio_plugin_client/juce_audio_plugin_client_VST2.cpp b/modules/juce_audio_plugin_client/juce_audio_plugin_client_VST2.cpp index e62cabb90d..50b6c321dc 100644 --- a/modules/juce_audio_plugin_client/juce_audio_plugin_client_VST2.cpp +++ b/modules/juce_audio_plugin_client/juce_audio_plugin_client_VST2.cpp @@ -1823,7 +1823,7 @@ private: if (args.index == Vst2::effGetParamDisplay) return handleCockosGetParameterText (args.value, args.ptr, args.opt); - if (auto callbackHandler = dynamic_cast (processor.get())) + if (auto callbackHandler = processor->getVST2ClientExtensions()) return callbackHandler->handleVstManufacturerSpecific (args.index, args.value, args.ptr, args.opt); return 0; @@ -1882,7 +1882,7 @@ private: if (matches ("hasCockosExtensions")) return (int32) 0xbeef0000; - if (auto callbackHandler = dynamic_cast (processor.get())) + if (auto callbackHandler = processor->getVST2ClientExtensions()) return callbackHandler->handleVstPluginCanDo (args.index, args.value, args.ptr, args.opt); return 0; @@ -2115,7 +2115,7 @@ namespace auto* wrapper = new JuceVSTWrapper (audioMaster, std::move (processor)); auto* aEffect = wrapper->getAEffect(); - if (auto* callbackHandler = dynamic_cast (processorPtr)) + if (auto* callbackHandler = processorPtr->getVST2ClientExtensions()) { callbackHandler->handleVstHostCallbackAvailable ([audioMaster, aEffect] (int32 opcode, int32 index, pointer_sized_int value, void* ptr, float opt) { diff --git a/modules/juce_audio_plugin_client/juce_audio_plugin_client_VST3.cpp b/modules/juce_audio_plugin_client/juce_audio_plugin_client_VST3.cpp index 5daa3dae31..4ed1cdadf9 100644 --- a/modules/juce_audio_plugin_client/juce_audio_plugin_client_VST3.cpp +++ b/modules/juce_audio_plugin_client/juce_audio_plugin_client_VST3.cpp @@ -371,7 +371,7 @@ static QueryInterfaceResult queryAdditionalInterfaces (AudioProcessor* processor void* obj = nullptr; - if (auto* extensions = dynamic_cast (processor)) + if (auto* extensions = processor->getVST3ClientExtensions()) { const auto result = (extensions->*member) (targetIID, &obj); return { result, obj }; @@ -1523,7 +1523,7 @@ private: { audioProcessor = newAudioProcessor; - if (auto* extensions = dynamic_cast (audioProcessor->get())) + if (auto* extensions = audioProcessor->get()->getVST3ClientExtensions()) { extensions->setIComponentHandler (componentHandler); extensions->setIHostApplication (hostContext.get()); @@ -3082,7 +3082,7 @@ public: { if (isFirstBus) { - if (auto* extensions = dynamic_cast (pluginInstance)) + if (auto* extensions = pluginInstance->getVST3ClientExtensions()) return extensions->getPluginHasMainInput() ? Vst::kMain : Vst::kAux; return Vst::kMain; @@ -3957,7 +3957,7 @@ public: const ScopedJuceInitialiser_GUI libraryInitialiser; auto filter = createPluginFilterOfType (AudioProcessor::WrapperType::wrapperType_VST3); - auto* extensions = dynamic_cast (filter.get()); + auto* extensions = filter->getVST3ClientExtensions(); if (extensions == nullptr || extensions->getCompatibleClasses().empty()) return kResultFalse; diff --git a/modules/juce_audio_processors/juce_audio_processors.cpp b/modules/juce_audio_processors/juce_audio_processors.cpp index c17745ef7e..27ed7c3290 100644 --- a/modules/juce_audio_processors/juce_audio_processors.cpp +++ b/modules/juce_audio_processors/juce_audio_processors.cpp @@ -222,7 +222,8 @@ private: #include "utilities/juce_AudioProcessorValueTreeState.cpp" #include "utilities/juce_PluginHostType.cpp" #include "utilities/juce_NativeScaleFactorNotifier.cpp" -#include "utilities/juce_VSTCallbackHandler.cpp" +#include "utilities/juce_AAXClientExtensions.cpp" +#include "utilities/juce_VST2ClientExtensions.cpp" #include "utilities/ARA/juce_ARA_utils.cpp" #include "format_types/juce_LV2PluginFormat.cpp" diff --git a/modules/juce_audio_processors/juce_audio_processors.h b/modules/juce_audio_processors/juce_audio_processors.h index aa618eeb71..e3d2b7a9ff 100644 --- a/modules/juce_audio_processors/juce_audio_processors.h +++ b/modules/juce_audio_processors/juce_audio_processors.h @@ -130,7 +130,8 @@ #endif //============================================================================== -#include "utilities/juce_VSTCallbackHandler.h" +#include "utilities/juce_AAXClientExtensions.h" +#include "utilities/juce_VST2ClientExtensions.h" #include "utilities/juce_VST3ClientExtensions.h" #include "utilities/juce_NativeScaleFactorNotifier.h" #include "format_types/juce_ARACommon.h" diff --git a/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp b/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp index c7e9f88a91..31422a588a 100644 --- a/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp +++ b/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp @@ -1183,71 +1183,6 @@ AudioProcessor::BusesProperties AudioProcessor::BusesProperties::withOutput (con return retval; } -//============================================================================== -int32 AudioProcessor::getAAXPluginIDForMainBusConfig (const AudioChannelSet& mainInputLayout, - const AudioChannelSet& mainOutputLayout, - const bool idForAudioSuite) const -{ - int uniqueFormatId = 0; - - for (int dir = 0; dir < 2; ++dir) - { - const bool isInput = (dir == 0); - auto& set = (isInput ? mainInputLayout : mainOutputLayout); - int aaxFormatIndex = 0; - - const AudioChannelSet sets[] - { - AudioChannelSet::disabled(), - AudioChannelSet::mono(), - AudioChannelSet::stereo(), - AudioChannelSet::createLCR(), - AudioChannelSet::createLCRS(), - AudioChannelSet::quadraphonic(), - AudioChannelSet::create5point0(), - AudioChannelSet::create5point1(), - AudioChannelSet::create6point0(), - AudioChannelSet::create6point1(), - AudioChannelSet::create7point0(), - AudioChannelSet::create7point1(), - AudioChannelSet::create7point0SDDS(), - AudioChannelSet::create7point1SDDS(), - AudioChannelSet::create7point0point2(), - AudioChannelSet::create7point1point2(), - AudioChannelSet::ambisonic (1), - AudioChannelSet::ambisonic (2), - AudioChannelSet::ambisonic (3), - AudioChannelSet::create5point0point2(), - AudioChannelSet::create5point1point2(), - AudioChannelSet::create5point0point4(), - AudioChannelSet::create5point1point4(), - AudioChannelSet::create7point0point4(), - AudioChannelSet::create7point1point4(), - AudioChannelSet::create7point0point6(), - AudioChannelSet::create7point1point6(), - AudioChannelSet::create9point0point4(), - AudioChannelSet::create9point1point4(), - AudioChannelSet::create9point0point6(), - AudioChannelSet::create9point1point6(), - AudioChannelSet::ambisonic (4), - AudioChannelSet::ambisonic (5), - AudioChannelSet::ambisonic (6), - AudioChannelSet::ambisonic (7) - }; - - const auto index = (int) std::distance (std::begin (sets), std::find (std::begin (sets), std::end (sets), set)); - - if (index != numElementsInArray (sets)) - aaxFormatIndex = index; - else - jassertfalse; - - uniqueFormatId = (uniqueFormatId << 8) | aaxFormatIndex; - } - - return (idForAudioSuite ? 0x6a796161 /* 'jyaa' */ : 0x6a636161 /* 'jcaa' */) + uniqueFormatId; -} - //============================================================================== const char* AudioProcessor::getWrapperTypeDescription (AudioProcessor::WrapperType type) noexcept { @@ -1266,6 +1201,63 @@ const char* AudioProcessor::getWrapperTypeDescription (AudioProcessor::WrapperTy } } +//============================================================================== +VST2ClientExtensions* AudioProcessor::getVST2ClientExtensions() +{ + if (auto* extensions = dynamic_cast (this)) + { + // To silence this jassert there are two options: + // + // 1. - Override AudioProcessor::getVST2ClientExtensions() and + // return the "this" pointer. + // + // - This option has the advantage of being quick and easy, + // and avoids the above dynamic_cast. + // + // 2. - Create a new object that inherits from VST2ClientExtensions. + // + // - Port your existing functionality from the AudioProcessor + // to the new object. + // + // - Return a pointer to the object in AudioProcessor::getVST2ClientExtensions(). + // + // - This option has the advantage of allowing you to break + // up your AudioProcessor into smaller composable objects. + jassertfalse; + return extensions; + } + + return nullptr; +} + +VST3ClientExtensions* AudioProcessor::getVST3ClientExtensions() +{ + if (auto* extensions = dynamic_cast (this)) + { + // To silence this jassert there are two options: + // + // 1. - Override AudioProcessor::getVST3ClientExtensions() and + // return the "this" pointer. + // + // - This option has the advantage of being quick and easy, + // and avoids the above dynamic_cast. + // + // 2. - Create a new object that inherits from VST3ClientExtensions. + // + // - Port your existing functionality from the AudioProcessor + // to the new object. + // + // - Return a pointer to the object in AudioProcessor::getVST3ClientExtensions(). + // + // - This option has the advantage of allowing you to break + // up your AudioProcessor into smaller composable objects. + jassertfalse; + return extensions; + } + + return nullptr; +} + //============================================================================== JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wdeprecated-declarations") JUCE_BEGIN_IGNORE_WARNINGS_MSVC (4996) diff --git a/modules/juce_audio_processors/processors/juce_AudioProcessor.h b/modules/juce_audio_processors/processors/juce_AudioProcessor.h index 27accb8a6f..9ae88c7b54 100644 --- a/modules/juce_audio_processors/processors/juce_AudioProcessor.h +++ b/modules/juce_audio_processors/processors/juce_AudioProcessor.h @@ -40,9 +40,11 @@ namespace juce plugin, you should implement a global function called createPluginFilter() which creates and returns a new instance of your subclass. + @see AAXClientExtensions, VST2ClientExtensions, VST3ClientExtensions + @tags{Audio} */ -class JUCE_API AudioProcessor +class JUCE_API AudioProcessor : private AAXClientExtensions { protected: struct BusesProperties; @@ -1176,18 +1178,30 @@ public: void setRateAndBufferSizeDetails (double sampleRate, int blockSize) noexcept; //============================================================================== - /** AAX plug-ins need to report a unique "plug-in id" for every audio layout - configuration that your AudioProcessor supports on the main bus. Override this - function if you want your AudioProcessor to use a custom "plug-in id" (for example - to stay backward compatible with older versions of JUCE). - - The default implementation will compute a unique integer from the input and output - layout and add this value to the 4 character code 'jcaa' (for native AAX) or 'jyaa' - (for AudioSuite plug-ins). + /** Returns a reference to an object that implements AAX specific information regarding + this AudioProcessor. */ - virtual int32 getAAXPluginIDForMainBusConfig (const AudioChannelSet& mainInputLayout, - const AudioChannelSet& mainOutputLayout, - bool idForAudioSuite) const; + virtual AAXClientExtensions& getAAXClientExtensions() { return *this; } + + /** Returns a non-owning pointer to an object that implements VST2 specific information + regarding this AudioProcessor. + + By default, for backwards compatibility, this will attempt to dynamic-cast this + AudioProcessor to VST2ClientExtensions. + It is recommended to override this function to return a pointer directly to an object + of the correct type in order to avoid this dynamic cast. + */ + virtual VST2ClientExtensions* getVST2ClientExtensions(); + + /** Returns a non-owning pointer to an object that implements VST3 specific information + regarding this AudioProcessor. + + By default, for backwards compatibility, this will attempt to dynamic-cast this + AudioProcessor to VST3ClientExtensions. + It is recommended to override this function to return a pointer directly to an object + of the correct type in order to avoid this dynamic cast. + */ + virtual VST3ClientExtensions* getVST3ClientExtensions(); //============================================================================== /** Some plug-ins support sharing response curve data with the host so that it can @@ -1444,6 +1458,15 @@ public: #endif private: + /** This is deprecated. Instead, create an AAXClientExtensions object, + implement getPluginIDForMainBusConfig() and return the object from + getAAXClientExtensions(). + */ + [[deprecated ("Override AAXClientExtensions::getPluginIDForMainBusConfig() instead")]] + virtual int32 getAAXPluginIDForMainBusConfig (const AudioChannelSet&, + const AudioChannelSet&, + const bool) const { return {}; } + //============================================================================== struct InOutChannelPair { diff --git a/modules/juce_audio_processors/utilities/juce_AAXClientExtensions.cpp b/modules/juce_audio_processors/utilities/juce_AAXClientExtensions.cpp new file mode 100644 index 0000000000..d11ed295dd --- /dev/null +++ b/modules/juce_audio_processors/utilities/juce_AAXClientExtensions.cpp @@ -0,0 +1,103 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2022 - Raw Material Software Limited + + JUCE is an open source library subject to commercial or open-source + licensing. + + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +namespace juce +{ + +int32 AAXClientExtensions::getPluginIDForMainBusConfig (const AudioChannelSet& mainInputLayout, + const AudioChannelSet& mainOutputLayout, + bool idForAudioSuite) const +{ + int uniqueFormatId = 0; + + for (int dir = 0; dir < 2; ++dir) + { + const bool isInput = (dir == 0); + auto& set = (isInput ? mainInputLayout : mainOutputLayout); + int aaxFormatIndex = 0; + + const AudioChannelSet sets[] + { + AudioChannelSet::disabled(), + AudioChannelSet::mono(), + AudioChannelSet::stereo(), + AudioChannelSet::createLCR(), + AudioChannelSet::createLCRS(), + AudioChannelSet::quadraphonic(), + AudioChannelSet::create5point0(), + AudioChannelSet::create5point1(), + AudioChannelSet::create6point0(), + AudioChannelSet::create6point1(), + AudioChannelSet::create7point0(), + AudioChannelSet::create7point1(), + AudioChannelSet::create7point0SDDS(), + AudioChannelSet::create7point1SDDS(), + AudioChannelSet::create7point0point2(), + AudioChannelSet::create7point1point2(), + AudioChannelSet::ambisonic (1), + AudioChannelSet::ambisonic (2), + AudioChannelSet::ambisonic (3), + AudioChannelSet::create5point0point2(), + AudioChannelSet::create5point1point2(), + AudioChannelSet::create5point0point4(), + AudioChannelSet::create5point1point4(), + AudioChannelSet::create7point0point4(), + AudioChannelSet::create7point1point4(), + AudioChannelSet::create7point0point6(), + AudioChannelSet::create7point1point6(), + AudioChannelSet::create9point0point4(), + AudioChannelSet::create9point1point4(), + AudioChannelSet::create9point0point6(), + AudioChannelSet::create9point1point6(), + AudioChannelSet::ambisonic (4), + AudioChannelSet::ambisonic (5), + AudioChannelSet::ambisonic (6), + AudioChannelSet::ambisonic (7) + }; + + const auto index = (int) std::distance (std::begin (sets), std::find (std::begin (sets), std::end (sets), set)); + + if (index != numElementsInArray (sets)) + aaxFormatIndex = index; + else + jassertfalse; + + uniqueFormatId = (uniqueFormatId << 8) | aaxFormatIndex; + } + + return (idForAudioSuite ? 0x6a796161 /* 'jyaa' */ : 0x6a636161 /* 'jcaa' */) + uniqueFormatId; +} + +String AAXClientExtensions::getPageFileName() const +{ + #ifdef JucePlugin_AAXPageTableFile + #warning "JucePlugin_AAXPageTableFile is deprecated, instead implement AAXClientExtensions::getPageFileName()" + return JucePlugin_AAXPageTableFile; + #else + return {}; + #endif +} + +} // namespace juce diff --git a/modules/juce_audio_processors/utilities/juce_AAXClientExtensions.h b/modules/juce_audio_processors/utilities/juce_AAXClientExtensions.h new file mode 100644 index 0000000000..870ab966fd --- /dev/null +++ b/modules/juce_audio_processors/utilities/juce_AAXClientExtensions.h @@ -0,0 +1,83 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2022 - Raw Material Software Limited + + JUCE is an open source library subject to commercial or open-source + licensing. + + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +namespace juce +{ + +/** + An interface to allow an AudioProcessor to implement extended AAX-specific functionality. + + To use this class, create an object that inherits from it, implement the methods, then return + a pointer to the object in your AudioProcessor `getAAXClientExtensions()` method. + + @see AudioProcessor, VST2ClientExtensions, VST3ClientExtensions + + @tags{Audio} +*/ +struct AAXClientExtensions +{ + virtual ~AAXClientExtensions() = default; + + /** AAX plug-ins need to report a unique "plug-in id" for every audio layout + configuration that your AudioProcessor supports on the main bus. Override this + function if you want your AudioProcessor to use a custom "plug-in id" (for example + to stay backward compatible with older versions of JUCE). + + The default implementation will compute a unique integer from the input and output + layout and add this value to the 4 character code 'jcaa' (for native AAX) or 'jyaa' + (for AudioSuite plug-ins). + */ + virtual int32 getPluginIDForMainBusConfig (const AudioChannelSet& mainInputLayout, + const AudioChannelSet& mainOutputLayout, + bool idForAudioSuite) const; + + /** Returns an optional filename (including extension) for a page file to be used. + + A page file allows an AAX plugin to specify how its parameters are displayed on + various control surfaces. For more information read the Page Table Guide in the + AAX SDK documentation. + + By default this file will be searched for in `*.aaxplugin/Contents/Resources`. + + @see getPageFileSearchPath + */ + virtual String getPageFileName() const; + + /** Optionally returns a search path for finding a page table file. + + This can be useful for specifying a location outside the plugin bundle so users can + make changes to a page table file without breaking any code signatures. + + If this function returns a default-constructed File, then a default location will be used. + The AAX SDK states this location will be `*.aaxplugin/Contents/Resources`. + + @note The returned path should be an absolute path to a directory. + + @see getPageFileName + */ + virtual File getPageFileSearchPath() const { return {}; } +}; + +} // namespace juce diff --git a/modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.cpp b/modules/juce_audio_processors/utilities/juce_VST2ClientExtensions.cpp similarity index 62% rename from modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.cpp rename to modules/juce_audio_processors/utilities/juce_VST2ClientExtensions.cpp index e8b42e9b0a..b7ea7f2108 100644 --- a/modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.cpp +++ b/modules/juce_audio_processors/utilities/juce_VST2ClientExtensions.cpp @@ -26,14 +26,14 @@ namespace juce { -pointer_sized_int VSTCallbackHandler::handleVstPluginCanDo ([[maybe_unused]] int32 index, - [[maybe_unused]] pointer_sized_int value, - [[maybe_unused]] void* ptr, - [[maybe_unused]] float opt) +pointer_sized_int VST2ClientExtensions::handleVstPluginCanDo ([[maybe_unused]] int32 index, + [[maybe_unused]] pointer_sized_int value, + [[maybe_unused]] void* ptr, + [[maybe_unused]] float opt) { return 0; } -void VSTCallbackHandler::handleVstHostCallbackAvailable ([[maybe_unused]] std::function&& callback) {} +void VST2ClientExtensions::handleVstHostCallbackAvailable ([[maybe_unused]] std::function&& callback) {} } // namespace juce diff --git a/modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.h b/modules/juce_audio_processors/utilities/juce_VST2ClientExtensions.h similarity index 68% rename from modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.h rename to modules/juce_audio_processors/utilities/juce_VST2ClientExtensions.h index 9fe3a0ad82..b656ec4cef 100644 --- a/modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.h +++ b/modules/juce_audio_processors/utilities/juce_VST2ClientExtensions.h @@ -26,19 +26,19 @@ namespace juce { -/** An interface to allow an AudioProcessor to send and receive VST specific calls from - the host. +/** + An interface to allow an AudioProcessor to implement extended VST2-specific functionality. - To use this class, ensure that your AudioProcessor publicly inherits - from VSTCallbackHandler. + To use this class, create an object that inherits from it, implement the methods, then return + a pointer to the object in your AudioProcessor::getVST2ClientExtensions() method. - @see VST3ClientExtensions + @see AudioProcessor, AAXClientExtensions, VST3ClientExtensions @tags{Audio} */ -struct VSTCallbackHandler +struct VST2ClientExtensions { - virtual ~VSTCallbackHandler() = default; + virtual ~VST2ClientExtensions() = default; /** This is called by the VST plug-in wrapper when it receives unhandled plug-in "can do" calls from the host. @@ -56,13 +56,12 @@ struct VSTCallbackHandler void* ptr, float opt) = 0; - // Note: VS2013 prevents a "using" declaration here /** The host callback function type. */ - typedef pointer_sized_int (VstHostCallbackType) (int32 opcode, - int32 index, - pointer_sized_int value, - void* ptr, - float opt); + using VstHostCallbackType = pointer_sized_int (int32 opcode, + int32 index, + pointer_sized_int value, + void* ptr, + float opt); /** This is called once by the VST plug-in wrapper after its constructor. You can use the supplied function to query the VST host. @@ -70,4 +69,6 @@ struct VSTCallbackHandler virtual void handleVstHostCallbackAvailable (std::function&& callback); }; +using VSTCallbackHandler [[deprecated ("replace with VST2ClientExtensions")]] = VST2ClientExtensions; + } // namespace juce diff --git a/modules/juce_audio_processors/utilities/juce_VST3ClientExtensions.h b/modules/juce_audio_processors/utilities/juce_VST3ClientExtensions.h index 70a5fdfd7c..665f11f1f7 100644 --- a/modules/juce_audio_processors/utilities/juce_VST3ClientExtensions.h +++ b/modules/juce_audio_processors/utilities/juce_VST3ClientExtensions.h @@ -37,13 +37,13 @@ namespace Steinberg namespace juce { -/** An interface to allow an AudioProcessor to implement extended VST3-specific - functionality. +/** + An interface to allow an AudioProcessor to implement extended VST3-specific functionality. - To use this class, ensure that your AudioProcessor publicly inherits - from VST3ClientExtensions. + To use this class, create an object that inherits from it, implement the methods, then return + a pointer to the object in your AudioProcessor::getVST3ClientExtensions() method. - @see VSTCallbackHandler + @see AudioProcessor, AAXClientExtensions, VST2ClientExtensions @tags{Audio} */