Maybe Ian can shed some light into this. Here is what I am doing inside Bass.Net:
1) Constructor of the BassWasapiHandler:
new BassWasapiHandler(int device, bool exclusive, int freq, int chans, float buffer, float period)
in your case:
new BassWasapiHandler(12, true, 176400, 2, 0.5f, 0.5f);
_internalMixer = BassMix.BASS_Mixer_StreamCreate(freq, chans, BASSFlag.BASS_SAMPLE_FLOAT | BASSFlag.BASS_STREAM_DECODE | BASSFlag.BASS_MIXER_RESUME);
That's it!
2) Now, when you invoke the Init() method, the following is done:
BassWasapi.BASS_WASAPI_Init(12, 176400, 2, BASSWASAPIInit.BASS_WASAPI_EXCLUSIVE, 0.5f, 0.5f, internalWasapiProc, IntPtr.Zero);
That's it!
3) Finally you add a source channel:
wasapiOut.AddOutputSource(stream, flags)
This would result in:
BassMix.BASS_Mixer_StreamAddChannel(_internalMixer, stream, flags | BASSFlag.BASS_MIXER_DOWNMIX);