2009-09-18 6 views
2

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

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

С уважением, Uwe

+0

На каком языке написано ваше приложение? C# /. Net? – MusiGenesis

+0

Нет, это родной C++. – Uwe

ответ

2

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

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

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

+0

Спасибо, Джон. Но что произойдет, если ваше приложение будет воспроизводить голос, а другое приложение сосредоточено? В этот момент объем падает или увеличивается? – Uwe

+0

В нашей ситуации объем будет уменьшаться/увеличиваться при изменении фокуса. Как вы предположили, единственным способом увеличения громкости при сохранении объема других приложений в этой ситуации будет увеличение громкости ваших базовых аудиоданных. Звуковая архитектура Vista является важным шагом вперед в этом отношении. –

3

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

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

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

4

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

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

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

Смежные вопросы