Lines Matching refs:track

124 static u32 __SEQGetIntTrack(SEQTRACK *track)  in __SEQGetIntTrack()  argument
128 ASSERT(track); in __SEQGetIntTrack()
130 value = (u32)(*track->current & 0x7f); in __SEQGetIntTrack()
132 while (*track->current & 0x80) in __SEQGetIntTrack()
134 track->current++; in __SEQGetIntTrack()
135 value = (value << 7) + (*track->current & 0x7f); in __SEQGetIntTrack()
138 track->current++; in __SEQGetIntTrack()
147 static void __SEQHandleSysExEvent(SEQTRACK *track) in __SEQHandleSysExEvent() argument
151 ASSERT(track); in __SEQHandleSysExEvent()
153 length = __SEQGetIntTrack(track); in __SEQHandleSysExEvent()
154 track->current += length; in __SEQHandleSysExEvent()
161 static void __SEQSetTicksPerFrame(SEQTRACK *track, f32 bps) in __SEQSetTicksPerFrame() argument
165 ASSERT(track); in __SEQSetTicksPerFrame()
167 sequence = (SEQSEQUENCE*)track->sequence; in __SEQSetTicksPerFrame()
169 track->beatsPerSec = bps; in __SEQSetTicksPerFrame()
170 track->ticksPerFrame = in __SEQSetTicksPerFrame()
182 static void __SEQTempoMetaEvent(SEQTRACK *track) in __SEQTempoMetaEvent() argument
187 data = (u32)(*track->current); in __SEQTempoMetaEvent()
188 track->current++; in __SEQTempoMetaEvent()
189 data = (data << 8) + (u32)(*track->current); in __SEQTempoMetaEvent()
190 track->current++; in __SEQTempoMetaEvent()
191 data = (data << 8) + (u32)(*track->current); in __SEQTempoMetaEvent()
192 track->current++; in __SEQTempoMetaEvent()
196 __SEQSetTicksPerFrame(track, beatsPerSec); in __SEQTempoMetaEvent()
203 static void __SEQTrackEnd(SEQTRACK *track) in __SEQTrackEnd() argument
207 ASSERT(track); in __SEQTrackEnd()
209 sequence = track->sequence; in __SEQTrackEnd()
212 track->state = SEQ_STATE_STOP; in __SEQTrackEnd()
221 static void __SEQHandleMetaEvent(SEQTRACK *track) in __SEQHandleMetaEvent() argument
226 ASSERT(track); in __SEQHandleMetaEvent()
228 type = *track->current; in __SEQHandleMetaEvent()
229 track->current++; in __SEQHandleMetaEvent()
235 __SEQTrackEnd(track); in __SEQHandleMetaEvent()
241 length = __SEQGetIntTrack(track); in __SEQHandleMetaEvent()
242 __SEQTempoMetaEvent(track); in __SEQHandleMetaEvent()
248 length = __SEQGetIntTrack(track); in __SEQHandleMetaEvent()
249 track->current += length; in __SEQHandleMetaEvent()
259 static void __SEQHandleSynthEvent(SYNSYNTH *synth, SEQTRACK *track) in __SEQHandleSynthEvent() argument
264 bytes = __SEQMidiEventLength[track->status - 0x80]; in __SEQHandleSynthEvent()
266 ch[0] = track->status; in __SEQHandleSynthEvent()
276 ch[1] = *track->current; in __SEQHandleSynthEvent()
277 track->current++; in __SEQHandleSynthEvent()
283 ch[1] = *track->current; in __SEQHandleSynthEvent()
284 track->current++; in __SEQHandleSynthEvent()
285 ch[2] = *track->current; in __SEQHandleSynthEvent()
286 track->current++; in __SEQHandleSynthEvent()
294 SEQCALLBACK callback = ((SEQSEQUENCE*)(track->sequence))->callback[ch[1]]; in __SEQHandleSynthEvent()
297 (*callback)(track, ch[1]); in __SEQHandleSynthEvent()
307 static void __SEQRunEvent(SYNSYNTH *synth, SEQTRACK *track) in __SEQRunEvent() argument
312 ASSERT(track); in __SEQRunEvent()
314 event = *track->current; in __SEQRunEvent()
318 track->status = event; in __SEQRunEvent()
319 track->current++; in __SEQRunEvent()
322 switch (track->status) in __SEQRunEvent()
327 __SEQHandleSysExEvent(track); in __SEQRunEvent()
333 __SEQHandleMetaEvent(track); in __SEQRunEvent()
339 __SEQHandleSynthEvent(synth, track); in __SEQRunEvent()
344 if (track->current >= track->end) in __SEQRunEvent()
345 __SEQTrackEnd(track); in __SEQRunEvent()
372 SEQTRACK *track = &sequence->track[i]; in __SEQInitTracks() local
374 track->sequence = sequence; in __SEQInitTracks()
375 track->start = p; in __SEQInitTracks()
376 track->end = p + bytes; in __SEQInitTracks()
377 track->current = p; in __SEQInitTracks()
378 track->defaultTicksPerFrame = in __SEQInitTracks()
384 track->state = SEQ_STATE_STOP; in __SEQInitTracks()
507 SEQTRACK *track = &sequence->track[i]; in SEQRunAudioFrame() local
509 if ((track->state == SEQ_STATE_RUN) || in SEQRunAudioFrame()
510 (track->state == SEQ_STATE_RUNLOOPED)) in SEQRunAudioFrame()
512 u32 ticks = track->ticksPerFrame; in SEQRunAudioFrame()
514 if (track->delay > ticks) in SEQRunAudioFrame()
516 track->delay -= ticks; in SEQRunAudioFrame()
520 while (ticks >= track->delay) in SEQRunAudioFrame()
522 ticks -= track->delay; in SEQRunAudioFrame()
523 __SEQRunEvent(&sequence->synth, track); in SEQRunAudioFrame()
525 if (track->state == SEQ_STATE_STOP) in SEQRunAudioFrame()
528 track->delay = __SEQGetIntTrack(track) << 16; in SEQRunAudioFrame()
531 track->delay -= ticks; in SEQRunAudioFrame()
664 SEQTRACK *track = &sequence->track[i]; in SEQSetState() local
667 track->current = track->start; in SEQSetState()
668 track->ticksPerFrame = track->defaultTicksPerFrame; in SEQSetState()
669 track->delay = __SEQGetIntTrack(track) << 16; in SEQSetState()
670 track->state = SEQ_STATE_RUN; in SEQSetState()
735 __SEQSetTicksPerFrame(&sequence->track[i], bpm / 60); in SEQSetTempo()
739 __SEQSetTicksPerFrame(&sequence->track[trackIndex], bpm / 60); in SEQSetTempo()
752 return sequence->track[trackIndex].beatsPerSec * 60; in SEQGetTempo()