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