Condividi tramite


Struttura SYNTHCAPS (dmusprop.h)

La struttura SYNTHCAPS specifica le funzionalità di un sintetizzatore.

Sintassi

typedef struct _SYNTHCAPS {
  GUID  Guid;
  DWORD Flags;
  DWORD MemorySize;
  DWORD MaxChannelGroups;
  DWORD MaxVoices;
  DWORD MaxAudioChannels;
  DWORD EffectFlags;
  WCHAR Description[128];
} SYNTHCAPS, *PSYNTHCAPS;

Members

Guid

Specifica l'ID classe per l'interfaccia del driver miniport del sintetizzatore.

Flags

Specifica le funzionalità generali del driver. Questo membro è un campo di bit il cui valore è zero o l'OR bit per bit di uno o più dei bit di flag seguenti:

SYNTH_PC_DLS

Il driver supporta raccolte di esempi scaricabili (DLS Livello 1).

SYNTH_PC_EXTERNAL

Il synth rappresenta una connessione all'hardware esterno.

SYNTH_PC_SOFTWARESYNTH

Il driver implementa un sintetizzatore software.

SYNTH_PC_MEMORYSIZEFIXED

Le dimensioni di memoria specificate nel membro MemorySize sono valide e rappresentano la quantità massima di memoria campione in byte. Questo flag viene in genere impostato quando la memoria di esempio non è memoria di sistema.

SYNTH_PC_GMINHARDWARE

Il synth supporta il set di suoni MIDI generale nell'hardware.

SYNTH_PC_GSINHARDWARE

Il synth supporta il suono Roland GS impostato nell'hardware.

SYNTH_PC_REVERB

Il synth supporta il riverbero.

SYNTH_PC_DLS2

Il driver supporta raccolte di esempi scaricabili (DLS Livello 2).

SYNTH_PC_SYSTEMMEMORY

Il synth può usare la memoria di sistema.

MemorySize

Specifica la quantità di memoria di esempio nel dispositivo (in byte). Questo campo deve contenere il valore SYNTH_PC_SYSTEMMEMORY se il dispositivo usa la memoria di sistema per la memoria di esempio senza limitazioni sulla quantità di memoria allocata.

MaxChannelGroups

Specifica il numero massimo di gruppi di canali supportati da questo driver. Ogni gruppo di canali rappresenta un set di 16 canali MIDI e ha associato a esso tutto lo stato che un dispositivo hardware MIDI manterrà, che include DLS, GM, GS, XG o altre informazioni sulla modalità. I download DLS, tuttavia, sono per driver e possono essere usati da uno qualsiasi dei gruppi di canali. Ciò impedisce di sprecare memoria scaricando diverse copie dello stesso esempio di DLS, una per ogni gruppo di canali.

MaxVoices

Specifica il numero massimo di voci supportate dal dispositivo di rendering. Se il gestore della proprietà non è in grado di specificare un numero valido per questo membro, deve impostare il membro su (ULONG)-1.

MaxAudioChannels

Specifica il numero massimo di canali audio supportati dal dispositivo di rendering. Se il gestore della proprietà non è in grado di specificare un numero valido per questo membro, deve impostare il membro su (ULONG)-1.

EffectFlags

Specifica gli effetti che il dispositivo di rendering è in grado di produrre. Questo membro è un campo di bit il cui valore è zero o or bit per bit dei bit del flag seguente:

SYNTH_EFFECT_REVERB

Il dispositivo di rendering può produrre effetto riverbero.

SYNTH_EFFECT_CHORUS

Il dispositivo di rendering può produrre un effetto coro.

SYNTH_EFFECT_DELAY

Il dispositivo di rendering può produrre un effetto ritardo.

Se il dispositivo supporta nessuna di queste funzionalità, impostare questo membro su SYNTH_EFFECT_NONE (zero).

Description[128]

Contiene una descrizione testuale del dispositivo. Questo membro è una matrice WCHAR contenente una stringa con terminazione Null, ad esempio "Microsoft MPU-401".

Commenti

La richiesta get-property KSPROPERTY_SYNTH_CAPS usa la struttura SYNTHCAPS per recuperare le funzionalità di un dispositivo sintetizzatore da un driver miniport DMus.

SYNTH_CAPS è simile alla struttura DMUS_PORTCAPS, descritta nella documentazione Microsoft Windows SDK.

Nel driver di esempio DMusUART in Windows Driver Kit (WDK), il gestore proprietà KSPROPERTY_SYNTH_CAPS imposta i membri della struttura SYNTHCAPS sui valori seguenti:

  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;

In questo esempio, i valori di 0xFFFFFFFF indicano che il gestore non ha modo di conoscere i limiti effettivi di MaxVoices e MaxAudioChannels perché dipendono completamente da qualsiasi sintetizzatore esterno sia connesso all'UART. Altrove nel codice, ma non illustrato nell'esempio precedente, il gestore della proprietà DMusUART imposta il membro Guid della struttura SYNTHCAPS su CLSID_MiniportDriverDMusUART o CLSID_MiniportDriverDMusUARTCapture. Il membro Guid è impostato su dipende dal fatto che il nodo di destinazione (di tipo KSNODETYPE_SYNTHESIZER) per la richiesta di proprietà si trovi in un percorso dati che gestisce i dati di rendering o di acquisizione. Entrambi gli ID di classe sono definiti nel file di intestazione Dmusicks.h.

Requisiti

Requisito Valore
Intestazione dmusprop.h (include Dmusprop.h)

Vedi anche

KSNODETYPE_SYNTHESIZER

KSPROPERTY_SYNTH_CAPS