From: Mathias L. <lun...@us...> - 2005-09-21 21:33:30
|
Update of /cvsroot/lmuse/muse/muse In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28232/muse Modified Files: midi.cpp Log Message: added continuous update of _nextPlayEvent in order to not delete events that should be played in future process-calls Index: midi.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/midi.cpp,v retrieving revision 1.94 retrieving revision 1.95 diff -C2 -d -r1.94 -r1.95 *** midi.cpp 6 Aug 2005 15:06:22 -0000 1.94 --- midi.cpp 21 Sep 2005 21:33:22 -0000 1.95 *************** *** 785,838 **** addMidiMeter(portVelo); _nextPlayEvent = _playEvents.begin(); // // route events to destination // ! int endFrame = pos.frame() + frames + audio->getFrameOffset(); ! for (iRoute r = _outRoutes.begin(); r != _outRoutes.end(); ++r) { ! switch (r->type) { ! // ! // Send events to software synthesizer ! // ! case Route::SYNTIPORT: { ! SynthI* s = (SynthI*)(r->track); ! MPEventList* el = s->playEvents(); ! iMPEvent is = _playEvents.begin(); ! iMPEvent ie = _playEvents.end(); ! for (; is != ie; ++is) { ! if ((from != to) && (is->time() >= endFrame)) ! break; ! el->insert(*is); } ! } ! break; ! // ! // Send events to midi port ! // ! case Route::MIDIPORT: { ! //playEventList(); ! for (iMPEvent ev = _playEvents.begin(); ev != _playEvents.end(); ev++) { ! if ((from != to) && (ev->time() >= endFrame)) ! break; ! midiDriver->putEvent(alsaPort, *ev); } ! } ! break; ! // Invalid routetypes to send midi events to - should not happen ! case Route::AUDIOPORT: ! case Route::TRACK: ! default: ! printf("Error - invalid routetype\n"); ! break; } } - _nextPlayEvent = _playEvents.end(); } --- 785,850 ---- addMidiMeter(portVelo); _nextPlayEvent = _playEvents.begin(); + // // route events to destination // ! if (_playEvents.size() > 0) { ! //printf("_playEvents.size() == %d\n", _playEvents.size()); ! int endFrame = pos.frame() + frames + audio->getFrameOffset(); ! for (iRoute r = _outRoutes.begin(); r != _outRoutes.end(); ++r) { ! switch (r->type) { ! // ! // Send events to software synthesizer ! // ! case Route::SYNTIPORT: { ! SynthI* s = (SynthI*)(r->track); ! MPEventList* el = s->playEvents(); ! iMPEvent is = _playEvents.begin(); ! iMPEvent ie = _playEvents.end(); ! for (; is != ie; ++is) { ! if ((from != to) && (is->time() >= endFrame)) { ! break; ! } ! ! el->insert(*is); ! _nextPlayEvent = is; ! _nextPlayEvent++; ! } } ! break; ! // ! // Send events to midi port ! // ! case Route::MIDIPORT: { ! //playEventList(); ! for (iMPEvent ev = _playEvents.begin(); ev != _playEvents.end(); ev++) { ! if ((from != to) && (ev->time() >= endFrame)) { ! break; ! } ! midiDriver->putEvent(alsaPort, *ev); ! _nextPlayEvent = ev; ! _nextPlayEvent++; ! } } ! break; ! // Invalid routetypes to send midi events to - should not happen ! case Route::AUDIOPORT: ! case Route::TRACK: ! default: ! printf("Error - invalid routetype\n"); ! break; ! } } + + //_nextPlayEvent = _playEvents.end(); } } |