Как эмулировать / заменить / повторно включить классические элементы управления (или команды) Sound Mixer в Windows Vista? - PullRequest
3 голосов
/ 16 сентября 2008

У меня есть проблема (и она у меня возникла в течение некоторого времени) - в новом стеке звукового микшера в Vista есть новые классные вещи, но также изобретается колесо. Многие приложения, которые раньше использовали Volume Mixer в системе Windows для смешивания разных вокализованных выходов в один вход (например, Wave-out + Line-in -> Stereo Mix), с тех пор перестали работать. Основным примером такого поведения является плагин Shoutcast DSP (может быть полезен для тестирования решения).

Как я могу повторно включить элементы управления XP-микшера или, может быть, каким-то образом эмулировать это поведение, чтобы программа (SC DSP) могла правильно управлять громкостью воспроизведения микрофона / линейного входа наряду с громкостью воспроизведения Wave-out?

Я бы хотел эмулировать программу, подключенную к Vista Mixer для Wave-Out и Line-out (или громкости динамика Mic - все воспроизведение, отображаемое как отдельные настраиваемые «программы», чтобы Vista Mixer мог ссылаться на него). к нему) и «подключить» его к системе под эмуляцией, представляющей собой старый интерфейс управления микшером громкости для программы, но я, честно говоря, понятия не имею, как это сделать.

Чтобы уточнить: это не мой компьютер (это ноутбук HP Pavilion). Проблема, кажется, существует в основном из-за того, что микшер Vista управляет отдельными программами, а не отдельными входами / выходами. Аппаратное обеспечение полностью способно делать то, что необходимо при использовании Windows XP. Я хорошо осознаю тот факт, что это проблема с драйверами, но драйвер просто подготовлен к тому, что Vista представляет программисту через интерфейсы. Устройство микшера - как видно в операционной системе, но может выглядеть программно - основано на API микшера для управления Windows Audio.

Поиск с помощью Google на Vista и линейного контроля громкости воспроизведения для получения дополнительной информации о проблеме (и о количестве пользователей, затронутых этой проблемой). Конечно, переписать плагин Shoutcast Source DSP для WinAMP можно, но это вряд ли произойдет ...

Ответы [ 4 ]

4 голосов
/ 26 сентября 2008

Управление уровнями громкости звуковых карт для отдельных уровней ввода / вывода в микшере Windows Vista возможно с помощью аудио EndPoint API

Это должно позволить вам настроить основную громкость, а также громкость и подключенных аудиовходов. Одна из сложностей заключается в том, что при перечислении конечных точек, если в звуковую карту не подключен микрофон, ничего не будет перечислено. Это означает, что вам нужно изменить свое приложение, чтобы оно реагировало на события «подключен микрофон» и соответствующим образом уведомляло пользователя.

Другим вариантом является погружение под Microsoft Core Audio и прямой доступ к драйверу WaveRT . Это гораздо больше работы, чем использование API-интерфейсов WASAPI / Endpoint, но даст вам максимальный контроль над доступом к входам / выходам звуковой карты.

3 голосов
/ 16 сентября 2008

Аудио драйвер управляет тем, какие элементы управления микшером доступны, и это будет в значительной степени зависеть от возможностей оборудования.

Если драйвер Vista не имеет определенных элементов управления, скорее всего, это недостаток этого драйвера, а не Vista.

(Пожалуйста, сообщите нам, какую звуковую карту / устройство вы используете.)

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

2 голосов
/ 27 июля 2009

Если вы пометите ваше приложение как работающее с совместимостью с Windows XP, то все старые элементы управления и поведения вернутся.

1 голос
/ 19 августа 2009

Если вы пометите ваше приложение как работающее с совместимостью с Windows XP, то все старые элементы управления и поведения вернутся.

Это действительно так, но начиная с патча Vista SP1 KB957388, включенного в SP2, и с некоторыми драйверами звуковой карты, старые функции API микшера (winmm.dll) могут зависать, когда приложение находится в режиме совместимости с XP. В частности, mixerGetNumDevs и реже mixerOpen не возвращаются на некоторых компьютерах.

У меня есть отчеты от 5 пользователей Vista из примерно 200 пользователей Vista, где мое приложение зависает при запуске, и я отследил его до зависания этих функций.

Я бы хотел сообщить об этом в Microsoft, но не могу найти нигде для этого.

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

У меня нет времени напрямую работать с низкоуровневыми API-функциями. Я полагаюсь на компоненты высокого уровня и не могу найти ни одного нового API аудио для моей системы разработки (Delphi).

Мне было бы интересно заплатить кому-нибудь, чтобы он написал для меня DLL !!! электронная почта ross att stationplaylist dott com

...