From: Chris C. <ca...@al...> - 2004-01-13 08:53:51
|
So, yesterday afternoon I had one of those sessions in which you do hours of testing and tweaking and end up changing about three lines of code. The net result is that we now stop the ALSA queue while prebuffering MIDI (not audio yet) when called on to play, and that works OK. The finer points, for the record: * A stopped queue will still deliver events that are timestamped at the exact time the queue's stopped at. We don't want that when prebuffering, so we have to put off draining the alsa-lib buffer into the sequencer core (via snd_seq_drain_output) until the queue is started again. I just hope drain_output is fast. * We can't stop the queue while we're not playing, not because of things like async system events but because of timed NOTE OFF events for notes sent from the GUI for previews etc. So we simply stop the queue briefly while buffering at the start of playback or when ffwding/rewinding, and leave it running after playback. Chris |