SYNTHCAPS 構造体 (dmusprop.h)
SYNTHCAPS 構造体は、シンセサイザーの機能を指定します。
構文
typedef struct _SYNTHCAPS {
GUID Guid;
DWORD Flags;
DWORD MemorySize;
DWORD MaxChannelGroups;
DWORD MaxVoices;
DWORD MaxAudioChannels;
DWORD EffectFlags;
WCHAR Description[128];
} SYNTHCAPS, *PSYNTHCAPS;
メンバー
Guid
シンセサイザーのミニポート ドライバー インターフェイスのクラス ID を指定します。
Flags
ドライバーの一般的な機能を指定します。 このメンバーは、値が 0 であるか、次のフラグ ビットの 1 つ以上のビットごとの OR であるビットフィールドです。
SYNTH_PC_DLS
ドライバーは、ダウンロード可能なサンプル コレクション (DLS レベル 1) をサポートしています。
SYNTH_PC_EXTERNAL
シンセは、外部ハードウェアへの接続を表します。
SYNTH_PC_SOFTWARESYNTH
ドライバーはソフトウェア シンセサイザーを実装します。
SYNTH_PC_MEMORYSIZEFIXED
MemorySize メンバーで指定されたメモリ サイズは有効であり、サンプル メモリの最大量 (バイト単位) を表します。 通常、このフラグは、サンプル メモリがシステム メモリでない場合に設定されます。
SYNTH_PC_GMINHARDWARE
シンセは、ハードウェアに設定された一般的なMIDIサウンドをサポートしています。
SYNTH_PC_GSINHARDWARE
シンセは、ハードウェアにローランドGSサウンドセットをサポートしています。
SYNTH_PC_REVERB
シンセはリバーブをサポートしています。
SYNTH_PC_DLS2
ドライバーは、ダウンロード可能なサンプル コレクション (DLS レベル 2) をサポートしています。
SYNTH_PC_SYSTEMMEMORY
シンセは、システムメモリを使用することができます。
MemorySize
デバイス上のサンプル メモリの量 (バイト単位) を指定します。 デバイスがサンプル メモリにシステム メモリを使用し、割り当てられたメモリの量に制限がない場合は、このフィールドにSYNTH_PC_SYSTEMMEMORY値を含める必要があります。
MaxChannelGroups
このドライバーがサポートするチャネル グループの最大数を指定します。 各チャンネルグループは、16個のMIDIチャンネルのセットを表し、DLS、GM、GS、XG、またはその他のモード情報を含むMIDIハードウェアデバイスが保持するすべての状態に関連付けられています。 ただし、DLS のダウンロードはドライバーごとに行われ、どのチャネル グループでも使用できます。 これにより、同じ DLS サンプルの複数のコピー (チャネル グループごとに 1 つ) をダウンロードすることで、メモリの無駄を防ぐことができます。
MaxVoices
レンダリング デバイスでサポートされる音声の最大数を指定します。 プロパティ ハンドラーがこのメンバーの有効な番号を指定できない場合は、メンバーを (ULONG)-1 に設定する必要があります。
MaxAudioChannels
レンダリング デバイスでサポートされるオーディオ チャネルの最大数を指定します。 プロパティ ハンドラーがこのメンバーの有効な番号を指定できない場合は、メンバーを (ULONG)-1 に設定する必要があります。
EffectFlags
レンダリング デバイスが生成できる効果を指定します。 このメンバーは、値が 0 であるか、次のフラグ ビットのビットごとの OR であるビットフィールドです。
SYNTH_EFFECT_REVERB
レンダリング デバイスは、リバーブ効果を生成できます。
SYNTH_EFFECT_CHORUS
レンダリング デバイスは、コーラス効果を生成できます。
SYNTH_EFFECT_DELAY
レンダリング デバイスでは、遅延効果が生じる可能性があります。
デバイスでこれらの機能がサポートされていない場合は、このメンバーを SYNTH_EFFECT_NONE (ゼロ) に設定します。
Description[128]
デバイスのテキストの説明が含まれます。 このメンバーは、null で終わる文字列 ("Microsoft MPU-401" など) を含む WCHAR 配列です。
注釈
KSPROPERTY_SYNTH_CAPS get-property 要求では、SYNTHCAPS 構造体を使用して、DMus ミニポート ドライバーからシンセサイザー デバイスの機能を取得します。
SYNTH_CAPSは、Microsoft Windows SDKドキュメントで説明されているDMUS_PORTCAPS構造に似ています。
Windows Driver Kit (WDK) の DMusUART サンプル ドライバーでは、KSPROPERTY_SYNTH_CAPS プロパティ ハンドラーによって SYNTHCAPS 構造体のメンバーが次の値に設定されます。
SYNTHCAPS *caps = (SYNTHCAPS*)pRequest->Value;
...
caps->Flags = SYNTH_PC_EXTERNAL;
caps->MemorySize = 0;
caps->MaxChannelGroups = 1;
caps->MaxVoices = 0xFFFFFFFF; // (ULONG)-1
caps->MaxAudioChannels = 0xFFFFFFFF; // (ULONG)-1
caps->EffectFlags = 0;
この例では、0xFFFFFFFF値は、ハンドラーが実際の MaxVoices と MaxAudioChannels の制限を認識する方法がないことを示しています。これは、UART に接続される外部シンセサイザーに完全に依存するためです。 コード内の他の場所で、前の例では示されていませんが、DMusUART プロパティ ハンドラーは、SYNTHCAPS 構造体の Guid メンバーを CLSID_MiniportDriverDMusUART または CLSID_MiniportDriverDMusUARTCaptureに設定します。 Guid メンバーが に設定されているのは、プロパティ要求のターゲット ノード (KSNODETYPE_SYNTHESIZER型) が、データのレンダリングまたはキャプチャ データを処理するデータ パス上にあるかどうかによって異なります。 両方のクラス ID は、ヘッダー ファイル Dmusicks.h で定義されています。
要件
要件 | 値 |
---|---|
Header | dmusprop.h (Dmusprop.h を含む) |