From c27c650c11fc2047830de3cce84f289ae9be7e1b Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 25 Sep 2022 23:43:01 -0500 Subject: [PATCH] MIDI out: prevent out of range notes --- src/engine/playback.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index ca62009a7..d9eb18f84 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -266,7 +266,11 @@ int DivEngine::dispatchCmd(DivCommand c) { if (chan[c.chan].curMidiNote>=0) { output->midiOut->send(TAMidiMessage(0x80|(c.chan&15),chan[c.chan].curMidiNote,scaledVol)); } - if (c.value!=DIV_NOTE_NULL) chan[c.chan].curMidiNote=c.value+12; + if (c.value!=DIV_NOTE_NULL) { + chan[c.chan].curMidiNote=c.value+12; + if (chan[c.chan].curMidiNote<0) chan[c.chan].curMidiNote=0; + if (chan[c.chan].curMidiNote>127) chan[c.chan].curMidiNote=127; + } output->midiOut->send(TAMidiMessage(0x90|(c.chan&15),chan[c.chan].curMidiNote,scaledVol)); break; case DIV_CMD_NOTE_OFF: