From fa6b8ce71690ae2a18a55cf64c1e8c0b8484474b Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Sat, 17 Dec 2022 16:43:47 +0100 Subject: [PATCH] Fix for retarted NoteOff message from novation launchpad --- sampleswidget.cpp | 6 +++--- synthisizer.cpp | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/sampleswidget.cpp b/sampleswidget.cpp index 5e32a81..9224b89 100755 --- a/sampleswidget.cpp +++ b/sampleswidget.cpp @@ -68,10 +68,10 @@ void SamplesWidget::messageReceived(const midi::MidiMessage &message) { if (ref.get().channel() == message.channel && ref.get().note() == message.note) { - if (message.cmd == midi::Command::NoteOn) - ref.get().pressed(message.velocity); - else if (message.cmd == midi::Command::NoteOff) + if (message.cmd == midi::Command::NoteOff || (message.cmd == midi::Command::NoteOn && message.velocity == 0)) ref.get().released(); + else if (message.cmd == midi::Command::NoteOn) + ref.get().pressed(message.velocity); } } } diff --git a/synthisizer.cpp b/synthisizer.cpp index 7d126f5..1021388 100644 --- a/synthisizer.cpp +++ b/synthisizer.cpp @@ -25,11 +25,11 @@ void Synthisizer::writeSamples(frame_t *begin, frame_t *end) void Synthisizer::messageReceived(const midi::MidiMessage &message) { - if (message.cmd == midi::Command::NoteOn) - m_frequency = 440.*std::pow(std::pow(2., 1./12.), message.note-48); - else if (message.cmd == midi::Command::NoteOff) + if (message.cmd == midi::Command::NoteOff || (message.cmd == midi::Command::NoteOn && message.velocity == 0)) { if (m_frequency == int16_t(440.*std::pow(std::pow(2., 1./12.), message.note-48))) m_frequency = 0; } + else if (message.cmd == midi::Command::NoteOn) + m_frequency = 440.*std::pow(std::pow(2., 1./12.), message.note-48); }