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 で定義されています。
必要条件
要件 | 価値 |
---|---|
ヘッダー | dmusprop.h (Dmusprop.h を含む) |