Поделиться через


Изменение громкости воспроизведения Waveform-Audio

[Функция, связанная с этой страницей, Waveform Audio, является устаревшей функцией. Он был заменен WASAPI и Audio Graphs. WasAPI и Audio Graphs оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код по возможности использовал WASAPI и Звуковые графы вместо Waveform Audio. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]

Windows предоставляет следующие функции для запроса и настройки уровня громкости устройств вывода сигналов и аудио.

Функция Описание
waveOutGetVolume Извлекает текущий уровень громкости указанного устройства вывода звукового сигналов.
waveOutSetVolume Задает уровень громкости указанного устройства вывода звуковой формы волны.

 

Не все устройства waveform-audio поддерживают изменение громкости. Некоторые устройства поддерживают отдельный контроль громкости в левом и правом каналах. Сведения об определении возможностей управления громкостями устройств waveform-audio см. в разделе Устройства и типы данных.

Некоторые приложения позволяют пользователю управлять громкость для всех звуковых устройств в системе. (Многие приложения этого типа используют службы аудиомикшеров. Дополнительные сведения см. в разделе Audio Mixers.) Если приложение не поддерживает такой тип управления громкостью master, необходимо открыть звуковое устройство, прежде чем изменять его громкость. Кроме того, необходимо запросить уровень тома перед его изменением и как можно скорее восстановить уровень тома до предыдущего уровня.

Том указывается в двойном слове. Если аудиоформат является стереоформатом, верхние 16 бит указывают относительный объем правого канала, а нижние 16 бит — относительный объем левого канала. Для устройств, которые не поддерживают управление громкость по левому и правому каналам, нижние 16 бит определяют уровень громкости, а верхние 16 бит игнорируются.

Значения уровня тома варьируются от 0x0 (тишина) до 0xFFFF (максимальный объем) и интерпретируются логарифмически. Предполагаемое увеличение объема одинаково при увеличении уровня громкости с 0x5000 до 0x6000, как и с 0x4000 до 0x5000.