CMidiEvent.hpp

Go to the documentation of this file.
00001 #ifndef __CMidiEvent__
00002 #define __CMidiEvent__
00003 
00004 //  ===========================================================================
00005 
00006 #ifdef WIN32
00007     #pragma warning(disable : 4522) //'Exponent::Midi::CMidiEvent' : multiple assignment operators specified
00008 #endif
00009 
00010 //  ===========================================================================
00011 
00012 #include "CMidi.hpp"
00013 #include <Basics/CCountedObject.hpp>
00014 
00015 //  ===========================================================================
00016 
00017 using Exponent::Midi::CMidi;
00018 using Exponent::Basics::CCountedObject;
00019 
00020 //  ===========================================================================
00021 
00022 namespace Exponent
00023 {
00024     namespace Midi
00025     {
00043         class CMidiEvent : public CCountedObject
00044         {
00046             EXPONENT_CLASS_DECLARATION;
00049 //  ===========================================================================
00050 
00051         public:
00052 
00053 //  ===========================================================================
00054 
00064             CMidiEvent(const long status = CMidi::CMIDI_MIDI_NONE, const long value = 0, const long subValue = 0, const long channel = 1, const long delta = 0);
00065 
00070             CMidiEvent(const CMidiEvent &event);
00071 
00075             virtual ~CMidiEvent();
00076 
00077 //  ===========================================================================
00078 
00087             static int compareMidiEvents(const CMidiEvent **event1, const CMidiEvent **event2);
00088 
00094             bool operator < (const CMidiEvent &event);
00095 
00101             bool operator > (const CMidiEvent &event);
00102 
00108             bool operator <= (const CMidiEvent &event);
00109 
00115             bool operator >= (const CMidiEvent &event);
00116 
00122             CMidiEvent &operator = (const CMidiEvent &event);
00123 
00130             virtual bool operator == (const CMidiEvent &event);
00131 
00138             virtual bool operator != (const CMidiEvent &event);
00139 
00140 //  ===========================================================================
00141 
00146             FORCEINLINE const long getStatus() const { return m_status; }
00147 
00152             FORCEINLINE const long getValue() const { return m_value; }
00153 
00158             FORCEINLINE const long getSubValue() const { return m_subValue; }
00159 
00164             FORCEINLINE const long getChannel() const { return m_channel; }
00165 
00170             FORCEINLINE const long getTimeDelta() const { return m_timeDelta; }
00171 
00176             FORCEINLINE double getPitchBend() const { return m_pitchBend; }
00177 
00178 //  ===========================================================================
00179 
00184             FORCEINLINE void setStatus(const long status) { m_status = status; }
00185 
00190             FORCEINLINE void setValue(const long value) { m_value = value; }
00191 
00196             FORCEINLINE void setSubValue(const long value) { m_subValue = value; }
00197 
00202             FORCEINLINE void setChannel(const long channel) { m_channel = channel; }
00203 
00208             FORCEINLINE void setTimeDelta(const long delta) { m_timeDelta = delta; }
00209 
00214             FORCEINLINE void setPitchBend(const double pitchBend) { m_pitchBend = pitchBend; }
00215 
00224             FORCEINLINE void setEvent(const long status, const long value, const long subValue, const long channel, const long delta)
00225             {
00226                 m_status    = status;
00227                 m_value     = value;
00228                 m_subValue  = subValue;
00229                 m_channel   = channel;
00230                 m_timeDelta = delta;
00231             }
00232 
00233 //  ===========================================================================
00234 
00240             FORCEINLINE bool isSynchronousWith(const CMidiEvent &event)
00241             {
00242                 return (event.m_timeDelta == m_timeDelta);
00243             }
00244 
00245 //  ===========================================================================
00246 
00251             bool isNoteOn() const { return (m_status == CMidi::CMIDI_NOTE_ON && m_subValue != 0); }
00252 
00257             bool isNoteOff() const { return ((m_status == CMidi::CMIDI_NOTE_OFF) || (m_status == CMidi::CMIDI_NOTE_ON && m_subValue == 0)); }
00258 
00263             bool isAllNotesOff() const { return (m_status == CMidi::CMIDI_ALL_NOTES_OFF); }
00264 
00269             bool isControlChange() const { return (m_status == CMidi::CMIDI_CONTROL_CHANGE); }
00270 
00275             bool isPitchBend() const { return (m_status == CMidi::CMIDI_PITCH_BEND); }
00276 
00277 //  ===========================================================================
00278 
00284             virtual void getObjectDescription(char *string, const long size) const;
00285 
00286 //  ===========================================================================
00287 
00288         protected:
00289 
00290 //  ===========================================================================
00291 
00292             long m_status;              
00293             long m_value;               
00294             long m_subValue;            
00295             long m_channel;             
00296             long m_timeDelta;           
00297             double m_pitchBend;         
00298         };
00299     }
00300 }
00301 #endif  // End of CEvent.hpp

Infinity API - CMidiEvent.hpp Source File generated on 7 Mar 2007