"You can assign channels to specific speakers. (BASS_SPEAKER flags)"
You can't assign them at runtime
Sure you can. Or do you mean change them? If so, you'll have to recreate the channel with the new speaker flag. Creating streams is generally very fast (if you don't use the BASS_MP3_SETPOS flag), so this shouldn't have any great hit on performance.
"Try linking the channels. (BASS_ChannelSetLink)"
This will only link play states and not positions.
It does not play synched this way
Assuming both channels start at the same position, the positions should stay synced. If you wanted to change the position, you'ld first stop the channels, then seek on both of them, and start them playing again... again, they're starting together at the same position, so should stay synced.
"You should use a separate decoding channel for this. (BASS_STREAM_DECODE flag)"
Ok, I could try this some how... However, this recuires 2 times the same stream beiing decoded. And it must also be synched, which will result in more problems...
Yes, but your original request was not feasible. In your example, what would BASS do with the extra 4900ms of decoded data that doesn't fit in the channel's buffer? It'd be lost (not played).
If you're never looking beyond 5 seconds ahead, then you could try simply increasing the buffer length. (BASS_SetBufferLength)
What I'm saying is that, with a little thought, there are ways in which you can achieve each of your requests
"Any sudden large change in level will naturally cause a click in the sound. Sliding (in the case of the volume) should not cause a click (except maybe if it's a very short slide period)."
I understand, but there is still a click if you move it slowly. Even then, if the value is changed from 90 to 50 in about 30 steps. I recorded the audio in duplex mode while sliding and when you change the value you can see a small space between the wavforms...
That's strange. What soundcard and Windows/DirectX version are you using, and have you checked for updated drivers?
Also, if you run the precompiled CONTEST.EXE example, does it click during the fade-out at the end?