From 7969ec20fdad5b5c06cd17baf94a4e0b02732cef Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Fri, 8 Jan 2021 16:53:43 +0100 Subject: [PATCH] Add stubs for IKeyswitchController --- src/common/serialization/vst3/plugin-proxy.cpp | 6 ++++++ src/common/serialization/vst3/plugin-proxy.h | 4 ++++ src/plugin/bridges/vst3-impls/plugin-proxy.cpp | 17 +++++++++++++++++ src/plugin/bridges/vst3-impls/plugin-proxy.h | 8 ++++++++ 4 files changed, 35 insertions(+) diff --git a/src/common/serialization/vst3/plugin-proxy.cpp b/src/common/serialization/vst3/plugin-proxy.cpp index 45909099..2ab18c73 100644 --- a/src/common/serialization/vst3/plugin-proxy.cpp +++ b/src/common/serialization/vst3/plugin-proxy.cpp @@ -29,6 +29,7 @@ Vst3PluginProxy::ConstructArgs::ConstructArgs( edit_controller_args(object), edit_controller_2_args(object), edit_controller_host_editing_args(object), + keyswitch_controller_args(object), midi_mapping_args(object), note_expression_controller_args(object), plugin_base_args(object), @@ -46,6 +47,7 @@ Vst3PluginProxy::Vst3PluginProxy(const ConstructArgs&& args) YaEditController2(std::move(args.edit_controller_2_args)), YaEditControllerHostEditing( std::move(args.edit_controller_host_editing_args)), + YaKeyswitchController(std::move(args.keyswitch_controller_args)), YaMidiMapping(std::move(args.midi_mapping_args)), YaNoteExpressionController( std::move(args.note_expression_controller_args)), @@ -114,6 +116,10 @@ tresult PLUGIN_API Vst3PluginProxy::queryInterface(Steinberg::FIDString _iid, Steinberg::Vst::IEditControllerHostEditing::iid, Steinberg::Vst::IEditControllerHostEditing) } + if (YaKeyswitchController::supported()) { + QUERY_INTERFACE(_iid, obj, Steinberg::Vst::IKeyswitchController::iid, + Steinberg::Vst::IKeyswitchController) + } if (YaMidiMapping::supported()) { QUERY_INTERFACE(_iid, obj, Steinberg::Vst::IMidiMapping::iid, Steinberg::Vst::IMidiMapping) diff --git a/src/common/serialization/vst3/plugin-proxy.h b/src/common/serialization/vst3/plugin-proxy.h index 6c23918f..78553da9 100644 --- a/src/common/serialization/vst3/plugin-proxy.h +++ b/src/common/serialization/vst3/plugin-proxy.h @@ -26,6 +26,7 @@ #include "plugin/edit-controller-2.h" #include "plugin/edit-controller-host-editing.h" #include "plugin/edit-controller.h" +#include "plugin/keyswitch-controller.h" #include "plugin/midi-mapping.h" #include "plugin/note-expression-controller.h" #include "plugin/plugin-base.h" @@ -66,6 +67,7 @@ class Vst3PluginProxy : public YaAudioPresentationLatency, public YaEditController, public YaEditController2, public YaEditControllerHostEditing, + public YaKeyswitchController, public YaMidiMapping, public YaNoteExpressionController, public YaPluginBase, @@ -99,6 +101,7 @@ class Vst3PluginProxy : public YaAudioPresentationLatency, YaEditController2::ConstructArgs edit_controller_2_args; YaEditControllerHostEditing::ConstructArgs edit_controller_host_editing_args; + YaKeyswitchController::ConstructArgs keyswitch_controller_args; YaMidiMapping::ConstructArgs midi_mapping_args; YaNoteExpressionController::ConstructArgs note_expression_controller_args; @@ -117,6 +120,7 @@ class Vst3PluginProxy : public YaAudioPresentationLatency, s.object(edit_controller_args); s.object(edit_controller_2_args); s.object(edit_controller_host_editing_args); + s.object(keyswitch_controller_args); s.object(midi_mapping_args); s.object(note_expression_controller_args); s.object(plugin_base_args); diff --git a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp index 8365e617..7e9f2f78 100644 --- a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp +++ b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp @@ -463,6 +463,23 @@ Vst3PluginProxyImpl::endEditFromHost(Steinberg::Vst::ParamID paramID) { .instance_id = instance_id(), .param_id = paramID}); } +int32 PLUGIN_API Vst3PluginProxyImpl::getKeyswitchCount(int32 busIndex, + int16 channel) { + // TODO: Implement + bridge.logger.log("TODO: IKeyswitchController::getKeyswitchCount()"); + return Steinberg::kNotImplemented; +} + +tresult PLUGIN_API Vst3PluginProxyImpl::getKeyswitchInfo( + int32 busIndex, + int16 channel, + int32 keySwitchIndex, + Steinberg::Vst::KeyswitchInfo& info /*out*/) { + // TODO: Implement + bridge.logger.log("TODO: IKeyswitchController::getKeyswitchInfo()"); + return Steinberg::kNotImplemented; +} + tresult PLUGIN_API Vst3PluginProxyImpl::getMidiControllerAssignment( int32 busIndex, int16 channel, diff --git a/src/plugin/bridges/vst3-impls/plugin-proxy.h b/src/plugin/bridges/vst3-impls/plugin-proxy.h index f8c117fe..bd0c94b3 100644 --- a/src/plugin/bridges/vst3-impls/plugin-proxy.h +++ b/src/plugin/bridges/vst3-impls/plugin-proxy.h @@ -148,6 +148,14 @@ class Vst3PluginProxyImpl : public Vst3PluginProxy { tresult PLUGIN_API endEditFromHost(Steinberg::Vst::ParamID paramID) override; + // From `IKeyswitchController` + int32 PLUGIN_API getKeyswitchCount(int32 busIndex, int16 channel) override; + tresult PLUGIN_API + getKeyswitchInfo(int32 busIndex, + int16 channel, + int32 keySwitchIndex, + Steinberg::Vst::KeyswitchInfo& info /*out*/) override; + // From `IMidiMapping` tresult PLUGIN_API getMidiControllerAssignment(int32 busIndex,