summaryrefslogtreecommitdiff
path: root/attic/muse_qt4_evolution/muse/miditrack.h
diff options
context:
space:
mode:
Diffstat (limited to 'attic/muse_qt4_evolution/muse/miditrack.h')
-rw-r--r--attic/muse_qt4_evolution/muse/miditrack.h127
1 files changed, 127 insertions, 0 deletions
diff --git a/attic/muse_qt4_evolution/muse/miditrack.h b/attic/muse_qt4_evolution/muse/miditrack.h
new file mode 100644
index 00000000..994c3c92
--- /dev/null
+++ b/attic/muse_qt4_evolution/muse/miditrack.h
@@ -0,0 +1,127 @@
+//=============================================================================
+// MusE
+// Linux Music Editor
+// $Id:$
+//
+// Copyright (C) 2002-2006 by Werner Schweer and others
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License version 2.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+//=============================================================================
+
+#ifndef __MIDITRACK_H__
+#define __MIDITRACK_H__
+
+#include "miditrackbase.h"
+#include "midififo.h"
+#include "event.h"
+
+class Part;
+class EventList;
+class MidiOut;
+class SeqTime;
+
+//---------------------------------------------------------
+// MidiTrack
+//---------------------------------------------------------
+
+class MidiTrack : public MidiTrackBase {
+ Q_OBJECT
+
+ EventList _events; // tmp Events during midi import
+
+ // recording:
+ MidiFifo recordFifo; // for event transfer from RT-thread to gui thread
+ std::list<Event> keyDown; // keep track of "note on" events
+ Part* recordPart; // part we are recording into
+ int recordedEvents;
+ bool partCreated;
+ int hbank, lbank;
+ int datah, datal;
+ int rpnh, rpnl;
+ int dataType;
+
+ // channel data:
+ DrumMap* _drumMap;
+ bool _useDrumMap;
+
+ // play parameter
+ int _transposition;
+ int _velocity;
+ int _delay;
+ int _len;
+ int _compression;
+
+ MidiEventList schedEvents; // scheduled events by process()
+
+ signals:
+ void drumMapChanged() const;
+ void useDrumMapChanged(bool);
+ void channelChanged(int);
+
+ public slots:
+ void setChannel(int);
+
+ public:
+ MidiTrack();
+ virtual ~MidiTrack();
+ virtual TrackType type() const { return MIDI; }
+ void clone(MidiTrack*);
+
+ int transposition() const { return _transposition; }
+ int velocity() const { return _velocity; }
+ int delay() const { return _delay; }
+ int len() const { return _len; }
+ int compression() const { return _compression; }
+ void setTransposition(int val) { _transposition = val; }
+ void setVelocity(int val) { _velocity = val; }
+ void setDelay(int val) { _delay = val; }
+ void setLen(int val) { _len = val; }
+ void setCompression(int val) { _compression = val; }
+
+ void startRecording();
+ void recordBeat();
+ void stopRecording();
+
+ EventList* events() { return &_events; }
+
+ virtual void read(QDomNode);
+ virtual void write(Xml&) const;
+
+ virtual Part* newPart(Part*p=0, bool clone=false);
+
+ virtual bool isMute() const;
+ virtual bool canRecord() const { return true; }
+ void playMidiEvent(MidiEvent*);
+
+ virtual void processMidi(SeqTime*);
+ virtual void getEvents(unsigned from, unsigned to, int channel, MidiEventList* dst);
+
+ bool useDrumMap() const { return _useDrumMap; }
+ DrumMap* drumMap() const { return _drumMap; }
+ void setUseDrumMap(bool val);
+
+ int channelNo() const;
+ virtual void emitControllerChanged(int id);
+
+ virtual MidiOut* midiOut();
+ virtual MidiInstrument* instrument();
+ };
+
+typedef QList<MidiTrack*> MidiTrackList;
+typedef MidiTrackList::iterator iMidiTrack;
+typedef MidiTrackList::const_iterator ciMidiTrack;
+
+Q_DECLARE_METATYPE(class MidiTrack*);
+
+#endif
+