139 lines
3.3 KiB
C++
139 lines
3.3 KiB
C++
#ifndef _MIDISEQ_TIMEINFO_HPP_
|
|
#define _MIDISEQ_TIMEINFO_HPP_
|
|
#ifndef _COMMON_WINDOWS_HPP_
|
|
#include <common/windows.hpp>
|
|
#endif
|
|
|
|
class TimeInfo
|
|
{
|
|
public:
|
|
enum {LengthTimeInfo=4};
|
|
TimeInfo(void);
|
|
TimeInfo(const TimeInfo &someTimeInfo);
|
|
TimeInfo(BYTE numerator,BYTE denominator,BYTE midiClocksPerMetronome,BYTE thirtySecondNotesPerQtrNote);
|
|
virtual ~TimeInfo();
|
|
TimeInfo &operator=(const TimeInfo &someTimeInfo);
|
|
WORD operator==(const TimeInfo &someTimeInfo)const;
|
|
BYTE numerator(void)const;
|
|
void numerator(BYTE numerator);
|
|
BYTE denominator(void)const;
|
|
void denominator(BYTE denominator);
|
|
BYTE midiClocksPerMetronome(void)const;
|
|
void midiClocksPerMetronome(BYTE midiClocksPerMetronome);
|
|
BYTE thirtySecondNotesPerQtrNote(void)const;
|
|
void thirtySecondNotesPerQtrNote(BYTE thirtySecondNotesPerQtrNote);
|
|
String toString(void)const;
|
|
private:
|
|
enum{MidiClocksPerQtrNote=24};
|
|
BYTE mNumerator;
|
|
BYTE mDenominator;
|
|
BYTE mMidiClocksPerMetronome;
|
|
BYTE mThirtySecondNotesPerQtrNote;
|
|
};
|
|
|
|
inline
|
|
TimeInfo::TimeInfo(void)
|
|
: mNumerator(0), mDenominator(0), mMidiClocksPerMetronome(0),
|
|
mThirtySecondNotesPerQtrNote(0)
|
|
{
|
|
}
|
|
|
|
inline
|
|
TimeInfo::TimeInfo(BYTE numerator,BYTE denominator,BYTE midiClocksPerMetronome,BYTE thirtySecondNotesPerQtrNote)
|
|
: mNumerator(numerator), mDenominator(denominator),
|
|
mMidiClocksPerMetronome(midiClocksPerMetronome),
|
|
mThirtySecondNotesPerQtrNote(thirtySecondNotesPerQtrNote)
|
|
{
|
|
}
|
|
|
|
inline
|
|
TimeInfo::TimeInfo(const TimeInfo &someTimeInfo)
|
|
{
|
|
*this=someTimeInfo;
|
|
}
|
|
|
|
inline
|
|
TimeInfo::~TimeInfo()
|
|
{
|
|
}
|
|
|
|
inline
|
|
TimeInfo &TimeInfo::operator=(const TimeInfo &someTimeInfo)
|
|
{
|
|
numerator(someTimeInfo.numerator());
|
|
denominator(someTimeInfo.denominator());
|
|
midiClocksPerMetronome(someTimeInfo.midiClocksPerMetronome());
|
|
thirtySecondNotesPerQtrNote(someTimeInfo.thirtySecondNotesPerQtrNote());
|
|
return *this;
|
|
}
|
|
|
|
inline
|
|
WORD TimeInfo::operator==(const TimeInfo &someTimeInfo)const
|
|
{
|
|
return (numerator()==someTimeInfo.numerator()&&
|
|
denominator()==someTimeInfo.denominator()&&
|
|
midiClocksPerMetronome()==someTimeInfo.midiClocksPerMetronome()&&
|
|
thirtySecondNotesPerQtrNote()==someTimeInfo.thirtySecondNotesPerQtrNote());
|
|
}
|
|
|
|
inline
|
|
BYTE TimeInfo::numerator(void)const
|
|
{
|
|
return mNumerator;
|
|
}
|
|
|
|
inline
|
|
void TimeInfo::numerator(BYTE numerator)
|
|
{
|
|
mNumerator=numerator;
|
|
}
|
|
|
|
inline
|
|
BYTE TimeInfo::denominator(void)const
|
|
{
|
|
return mDenominator;
|
|
}
|
|
|
|
inline
|
|
void TimeInfo::denominator(BYTE denominator)
|
|
{
|
|
mDenominator=denominator;
|
|
}
|
|
|
|
inline
|
|
BYTE TimeInfo::midiClocksPerMetronome(void)const
|
|
{
|
|
return mMidiClocksPerMetronome;
|
|
}
|
|
|
|
inline
|
|
void TimeInfo::midiClocksPerMetronome(BYTE midiClocksPerMetronome)
|
|
{
|
|
mMidiClocksPerMetronome=midiClocksPerMetronome;
|
|
}
|
|
|
|
inline
|
|
BYTE TimeInfo::thirtySecondNotesPerQtrNote(void)const
|
|
{
|
|
return mThirtySecondNotesPerQtrNote;
|
|
}
|
|
|
|
inline
|
|
void TimeInfo::thirtySecondNotesPerQtrNote(BYTE thirtySecondNotesPerQtrNote)
|
|
{
|
|
mThirtySecondNotesPerQtrNote=thirtySecondNotesPerQtrNote;
|
|
}
|
|
|
|
inline
|
|
String TimeInfo::toString(void)const
|
|
{
|
|
String string;
|
|
String sep(", ");
|
|
|
|
string+=String().fromInt(mNumerator)+String("/")+String().fromInt(mDenominator)+String(" time")+sep;
|
|
string+=String("MIDIClocksPerMetronome=")+String().fromInt(mMidiClocksPerMetronome)+sep;
|
|
string+=String("32nd notes per 1/4 note=")+String().fromInt(mThirtySecondNotesPerQtrNote);
|
|
return string;
|
|
}
|
|
#endif
|