diff options
author | falkTX <falktx@gmail.com> | 2018-08-04 02:36:45 +0200 |
---|---|---|
committer | falkTX <falktx@gmail.com> | 2018-08-04 02:36:45 +0200 |
commit | 340b8e0c5956e74022b7aa7669a8f371df2e5c7b (patch) | |
tree | 661d4d1a19378c90a36be8fa185f5e605d23a20b | |
parent | 5e57dfbf6be109a4d6812e2692a9879e50ce7857 (diff) |
Make MIDI output actually work
-rw-r--r-- | distrho/src/DistrhoPlugin.cpp | 5 | ||||
-rw-r--r-- | distrho/src/DistrhoPluginInternal.hpp | 8 | ||||
-rw-r--r-- | distrho/src/DistrhoPluginJack.cpp | 1 |
3 files changed, 9 insertions, 5 deletions
diff --git a/distrho/src/DistrhoPlugin.cpp b/distrho/src/DistrhoPlugin.cpp index 20cdfcb0..f1fbd7bd 100644 --- a/distrho/src/DistrhoPlugin.cpp +++ b/distrho/src/DistrhoPlugin.cpp @@ -102,10 +102,9 @@ void Plugin::setLatency(uint32_t frames) noexcept #endif #if DISTRHO_PLUGIN_WANT_MIDI_OUTPUT -bool Plugin::writeMidiEvent(const MidiEvent& /*midiEvent*/) noexcept +bool Plugin::writeMidiEvent(const MidiEvent& midiEvent) noexcept { - // TODO - return false; + return pData->writeMidiCallback(midiEvent); } #endif diff --git a/distrho/src/DistrhoPluginInternal.hpp b/distrho/src/DistrhoPluginInternal.hpp index 007a98bf..3496ac60 100644 --- a/distrho/src/DistrhoPluginInternal.hpp +++ b/distrho/src/DistrhoPluginInternal.hpp @@ -161,11 +161,15 @@ struct Plugin::PrivateData { #endif } - void writeMidiCallback(const MidiEvent& midiEvent) +#if DISTRHO_PLUGIN_WANT_MIDI_OUTPUT + bool writeMidiCallback(const MidiEvent& midiEvent) { if (writeMidiCallbackFunc != nullptr) - writeMidiCallbackFunc(callbacksPtr, midiEvent); + return writeMidiCallbackFunc(callbacksPtr, midiEvent); + + return false; } +#endif }; // ----------------------------------------------------------------------- diff --git a/distrho/src/DistrhoPluginJack.cpp b/distrho/src/DistrhoPluginJack.cpp index 7381aed3..dfa60fb0 100644 --- a/distrho/src/DistrhoPluginJack.cpp +++ b/distrho/src/DistrhoPluginJack.cpp @@ -345,6 +345,7 @@ protected: #if DISTRHO_PLUGIN_WANT_MIDI_OUTPUT fPortMidiOutBuffer = jack_port_get_buffer(fPortMidiOut, nframes); + jack_midi_clear_buffer(fPortMidiOutBuffer); #endif if (const uint32_t eventCount = jack_midi_get_event_count(midiBuf)) |