#ifndef _MUSFILE_HPP_ #define _MUSFILE_HPP_ #include #include #include #include #include #include #include #include #include #include class MUSFile : public MUSHeader { public: MUSFile(String musPathFileName); ~MUSFile(); WORD readMUSFile(void); WORD isOkay(void)const; protected: virtual WORD handleScoreStart(void); virtual WORD handleReleaseNote(PureEvent &pureEvent,PureDelay &pureDelay,PureNote &releaseNote,BYTE trackNumber); virtual WORD handlePlayNote(PureEvent &pureEvent,PureDelay &pureDelay,PureNote &playNote,BYTE trackNumber); virtual WORD handlePitchBend(PureEvent &pureEvent,PureDelay &pureDelay,BYTE pitchBenderValue,BYTE trackNumber); virtual WORD handleReset(PureEvent &pureEvent,PureDelay &pureDelay,BYTE tempoValue,BYTE trackNumber); virtual WORD handleController(PureEvent &pureEvent,PureDelay &pureDelay,PureController &pureController,BYTE trackNumber); virtual WORD handleScoreEnd(PureDelay &pureDelay); private: enum{MaxTracks=15,MaxChannel=16}; WORD FAR *mlpMUSInstruments; HGLOBAL mhGlobalMUSInstruments; WORD mIsOkay; PureVector mChannelNotes; PureController mPureController; BYTE mPitchBenderValue; BYTE mTempoValue; FileIO mMusFile; }; inline WORD MUSFile::isOkay(void)const { return mIsOkay; } #endif