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::GetNoteExpressionStringByValue,
YaNoteExpressionController::GetNoteExpressionValueByString,
YaNoteExpressionPhysicalUIMapping::GetNotePhysicalUIMapping,
YaParameterFinder::FindParameter,
YaPlugView::IsPlatformTypeSupported,
YaPlugView::Attached,
+10 -5
View File
@@ -664,11 +664,16 @@ tresult PLUGIN_API Vst3PluginProxyImpl::getPhysicalUIMapping(
int32 busIndex,
int16 channel,
Steinberg::Vst::PhysicalUIMapList& list) {
// TODO: Implement
bridge.logger.log(
"TODO: Implement "
"INoteExpressionPhysicalUIMapping::getPhysicalUIMapping()");
return Steinberg::kNotImplemented;
const GetNotePhysicalUIMappingResponse response = bridge.send_message(
YaNoteExpressionPhysicalUIMapping::GetNotePhysicalUIMapping{
.instance_id = instance_id(),
.bus_index = busIndex,
.channel = channel,
.list = list});
response.list.write_back(list);
return response.result;
}
tresult PLUGIN_API Vst3PluginProxyImpl::initialize(FUnknown* context) {
+19
View File
@@ -51,6 +51,7 @@ InstanceInterfaces::InstanceInterfaces(
keyswitch_controller(object),
midi_mapping(object),
note_expression_controller(object),
note_expression_physical_ui_mapping(object),
plugin_base(object),
unit_data(object),
prefetchable_support(object),
@@ -535,6 +536,24 @@ void Vst3Bridge::run() {
.result = result,
.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)
-> YaParameterFinder::FindParameter::Response {
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::INoteExpressionController>
note_expression_controller;
Steinberg::FUnknownPtr<Steinberg::Vst::INoteExpressionPhysicalUIMapping>
note_expression_physical_ui_mapping;
Steinberg::FUnknownPtr<Steinberg::IPluginBase> plugin_base;
Steinberg::FUnknownPtr<Steinberg::Vst::IUnitData> unit_data;
Steinberg::FUnknownPtr<Steinberg::Vst::IPrefetchableSupport>