diff options
author | Tim E. Real <termtech@rogers.com> | 2011-02-09 22:37:27 +0000 |
---|---|---|
committer | Tim E. Real <termtech@rogers.com> | 2011-02-09 22:37:27 +0000 |
commit | d7f4820023196bfc7d40ef5fa134bc46a6e55849 (patch) | |
tree | fa00ee04c060c2ece1122f9d3fee382b0d5f043c /muse2/muse/midi.cpp | |
parent | e11f572d97bb761d848fad41991d0ed747bad111 (diff) |
Mini MIDI overhaul. Please see ChangeLog.
Diffstat (limited to 'muse2/muse/midi.cpp')
-rw-r--r-- | muse2/muse/midi.cpp | 75 |
1 files changed, 57 insertions, 18 deletions
diff --git a/muse2/muse/midi.cpp b/muse2/muse/midi.cpp index 87e9ff32..7087b342 100644 --- a/muse2/muse/midi.cpp +++ b/muse2/muse/midi.cpp @@ -945,12 +945,29 @@ void Audio::processMidi() for (iMidiDevice id = midiDevices.begin(); id != midiDevices.end(); ++id) { MidiDevice* md = *id; - MPEventList* playEvents = md->playEvents(); // // erase already played events: // - iMPEvent nextPlayEvent = md->nextPlayEvent(); - playEvents->erase(playEvents->begin(), nextPlayEvent); + ///MPEventList* playEvents = md->playEvents(); + ///iMPEvent nextPlayEvent = md->nextPlayEvent(); + + //if(md->playEvents()->size()) + //{ + //printf("Audio::processMidi before erase md play events size:%d nextPlayEvent isEnd:%d\n", md->playEvents()->size(), md->nextPlayEvent() == md->playEvents()->end()); + // printf("Audio::processMidi md play events size:%d first item:\n", md->playEvents()->size()); + // md->playEvents()->begin()->dump(); + //} + + // p4.0.15 Tim. Moved into MidiJackDevice::processMidi (for Jack), and MidiSeq::processTimerTick (for ALSA). + // Why do this here? Instead, let each device erase their just-played events. + ///playEvents->erase(playEvents->begin(), nextPlayEvent); + + //if(playEvents->size()) + //{ + // printf("Audio::processMidi after erase md play events size:%d nextPlayEvent isEnd:%d events:\n", playEvents->size(), nextPlayEvent == playEvents->end()); + //for(iMPEvent ie = playEvents->begin(); ie != playEvents->end(); ++ie) + // ie->dump(); + //} // klumsy hack for synti devices: if(md->isSynti()) @@ -974,9 +991,11 @@ void Audio::processMidi() md->beforeProcess(); } - MPEventList* playEvents = metronome->playEvents(); - iMPEvent nextPlayEvent = metronome->nextPlayEvent(); - playEvents->erase(playEvents->begin(), nextPlayEvent); + // p4.0.15 Tim. Moved into SynthI::getData. + // Why do this here? Instead, let each device erase their just-played events. + ///MPEventList* playEvents = metronome->playEvents(); + ///iMPEvent nextPlayEvent = metronome->nextPlayEvent(); + ///playEvents->erase(playEvents->begin(), nextPlayEvent); // p3.3.25 bool extsync = extSyncFlag.value(); @@ -1075,7 +1094,7 @@ void Audio::processMidi() if(!dev->sysexFIFOProcessed()) { // Set to the sysex fifo at first. - MidiFifo& rf = dev->recordEvents(MIDI_CHANNELS); + MidiRecFifo& rf = dev->recordEvents(MIDI_CHANNELS); // Get the frozen snapshot of the size. int count = dev->tmpRecordCount(MIDI_CHANNELS); @@ -1140,7 +1159,7 @@ void Audio::processMidi() } */ - MidiFifo& rf = dev->recordEvents(channel); + MidiRecFifo& rf = dev->recordEvents(channel); int count = dev->tmpRecordCount(channel); //for (iMREvent ie = el->begin(); ie != el->end(); ++ie) @@ -1343,11 +1362,14 @@ void Audio::processMidi() } } // Added by Tim. p3.3.8 - if(md) - { - - md->setNextPlayEvent(playEvents->begin()); - } + // Removed p4.0.15 + ///if(md) + /// md->setNextPlayEvent(playEvents->begin()); + //if(md) + //{ + // if(md->nextPlayEvent() != playEvents->begin()) + // printf("Audio::processMidi md->nextPlayEvent() != playEvents->begin()\n"); + //} } // @@ -1390,7 +1412,10 @@ void Audio::processMidi() playEvents->add(ev); } stuckNotes->erase(stuckNotes->begin(), k); - md->setNextPlayEvent(playEvents->begin()); + // Removed p4.0.15 Tim. + ///md->setNextPlayEvent(playEvents->begin()); + //if(md->nextPlayEvent() != playEvents->begin()) + // printf("Audio::processMidi clear notes: md->nextPlayEvent() != playEvents->begin()\n"); } //--------------------------------------------------- @@ -1473,10 +1498,24 @@ void Audio::processMidi() state = START_PLAY; } } - if (md) - md->setNextPlayEvent(playEvents->begin()); - if (audioClickFlag) - metronome->setNextPlayEvent(metronome->playEvents()->begin()); + // Removed p4.0.15 Tim. + ///if (md) + /// md->setNextPlayEvent(playEvents->begin()); + //if(md) + //{ + // if(md->nextPlayEvent() != playEvents->begin()) + // printf("Audio::processMidi metronome: md->nextPlayEvent() != playEvents->begin()\n"); + //} + + // Removed p4.0.15 Tim. + ///if (audioClickFlag) + /// metronome->setNextPlayEvent(metronome->playEvents()->begin()); + //if(audioClickFlag) + //{ + // if(metronome->nextPlayEvent() != metronome->playEvents()->begin()) + // printf("Audio::processMidi metronome: metronome->nextPlayEvent() != metronome->playEvents->begin()\n"); + //} + } if (state == STOP) { |