On Sunday 26 September 2010 01:08:21 Max Payne wrote: > Hi guys, > first of all forgive my not-so-perfect English :-) > I'm writing down some code for a minimal loop player based on two threads: > one handles a beat counter, the other feeds the soundcard with audio > frames, through ALSA. When the beat counter has completed a full cycle > (e.g. 4/4) it simply rewinds the PCM data to byte 0 making a seamless > loop. Really straightforward. Now, I'm wondering how to implement the > metronome side: should I rely on something like usleep/nanosleep or ALSA > layer could offer an advanced timer? Another potential issue would come > from latency, obviously present within the audio thread (due to ALSA): > what happens when the beat counter restarts the audio sample but an alsa > frame is still being written to the soundcard? Thank you in advance for > any suggestion!
Why do you part a task that belongs together? The most trusted clock to relate samples to real world time (which you want for your beats/bars) is the sampling-clock. Which you get from the alsa- thread. Why even bother to do the time-keeping in a different thread? Do all your audio-stuff in one thread. You should use a different thread when disk is accessed. Or when you do long running math that you only need to be finished for the audio-block after the current (or even later). And you would have a different thread for the gui stuff. Most probably this thread is called the main-thread:-) Have fun, Arnold
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ Linux-audio-dev mailing list [email protected] http://lists.linuxaudio.org/listinfo/linux-audio-dev
