Files
Work/midiwrt/MUSFILE.HPP
2024-08-07 09:16:27 -04:00

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