1) the buffers appear to be continuously queued and unqueued even if a source is not playing,
Yes, a SoundSystem streaming source.
If my understanding of SoundSystem is correct, once a OpenAL processes buffers for a SoundSystem streaming sources, those OpenAL buffers are unqueued, refilled, then requeued again by the SoundSystem Channel.
But doesn't OpenAL mark all streaming buffers as 'processed' regardless of the actual processed state? Pretty sure I read that it does in the OpenAL programmer's guide.
Buffers are only trimmed once per clip (when the end of the data is reached)
I was thinking more along the lines of the WavCodec trimming it's notion of a buffer, which isn't necessarily the same size as the OpenAL buffer. The result of that would be this OpenAL buffer isn't 100% full, so this call
float bufSize = (float)AL10.alGetBufferi(intBuffer.get(0), AL10.AL_SIZE);
doesn't accurately reflect the audio data in the buffer, hence the cumulative errors I'm seeing.
But I'm just speculating 'cause I really don't know.
there's a fair bit of latency between the source starting to play and getting a reference to the source object via the library
This is the result of two things. Yes, one is multi-threading
Thanks for that ..... good to know. Not sure if that's a show-stopper for me yet.
All in all, I think the SoundSystem is a pretty good framework. I'm just tracking method calls making guesses, trying to get this to work ..... and really have no clear idea what I'm doing.
--Tim.