portmixer に関連する Audacity のバグを修正しようとしています。出力/入力レベルは Mac バージョンの portmixer を使用して設定できますが、Windows では常にではありません。portmixer のウィンドウ コードをデバッグして、そこで動作するようにしています。
IAudioEndpointVolume::SetMasterVolumeLevelScalar を使用してマスター ボリュームを設定すると、オンボード サウンドには問題なく機能しますが、RME Fireface 400 のようなプロ用外部 USB または Firewire インターフェイスを使用すると、そのデバイスの Windows のサウンド コントロール パネルに反映されますが、出力ボリュームは変化しません。 、およびシステムミキサーでも。
また、プログラムの外では、システム ミキサーのマスター スライダー (タスクバー内) を変更しても効果はありません。システムが示すレベルに関係なく、サウンドカードは同じ (フル) レベルを出力します。出力レベルを変更する唯一の方法は、ハードウェア開発者がカードで提供するカスタム アプリを使用することです。
IAudioEndpointVolume::QueryHardwareSupport 関数は ENDPOINT_HARDWARE_SUPPORT_VOLUME を返すので、これを実行できるはずです。
この動作は、多くのデバイスの入力と出力の両方に存在します。
これはおそらくウィンドウのバグですか?
出力をエミュレート (スケーリング) することでこれを回避することは可能ですが、機能的に同一ではないため、これは好ましくありません。オーディオ インターフェイスにスケーリングを行わせることをお勧めします (特に入力にプリアンプが含まれる場合)。