<Return[MN]><Top>

midiOutCacheDrumPatches

Declare Function Api_midiOutCacheDrumPatches& Lib "winmm" Alias "midiOutCacheDrumPatches" (ByVal hmo&, ByVal wPatch&, lpKeyArray&, ByVal wFlags&)

Declare Function midiOutCacheDrumPatches Lib "winmm" (ByVal hmo As Long, ByVal wPatch As Long, lpKeyArray As Long, ByVal wFlags As Long) As Long

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

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

    には、HMIDIOUT にキャストされた MIDI ストリームのハンドルも指定できる。

wPatch
    使用するドラムパッチ番号を指定する。既定のドラムパッチをキャッシュするには、このパラメータを 0 に設定する。
lpKeyArray
    キャッシュする(またはキャッシュから消去する)指定のパーカッションパッチのキー番号を表す、KEYARRAY 配列のアドレスを指定する。
wFlags
    キャッシュ処理のオプションを指定する。次のフラグのいずれかになる。
    MIDI_CACHE_ALL
        指定されたすべてのパッチをキャッシュする。すべてをキャッシュできない場合は何もキャッシュせず、KEYARRAY 配列を消去して

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

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

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

    値                                             

説明                                                                     

    MMSYSERR_INVALFLAG

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

    MMSYSERR_INVALHANDLE

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

    MMSYSERR_INVALPARAM

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

    MMSYSERR_NOMEM

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

    MMSYSERR_NOTSUPPORTED

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


解説
    シンセサイザによっては、すべてのパーカッションパッチを同時にロードし続けることができないものがある。パッチをキャッシュすることにより、

    指定されたパッチが利用可能になる。
    KEYARRAY 配列の各要素は、128 個あるキーベースのパーカッションパッチの 1 つに該当し、その特定のパッチを使う 16 の MIDI チャネ

    ルに対応するビット集合を保持する。最下位ビットは物理チャネル 0、最上位ビットは物理チャネル 15 を表す。たとえば、キー番号 60 の

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

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

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