diff --git a/src/common/serialization/vst3/plugin-proxy.cpp b/src/common/serialization/vst3/plugin-proxy.cpp index cc9f370c..d9264c70 100644 --- a/src/common/serialization/vst3/plugin-proxy.cpp +++ b/src/common/serialization/vst3/plugin-proxy.cpp @@ -35,6 +35,7 @@ Vst3PluginProxy::ConstructArgs::ConstructArgs( midi_learn_args(object), midi_mapping_args(object), note_expression_controller_args(object), + parameter_function_name_args(object), plugin_base_args(object), prefetchable_support_args(object), process_context_requirements_args(object), @@ -62,6 +63,7 @@ Vst3PluginProxy::Vst3PluginProxy(const ConstructArgs&& args) std::move(args.note_expression_controller_args)), YaNoteExpressionPhysicalUIMapping( std::move(args.note_expression_physical_ui_mapping_args)), + YaParameterFunctionName(std::move(args.parameter_function_name_args)), YaPluginBase(std::move(args.plugin_base_args)), YaPrefetchableSupport(std::move(args.prefetchable_support_args)), YaProcessContextRequirements( @@ -163,6 +165,10 @@ tresult PLUGIN_API Vst3PluginProxy::queryInterface(Steinberg::FIDString _iid, Steinberg::Vst::INoteExpressionPhysicalUIMapping::iid, Steinberg::Vst::INoteExpressionPhysicalUIMapping) } + if (YaParameterFunctionName::supported()) { + QUERY_INTERFACE(_iid, obj, Steinberg::Vst::IParameterFunctionName::iid, + Steinberg::Vst::IParameterFunctionName) + } if (YaPrefetchableSupport::supported()) { QUERY_INTERFACE(_iid, obj, Steinberg::Vst::IPrefetchableSupport::iid, Steinberg::Vst::IPrefetchableSupport) diff --git a/src/common/serialization/vst3/plugin-proxy.h b/src/common/serialization/vst3/plugin-proxy.h index 593bb299..e3b121aa 100644 --- a/src/common/serialization/vst3/plugin-proxy.h +++ b/src/common/serialization/vst3/plugin-proxy.h @@ -33,6 +33,7 @@ #include "plugin/midi-mapping.h" #include "plugin/note-expression-controller.h" #include "plugin/note-expression-physical-ui-mapping.h" +#include "plugin/parameter-function-name.h" #include "plugin/plugin-base.h" #include "plugin/prefetchable-support.h" #include "plugin/process-context-requirements.h" @@ -81,6 +82,7 @@ class Vst3PluginProxy : public YaAudioPresentationLatency, public YaMidiMapping, public YaNoteExpressionController, public YaNoteExpressionPhysicalUIMapping, + public YaParameterFunctionName, public YaPluginBase, public YaPrefetchableSupport, public YaProcessContextRequirements, @@ -124,6 +126,7 @@ class Vst3PluginProxy : public YaAudioPresentationLatency, note_expression_controller_args; YaNoteExpressionPhysicalUIMapping::ConstructArgs note_expression_physical_ui_mapping_args; + YaParameterFunctionName::ConstructArgs parameter_function_name_args; YaPluginBase::ConstructArgs plugin_base_args; YaPrefetchableSupport::ConstructArgs prefetchable_support_args; YaProcessContextRequirements::ConstructArgs @@ -151,6 +154,7 @@ class Vst3PluginProxy : public YaAudioPresentationLatency, s.object(midi_mapping_args); s.object(note_expression_controller_args); s.object(note_expression_physical_ui_mapping_args); + s.object(parameter_function_name_args); s.object(plugin_base_args); s.object(prefetchable_support_args); s.object(process_context_requirements_args); diff --git a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp index eedb6eee..68f30e65 100644 --- a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp +++ b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp @@ -688,6 +688,17 @@ tresult PLUGIN_API Vst3PluginProxyImpl::getPhysicalUIMapping( return response.result; } +tresult PLUGIN_API Vst3PluginProxyImpl::getParameterIDFromFunctionName( + Steinberg::Vst::UnitID unitID, + Steinberg::FIDString functionName, + Steinberg::Vst::ParamID& paramID) { + // TODO: Implement + bridge.logger.log( + "TODO: Implement " + "IParameterFunctionName::getParameterIDFromFunctionName()"); + return Steinberg::kNotImplemented; +} + tresult PLUGIN_API Vst3PluginProxyImpl::initialize(FUnknown* context) { if (context) { // We will create a proxy object that that supports all the same diff --git a/src/plugin/bridges/vst3-impls/plugin-proxy.h b/src/plugin/bridges/vst3-impls/plugin-proxy.h index a968521e..1b5869e5 100644 --- a/src/plugin/bridges/vst3-impls/plugin-proxy.h +++ b/src/plugin/bridges/vst3-impls/plugin-proxy.h @@ -203,6 +203,12 @@ class Vst3PluginProxyImpl : public Vst3PluginProxy { int16 channel, Steinberg::Vst::PhysicalUIMapList& list) override; + // From `IParameterFunctionName` + tresult PLUGIN_API + getParameterIDFromFunctionName(Steinberg::Vst::UnitID unitID, + Steinberg::FIDString functionName, + Steinberg::Vst::ParamID& paramID) override; + // From `IPluginBase` tresult PLUGIN_API initialize(FUnknown* context) override; tresult PLUGIN_API terminate() override;