Namespace: Un4seen.BassAsio
Assembly: Bass.Net (in Bass.Net.dll) Version: 2.4.17.5
[DllImportAttribute("bassasio")] public static bool BASS_ASIO_ChannelSetVolume( bool input, int channel, float volume )
Parameters
- input
- Type: SystemBoolean
Dealing with an input channel? = an output channel. - channel
- Type: SystemInt32
The input/output channel number... 0 = first, -1 = master. - volume
- Type: SystemSingle
The volume level... 0 (silent)...1.0 (normal). Above 1.0 amplifies the sound.
Return Value
Type: BooleanIf succesful, then is returned, else is returned. Use BASS_ASIO_ErrorGetCode to get the error code.
Apart from the master volume (channel = -1), this function applies a volume level to a single channel, and does not affect any other channels that are joined with it. This allows balance control over joined channels, by setting the individual volume levels accordingly. The final level of a channel is master volume x channel volume.
The volume "curve" is linear, but logarithmic levels can be easily used. See the example below.
ASIO drivers do not provide volume control themselves, so the volume adjustments are applied to the sample data by BASSASIO. This also means that changes do not persist across sessions, and the channel volume levels will always start at 1.0.
When the channel's sample format is DSD, a 0 volume setting will mute the channel and anything else will be treated as 1.0 (normal).
ERROR CODE | Description |
---|---|
BASS_ERROR_INIT | BASS_ASIO_Init(Int32, BASSASIOInit) has not been successfully called. |
BASS_ERROR_ILLPARAM | The input and channel combination is invalid, or volume is below 0. |
// translate logarithmic dB level to linear float volume = (float)Math.Pow(10d, db / 20d); // apply it BassAsio.BASS_ASIO_ChannelSetVolume(false, 0 , volume);