diff options
author | Tim E. Real <termtech@rogers.com> | 2011-09-09 10:04:11 +0000 |
---|---|---|
committer | Tim E. Real <termtech@rogers.com> | 2011-09-09 10:04:11 +0000 |
commit | 2120ea4f083228dde0d7307203391a4ec8f57e2d (patch) | |
tree | 3f8b5c3aeb6691c962d42fb4e3a01bcf511f023f /muse2/muse/mididev.h | |
parent | ad72332d2cbd0d22e5d49d9fd60c985e563b17d0 (diff) |
Mostly engine fixes/corrections. Please see ChangeLog.
Diffstat (limited to 'muse2/muse/mididev.h')
-rw-r--r-- | muse2/muse/mididev.h | 22 |
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; } |