00001 #ifndef __CMidiTrack__ 00002 #define __CMidiTrack__ 00003 00004 // =========================================================================== 00005 00006 #include <Collections/TCountedPointerArray.hpp> 00007 #include <Basics/CSystemString.hpp> 00008 #include "CMidiEvent.hpp" 00009 #include "../Music/CTimeSignature.hpp" 00010 using Exponent::Collections::TCountedPointerArray; 00011 using Exponent::Basics::CSystemString; 00012 using Exponent::Midi::CMidiEvent; 00013 using Exponent::Music::CTimeSignature; 00014 00015 // =========================================================================== 00016 00017 namespace Exponent 00018 { 00019 namespace Midi 00020 { 00045 class CMidiTrack : public CCountedObject 00046 { 00048 EXPONENT_CLASS_DECLARATION; 00051 // =========================================================================== 00052 00053 public: 00054 00055 // =========================================================================== 00056 00060 CMidiTrack(); 00061 00065 virtual ~CMidiTrack(); 00066 00067 // =========================================================================== 00068 00073 void addEvent(CMidiEvent *event); 00074 00079 void setMidiChannel(const long midiChannel) { m_midiChannel = midiChannel; } 00080 00085 void setTrackName(const CString &name) { m_trackName = name; } 00086 00091 long getMidiChannel() const { return m_midiChannel; } 00092 00097 const CString &getTrackName() const { return m_trackName; } 00098 00103 long getNumberOfEvents() const { return m_events.getArraySize(); } 00104 00110 const CMidiEvent *getEventAtIndex(const long index) const { return m_events.constElementAtIndex(index); } 00111 00117 CMidiEvent *getMutableEventAtIndex(const long index) { return m_events.elementAtIndex(index); } 00118 00123 void adjustDeltaTimeBy(const double offset); 00124 00125 // =========================================================================== 00126 00127 protected: 00128 00129 // =========================================================================== 00130 00131 TCountedPointerArray<CMidiEvent> m_events; 00132 long m_midiChannel; 00133 CString m_trackName; 00134 }; 00135 } 00136 } 00137 #endif // End of CMidiTrack.hpp