ボリューム コントロール
共有モード ストリームを管理するクライアントは、通常、ISimpleAudioVolume と IAudioSessionEvents インターフェイス WASAPI を使用して、ストリーム ボリューム レベルを制御および監視します。 クライアントは、ISimpleAudioVolume インターフェイスのメソッドを使用して、共有モード ストリームが属 オーディオ セッションのボリューム レベルを取得および設定できます。 Sndvol または別のアプリケーションがセッション ボリューム レベルを変更した場合、クライアントは IAudioSessionEvents インターフェイスを介して変更の通知を受け取ることができます。
排他モード ストリームを管理するクライアントは、通常、IAudioEndpointVolume を使用し、EndpointVolume API の IAudioEndpointVolumeCallbackインターフェイスをして、ストリーム ボリューム レベルを制御および監視します。 IAudioEndpointVolume インターフェイスのメソッドを使用して、クライアントは、オーディオ エンドポイント デバイスのボリューム レベルを取得および設定。 Sndvol または別のアプリケーションがエンドポイント デバイスのボリューム レベルを変更した場合、クライアントは IAudioEndpointVolumeCallback インターフェイスを介して変更の通知を受け取ることができます。
オーディオセッションで説明されているように、Sndvolはシステムボリュームコントロールプログラムです。 システム内のオーディオ レンダリング エンドポイント デバイスのボリューム コントロールが表示されます。 (現時点では、オーディオ キャプチャ エンドポイント デバイスのボリューム コントロールは表示されません)。特定のデバイスのボリューム コントロールを表示するには、メニュー バー [デバイス] をクリックし、使用可能なデバイスの一覧からデバイス名を選択します。
Sndvol ウィンドウは、デバイスのボリューム コントロールを 2 つのグループに分けます。 ウィンドウの左側にあるグループ ボックスには、デバイス ラベルが付けられます。 デバイス ボックスには、IAudioEndpointVolume インターフェイスによって制御される単一のボリューム コントロールが含まれています。 ユーザーがこのボリューム コントロールに対して行った変更は、IAudioEndpointVolumeCallback インターフェイスを使用して監視できます。
Sndvol ウィンドウの右側にあるグループ ボックスには、アプリケーション ラベルが付けられます。 アプリケーション ボックスには、現在デバイスを共有しているアプリケーションのボリューム コントロールが含まれています。 デバイスを共有モードで使用するアプリケーションの場合、ボリューム コントロールは、ISimpleAudioVolume インターフェイスによって制御されるボリューム レベルを表します。 ユーザーがこれらのボリューム コントロールに加えた変更は、IAudioSessionEvents インターフェイスを介して監視できます。
共有モード アプリケーションでは、IAudioSessionEvents インターフェイスを使用して、ユーザーが Sndvol ウィンドウの [アプリケーション] ボックスでアプリケーションのボリューム コントロールに加える変更を監視できますが、アプリケーションでは、関連のない他のアプリケーションのボリューム コントロールへの変更を監視することはできません。 同様に、アプリケーションは、ISimpleAudioVolume インターフェイスを介してオーディオ セッションのボリューム レベルを変更できますが、関連のない他のアプリケーションに属するセッションのボリューム レベルを変更することはできません。
ただし、2 つ以上の関連アプリケーション (または同じアプリケーションのインスタンス) は、Sndvol ウィンドウの アプリケーション ボックスで、同じプロセス間セッションにオーディオ ストリームを割り当てるか、それぞれのセッションを同じグループ化パラメーターに関連付けることによって、同じボリューム コントロールを共有できます。 詳細については、「オーディオ セッションの とグループ化パラメーターの を参照してください。
WASAPI には、IChannelAudioVolumeと IAudioStreamVolumeの 2 つの追加インターフェイスが用意されており、共有モード ストリームのボリューム レベルを制御します。 これらのインターフェイスは、主に、セッション内の個々のチャネルまたはセッション内の個々のストリームのボリューム レベルを制御する必要がある特殊なクライアントによって使用されます。
DeviceTopology API を使用すると、クライアントはオーディオ アダプターのトポロジ内のボリューム コントロールにアクセスできます。 ただし、排他モード ストリームを管理するクライアントは、通常、DeviceTopology API の代わりに EndpointVolume API を使用してストリーム ボリューム レベルを制御します。 EndpointVolume API は、エンドポイント デバイスのボリュームの制御を 2 つの方法で簡略化します。 まず、エンドポイント デバイスがハードウェア ボリューム コントロールを実装する場合、DeviceTopology API では、クライアントがハードウェア コントロールを検索してデバイス トポロジを走査する必要があります。 これに対し、EndpointVolume API は、クライアントのハードウェア ボリューム コントロールを自動的に検索します。 次に、エンドポイント デバイスがハードウェア ボリューム コントロールを実装していない場合、DeviceTopology クライアントはソフトウェアでボリューム コントロールを実装する必要があります。 これに対し、EndpointVolume API は、不足しているハードウェア コントロールのソフトウェア ボリューム コントロールに自動的に置き換まれます。
次のセクションでは、オーディオ セッションとオーディオ エンドポイント デバイスのボリューム コントロールについて説明します。
- セッション ボリューム コントロールの
- エンドポイント ボリューム コントロール の
- EndpointVolume API の
- ボリューム コントロール をAudio-Tapered する
- ピークメーター
関連トピック