202 lines
4.2 KiB
C++
202 lines
4.2 KiB
C++
#ifndef _MIDISEQ_PUREEVENT_HPP_
|
|
#define _MIDISEQ_PUREEVENT_HPP_
|
|
#ifndef _COMMON_WINDOWS_HPP_
|
|
#include <common/windows.hpp>
|
|
#endif
|
|
#ifndef _COMMON_STRING_HPP_
|
|
#include <common/string.hpp>
|
|
#endif
|
|
#ifndef _MIDISEQ_MIDICHANNELMESSAGE_HPP_
|
|
#include <midiseq/midimsg.hpp>
|
|
#endif
|
|
|
|
class PureEvent
|
|
{
|
|
public:
|
|
PureEvent(void);
|
|
PureEvent(const PureEvent &somePureEvent);
|
|
PureEvent(BYTE eventType,DWORD deltaTime,BYTE channel,BYTE firstData,BYTE secondData,DWORD tempo=0);
|
|
virtual ~PureEvent();
|
|
BYTE eventType(void)const;
|
|
void eventType(BYTE eventType);
|
|
DWORD deltaTime(void)const;
|
|
void deltaTime(DWORD deltaTime);
|
|
DWORD playTime(void)const;
|
|
void playTime(DWORD playTime);
|
|
BYTE channel(void)const;
|
|
void channel(BYTE channel);
|
|
BYTE firstData(void)const;
|
|
void firstData(BYTE firstData);
|
|
BYTE secondData(void)const;
|
|
void secondData(BYTE secondData);
|
|
DWORD tempo(void)const;
|
|
void tempo(DWORD tempo);
|
|
WORD operator==(const PureEvent &somePureEvent)const;
|
|
WORD operator<(const PureEvent &somePureEvent)const;
|
|
WORD operator>(const PureEvent &somePureEvent)const;
|
|
String toString(void)const;
|
|
PureEvent &operator=(const PureEvent &somePureEvent);
|
|
private:
|
|
BYTE mEventType;
|
|
DWORD mDeltaTime;
|
|
BYTE mChannel;
|
|
BYTE mFirstData;
|
|
BYTE mSecondData;
|
|
DWORD mPlayTime;
|
|
DWORD mTempo;
|
|
};
|
|
|
|
inline
|
|
PureEvent::PureEvent(void)
|
|
: mEventType(0), mDeltaTime(0L), mChannel(0), mFirstData(0), mSecondData(0),
|
|
mPlayTime(0L), mTempo(0)
|
|
{
|
|
}
|
|
|
|
inline
|
|
PureEvent::PureEvent(const PureEvent &somePureEvent)
|
|
: mEventType(somePureEvent.mEventType), mDeltaTime(somePureEvent.mDeltaTime),
|
|
mPlayTime(somePureEvent.mPlayTime), mChannel(somePureEvent.mChannel),
|
|
mFirstData(somePureEvent.mFirstData), mSecondData(somePureEvent.mSecondData),
|
|
mTempo(somePureEvent.mTempo)
|
|
{
|
|
}
|
|
|
|
inline
|
|
PureEvent::PureEvent(BYTE eventType,DWORD deltaTime,BYTE channel,BYTE firstData,BYTE secondData,DWORD tempo)
|
|
: mEventType(eventType), mDeltaTime(deltaTime), mChannel(channel), mFirstData(firstData),
|
|
mSecondData(secondData), mPlayTime(0L), mTempo(0)
|
|
{
|
|
}
|
|
|
|
inline
|
|
PureEvent::~PureEvent()
|
|
{
|
|
}
|
|
|
|
inline
|
|
BYTE PureEvent::eventType(void)const
|
|
{
|
|
return mEventType;
|
|
}
|
|
|
|
inline
|
|
void PureEvent::eventType(BYTE eventType)
|
|
{
|
|
mEventType=eventType;
|
|
}
|
|
|
|
inline
|
|
DWORD PureEvent::deltaTime(void)const
|
|
{
|
|
return mDeltaTime;
|
|
}
|
|
|
|
inline
|
|
void PureEvent::deltaTime(DWORD deltaTime)
|
|
{
|
|
mDeltaTime=deltaTime;
|
|
}
|
|
|
|
inline
|
|
DWORD PureEvent::playTime(void)const
|
|
{
|
|
return mPlayTime;
|
|
}
|
|
|
|
inline
|
|
void PureEvent::playTime(DWORD playTime)
|
|
{
|
|
mPlayTime=playTime;
|
|
}
|
|
|
|
inline
|
|
BYTE PureEvent::channel(void)const
|
|
{
|
|
return mChannel;
|
|
}
|
|
|
|
inline
|
|
void PureEvent::channel(BYTE channel)
|
|
{
|
|
mChannel=channel;
|
|
}
|
|
|
|
inline
|
|
BYTE PureEvent::firstData(void)const
|
|
{
|
|
return mFirstData;
|
|
}
|
|
|
|
inline
|
|
void PureEvent::firstData(BYTE firstData)
|
|
{
|
|
mFirstData=firstData;
|
|
}
|
|
|
|
|
|
inline
|
|
BYTE PureEvent::secondData(void)const
|
|
{
|
|
return mSecondData;
|
|
}
|
|
|
|
inline
|
|
void PureEvent::secondData(BYTE secondData)
|
|
{
|
|
mSecondData=secondData;
|
|
}
|
|
|
|
inline
|
|
DWORD PureEvent::tempo(void)const
|
|
{
|
|
return mTempo;
|
|
}
|
|
|
|
inline
|
|
void PureEvent::tempo(DWORD tempo)
|
|
{
|
|
mTempo=tempo;
|
|
}
|
|
|
|
// comparators
|
|
|
|
inline
|
|
WORD PureEvent::operator==(const PureEvent &somePureEvent)const
|
|
{
|
|
return mPlayTime==somePureEvent.mPlayTime&&eventType()==somePureEvent.eventType();
|
|
}
|
|
|
|
inline
|
|
PureEvent &PureEvent::operator=(const PureEvent &somePureEvent)
|
|
{
|
|
eventType(somePureEvent.eventType());
|
|
deltaTime(somePureEvent.deltaTime());
|
|
playTime(somePureEvent.playTime());
|
|
channel(somePureEvent.channel());
|
|
firstData(somePureEvent.firstData());
|
|
secondData(somePureEvent.secondData());
|
|
tempo(somePureEvent.tempo());
|
|
return *this;
|
|
}
|
|
|
|
inline
|
|
WORD PureEvent::operator<(const PureEvent &somePureEvent)const
|
|
{
|
|
if(mPlayTime==somePureEvent.mPlayTime&&eventType()==somePureEvent.eventType())return false;
|
|
if(mPlayTime==somePureEvent.mPlayTime&&eventType()==MIDINoteOff)return true;
|
|
else if(mPlayTime==somePureEvent.mPlayTime)return false;
|
|
return (mPlayTime<somePureEvent.mPlayTime);
|
|
}
|
|
|
|
inline
|
|
WORD PureEvent::operator>(const PureEvent &somePureEvent)const
|
|
{
|
|
if(mPlayTime==somePureEvent.mPlayTime&&eventType()==somePureEvent.eventType())return false;
|
|
if(mPlayTime==somePureEvent.mPlayTime&&eventType()==MIDINoteOn)return true;
|
|
else if(mPlayTime==somePureEvent.mPlayTime)return false;
|
|
return (mPlayTime>somePureEvent.mPlayTime);
|
|
}
|
|
#endif
|
|
|