■Windowsサウンド出力プログラムインタフェースについて

WindowsPCのスピーカーでサウンド(音声)を出力する場合、OSの管理機能を使うことが多いと思います。

音楽と光が連動する光音共演コンピュータのように、もし音声出力をプログラムでコントロールしようとした場合、MicroSoft社が提供するWaveOutAPI等を使うことになります。

筆者もWindowsPCのサウンド出力をコントロールする必要があり、調べましたので共有します。

下記に示すwaveOutGetDevCaps関数は、サウンド出力デバイスの性能を取得するものです。

waveOutCapsDev

この関数を呼び出すと、WaveOutCaps構造体にサウンド出力デバイスの情報が返されます。

waveOutCapsStructureこの構造体の中のszPname[]がデバイスの製造メーカーを表す文字列です。複数の出力デバイスがある場合、それらを区別するために有力となる情報です。

dwSupportは、このサウンド出力デバイスのサポートに関する情報です。この中にWAVECAPS_VOLUMEというフラグがあります。このデバイスがプログラミングインタフェースから音量の制御ができるかを表します。筆者のPCで試したところ、なんとWAVECAPS_VOLUMEのフラグが立っていませんでした。プログラミングで音量の調整ができないようです。OSからの音量調整はできますが。サウンド出力をする場合には、上記API等を使ってプログラミングインタフェースがどのレベルで利用できるのか、事前に調査する必要があり浅生です。