diff --git a/include/dsp/midi.hpp b/include/dsp/midi.hpp index 660ee221..38934b00 100644 --- a/include/dsp/midi.hpp +++ b/include/dsp/midi.hpp @@ -213,6 +213,8 @@ struct MidiGenerator { } virtual void onMessage(midi::Message message) {} + + virtual void onMessage(uint8_t* bytes, size_t size) {} }; diff --git a/include/midi.hpp b/include/midi.hpp index f1bd35d4..59d84909 100644 --- a/include/midi.hpp +++ b/include/midi.hpp @@ -106,6 +106,7 @@ struct OutputDevice : Device { void subscribe(Output* input); void unsubscribe(Output* input); virtual void sendMessage(Message message) {} + virtual void sendMessage(uint8_t* bytes, size_t size) {} }; //////////////////// @@ -184,6 +185,7 @@ struct Output : Port { std::vector getChannels() override; void sendMessage(Message message); + void sendMessage(uint8_t* bytes, size_t size); }; diff --git a/src/midi.cpp b/src/midi.cpp index b555841c..a791e402 100644 --- a/src/midi.cpp +++ b/src/midi.cpp @@ -264,6 +264,12 @@ void Output::sendMessage(Message message) { } } +void Output::sendMessage(uint8_t* bytes, size_t size) { + if (outputDevice) { + outputDevice->sendMessage(bytes, size); + } +} + //////////////////// // midi diff --git a/src/rtmidi.cpp b/src/rtmidi.cpp index df24af92..3d20fdc3 100644 --- a/src/rtmidi.cpp +++ b/src/rtmidi.cpp @@ -70,6 +70,10 @@ struct RtMidiOutputDevice : midi::OutputDevice { void sendMessage(midi::Message message) override { rtMidiOut->sendMessage(message.bytes, message.size); } + + void sendMessage(uint8_t* bytes, size_t size) override { + rtMidiOut->sendMessage(bytes, size); + } };