From 17d2d21beff73274f41133d11ed2b952e5506bb1 Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Sat, 2 Jan 2021 22:21:02 +0100 Subject: [PATCH] Add request structs for IMidiMapping --- .../serialization/vst3/plugin/midi-mapping.h | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/common/serialization/vst3/plugin/midi-mapping.h b/src/common/serialization/vst3/plugin/midi-mapping.h index 06906707..3c1415f3 100644 --- a/src/common/serialization/vst3/plugin/midi-mapping.h +++ b/src/common/serialization/vst3/plugin/midi-mapping.h @@ -61,6 +61,45 @@ class YaMidiMapping : public Steinberg::Vst::IMidiMapping { inline bool supported() const { return arguments.supported; } + /** + * The response code and returned parameter ID for a call to + * `IMidiMapping::getMidiControllerAssignment(bus_index, channel, + * midi_controller_number, &id)`. + */ + struct GetMidiControllerAssignmentResponse { + UniversalTResult result; + Steinberg::Vst::ParamID id; + + template + void serialize(S& s) { + s.object(result); + s.value4b(id); + } + }; + + /** + * Message to pass through a call to + * `IMidiMapping::getMidiControllerAssignment(bus_index, channel, + * midi_controller_number, &id)` to the Wine plugin host. + */ + struct GetMidiControllerAssignment { + using Response = GetMidiControllerAssignmentResponse; + + native_size_t instance_id; + + int32 bus_index; + int16 channel; + Steinberg::Vst::CtrlNumber midi_controller_number; + + template + void serialize(S& s) { + s.value8b(instance_id); + s.value4b(bus_index); + s.value2b(channel); + s.value2b(midi_controller_number); + } + }; + virtual tresult PLUGIN_API getMidiControllerAssignment(int32 busIndex, int16 channel,