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

StackOverflow https://stackoverflow.com/questions/71198

Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top