midiOutSetVolume 関数 (mmeapi.h)

midiOutSetVolume 関数は、MIDI 出力デバイスの音量を設定します。

構文

MMRESULT midiOutSetVolume(
  HMIDIOUT hmo,
  DWORD    dwVolume
);

パラメーター

hmo

開いている MIDI 出力デバイスにハンドルします。 このパラメーターには、 HMIDIOUT にキャストされている限り、MIDI ストリームのハンドルを含めることもできます。 このパラメーターには、デバイス識別子を指定することもできます。

dwVolume

新しいボリューム設定。 下位ワードには左チャネルのボリューム設定が含まれており、上位ワードには右チャネル設定が含まれています。 0xFFFFの値はボリューム全体を表し、0x0000の値は無音です。

デバイスが左右両方のボリューム制御をサポートしていない場合、 dwVolume の下位ワードは mono ボリューム レベルを指定し、上位ワードは無視されます。

戻り値

成功した場合はMMSYSERR_NOERRORを返し、それ以外の場合はエラーを返します。 考えられるエラー値は次のとおりです。

リターン コード 説明
MMSYSERR_INVALHANDLE
指定されたデバイス ハンドルが無効です。
MMSYSERR_NOMEM
システムはメモリを割り当てまたはロックできません。
MMSYSERR_NOTSUPPORTED
関数はサポートされていません。

注釈

デバイス識別子を使用する場合、 midiOutSetVolume 呼び出しの結果は、デバイスのすべてのインスタンスに適用されます。 デバイス ハンドルが使用されている場合、結果はデバイス ハンドルによって参照されるデバイスのインスタンスにのみ適用されます。

すべてのデバイスでボリュームの変更がサポートされているわけではありません。 midiOutGetDevCaps 関数と MIDICAPS_VOLUME フラグを使用してデバイスに対してクエリを実行することで、デバイスがデバイスをサポートしているかどうかを判断できます。

また、 midiOutGetDevCaps 関数と MIDICAPS_LRVOLUME フラグを使用してデバイスに対してクエリを実行することで、デバイスが左右のチャネルの両方でボリューム制御をサポートしているかどうかを判断することもできます。

ボリューム レベル制御の完全な 16 ビットをサポートしていないデバイスは、要求されたボリューム設定の上位ビットを使用します。 たとえば、4 ビットのボリューム制御をサポートするデバイスでは、ボリューム レベルの値 (0x4000、0x43be、0x4fff) に対して同じボリューム設定が生成されます。 midiOutGetVolume 関数は、デバイスの機能に関係なく、midiOutSetVolume によって設定された完全な 16 ビット値を返します。

ボリューム設定は対数的に解釈されます。 つまり、ボリューム レベルを0x5000から0x6000に増やすと、ボリュームレベルが0x4000から0x5000に増えるのと同じになります。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー mmeapi.h (Windows.h を含む)
Library Winmm.lib
[DLL] Winmm.dll

こちらもご覧ください

MIDI 関数