Copyright © 2005-2019 MultiMedia Soft

WASAPI.DeviceVolumeSet method

Previous pageReturn to chapter overviewNext page

Remarks

 

Sets the volume of the given WASAPI device for the current process. The current volume can be obtained through the WASAPI.DeviceVolumeGet method.

 

If you need to modify the master volume for the given WASAPI device, shared by all running processes, use the CoreAudioDevices.MasterVolumeSet method.

 

This method is only intended for usage with Windows Vista and later versions.

For further details about the use of WASAPI see the WASAPIMan class and the How to manage audio flow through WASAPI tutorial

Further information about management of audio devices in Windows Vista and later versions can be found inside the How to access settings of audio devices in Windows Vista and later versions tutorial.

 

 

Syntax

 

[Visual Basic]

Public Function DeviceVolumeSet (

nDeviceIndex as Int32,

nDeviceType as enumWasapiDeviceTypes,

nScaleType as enumVolumeScales,

fVolumeLevel as Single

) as enumErrorCodes


 

[C#]

public enumErrorCodes DeviceVolumeSet (

Int32 nDeviceIndex,

enumWasapiDeviceTypes nDeviceType,

enumVolumeScales nScaleType,

float fVolumeLevel

);


 

[C++]

public: enumErrorCodes DeviceVolumeSet (

Int32 nDeviceIndex,

enumWasapiDeviceTypes nDeviceType,

enumVolumeScales nScaleType,

float fVolumeLevel

);


 

 

Parameter

Description

 

 

nDeviceIndex

Number representing the zero-based index of the WASAPI device of interest. The total number of available WASAPI devices can be obtained using the WASAPI.DeviceGetCount method.

nDeviceType

The type of device.

Supported values are the following:

Mnemonic Value

Value

Meaning

WASAPI_DEVICE_TYPE_RENDER

0

Audio rendering device.

WASAPI_DEVICE_TYPE_CAPTURE

1

Audio capture device.

WASAPI_DEVICE_TYPE_LOOPBACK

2

Audio loopback device.

nScaleType

The volume scaling type.

Supported values are the following:

Mnemonic constant

Value

Meaning

SCALE_LINEAR

0

The passed volume is based upon a linear scale and can be in the range from 0.0 (silence) to 100.0 (max volume)

SCALE_LOG

1

The passed volume, expressed in dB, is based upon a logarithmic scale.

 

IMPORTANT NOTE ABOUT UNITS OF MEASURE:When dealing with values expressed in percentage the effective value can have different meaning depending upon the implementation of the sound card driver: for example, usually a percentage value of 100 is assumed as 0 dB: this is not the case when dealing with Core Audio API because, if the sound card driver allows applying a volume range from -100 dB (total silence) to +20 dB (sound amplification of +20 dB), a percentage value of 100 would mean that the applied volume is +20 dB. The range of volume values accepted by the sound card driver can be obtained by calling the CoreAudioDevices.MasterVolumeGet method.

 

IMPORTANT NOTE ABOUT CONVERSION BETWEEN UNITS OF MEASURE: When setting a volume expressed in percentage through one of our component's methods, the value displayed inside the "Sound" applet of the Control Panel may report a value slightly different respect to the one effectively set: this issue is due to a rounding problem when converting from percentage to dB (all values are stored in dB inside the driver); if this should be a problem for you, in order to avoid this minor issue you should always use dB as unit of measure when calling our component's methods and to set the "Sound" applet of the Control Panel to display values in dB instead of the percentage default.

fVolumeLevel

Number representing the volume level for the current process (the meaning of this value depends upon the nScaleType parameter).

The range of acceptable values, expressed in dB, to apply can be determined by checking the fLevelMinIndB and fLevelMaxIndB parameters of the CoreAudioDevices.MasterVolumeGet method.

 

 

Return value

 

Value

Meaning

 

 

Negative value

An error occurred (see the LastError property for further error details)

enumErrorCodes.NOERROR (0)

The method call was successful.