diff --git a/src/common/serialization/vst3/plugin-proxy.cpp b/src/common/serialization/vst3/plugin-proxy.cpp index 8f7a1de3..934d7968 100644 --- a/src/common/serialization/vst3/plugin-proxy.cpp +++ b/src/common/serialization/vst3/plugin-proxy.cpp @@ -27,6 +27,7 @@ Vst3PluginProxy::ConstructArgs::ConstructArgs( connection_point_args(object), edit_controller_args(object), edit_controller_2_args(object), + midi_mapping_args(object), note_expression_controller_args(object), plugin_base_args(object), program_list_data_args(object), @@ -39,6 +40,7 @@ Vst3PluginProxy::Vst3PluginProxy(const ConstructArgs&& args) YaConnectionPoint(std::move(args.connection_point_args)), YaEditController(std::move(args.edit_controller_args)), YaEditController2(std::move(args.edit_controller_2_args)), + YaMidiMapping(std::move(args.midi_mapping_args)), YaNoteExpressionController( std::move(args.note_expression_controller_args)), YaPluginBase(std::move(args.plugin_base_args)), @@ -96,6 +98,10 @@ tresult PLUGIN_API Vst3PluginProxy::queryInterface(Steinberg::FIDString _iid, QUERY_INTERFACE(_iid, obj, Steinberg::Vst::IEditController2::iid, Steinberg::Vst::IEditController2) } + if (YaMidiMapping::supported()) { + QUERY_INTERFACE(_iid, obj, Steinberg::Vst::IMidiMapping::iid, + Steinberg::Vst::IMidiMapping) + } if (YaNoteExpressionController::supported()) { QUERY_INTERFACE(_iid, obj, Steinberg::Vst::INoteExpressionController::iid, diff --git a/src/common/serialization/vst3/plugin-proxy.h b/src/common/serialization/vst3/plugin-proxy.h index 092d5dad..a1a1a667 100644 --- a/src/common/serialization/vst3/plugin-proxy.h +++ b/src/common/serialization/vst3/plugin-proxy.h @@ -62,6 +62,7 @@ class Vst3PluginProxy : public YaAudioProcessor, public YaConnectionPoint, public YaEditController, public YaEditController2, + public YaMidiMapping, public YaNoteExpressionController, public YaPluginBase, public YaProgramListData, @@ -90,6 +91,7 @@ class Vst3PluginProxy : public YaAudioProcessor, YaConnectionPoint::ConstructArgs connection_point_args; YaEditController::ConstructArgs edit_controller_args; YaEditController2::ConstructArgs edit_controller_2_args; + YaMidiMapping::ConstructArgs midi_mapping_args; YaNoteExpressionController::ConstructArgs note_expression_controller_args; YaPluginBase::ConstructArgs plugin_base_args; diff --git a/src/common/serialization/vst3/plugin/midi-mapping.h b/src/common/serialization/vst3/plugin/midi-mapping.h index 3c1415f3..ec9a2ceb 100644 --- a/src/common/serialization/vst3/plugin/midi-mapping.h +++ b/src/common/serialization/vst3/plugin/midi-mapping.h @@ -100,11 +100,11 @@ class YaMidiMapping : public Steinberg::Vst::IMidiMapping { } }; - virtual tresult PLUGIN_API - getMidiControllerAssignment(int32 busIndex, - int16 channel, - Steinberg::Vst::CtrlNumber midiControllerNumber, - Steinberg::Vst::ParamID& id /*out*/) = 0; + virtual tresult PLUGIN_API getMidiControllerAssignment( + int32 busIndex, + int16 channel, + Steinberg::Vst::CtrlNumber midiControllerNumber, + Steinberg::Vst::ParamID& id /*out*/) override = 0; protected: ConstructArgs arguments; diff --git a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp index 835f5f97..e4b752b9 100644 --- a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp +++ b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp @@ -413,6 +413,16 @@ tresult PLUGIN_API Vst3PluginProxyImpl::openAboutBox(TBool onlyCheck) { .instance_id = instance_id(), .only_check = onlyCheck}); } +tresult PLUGIN_API Vst3PluginProxyImpl::getMidiControllerAssignment( + int32 busIndex, + int16 channel, + Steinberg::Vst::CtrlNumber midiControllerNumber, + Steinberg::Vst::ParamID& id /*out*/) { + // TODO: Implement + bridge.logger.log("TODO: IMidiMapping::getMidiControllerAssignment()"); + return Steinberg::kNotImplemented; +} + int32 PLUGIN_API Vst3PluginProxyImpl::getNoteExpressionCount(int32 busIndex, int16 channel) { return bridge.send_message( diff --git a/src/plugin/bridges/vst3-impls/plugin-proxy.h b/src/plugin/bridges/vst3-impls/plugin-proxy.h index f132e6c4..14e22e79 100644 --- a/src/plugin/bridges/vst3-impls/plugin-proxy.h +++ b/src/plugin/bridges/vst3-impls/plugin-proxy.h @@ -120,6 +120,13 @@ class Vst3PluginProxyImpl : public Vst3PluginProxy { tresult PLUGIN_API openHelp(TBool onlyCheck) override; tresult PLUGIN_API openAboutBox(TBool onlyCheck) override; + // From `IMidiMapping` + tresult PLUGIN_API + getMidiControllerAssignment(int32 busIndex, + int16 channel, + Steinberg::Vst::CtrlNumber midiControllerNumber, + Steinberg::Vst::ParamID& id /*out*/) override; + // From `INoteExpressionController` int32 PLUGIN_API getNoteExpressionCount(int32 busIndex, int16 channel) override;