47 lines
1.4 KiB
C++
47 lines
1.4 KiB
C++
#ifndef _MUSFILE_HPP_
|
|
#define _MUSFILE_HPP_
|
|
#include <stdio.h>
|
|
#include <common/string.hpp>
|
|
#include <common/block.hpp>
|
|
#include <common/pvector.hpp>
|
|
#include <common/fileio.hpp>
|
|
#include <midiwrt/mushdr.hpp>
|
|
#include <midiwrt/purecntl.hpp>
|
|
#include <midiwrt/purenote.hpp>
|
|
#include <midiwrt/puredly.hpp>
|
|
#include <midiwrt/pureevnt.hpp>
|
|
|
|
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<PureNote> mChannelNotes;
|
|
PureController mPureController;
|
|
BYTE mPitchBenderValue;
|
|
BYTE mTempoValue;
|
|
FileIO mMusFile;
|
|
};
|
|
|
|
inline
|
|
WORD MUSFile::isOkay(void)const
|
|
{
|
|
return mIsOkay;
|
|
}
|
|
#endif
|