Fully implement INoteExpressionPhysicalUIMapping

With this we support all VST 3.6.11 features.
This commit is contained in:
Robbert van der Helm
2021-01-15 19:33:05 +01:00
parent d9d389bebf
commit 6e8d56923c
4 changed files with 32 additions and 5 deletions
+1
View File
@@ -100,6 +100,7 @@ using ControlRequest =
YaNoteExpressionController::GetNoteExpressionInfo, YaNoteExpressionController::GetNoteExpressionInfo,
YaNoteExpressionController::GetNoteExpressionStringByValue, YaNoteExpressionController::GetNoteExpressionStringByValue,
YaNoteExpressionController::GetNoteExpressionValueByString, YaNoteExpressionController::GetNoteExpressionValueByString,
YaNoteExpressionPhysicalUIMapping::GetNotePhysicalUIMapping,
YaParameterFinder::FindParameter, YaParameterFinder::FindParameter,
YaPlugView::IsPlatformTypeSupported, YaPlugView::IsPlatformTypeSupported,
YaPlugView::Attached, YaPlugView::Attached,
+10 -5
View File
@@ -664,11 +664,16 @@ tresult PLUGIN_API Vst3PluginProxyImpl::getPhysicalUIMapping(
int32 busIndex, int32 busIndex,
int16 channel, int16 channel,
Steinberg::Vst::PhysicalUIMapList& list) { Steinberg::Vst::PhysicalUIMapList& list) {
// TODO: Implement const GetNotePhysicalUIMappingResponse response = bridge.send_message(
bridge.logger.log( YaNoteExpressionPhysicalUIMapping::GetNotePhysicalUIMapping{
"TODO: Implement " .instance_id = instance_id(),
"INoteExpressionPhysicalUIMapping::getPhysicalUIMapping()"); .bus_index = busIndex,
return Steinberg::kNotImplemented; .channel = channel,
.list = list});
response.list.write_back(list);
return response.result;
} }
tresult PLUGIN_API Vst3PluginProxyImpl::initialize(FUnknown* context) { tresult PLUGIN_API Vst3PluginProxyImpl::initialize(FUnknown* context) {
+19
View File
@@ -51,6 +51,7 @@ InstanceInterfaces::InstanceInterfaces(
keyswitch_controller(object), keyswitch_controller(object),
midi_mapping(object), midi_mapping(object),
note_expression_controller(object), note_expression_controller(object),
note_expression_physical_ui_mapping(object),
plugin_base(object), plugin_base(object),
unit_data(object), unit_data(object),
prefetchable_support(object), prefetchable_support(object),
@@ -535,6 +536,24 @@ void Vst3Bridge::run() {
.result = result, .result = result,
.value_normalized = value_normalized}; .value_normalized = value_normalized};
}, },
[&](YaNoteExpressionPhysicalUIMapping::GetNotePhysicalUIMapping&
request)
-> YaNoteExpressionPhysicalUIMapping::GetNotePhysicalUIMapping::
Response {
Steinberg::Vst::PhysicalUIMapList reconstructed_list =
request.list.get();
const tresult result =
object_instances[request.instance_id]
.note_expression_physical_ui_mapping
->getPhysicalUIMapping(request.bus_index,
request.channel,
reconstructed_list);
return YaNoteExpressionPhysicalUIMapping::
GetNotePhysicalUIMappingResponse{
.result = result,
.list = std::move(request.list)};
},
[&](const YaParameterFinder::FindParameter& request) [&](const YaParameterFinder::FindParameter& request)
-> YaParameterFinder::FindParameter::Response { -> YaParameterFinder::FindParameter::Response {
Steinberg::Vst::ParamID result_tag; Steinberg::Vst::ParamID result_tag;
+2
View File
@@ -164,6 +164,8 @@ struct InstanceInterfaces {
Steinberg::FUnknownPtr<Steinberg::Vst::IMidiMapping> midi_mapping; Steinberg::FUnknownPtr<Steinberg::Vst::IMidiMapping> midi_mapping;
Steinberg::FUnknownPtr<Steinberg::Vst::INoteExpressionController> Steinberg::FUnknownPtr<Steinberg::Vst::INoteExpressionController>
note_expression_controller; note_expression_controller;
Steinberg::FUnknownPtr<Steinberg::Vst::INoteExpressionPhysicalUIMapping>
note_expression_physical_ui_mapping;
Steinberg::FUnknownPtr<Steinberg::IPluginBase> plugin_base; Steinberg::FUnknownPtr<Steinberg::IPluginBase> plugin_base;
Steinberg::FUnknownPtr<Steinberg::Vst::IUnitData> unit_data; Steinberg::FUnknownPtr<Steinberg::Vst::IUnitData> unit_data;
Steinberg::FUnknownPtr<Steinberg::Vst::IPrefetchableSupport> Steinberg::FUnknownPtr<Steinberg::Vst::IPrefetchableSupport>