diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index 091924fa2..d7b8426e8 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -1853,8 +1853,8 @@ void DivEngine::nextBuf(float** in, float** out, int inChans, int outChans, unsi int chan=msg.type&15; switch (msg.type&0xf0) { case TA_MIDI_NOTE_OFF: { - if (chan<0 || chan>=chans) break; if (midiIsDirect) { + if (chan<0 || chan>=chans) break; pendingNotes.push_back(DivNoteEvent(chan,-1,-1,-1,false,false,true)); } else { autoNoteOff(msg.type&15,msg.data[0]-12,msg.data[1]); @@ -1867,15 +1867,16 @@ void DivEngine::nextBuf(float** in, float** out, int inChans, int outChans, unsi break; } case TA_MIDI_NOTE_ON: { - if (chan<0 || chan>=chans) break; if (msg.data[1]==0) { if (midiIsDirect) { + if (chan<0 || chan>=chans) break; pendingNotes.push_back(DivNoteEvent(chan,-1,-1,-1,false,false,true)); } else { autoNoteOff(msg.type&15,msg.data[0]-12,msg.data[1]); } } else { if (midiIsDirect) { + if (chan<0 || chan>=chans) break; pendingNotes.push_back(DivNoteEvent(chan,ins,msg.data[0]-12,msg.data[1],true,false,true)); } else { autoNoteOn(msg.type&15,ins,msg.data[0]-12,msg.data[1]); @@ -1890,6 +1891,8 @@ void DivEngine::nextBuf(float** in, float** out, int inChans, int outChans, unsi break; } } + } else if (midiDebug) { + logD("callback wants ignore"); } //logD("%.2x",msg.type); output->midiIn->queue.pop();