次の方法で共有


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を返し、それ以外の場合はエラーを返します。 考えられるエラー値は次のとおりです。

リターン コード 説明
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 メンバーをテストします。

要件

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

こちらもご覧ください

MIDI 関数