Canorus  0.0
playback.h
Go to the documentation of this file.
1 
8 #ifndef PLAYBACK_H_
9 #define PLAYBACK_H_
10 
11 #include <QThread>
12 #include <QList>
13 
14 class CAMidiDevice;
15 class CASheet;
16 class CAMusElement;
17 class CAPlayable;
18 class CANote;
19 class CATempo;
20 
21 class CAPlayback : public QThread {
22 #ifndef SWIG
23 Q_OBJECT
24 #endif
25 public:
28  ~CAPlayback();
29 
30  void run();
31  void stop();
32 
33  void playImmediately( QList<CAMusElement*> elts, int port );
34 
35  inline const int getInitTimeStart() { return _initTimeStart; }
36  inline void setInitTimeStart(int t) { _initTimeStart = t; }
37  inline CAMidiDevice *midiDevice() { return _midiDevice; }
38  inline CASheet *sheet() { return _sheet; }
39  inline void setSheet( CASheet *s ) { _sheet = s; }
40  inline QList<CAPlayable*>& curPlaying() { return _curPlaying; }
41 
42 #ifndef SWIG
43 public slots:
44 #else
45 public:
46 #endif
47  void stopNow();
48 
49 #ifndef SWIG
50 signals:
52 #endif
53 
54 private:
55  void initPlayback();
56  void initStreams( CASheet *sheet );
57  void loopUntilPlayable( int i, bool ignoreRepeats=false );
58  void playSelectionImpl();
59  void updateSleepFactor( CATempo *t );
60 
61  inline QList<CAMusElement*>& streamAt(int idx) { return _streamList[idx]; }
62  inline const QList< QList<CAMusElement*> >& streamList() { return _streamList; }
63  inline int& streamIdx( int i ) { return _streamIdx[i]; }
64  inline int& lastRepeatOpenIdx( int i ) { return _lastRepeatOpenIdx[i]; }
65 
66  inline bool stopLock() { return _stopLock; }
67  inline void setStopLock(bool lock) { _stopLock = lock; }
68 
70 
72  inline void setMidiDevice( CAMidiDevice *d ) { _midiDevice = d; }
73 
74  inline void setStop(bool stop) { _stop = stop; }
75  bool _stop;
76  bool _stopLock;
77 
79  QList<CAMusElement*> _selection;
80 
82  float _sleepFactor;
83 
84  QList< QList<CAMusElement*> > _streamList;
85  QList<CAPlayable*> _curPlaying; // list of currently playing notes and rests
86  int *_streamIdx;
87  bool _repeating;
89  int _curTime;
90 };
91 
92 #endif /* PLAYBACK_H_ */
CABarline::RepeatClose
@ RepeatClose
Definition: barline.h:25
CAPlayback::playbackFinished
void playbackFinished()
CAPlayback::_sheet
CASheet * _sheet
Definition: playback.h:69
CAPlayback::_midiDevice
CAMidiDevice * _midiDevice
Definition: playback.h:71
CAStaff::voiceList
const QList< CAVoice * > & voiceList()
Definition: staff.h:35
CAPlayback::_playSelectionOnly
bool _playSelectionOnly
Definition: playback.h:78
CAContext::Staff
@ Staff
Definition: context.h:23
CAPlayback::streamIdx
int & streamIdx(int i)
Definition: playback.h:63
CAMidiDevice::openOutputPort
virtual bool openOutputPort(int port)=0
CAPlayback::playImmediately
void playImmediately(QList< CAMusElement * > elts, int port)
Definition: playback.cpp:110
CAPlayback::stopLock
bool stopLock()
Definition: playback.h:66
CAPlayback
Audio playback of the score. This class creates playback events (usually MIDI events) for the music e...
Definition: playback.h:21
note.h
CAPlayback::setStop
void setStop(bool stop)
Definition: playback.h:74
CAPlayback::stop
void stop()
Definition: playback.cpp:352
CANote
Represents a note in the score.
Definition: note.h:18
CAMidiDevice::Meta_Timesig
@ Meta_Timesig
Definition: mididevice.h:46
CAPlayback::initPlayback
void initPlayback()
Definition: playback.cpp:73
CAPlayback::streamAt
QList< CAMusElement * > & streamAt(int idx)
Definition: playback.h:61
CASlur::noteEnd
CANote * noteEnd()
Definition: slur.h:51
CAMusElement::Barline
@ Barline
Definition: muselement.h:28
CAPlayback::setSheet
void setSheet(CASheet *s)
Definition: playback.h:39
CATimeSignature
Represents a time signature in the staff.
Definition: timesignature.h:18
CAMusElement::markList
const QList< CAMark * > markList()
Definition: muselement.h:70
CAPlayable
Playable instances of music elements.
Definition: playable.h:18
CAPlayback::midiDevice
CAMidiDevice * midiDevice()
Definition: playback.h:37
CAMidiDevice::Meta_Tempo
@ Meta_Tempo
Definition: mididevice.h:44
CAPlayback::stopNow
void stopNow()
Definition: playback.cpp:362
CAPlayback::sheet
CASheet * sheet()
Definition: playback.h:38
CAPlayback::_streamIdx
int * _streamIdx
Definition: playback.h:86
CAInstrumentChange::instrument
const int instrument()
Definition: instrumentchange.h:24
CAMark::Tempo
@ Tempo
Definition: mark.h:20
CATempo::bpm
int bpm()
Definition: tempo.h:22
CAPlayback::updateSleepFactor
void updateSleepFactor(CATempo *t)
Definition: playback.cpp:267
CAPlayback::streamList
const QList< QList< CAMusElement * > > & streamList()
Definition: playback.h:62
CAMidiDevice::sendMetaEvent
virtual void sendMetaEvent(int time, int event, int a, int b, int c)=0
CAPlayback::lastRepeatOpenIdx
int & lastRepeatOpenIdx(int i)
Definition: playback.h:64
CADiatonicKey
Musical key.
Definition: diatonickey.h:15
CAPlayback::setStopLock
void setStopLock(bool lock)
Definition: playback.h:67
CABarline::RepeatOpen
@ RepeatOpen
Definition: barline.h:24
CAMusElement::TimeSignature
@ TimeSignature
Definition: muselement.h:30
playback.h
instrumentchange.h
CAVoice::midiProgram
unsigned char midiProgram()
Definition: voice.h:107
keysignature.h
CAMusElement::timeLength
virtual int timeLength() const
Definition: muselement.h:53
dynamic.h
CAMidiDevice::Meta_Keysig
@ Meta_Keysig
Definition: mididevice.h:47
CAPlayback::_stopLock
bool _stopLock
Definition: playback.h:76
CANote::tieEnd
CASlur * tieEnd()
Definition: note.h:48
CADiatonicPitch::diatonicPitchToMidiPitch
static int diatonicPitchToMidiPitch(const CADiatonicPitch &dp)
Definition: diatonicpitch.cpp:306
CAPlayback::_selection
QList< CAMusElement * > _selection
Definition: playback.h:79
CADiatonicKey::numberOfAccs
int numberOfAccs()
Definition: diatonickey.cpp:79
CAPlayback::setInitTimeStart
void setInitTimeStart(int t)
Definition: playback.h:36
CANote::tieStart
CASlur * tieStart()
Definition: note.h:47
CATempo
Tempo mark.
Definition: tempo.h:14
CAVoice::midiChannel
unsigned char midiChannel()
Definition: voice.h:104
CAMusElement::KeySignature
@ KeySignature
Definition: muselement.h:31
CADiatonicKey::Minor
@ Minor
Definition: diatonickey.h:19
CAPlayback::setMidiDevice
void setMidiDevice(CAMidiDevice *d)
Definition: playback.h:72
CAMidiDevice
Canorus<->Midi bridge.
Definition: mididevice.h:22
CANote::isFirstInChord
bool isFirstInChord()
Definition: note.cpp:166
CAPlayback::~CAPlayback
~CAPlayback()
Definition: playback.cpp:94
CAStaff
Represents a staff in the sheet.
Definition: staff.h:25
CAMusElement
An abstract class which represents every music element in the score.
Definition: muselement.h:21
CAPlayback::_stop
bool _stop
Definition: playback.h:75
CAPlayback::initStreams
void initStreams(CASheet *sheet)
Definition: playback.cpp:379
CADiatonicKey::gender
const CAGender gender()
Definition: diatonickey.h:43
CAMusElement::Rest
@ Rest
Definition: muselement.h:26
CAPlayback::_curPlaying
QList< CAPlayable * > _curPlaying
Definition: playback.h:85
CAPlayableLength::playableLengthToTimeLength
static const int playableLengthToTimeLength(CAPlayableLength length)
Definition: playablelength.cpp:107
CAPlayback::_curTime
int _curTime
Definition: playback.h:89
CAKeySignature
Represents a key signature sign in the staff.
Definition: keysignature.h:19
CASheet::contextList
const QList< CAContext * > & contextList()
Definition: sheet.h:29
CAPlayback::_sleepFactor
float _sleepFactor
Definition: playback.h:82
CAMark::InstrumentChange
@ InstrumentChange
Definition: mark.h:25
CAPlayback::_streamList
QList< QList< CAMusElement * > > _streamList
Definition: playback.h:84
CAMidiDevice::Midi_Ctl_Volume
@ Midi_Ctl_Volume
Definition: mididevice.h:53
CAMusElement::Note
@ Note
Definition: muselement.h:25
sheet.h
CAPlayback::_lastRepeatOpenIdx
int * _lastRepeatOpenIdx
Definition: playback.h:88
CAPlayback::loopUntilPlayable
void loopUntilPlayable(int i, bool ignoreRepeats=false)
Definition: playback.cpp:423
timesignature.h
context.h
barline.h
CAPlayback::getInitTimeStart
const int getInitTimeStart()
Definition: playback.h:35
CAKeySignature::diatonicKey
CADiatonicKey diatonicKey()
Definition: keysignature.h:50
CANote::diatonicPitch
CADiatonicPitch & diatonicPitch()
Definition: note.h:35
QThread
mididevice.h
CAPlayback::_repeating
bool _repeating
Definition: playback.h:87
CASheet::getTempo
CATempo * getTempo(int time)
Definition: sheet.cpp:133
tempo.h
CABarline
Music element which represents a barline in the score.
Definition: barline.h:17
voice.h
CAInstrumentChange
Instrument change during the score.
Definition: instrumentchange.h:16
CAPlayback::run
void run()
Definition: playback.cpp:120
CASheet
Represents a single sheet of paper in the document.
Definition: sheet.h:22
CAPlayback::CAPlayback
CAPlayback(CASheet *, CAMidiDevice *)
Definition: playback.cpp:50
CAPlayback::curPlaying
QList< CAPlayable * > & curPlaying()
Definition: playback.h:40
staff.h
CAMidiDevice::send
virtual void send(QVector< unsigned char > message, int time)=0
CAMark::Dynamic
@ Dynamic
Definition: mark.h:22
CAPlayback::playSelectionImpl
void playSelectionImpl()
Definition: playback.cpp:282
CAMusElement::musElementType
CAMusElementType musElementType()
Definition: muselement.h:46
mark.h
CAPlayable::voice
CAVoice * voice()
Definition: playable.h:31
CATempo::beat
CAPlayableLength beat()
Definition: tempo.h:24
CAVoice::midiPitchOffset
char midiPitchOffset()
Definition: voice.h:110
CAPlayback::_initTimeStart
int _initTimeStart
Definition: playback.h:81