diff options
Diffstat (limited to 'attic/muse2-oom/muse2/muse/midiseq.h')
-rw-r--r-- | attic/muse2-oom/muse2/muse/midiseq.h | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/attic/muse2-oom/muse2/muse/midiseq.h b/attic/muse2-oom/muse2/muse/midiseq.h new file mode 100644 index 00000000..a11820fe --- /dev/null +++ b/attic/muse2-oom/muse2/muse/midiseq.h @@ -0,0 +1,102 @@ +//========================================================= +// MusE +// Linux Music Editor +// $Id: midiseq.h,v 1.6.2.11 2009/12/20 05:00:35 terminator356 Exp $ +// +// (C) Copyright 2003 Werner Schweer (ws@seh.de) +//========================================================= + +#ifndef __MIDISEQ_H__ +#define __MIDISEQ_H__ + +#include "thread.h" +#include "mpevent.h" +#include "driver/alsatimer.h" +#include "driver/rtctimer.h" + +class MPEventList; +class SynthI; +class MTC; +class MidiPort; +class MidiDevice; + +//--------------------------------------------------------- +// MidiSeq +//--------------------------------------------------------- + +class MidiSeq : public Thread { + int realRtcTicks; + int timerFd; + int idle; + int prio; // realtime priority + int midiClock; + static int ticker; + +/* Testing */ + bool playStateExt; // used for keeping play state in sync functions + int recTick; // ext sync tick position +// int lastTickPos; // position of last sync tick + // run values: +// unsigned _midiTick; + double mclock1, mclock2; + double songtick1, songtick2; + int recTick1, recTick2; + int lastTempo; + double timediff[24]; + int storedtimediffs; + + void alignAllTicks(int frameOverride = 0); +/* Testing */ + + Timer *timer; + + signed int selectTimer(); + bool setRtcTicks(); + static void midiTick(void* p, void*); + void processTimerTick(); + void processSeek(); + void processStop(); + void processMidiClock(); + virtual void processMsg(const ThreadMsg*); + void updatePollFd(); + + void mtcSyncMsg(const MTC&, int, bool); + //void mtcInputFull(const unsigned char* p, int n); + //void nonRealtimeSystemSysex(const unsigned char* p, int n); + + public: + //MidiSeq(int prio, const char* name); + MidiSeq(const char* name); + + ~MidiSeq(); + + //bool start(); + virtual void start(int); + + virtual void threadStop(); + virtual void threadStart(void*); + + void realtimeSystemInput(int, int); + void mtcInputQuarter(int, unsigned char); + void setSongPosition(int, int); + // void eventReceived(MidiRecordEvent& event); + //void mmcInput(const unsigned char* p, int n); + void mmcInput(int, const unsigned char*, int); + void mtcInputFull(int, const unsigned char*, int); + void nonRealtimeSystemSysex(int, const unsigned char*, int); + + void msgMsg(int id); + void msgProcess(); + void msgSeek(); + void msgStop(); + void msgSetRtc(); + void msgUpdatePollFd(); + void msgAddSynthI(SynthI* synth); + void msgRemoveSynthI(SynthI* synth); + void msgSetMidiDevice(MidiPort*, MidiDevice*); + }; + +extern MidiSeq* midiSeq; +extern volatile bool midiBusy; +#endif + |