summaryrefslogtreecommitdiff
path: root/muse2/muse/mididev.h
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.h
parentad72332d2cbd0d22e5d49d9fd60c985e563b17d0 (diff)
Mostly engine fixes/corrections. Please see ChangeLog.
Diffstat (limited to 'muse2/muse/mididev.h')
-rw-r--r--muse2/muse/mididev.h22
1 files changed, 15 insertions, 7 deletions
diff --git a/muse2/muse/mididev.h b/muse2/muse/mididev.h
index 00e4ab65..cdb69ea2 100644
--- a/muse2/muse/mididev.h
+++ b/muse2/muse/mididev.h
@@ -4,6 +4,7 @@
// $Id: mididev.h,v 1.3.2.4 2009/04/04 01:49:50 terminator356 Exp $
//
// (C) Copyright 2000 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
@@ -41,8 +42,8 @@ class Xml;
//---------------------------------------------------------
class MidiDevice {
- MPEventList _stuckNotes;
- MPEventList _playEvents;
+ //MPEventList _stuckNotes;
+ //MPEventList _playEvents;
// Removed p4.0.15 Tim.
//iMPEvent _nextPlayEvent;
@@ -71,6 +72,9 @@ class MidiDevice {
//bool _sysexWritingChunks;
bool _sysexReadingChunks;
+ MPEventList _stuckNotes;
+ MPEventList _playEvents;
+
// Fifo for midi events sent from gui direct to midi port:
MidiFifo eventFifo; // p4.0.15
@@ -84,6 +88,7 @@ class MidiDevice {
void init();
virtual bool putMidiEvent(const MidiPlayEvent&) = 0;
+ virtual void processStuckNotes();
public:
enum { ALSA_MIDI=0, JACK_MIDI=1, SYNTH_MIDI=2 };
@@ -130,21 +135,24 @@ class MidiDevice {
virtual void recordEvent(MidiRecordEvent&);
+ // Schedule an event for playback. Returns false if event cannot be delivered.
+ virtual bool addScheduledEvent(const MidiPlayEvent& ev) { _playEvents.add(ev); return true; }
+ // Add a stuck note. Returns false if event cannot be delivered.
+ virtual bool addStuckNote(const MidiPlayEvent& ev) { _stuckNotes.add(ev); return true; }
+ // Put an event for immediate playback.
virtual bool putEvent(const MidiPlayEvent&);
// This method will try to putEvent 'tries' times, waiting 'delayUs' microseconds between tries.
// Since it waits, it should not be used in RT or other time-sensitive threads. p4.0.15
bool putEventWithRetry(const MidiPlayEvent&, int /*tries*/ = 2, long /*delayUs*/ = 50000); // 2 tries, 50 mS by default.
- // p4.0.22
- virtual void handleStop();
+ virtual void handleStop(); // p4.0.22
virtual void handleSeek();
- // For Jack-based devices - called in Jack audio process callback
virtual void collectMidiEvents() {}
virtual void processMidi() {}
- MPEventList* stuckNotes() { return &_stuckNotes; }
- MPEventList* playEvents() { return &_playEvents; }
+ //MPEventList* stuckNotes() { return &_stuckNotes; }
+ //MPEventList* playEvents() { return &_playEvents; }
///MREventList* recordEvents();
///void flipRecBuffer() { _recBufFlipped = _recBufFlipped ? false : true; }