46 static int const CALL_STACK_DEPTH = 3;
53 PARSE_RESULT_CONTINUE,
65 byte_t
const *address;
71 byte_t
const *baseAddr;
72 byte_t
const *currentAddr;
112 u8 fxSend[AUX_BUS_NUM];
127 virtual ParseResult Parse(
bool doNoteOn) = 0;
131 void SetSeqData(
void const *seqBase, s32 seqOffset);
135 u8 GetPlayerTrackNo()
const {
return mPlayerTrackNo; }
136 bool IsOpened()
const {
return mOpenFlag; }
137 ParserTrackParam &GetParserTrackParam() {
return mParserTrackParam; }
138 s16
volatile *GetVariablePtr(
int varNo);
139 SeqPlayer *GetSeqPlayer() {
return mSeqPlayer; }
140 Channel *GetLastChannel()
const {
return mChannelList; }
142 void SetPlayerTrackNo(
int playerTrackNo);
144 void SetTrackVariable(
int variable, s16 value);
147 void SetSurroundPan(f32);
148 void SetPanRange(f32);
149 void SetMute(SeqMute mute);
150 void SetSilence(
bool,
int);
151 void SetModDepth(f32);
152 void SetModSpeed(f32);
153 void SetBiquadFilter(
int, f32);
154 void SetLpfFreq(f32);
155 void SetSeqPlayer(SeqPlayer *player) { mSeqPlayer = player; }
157 void AddChannel(Channel *channel);
159 void UpdateChannelLength();
160 void UpdateChannelParam();
161 void UpdateChannelRelease(Channel *channel);
163 void ReleaseAllChannel(
int release);
164 void PauseAllChannel(
bool flag);
165 void StopAllChannel();
166 void FreeAllChannel();
168 Channel *NoteOn(
int key,
int velocity, s32 length,
bool tieFlag);
170 int ParseNextTick(
bool doNoteOn);
172 static void ChannelCallbackFunc(Channel *dropChannel,
173 Channel::ChannelCallbackStatus status,
178 static int const MUTE_RELEASE_VALUE = -1;
179 static int const PAUSE_RELEASE_VALUE;
181 static int const TRACK_VARIABLE_NUM = 16;
183 static int const PARSER_PARAM_SIZE;
185 static int const MAX_ENVELOPE_VALUE = 127;
186 static int const INVALID_ENVELOPE = 255;
188 static int const DEFAULT_PORTA_KEY = 60;
189 static int const DEFAULT_BENDRANGE = 2;
190 static int const DEFAULT_PRIORITY = 64;
206 s16
volatile mTrackVariable[TRACK_VARIABLE_NUM];
207 SeqPlayer *mSeqPlayer;
208 Channel *mChannelList;