summaryrefslogtreecommitdiff
path: root/muse2/muse/mididev.cpp
diff options
context:
space:
mode:
authorTim E. Real <termtech@rogers.com>2011-09-09 10:04:11 +0000
committerTim E. Real <termtech@rogers.com>2011-09-09 10:04:11 +0000
commit2120ea4f083228dde0d7307203391a4ec8f57e2d (patch)
tree3f8b5c3aeb6691c962d42fb4e3a01bcf511f023f /muse2/muse/mididev.cpp
parentad72332d2cbd0d22e5d49d9fd60c985e563b17d0 (diff)
Mostly engine fixes/corrections. Please see ChangeLog.
Diffstat (limited to 'muse2/muse/mididev.cpp')
-rw-r--r--muse2/muse/mididev.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/muse2/muse/mididev.cpp b/muse2/muse/mididev.cpp
index a97ac1fb..a06303e1 100644
--- a/muse2/muse/mididev.cpp
+++ b/muse2/muse/mididev.cpp
@@ -4,6 +4,7 @@
// $Id: mididev.cpp,v 1.10.2.6 2009/11/05 03:14:35 terminator356 Exp $
//
// (C) Copyright 1999-2004 Werner Schweer (ws@seh.de)
+// (C) Copyright 2011 Tim E. Real (terminator356 on users dot sourceforge dot net)
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
@@ -596,6 +597,34 @@ bool MidiDevice::putEvent(const MidiPlayEvent& ev)
}
//---------------------------------------------------------
+// processStuckNotes
+//---------------------------------------------------------
+
+void MidiDevice::processStuckNotes()
+{
+ // Must be playing for valid nextTickPos, right? But wasn't checked in Audio::processMidi().
+ // audio->isPlaying() might not be true during seek right now.
+ //if(audio->isPlaying())
+ {
+ bool extsync = extSyncFlag.value();
+ int frameOffset = audio->getFrameOffset();
+ unsigned nextTick = audio->nextTick();
+ iMPEvent k;
+ for (k = _stuckNotes.begin(); k != _stuckNotes.end(); ++k) {
+ if (k->time() >= nextTick)
+ break;
+ MidiPlayEvent ev(*k);
+ if(extsync) // p3.3.25
+ ev.setTime(k->time());
+ else
+ ev.setTime(tempomap.tick2frame(k->time()) + frameOffset);
+ _playEvents.add(ev);
+ }
+ _stuckNotes.erase(_stuckNotes.begin(), k);
+ }
+}
+
+//---------------------------------------------------------
// handleStop
//---------------------------------------------------------