1 #ifndef INNOCENT_MUSIC_H
2 #define INNOCENT_MUSIC_H
6 #include "common/queue.h"
7 #include "common/singleton.h"
8 #include "sound/midiparser.h"
10 #include "innocent/value.h"
23 MusicCommand(const byte
*code
);
24 MusicCommand::Status
parseNextEvent(EventInfo
&info
);
28 byte _command
, _parameter
;
34 Note(const byte
*data
);
35 MusicCommand::Status
parseNextEvent(EventInfo
&info
);
47 Channel(const byte
*def
, const byte
*tune
, byte chanidx
);
48 MusicCommand::Status
parseNextEvent(EventInfo
&info
);
53 MusicCommand _init
[4];
54 bool _active
, _not_initialized
;
55 byte _initnote
, _chanidx
;
61 Beat(const byte
*def
, const byte
*channels
, const byte
*tune
);
62 MusicCommand::Status
parseNextEvent(EventInfo
&info
);
72 MusicCommand::Status
parseNextEvent(EventInfo
&info
);
75 std::vector
<Beat
> _beats
;
84 MusicScript(const byte
*data
);
85 void parseNextEvent(EventInfo
&info
);
93 class MusicParser
: public MidiParser
, public Common::Singleton
<MusicParser
> {
98 bool loadMusic(byte
*data
, uint32 size
= 0);
102 void parseNextEvent(EventInfo
&info
);
108 #define Music MusicParser::instance()