Я пытаюсь исправить ошибку Audacity, которая вращается вокруг portmixer. Уровень выходного/входного сигнала настраивается с использованием версии mac portmixer, но не всегда в окнах. Я отлаживаю код окна portmixer, чтобы попытаться заставить его работать там.Почему я не могу установить основную громкость для интерфейса USB/Firewire Audio с помощью IAudioEndpointVolume :: SetMasterVolumeLevelScalar
Использование IAudioEndpointVolume :: SetMasterVolumeLevelScalar для установки основного тома отлично работает для встроенного звука, но с использованием внешних внешних интерфейсов USB или FireWire, таких как RME Fireface 400, выходной том не изменится, хотя он отражается в звуковом управлении Window панели для этого устройства, а также в системном микшере.
Кроме того, вне нашей программы, изменяя главный слайдер для системного микшера (на панели задач), никакого эффекта нет - звуковая карта выводит один и тот же (полный) уровень независимо от уровня, о котором говорит система. Единственный способ изменить уровень вывода - использовать настраиваемое приложение, которое разработчики оборудования предоставляют с помощью карты.
Функция IAudioEndpointVolume :: QueryHardwareSupport возвращает ENDPOINT_HARDWARE_SUPPORT_VOLUME, чтобы она могла это сделать.
Такое поведение существует для ввода и вывода на многих устройствах.
Возможно, это ошибка окна?
Это можно обойти это путем эмуляции (масштабирования) вывода, но это не является предпочтительным, поскольку оно не является функционально идентичным - лучше, чтобы аудиоинтерфейс выполнял масштабирование (особенно для ввода, если он включает предусилитель) ,
Возможно, устройство не реализует стандартные методы Windows. Вы можете попробовать отладить приложение поставщика и посмотреть, что он делает. Вероятно, он отправляет некоторые пользовательские команды или что-то в этом роде. – Luke 2010-12-08 16:47:55