Контроль громкости звука в Windows - PullRequest
2 голосов
/ 18 сентября 2009

Наше программное обеспечение должно воспроизводить звуки (не только небольшие шумы, но и т. Д.). Интересно, что насчет регулятора громкости? В руководящих принципах стиля Windows Vista говорится, что необходимо определить регулятор громкости для конкретного приложения в микшере Windows.

А как же Windows XP и ниже? Я не думаю, что есть способ получить контроль над микшером Windows. НО вы можете реализовать свой собственный регулятор громкости, но если вы не изменяете аудиоданные, они не могут быть громче, чем громкость всей системы (которая может быть очень низкой или даже отключенной).

Вопрос в том, должно ли приложение использовать собственный регулятор громкости или запускать регулятор громкости Windows?

Проблема в том, что обычный пользователь даже не знает, где настроить громкость в Windows.

Ответы [ 3 ]

4 голосов
/ 19 сентября 2009

Большинство платформ аудио-рендеринга (вы не упоминаете, какую из них вы используете) позволяют пользователю контролировать аудио потока, передаваемого из инфраструктуры рендеринга аудио в системный движок аудио. Например, DirectSound имеет метод IDirectSoundBuffer, который позволяет вам установить громкость для этого звукового буфера.

Регулятор громкости для каждого приложения (независимо от того, отображается ли он через системный микшер или нет) - это значительно лучший опыт для клиентов, чем приложение, управляющее мастер-громкостью. Многие машины (например, большинство современных ноутбуков) не обеспечивают аппаратную регулировку громкости и зависят от пользователя, который задает основной уровень громкости на комфортном уровне (что является весьма специфичным для пользователя значением). Если ваше приложение манипулирует мастер-громкостью, вы отменяете выбор пользователя, и они, вероятно, будут расстроены.

Кстати, для ясности: у меня нет проблем с выбором MusiGenesis. Для специализированного примера его применения этот выбор имеет смысл. Другим примером, подобным примеру MusiGenesis, является приложение для рендеринга MIDI. Если приложение иногда воспроизводится через аппаратный MIDI (без регулятора громкости), а иногда через программный MIDI (с регулятором громкости), может иметь смысл не выставлять пользователю регулятор громкости, чтобы избежать путаницы.

3 голосов
/ 18 сентября 2009

В моем приложении (программный синтезатор / инструмент для создания музыки) я фактически не касаюсь системной громкости или , даже не предлагая регулятор громкости для своего собственного приложения. Весь мой аудиовыход нормализован примерно до 95% от максимально возможного уровня, и с этого момента пользователь может регулировать громкость на выходе либо с помощью регулятора громкости Windows, либо с помощью регулятора громкости на своих динамиках.

По моему мнению, именно так должно работать звуковое приложение Windows, подобное этому , потому что, как правило, когда используется программный синтезатор, это приложение only , производящее аудиовыход, и уже есть два других способа управления громкостью (управление Windows и регулятор динамика).

В случае приложения, подобного вашему, которое предназначено для воспроизведения звуков в среде, где другие приложения могут также создавать шум, я думаю, что ваше приложение должно предлагать только способ уменьшения собственной громкости, не влияя на громкость системы. , Большинство пользователей Windows уже знают, где находится регулятор громкости системы (нижняя правая панель инструментов), поэтому добавить этот элемент управления в ваше собственное приложение также излишне.

2 голосов
/ 18 сентября 2009

Наше приложение также должно выводить голос, а также иметь другие настройки громкости по сравнению с другими приложениями, которые могут работать одновременно. У нас есть регулятор громкости, который пользователь может изменить из приложения.

Таким образом, в Windows 2000 / XP мы изменяем системный том, когда наше приложение получает фокус, и возвращаем его к предыдущему значению, когда мы теряем фокус или когда приложение закрывается. Это работает хорошо, и, похоже, не мешает работе других приложений на основе звука, работающих одновременно (например, программного обеспечения для распознавания речи, которое, например, очень чувствительно к громкости записи).

Это точно такое же поведение, как в Vista и Windows 7, за исключением того, что они выполняют работу по поддержанию отдельных уровней громкости для каждого приложения (и в этом случае мы отключаем ранее упомянутый код).

...