From 85c1972c1f13e2d5f6b59c8cab25625a99061fcf Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Fri, 15 Jan 2021 22:36:25 +0100 Subject: [PATCH] Add stubs for IMidiLearn --- src/common/serialization/vst3/plugin-proxy.cpp | 6 ++++++ src/common/serialization/vst3/plugin-proxy.h | 4 ++++ src/plugin/bridges/vst3-impls/plugin-proxy.cpp | 10 ++++++++++ src/plugin/bridges/vst3-impls/plugin-proxy.h | 6 ++++++ 4 files changed, 26 insertions(+) diff --git a/src/common/serialization/vst3/plugin-proxy.cpp b/src/common/serialization/vst3/plugin-proxy.cpp index 0fe2e5f4..b31b35d3 100644 --- a/src/common/serialization/vst3/plugin-proxy.cpp +++ b/src/common/serialization/vst3/plugin-proxy.cpp @@ -32,6 +32,7 @@ Vst3PluginProxy::ConstructArgs::ConstructArgs( edit_controller_host_editing_args(object), info_listener_args(object), keyswitch_controller_args(object), + midi_learn_args(object), midi_mapping_args(object), note_expression_controller_args(object), plugin_base_args(object), @@ -54,6 +55,7 @@ Vst3PluginProxy::Vst3PluginProxy(const ConstructArgs&& args) std::move(args.edit_controller_host_editing_args)), YaInfoListener(std::move(args.info_listener_args)), YaKeyswitchController(std::move(args.keyswitch_controller_args)), + YaMidiLearn(std::move(args.midi_learn_args)), YaMidiMapping(std::move(args.midi_mapping_args)), YaNoteExpressionController( std::move(args.note_expression_controller_args)), @@ -140,6 +142,10 @@ tresult PLUGIN_API Vst3PluginProxy::queryInterface(Steinberg::FIDString _iid, QUERY_INTERFACE(_iid, obj, Steinberg::Vst::IKeyswitchController::iid, Steinberg::Vst::IKeyswitchController) } + if (YaMidiLearn::supported()) { + QUERY_INTERFACE(_iid, obj, Steinberg::Vst::IMidiLearn::iid, + Steinberg::Vst::IMidiLearn) + } 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 8d0e3c16..25f9f127 100644 --- a/src/common/serialization/vst3/plugin-proxy.h +++ b/src/common/serialization/vst3/plugin-proxy.h @@ -29,6 +29,7 @@ #include "plugin/edit-controller.h" #include "plugin/info-listener.h" #include "plugin/keyswitch-controller.h" +#include "plugin/midi-learn.h" #include "plugin/midi-mapping.h" #include "plugin/note-expression-controller.h" #include "plugin/note-expression-physical-ui-mapping.h" @@ -75,6 +76,7 @@ class Vst3PluginProxy : public YaAudioPresentationLatency, public YaEditControllerHostEditing, public YaInfoListener, public YaKeyswitchController, + public YaMidiLearn, public YaMidiMapping, public YaNoteExpressionController, public YaNoteExpressionPhysicalUIMapping, @@ -114,6 +116,7 @@ class Vst3PluginProxy : public YaAudioPresentationLatency, edit_controller_host_editing_args; YaInfoListener::ConstructArgs info_listener_args; YaKeyswitchController::ConstructArgs keyswitch_controller_args; + YaMidiLearn::ConstructArgs midi_learn_args; YaMidiMapping::ConstructArgs midi_mapping_args; YaNoteExpressionController::ConstructArgs note_expression_controller_args; @@ -140,6 +143,7 @@ class Vst3PluginProxy : public YaAudioPresentationLatency, s.object(edit_controller_host_editing_args); s.object(info_listener_args); s.object(keyswitch_controller_args); + s.object(midi_learn_args); s.object(midi_mapping_args); s.object(note_expression_controller_args); s.object(note_expression_physical_ui_mapping_args); diff --git a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp index 3e2a45c7..54f1e219 100644 --- a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp +++ b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp @@ -562,6 +562,16 @@ tresult PLUGIN_API Vst3PluginProxyImpl::getKeyswitchInfo( return response.result; } +tresult PLUGIN_API Vst3PluginProxyImpl::onLiveMIDIControllerInput( + int32 busIndex, + int16 channel, + Steinberg::Vst::CtrlNumber midiCC) { + // TODO: Implement + bridge.logger.log( + "TODO: Implement IMidiLearn::onLiveMIDIControllerInput()"); + 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 5e4d1e54..13b6f195 100644 --- a/src/plugin/bridges/vst3-impls/plugin-proxy.h +++ b/src/plugin/bridges/vst3-impls/plugin-proxy.h @@ -163,6 +163,12 @@ class Vst3PluginProxyImpl : public Vst3PluginProxy { int32 keySwitchIndex, Steinberg::Vst::KeyswitchInfo& info /*out*/) override; + // From `IMidiLearn` + tresult PLUGIN_API + onLiveMIDIControllerInput(int32 busIndex, + int16 channel, + Steinberg::Vst::CtrlNumber midiCC) override; + // From `IMidiMapping` tresult PLUGIN_API getMidiControllerAssignment(int32 busIndex,