Lines Matching refs:track

143 static u32 __SEQGetIntTrack(SEQTRACK *track)  in __SEQGetIntTrack()  argument
147 ASSERT(track); in __SEQGetIntTrack()
149 value = (u32)(*track->current & 0x7f); in __SEQGetIntTrack()
151 while (*track->current & 0x80) in __SEQGetIntTrack()
153 track->current++; in __SEQGetIntTrack()
154 value = (value << 7) + (*track->current & 0x7f); in __SEQGetIntTrack()
157 track->current++; in __SEQGetIntTrack()
166 static void __SEQHandleSysExEvent(SEQTRACK *track) in __SEQHandleSysExEvent() argument
170 ASSERT(track); in __SEQHandleSysExEvent()
172 length = __SEQGetIntTrack(track); in __SEQHandleSysExEvent()
173 track->current += length; in __SEQHandleSysExEvent()
180 static void __SEQSetTicksPerFrame(SEQTRACK *track, f32 bps) in __SEQSetTicksPerFrame() argument
184 ASSERT(track); in __SEQSetTicksPerFrame()
186 sequence = (SEQSEQUENCE*)track->sequence; in __SEQSetTicksPerFrame()
188 track->beatsPerSec = bps; in __SEQSetTicksPerFrame()
189 track->ticksPerFrame = in __SEQSetTicksPerFrame()
201 static void __SEQTempoMetaEvent(SEQTRACK *track) in __SEQTempoMetaEvent() argument
206 data = (u32)(*track->current); in __SEQTempoMetaEvent()
207 track->current++; in __SEQTempoMetaEvent()
208 data = (data << 8) + (u32)(*track->current); in __SEQTempoMetaEvent()
209 track->current++; in __SEQTempoMetaEvent()
210 data = (data << 8) + (u32)(*track->current); in __SEQTempoMetaEvent()
211 track->current++; in __SEQTempoMetaEvent()
215 __SEQSetTicksPerFrame(track, beatsPerSec); in __SEQTempoMetaEvent()
222 static void __SEQTrackEnd(SEQTRACK *track) in __SEQTrackEnd() argument
226 ASSERT(track); in __SEQTrackEnd()
228 sequence = track->sequence; in __SEQTrackEnd()
231 track->state = SEQ_STATE_STOP; in __SEQTrackEnd()
240 static void __SEQHandleMetaEvent(SEQTRACK *track) in __SEQHandleMetaEvent() argument
245 ASSERT(track); in __SEQHandleMetaEvent()
247 type = *track->current; in __SEQHandleMetaEvent()
248 track->current++; in __SEQHandleMetaEvent()
254 __SEQTrackEnd(track); in __SEQHandleMetaEvent()
260 length = __SEQGetIntTrack(track); in __SEQHandleMetaEvent()
261 __SEQTempoMetaEvent(track); in __SEQHandleMetaEvent()
267 length = __SEQGetIntTrack(track); in __SEQHandleMetaEvent()
268 track->current += length; in __SEQHandleMetaEvent()
278 static void __SEQHandleSynthEvent(SYNSYNTH *synth, SEQTRACK *track) in __SEQHandleSynthEvent() argument
283 bytes = __SEQMidiEventLength[track->status - 0x80]; in __SEQHandleSynthEvent()
285 ch[0] = track->status; in __SEQHandleSynthEvent()
295 ch[1] = *track->current; in __SEQHandleSynthEvent()
296 track->current++; in __SEQHandleSynthEvent()
302 ch[1] = *track->current; in __SEQHandleSynthEvent()
303 track->current++; in __SEQHandleSynthEvent()
304 ch[2] = *track->current; in __SEQHandleSynthEvent()
305 track->current++; in __SEQHandleSynthEvent()
313 SEQCALLBACK callback = ((SEQSEQUENCE*)(track->sequence))->callback[ch[1]]; in __SEQHandleSynthEvent()
316 (*callback)(track, ch[1]); in __SEQHandleSynthEvent()
326 static void __SEQRunEvent(SYNSYNTH *synth, SEQTRACK *track) in __SEQRunEvent() argument
331 ASSERT(track); in __SEQRunEvent()
333 event = *track->current; in __SEQRunEvent()
337 track->status = event; in __SEQRunEvent()
338 track->current++; in __SEQRunEvent()
341 switch (track->status) in __SEQRunEvent()
346 __SEQHandleSysExEvent(track); in __SEQRunEvent()
352 __SEQHandleMetaEvent(track); in __SEQRunEvent()
358 __SEQHandleSynthEvent(synth, track); in __SEQRunEvent()
363 if (track->current >= track->end) in __SEQRunEvent()
364 __SEQTrackEnd(track); in __SEQRunEvent()
391 SEQTRACK *track = &sequence->track[i]; in __SEQInitTracks() local
393 track->sequence = sequence; in __SEQInitTracks()
394 track->start = p; in __SEQInitTracks()
395 track->end = p + bytes; in __SEQInitTracks()
396 track->current = p; in __SEQInitTracks()
397 track->defaultTicksPerFrame = in __SEQInitTracks()
403 track->state = SEQ_STATE_STOP; in __SEQInitTracks()
540 SEQTRACK *track = &sequence->track[i]; in SEQRunAudioFrame() local
542 if ((track->state == SEQ_STATE_RUN) || in SEQRunAudioFrame()
543 (track->state == SEQ_STATE_RUNLOOPED)) in SEQRunAudioFrame()
545 u32 ticks = track->ticksPerFrame; in SEQRunAudioFrame()
547 if (track->delay > ticks) in SEQRunAudioFrame()
549 track->delay -= ticks; in SEQRunAudioFrame()
553 while (ticks >= track->delay) in SEQRunAudioFrame()
555 ticks -= track->delay; in SEQRunAudioFrame()
556 __SEQRunEvent(&sequence->synth, track); in SEQRunAudioFrame()
558 if (track->state == SEQ_STATE_STOP) in SEQRunAudioFrame()
561 track->delay = __SEQGetIntTrack(track) << 16; in SEQRunAudioFrame()
564 track->delay -= ticks; in SEQRunAudioFrame()
697 SEQTRACK *track = &sequence->track[i]; in SEQSetState() local
700 track->current = track->start; in SEQSetState()
701 track->ticksPerFrame = track->defaultTicksPerFrame; in SEQSetState()
702 track->delay = __SEQGetIntTrack(track) << 16; in SEQSetState()
703 track->state = SEQ_STATE_RUN; in SEQSetState()
768 __SEQSetTicksPerFrame(&sequence->track[i], bpm / 60); in SEQSetTempo()
772 __SEQSetTicksPerFrame(&sequence->track[trackIndex], bpm / 60); in SEQSetTempo()
785 return sequence->track[trackIndex].beatsPerSec * 60; in SEQGetTempo()