Hi Ian,
That can be done with the BASS_MIXER_PAUSE flag, ie. set the flag to stop the source and unset the flag to play it...
BASS_Mixer_StreamAddChannel(mixer, source, BASS_MIXER_PAUSE); // add the source to the mixer in a paused state
...
BASS_Mixer_ChannelFlags(source, 0, BASS_MIXER_PAUSE); // play the source (unset the PAUSE flag)
...
BASS_Mixer_ChannelFlags(source, BASS_MIXER_PAUSE, BASS_MIXER_PAUSE); // pause the source (set the PAUSE flag)
Thx, I'll try that.
Suggestion:
BASS_Mixer_ChannelFlags(source, 0, BASS_MIXER_PAUSE,*
BASS_MIXER_CHANNEL_SOLO*); // plays ONLY THAT source while stopping other sources automatically.
This overload would avoid extra effort with counters which source was played last, mute it with the flag and play the new one = in ONE command.
Very useful when playing shorter samples in a sequence and not to have a "sounds-puree".
It's only a littel function, but would be faster/more comfortable to have it in the DLLs.
Thanks in advance !

---
1) Bass.BASS_ChannelPlay(iStreams[0],false);
2) Bass.BASS_ChannelPause(iStreams[0]);
Those 2 functions don't actually do anything on a decoding channel, and will fail with a BASS_ERROR_DECODE error. Are you sure they made a difference, and it wasn't something else that you're doing? Perhaps it was simply the act of (very slightly) delaying whatever follows that made the difference, and any other calls would have the same effect.
Yes, I tested it quite a few session:
Run program.
1a) Initialization of BASS, some Bass.BASS_StreamCreateFile()s, -------, play the sources (StartButton) => latency 1st note,
keep playing, StopButton.
1b) Start playing again (everthing is initialized already) => NO latency 1st note
Restart program.
2a) Initialization of BASS, some Bass.BASS_StreamCreateFile()s, ADDED the 2 lines before, play the sources (StartButton) => >>>NO Latency 1st note<<<,
keep playing, StopButton.
2b) Start playing again (everthing is initialized already) => NO latency 1st note
Maybe the 2 lines preload a few bits into the buffer after all ?

Regarding the BASS_CONFIG_BUFFER option, note that changes to it only affect subsequently created channels (exising channels are unaffected), so it would need to be set before creating the mixer (BASS_Mixer_StreamCreate).
OK, I'll play around with it and see what happens.
Maybe I'll recode all routines when switching to the syncprogs...
But this is for the basics first.
Thanks again Ian !