#ifndef _MIDIHEADER_HPP_ #define _MIDIHEADER_HPP_ #include #include #include class MidiHeader { public: MidiHeader(void); MidiHeader(const MidiHeader &someMidiHeader); ~MidiHeader(); MidiHeader &operator=(const MidiHeader &someMidiHeader); WORD readHeader(MemFile &midiFile); WORD writeHeader(MemFile &midiFile); DWORD lengthData(void)const; void smfType(USHORT smfType); USHORT smfType(void)const; USHORT tracks(void)const; void tracks(USHORT tracks); void deltaTempo(USHORT deltaTempo); USHORT deltaTempo(void)const; private: enum {MaxHeaderIDLength=4,SingleTrack=0,MultiTrack=1,Sequential=2,DefaultTempo=136}; char mHeader[MaxHeaderIDLength]; DWORD mLengthData; USHORT mSMFType; USHORT mTracks; USHORT mDeltaTempo; String mHeaderString; }; inline MidiHeader::MidiHeader(void) : mLengthData(0L), mSMFType(MultiTrack), mTracks(0), mDeltaTempo(DefaultTempo), mHeaderString("MThd") { mLengthData=sizeof(*this)-(sizeof(mLengthData)+sizeof(mHeader)+sizeof(mHeaderString)); } inline MidiHeader::~MidiHeader() { } inline DWORD MidiHeader::lengthData(void)const { return mLengthData; } inline USHORT MidiHeader::smfType(void)const { return mSMFType; } inline void MidiHeader::smfType(USHORT smfType) { mSMFType=smfType; } inline USHORT MidiHeader::tracks(void)const { return mTracks; } inline void MidiHeader::tracks(USHORT tracks) { mTracks=tracks; } inline USHORT MidiHeader::deltaTempo(void)const { return mDeltaTempo; } inline void MidiHeader::deltaTempo(USHORT deltaTempo) { mDeltaTempo=deltaTempo; } inline MidiHeader::MidiHeader(const MidiHeader &someMidiHeader) { *this=someMidiHeader; } #endif