94 lines
1.7 KiB
C++
94 lines
1.7 KiB
C++
#ifndef _MIDIHEADER_HPP_
|
|
#define _MIDIHEADER_HPP_
|
|
#include <string.h>
|
|
#include <common/windows.hpp>
|
|
#include <common/memfile.hpp>
|
|
|
|
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
|