次の方法で共有


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値は、ハンドラーが実際の MaxVoicesMaxAudioChannels の制限を認識する方法がないことを示しています。これは、UART に接続される外部シンセサイザーに完全に依存するためです。 コード内の他の場所で、前の例では示されていませんが、DMusUART プロパティ ハンドラーは、SYNTHCAPS 構造体の Guid メンバーを CLSID_MiniportDriverDMusUART または CLSID_MiniportDriverDMusUARTCaptureに設定します。 Guid メンバーが に設定されているのは、プロパティ要求のターゲット ノード (KSNODETYPE_SYNTHESIZER型) が、データのレンダリングまたはキャプチャ データを処理するデータ パス上にあるかどうかによって異なります。 両方のクラス ID は、ヘッダー ファイル Dmusicks.h で定義されています。

要件

要件
Header dmusprop.h (Dmusprop.h を含む)

こちらもご覧ください

KSNODETYPE_SYNTHESIZER

KSPROPERTY_SYNTH_CAPS