次の方法で共有


midiOutCacheDrumPatches 関数 (mmeapi.h)

midiOutCacheDrumPatches 関数は、内部 MIDI シンセサイザー デバイスに対して、キーベースのパーカッション パッチの指定されたセットを事前に読み込んでキャッシュすることを要求します。

構文

MMRESULT midiOutCacheDrumPatches(
  HMIDIOUT hmo,
  UINT     uPatch,
  LPWORD   pwkya,
  UINT     fuCache
);

パラメーター

hmo

開いた MIDI 出力デバイスへのハンドル。 このデバイスは、内部 MIDI シンセサイザーである必要があります。 このパラメーターは、 HMIDIOUT にキャストされた MIDI ストリームのハンドルにすることもできます。

uPatch

使用する必要があるドラムパッチ番号。 既定のドラム パッチをキャッシュするには、このパラメーターを 0 に設定する必要があります。

pwkya

キャッシュまたはキャッシュ解除する指定されたパーカッション パッチのキー番号を示す KEYARRAY 配列へのポインター。

fuCache

キャッシュ操作のオプション。 次のいずれかのフラグを指定できます。

意味
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 メンバーをテストします。

要件

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

こちらもご覧ください

MIDI 関数