<Return[MN]><Top>

midiOutCachePatches

Declare Function Api_midiOutCachePatches& Lib "winmm" Alias "midiOutCachePatches" (ByVal hmo&, ByVal wBank&, lpPatchArray&, ByVal wFlags&)

Declare Function midiOutCachePatches Lib "winmm" (ByVal hmo As Long, ByVal wBank As Long, lpPatchArray As Long, ByVal wFlags As Long) As Long

内蔵 MIDI シンセサイザデバイスをあらかじめロードし、指定された一連のパッチをキャッシュするように要求する。

パラメータ
hmo
    オープンされている MIDI 出力デバイスのハンドルを指定する。このデバイスは内蔵 MIDI シンセサイザでなければならない。このパラメータ

    には、HMIDIOUT にキャストされた MIDI ストリームのハンドルも指定できる。
wBank
    使用するパッチのバンクを指定する。既定のパッチバンクをキャッシュするには、このパラメータに 0 を設定する。
lpPatchArray
    キャッシュする(またはキャッシュから消去する)パッチを表す、PATCHARRAY 配列のアドレスを指定する。

wFlags
    キャッシュ処理のオプションを指定する。次のフラグのいずれかになる。
    MIDI_CACHE_ALL
        指定されたすべてのパッチをキャッシュする。すべてをキャッシュできない場合は何もキャッシュせず、PATCHARRAY 配列を消去して

        MMSYSERR_NOMEM を返す。
    MIDI_CACHE_BESTFIT
        指定されたすべてのパッチをキャッシュする。すべてをキャッシュできない場合は可能な数だけパッチをキャッシュし、キャッシュされたパッチ

        を反映するように PATCHARRAY 配列を更新して、MMSYSERR_NOMEM を返す。
    MIDI_CACHE_QUERY
        どのパッチが現在キャッシュされているかを示すために、PATCHARRAY 配列を更新する。
    MIDI_UNCACHE
        指定されたパッチをキャッシュから消去し、PATCHARRAY 配列を消去する。

戻り値
    関数が成功すると、MMSYSERR_NOERROR が返る。関数が失敗すると、エラーが返る。返されるエラー値は次のとおりである。

    値                                             

説明                                                                         

    MMSYSERR_INVALFLAG

wflags パラメータで指定されたフラグは無効である。 

    MMSYSERR_INVALHANDLE

指定されたデバイスハンドルは無効である。

    MMSYSERR_INVALPARAM

lpPatchArray パラメータで指定された配列は無効である。

    MMSYSERR_NOMEM

指定されたパッチすべてをキャッシュするには、デバイスのメモリが足りない。

    MMSYSERR_NOTSUPPORTED

指定されたデバイスは、パッチキャッシングをサポートしていない。


解説
    シンセサイザによっては、すべてのパッチを同時にロードし続けることができないために、MIDI プログラムチェンジメッセージの受信時にデータ

    をディスクからロードしなければならないものがある。パッチをキャッシュすることにより、指定されたパッチがただちに利用可能になる。
    PATCHARRAY 配列の各要素は、128 個あるパッチの 1 つに該当し、その特定のパッチを使う 16 の MIDI チャネルに対応するビット集合

    を保持する。最下位ビットは物理チャネル 0、最上位ビットは物理チャネル 15(0x0F)を表する。たとえば、パッチ 0 が物理チャネル 0 およ

    び 8 に使われると、要素 0 は 0x0101 に設定される。
    この関数は内蔵 MIDI シンセサイザデバイスにだけ適用される。すべてのシンセサイザがパッチキャッシングをサポートしているわけではな

    い。デバイスがパッチキャッシングをサポートしているかどうかを調べるには、MIDICAPS_CACHE フラグを使って、midiOutGetDevCaps 関

    数によって設定される MIDIOUTCAPS 構造体の dwSupport メンバを調べる。