Enables an output channel, and makes it mirror another channel.
BOOL BASS_ASIO_ChannelEnableMirror( DWORD channel, BOOL input2, DWORD channel2 );
channel | The output channel number... 0 = first. |
input2 | Mirroring an input channel? FALSE = an output channel. |
channel2 | The channel to mirror. |
BASS_ERROR_INIT | BASS_ASIO_Init has not been successfully called. |
BASS_ERROR_START | The device has been started and the channel is not currently enabled. The device needs to be stopped before enabling channels. |
BASS_ERROR_ILLPARAM | At least one of the channels is invalid. |
BASS_ERROR_FORMAT | It is not possible to mirror channels that do not have the same sample format. |
Mirror channels cannot be joined together to form multi-channel mirrors. Instead, to mirror multiple channels, an individual mirror should be setup for each of them.
After BASS_ASIO_Start has been called to begin processing, it is not possible it setup new mirror channels, but it is still possible to change the channel that a mirror is mirroring.
When mirroring an output channel that has not been enabled, the mirror channel will just produce silence. When mirroring an input channel that has not already been enabled, the channel is automatically enabled for processing when BASS_ASIO_Start is called, so that it can be mirrored. If the mirror is switched to a disabled input channel once processing has begun, then it will produce silence.
A mirror channel can be made to have a different volume level to the channel that it is mirroring, using BASS_ASIO_ChannelSetVolume. The volume setting is cumulative. For example, if the mirror channel has a volume setting of 0.5 and the mirrored channel has a volume setting of 0.4, the effective volume of the mirror channel will be 0.2 (0.5 x 0.4).
BASS_ASIO_ChannelEnable can be used to disable a mirror channel.
BASS_ASIO_ChannelEnable(FALSE, 0, MyAsioProc, 0); // enable processing of output channel 0 BASS_ASIO_ChannelEnableMirror(1, FALSE, 0); // mirror it to channel 1