Регулятор громкости Количество каналов XP отличается от Vista - PullRequest
0 голосов
/ 21 октября 2008

Когда я запускаю этот код:

MIXERLINE MixerLine;
memset( &MixerLine, 0, sizeof(MIXERLINE) );
MixerLine.cbStruct = sizeof(MIXERLINE);
MixerLine.dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT;
mmResult = mixerGetLineInfo( (HMIXEROBJ)m_dwMixerHandle, &MixerLine, MIXER_GETLINEINFOF_COMPONENTTYPE );

Под XP MixerLine.cChannels возвращается как число каналов, которые поддерживает звуковая карта. Часто 2, в наши дни часто намного больше.

Под Vista MixerLine.cChannels возвращается как единое целое.

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

Очевидно, что в Vista этот подход не работает, поскольку существует только один канал. Я могу установить громкость, и это для обоих каналов одновременно.

Я пытался получить MIXERCONTROL_CONTROLTYPE_PAN для этого устройства, но это не был действительный элемент управления.

Итак, вопрос для всех вас, экспертов системы MMS, заключается в следующем: какой тип управления мне необходим для настройки баланса влево / вправо? С другой стороны, есть ли лучший способ? Мне бы хотелось решение, которое работает как с XP, так и с Vista.

Сведения о компьютере: 32-разрядная версия Vista Ultimta SP1 и все последние исправления. Звук обеспечивается картой Creative Audigy 2 ZS с 4 подключенными динамиками, которые могут быть правильно адресованы (управляться) через звуковую панель Vista. Последняя версия драйвера на сайте Creative (SBAX_PCDRV_LB_2_18_0001). Звук в Vista не установлен на моно, и все каналы видны и управляются с помощью звуковой панели.

Запуск программы в «режиме совместимости с XP» не меняет поведение этой проблемы.

Ответы [ 2 ]

1 голос
/ 22 октября 2008

Если вы запускаете свое приложение в режиме «совместимости с XP», API-интерфейсы микшера должны работать намного ближе, чем в XP.

Если вы не работаете в режиме XP, то API микшера отражают формат микширования - если аудио-решение вашего ПК сконфигурировано для моно, вы увидите только один канал, но если ваша машина настроена для многоканальный вывод API-интерфейсы микшера должен отражать это.

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

0 голосов
/ 22 октября 2008

Долгое время Microsoftie У Ларри Остермана есть блог , где он обсуждает подобные проблемы, потому что он был в команде, которая переделала все аудио-материалы в Vista.

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

CN, на самом деле нам неизвестно о ЛЮБЫХ ситуациях, когда приложение может контролировать свой баланс. Сказав это, мы поддерживаем отдельные объемы каналов для приложений, но настоятельно рекомендуется, чтобы приложения не использовали их.

Он также указывает, что панорамирование звука с одной стороны на другую может быть выполнено, но это зависит от того, поддерживает ли его аппаратное обеспечение:

Джоку, мы выставляем регуляторы громкости, которые реализует аудио решение. Если это может сделать панорамирование, мы делаем панорамирование (мы фактически выставляем отдельные ползунки для левого и правого каналов).

Это объясняет, почему произошел сбой MIXERCONTROL_CONTROLTYPE_PAN - звуковое оборудование в вашей системе не поддерживает его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...