Files
Work/midiseq/timeinfo.hpp
2024-08-07 09:16:27 -04:00

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