Lines Matching refs:track
140 static u32 __SEQGetIntTrack(SEQTRACK *track) in __SEQGetIntTrack() argument
144 ASSERT(track); in __SEQGetIntTrack()
146 value = (u32)(*track->current & 0x7f); in __SEQGetIntTrack()
148 while (*track->current & 0x80) in __SEQGetIntTrack()
150 track->current++; in __SEQGetIntTrack()
151 value = (value << 7) + (*track->current & 0x7f); in __SEQGetIntTrack()
154 track->current++; in __SEQGetIntTrack()
163 static void __SEQHandleSysExEvent(SEQTRACK *track) in __SEQHandleSysExEvent() argument
167 ASSERT(track); in __SEQHandleSysExEvent()
169 length = __SEQGetIntTrack(track); in __SEQHandleSysExEvent()
170 track->current += length; in __SEQHandleSysExEvent()
177 static void __SEQSetTicksPerFrame(SEQTRACK *track, f32 bps) in __SEQSetTicksPerFrame() argument
181 ASSERT(track); in __SEQSetTicksPerFrame()
183 sequence = (SEQSEQUENCE*)track->sequence; in __SEQSetTicksPerFrame()
185 track->beatsPerSec = bps; in __SEQSetTicksPerFrame()
186 track->ticksPerFrame = in __SEQSetTicksPerFrame()
198 static void __SEQTempoMetaEvent(SEQTRACK *track) in __SEQTempoMetaEvent() argument
203 data = (u32)(*track->current); in __SEQTempoMetaEvent()
204 track->current++; in __SEQTempoMetaEvent()
205 data = (data << 8) + (u32)(*track->current); in __SEQTempoMetaEvent()
206 track->current++; in __SEQTempoMetaEvent()
207 data = (data << 8) + (u32)(*track->current); in __SEQTempoMetaEvent()
208 track->current++; in __SEQTempoMetaEvent()
212 __SEQSetTicksPerFrame(track, beatsPerSec); in __SEQTempoMetaEvent()
219 static void __SEQTrackEnd(SEQTRACK *track) in __SEQTrackEnd() argument
223 ASSERT(track); in __SEQTrackEnd()
225 sequence = track->sequence; in __SEQTrackEnd()
228 track->state = SEQ_STATE_STOP; in __SEQTrackEnd()
237 static void __SEQHandleMetaEvent(SEQTRACK *track) in __SEQHandleMetaEvent() argument
242 ASSERT(track); in __SEQHandleMetaEvent()
244 type = *track->current; in __SEQHandleMetaEvent()
245 track->current++; in __SEQHandleMetaEvent()
251 __SEQTrackEnd(track); in __SEQHandleMetaEvent()
257 length = __SEQGetIntTrack(track); in __SEQHandleMetaEvent()
258 __SEQTempoMetaEvent(track); in __SEQHandleMetaEvent()
264 length = __SEQGetIntTrack(track); in __SEQHandleMetaEvent()
265 track->current += length; in __SEQHandleMetaEvent()
275 static void __SEQHandleSynthEvent(SYNSYNTH *synth, SEQTRACK *track) in __SEQHandleSynthEvent() argument
280 bytes = __SEQMidiEventLength[track->status - 0x80]; in __SEQHandleSynthEvent()
282 ch[0] = track->status; in __SEQHandleSynthEvent()
292 ch[1] = *track->current; in __SEQHandleSynthEvent()
293 track->current++; in __SEQHandleSynthEvent()
299 ch[1] = *track->current; in __SEQHandleSynthEvent()
300 track->current++; in __SEQHandleSynthEvent()
301 ch[2] = *track->current; in __SEQHandleSynthEvent()
302 track->current++; in __SEQHandleSynthEvent()
310 SEQCALLBACK callback = ((SEQSEQUENCE*)(track->sequence))->callback[ch[1]]; in __SEQHandleSynthEvent()
313 (*callback)(track, ch[1]); in __SEQHandleSynthEvent()
323 static void __SEQRunEvent(SYNSYNTH *synth, SEQTRACK *track) in __SEQRunEvent() argument
328 ASSERT(track); in __SEQRunEvent()
330 event = *track->current; in __SEQRunEvent()
334 track->status = event; in __SEQRunEvent()
335 track->current++; in __SEQRunEvent()
338 switch (track->status) in __SEQRunEvent()
343 __SEQHandleSysExEvent(track); in __SEQRunEvent()
349 __SEQHandleMetaEvent(track); in __SEQRunEvent()
355 __SEQHandleSynthEvent(synth, track); in __SEQRunEvent()
360 if (track->current >= track->end) in __SEQRunEvent()
361 __SEQTrackEnd(track); in __SEQRunEvent()
388 SEQTRACK *track = &sequence->track[i]; in __SEQInitTracks() local
390 track->sequence = sequence; in __SEQInitTracks()
391 track->start = p; in __SEQInitTracks()
392 track->end = p + bytes; in __SEQInitTracks()
393 track->current = p; in __SEQInitTracks()
394 track->defaultTicksPerFrame = in __SEQInitTracks()
400 track->state = SEQ_STATE_STOP; in __SEQInitTracks()
537 SEQTRACK *track = &sequence->track[i]; in SEQRunAudioFrame() local
539 if ((track->state == SEQ_STATE_RUN) || in SEQRunAudioFrame()
540 (track->state == SEQ_STATE_RUNLOOPED)) in SEQRunAudioFrame()
542 u32 ticks = track->ticksPerFrame; in SEQRunAudioFrame()
544 if (track->delay > ticks) in SEQRunAudioFrame()
546 track->delay -= ticks; in SEQRunAudioFrame()
550 while (ticks >= track->delay) in SEQRunAudioFrame()
552 ticks -= track->delay; in SEQRunAudioFrame()
553 __SEQRunEvent(&sequence->synth, track); in SEQRunAudioFrame()
555 if (track->state == SEQ_STATE_STOP) in SEQRunAudioFrame()
558 track->delay = __SEQGetIntTrack(track) << 16; in SEQRunAudioFrame()
561 track->delay -= ticks; in SEQRunAudioFrame()
694 SEQTRACK *track = &sequence->track[i]; in SEQSetState() local
697 track->current = track->start; in SEQSetState()
698 track->ticksPerFrame = track->defaultTicksPerFrame; in SEQSetState()
699 track->delay = __SEQGetIntTrack(track) << 16; in SEQSetState()
700 track->state = SEQ_STATE_RUN; in SEQSetState()
765 __SEQSetTicksPerFrame(&sequence->track[i], bpm / 60); in SEQSetTempo()
769 __SEQSetTicksPerFrame(&sequence->track[trackIndex], bpm / 60); in SEQSetTempo()
782 return sequence->track[trackIndex].beatsPerSec * 60; in SEQGetTempo()