BASS_SAMPLE_FLOAT is the option for creating streams. So this option is even relevant when creating an output stream - meaning float sample data will also be send to the output device.
In addition BASS_SAMPLE_FLOAT will ensure, that any DSPPROC on that channel receives float data (so if you always use the SAMPLE_FLOAT option with your streams you don't need to worry about FLOATDSP).
So SAMPLE_FLOAT already converts the original sample data during the decoding process to float values (if needed)!
As almost all compressed formats (like MP3, OGG etc.) deliver float sample data - which in fact means , that they don't even need to be converted to float, since they are already.
So using the BASS_SAMPLE_FLOAT flag on compressed formats is even more efficient ;-)
And NOT specifying BASS_SAMPLE_FLOAT would convert the sample data to short values.
The contrary is true for e.g. WAV files. If they are originally 16-bit, they would be converted to float when using the BASS_SAMPLE_FLOAT flag.
BASS_CONFIG_FLOATDSP will 'just' ensure, that whatever you set as stream flags, any DSPPROC will always receive float sample data.
This means, that when you have NOT specified BASS_SAMPLE_FLOAT but you have set BASS_CONFIG_FLOATDSP, that e.g. the output device will receive 16-bit sample data - while any internal DSPs receive the data as float values.
As you can see, depending on the original file format and these 2 flags there might be a lot of internal conversions taking place...which takes CPU power.
Example:
SAMPLE_FLOAT FLOATDSP Original-Format At-DECODING At-DSPPROC At-Output
-------------------------------------------------------------------------------------
TRUE TRUE 16-bit (wav) convTo32 32-bit 32-bit
FALSE TRUE 16-bit (wav) nothing convTo32* 16-bit
TRUE TRUE 32-bit (mp3) nothing 32-bit 32-bit
FALSE TRUE 32-bit (mp3) convTo16 convTo32* 16-bit
TRUE FALSE 32-bit (mp3) nothing 32-bit 32-bit
FALSE FALSE 32-bit (mp3) convTo16 16-bit 16-bit
*at the DSPPROC stage it might even be necessary to convert the sample data twice (incomming from 16 to 32-bit, outgoing back to 16-bit).
Hope this helps...