summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfalkTX <falktx@gmail.com>2018-08-04 02:36:45 +0200
committerfalkTX <falktx@gmail.com>2018-08-04 02:36:45 +0200
commit340b8e0c5956e74022b7aa7669a8f371df2e5c7b (patch)
tree661d4d1a19378c90a36be8fa185f5e605d23a20b
parent5e57dfbf6be109a4d6812e2692a9879e50ce7857 (diff)
Make MIDI output actually work
-rw-r--r--distrho/src/DistrhoPlugin.cpp5
-rw-r--r--distrho/src/DistrhoPluginInternal.hpp8
-rw-r--r--distrho/src/DistrhoPluginJack.cpp1
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))