<Return[MN]><Top>

midiOutSetVolume

Declare Function Api_midiOutSetVolume& Lib "winmm" Alias "midiOutSetVolume" (ByVal hmo&, ByVal dwVolume&)

Declare Function midiOutSetVolume Lib "winmm" (ByVal hmo As Long, ByVal dwVolume As Long) As Long

MIDI 出力デバイスのボリュームを設定する。

パラメータ
hmo
    オープンされている MIDI 出力デバイスのハンドルを指定する。このパラメータには、HMIDIOUT にキャストされた MIDI ストリームのハンド

    ルも指定できる。また、このパラメータにはデバイス識別子も指定できる。
dwVolume
    新しいボリューム設定を指定する。下位ワードには左チャネルのボリューム設定を指定し、上位ワードには右チャネルのボリューム設定を指

    定する。0xFFFF は最大ボリュームを表し、0x0000 は無音を表す。
    デバイスが左右両方のボリュームコントロールをサポートしていない場合、dwVolume パラメータの下位ワードにはモノラルのボリュームレベル

    を指定する。上位ワードは無視する。

戻り値
    関数が成功すると、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 へ増

    加した場合では、知覚されるボリュームの増加が同じであることを意味する。