midiOutCachePatches 関数 (mmeapi.h)
midiOutCachePatches 関数は、内部 MIDI シンセサイザー デバイスに事前読み込みを要求し、指定されたパッチのセットをキャッシュします。
構文
MMRESULT midiOutCachePatches(
HMIDIOUT hmo,
UINT uBank,
LPWORD pwpa,
UINT fuCache
);
パラメーター
hmo
開いた MIDI 出力デバイスへのハンドル。 このデバイスは、内部 MIDI シンセサイザーである必要があります。 このパラメーターは、 HMIDIOUT にキャストされた MIDI ストリームのハンドルにすることもできます。
uBank
使用する必要があるパッチの銀行。 既定のパッチ バンクをキャッシュするには、このパラメーターを 0 に設定する必要があります。
pwpa
キャッシュまたはキャッシュ解除するパッチを示す PATCHARRAY 配列へのポインター。
fuCache
キャッシュ操作のオプション。 次のいずれかのフラグを指定できます。
値 | 意味 |
---|---|
MIDI_CACHE_ALL | 指定したすべてのパッチをキャッシュします。 すべてをキャッシュできない場合は、なしをキャッシュし、 PATCHARRAY 配列をクリアして、MMSYSERR_NOMEMを返します。 |
MIDI_CACHE_BESTFIT | 指定したすべてのパッチをキャッシュします。 すべてをキャッシュできない場合は、できるだけ多くのパッチをキャッシュし、キャッシュされたパッチを反映するように PATCHARRAY 配列を変更し、MMSYSERR_NOMEMを返します。 |
MIDI_CACHE_QUERY | PATCHARRAY 配列を変更して、現在キャッシュされているパッチを示します。 |
MIDI_UNCACHE | 指定したパッチをキャッシュ解除し、PATCHARRAY 配列をクリアします。 |
戻り値
成功した場合はMMSYSERR_NOERRORを返し、それ以外の場合はエラーを返します。 考えられるエラー値は次のとおりです。
リターン コード | 説明 |
---|---|
|
wFlags で指定されたフラグが無効です。 |
|
指定されたデバイス ハンドルが無効です。 |
|
lpPatchArray が指す配列が無効です。 |
|
デバイスには、要求されたすべてのパッチをキャッシュするための十分なメモリがありません。 |
|
指定されたデバイスでは、パッチ キャッシュはサポートされていません。 |
注釈
一部のシンセサイザーでは、すべてのパッチを同時に読み込み続けず、MIDI プログラムの変更メッセージを受信したときにディスクからデータを読み込む必要があります。 パッチをキャッシュすると、指定したパッチがすぐに使用できるようになります。
PATCHARRAY 配列の各要素は、128 個のパッチの 1 つを表し、特定のパッチを使用する 16 個の MIDI チャネルごとにビットが設定されています。 最下位ビットは物理チャネル 0 を表し、最上位ビットは物理チャネル 15 (0x0F) を表します。 たとえば、パッチ 0 が物理チャネル 0 と 8 で使用されている場合、要素 0 は 0x0101 に設定されます。
この機能は、内部 MIDI シンセサイザー デバイスにのみ適用されます。 すべての内部シンセサイザーがパッチ キャッシュをサポートしているわけではありません。 デバイスがパッチ キャッシュをサポートしているかどうかを確認するには、MIDICAPS_CACHE フラグを使用して、midiOutGetDevCaps 関数によって入力された MIDIOUTCAPS 構造体の dwSupport メンバーをテストします。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | mmeapi.h (Windows.h を含む) |
Library | Winmm.lib |
[DLL] | Winmm.dll |