Поделиться через


Структура 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

Задает идентификатор класса для мини-интерфейса драйвера синтезатора.

Flags

Указывает общие возможности драйвера. Этот элемент представляет собой битовое поле, значение которого равно нулю или битовой или одному или нескольким из следующих битов флага:

SYNTH_PC_DLS

Драйвер поддерживает скачиваемые примеры коллекций (уровень 1 DLLS).

SYNTH_PC_EXTERNAL

Синт представляет подключение к внешнему оборудованию.

SYNTH_PC_SOFTWARESYNTH

Драйвер реализует синтезатор программного обеспечения.

SYNTH_PC_MEMORYSIZEFIXED

Размер памяти, указанный в элементе MemorySize, является допустимым и представляет максимальный объем памяти в байтах. Этот флаг обычно устанавливается, если образец памяти не является системной памятью.

SYNTH_PC_GMINHARDWARE

Синт поддерживает общий звуковой набор MIDI в оборудовании.

SYNTH_PC_GSINHARDWARE

Синт поддерживает звуковой набор Roland GS в оборудовании.

SYNTH_PC_REVERB

Синт поддерживает реверб.

SYNTH_PC_DLS2

Драйвер поддерживает скачиваемые примеры коллекций (уровень 2 DLLS).

SYNTH_PC_SYSTEMMEMORY

Синт может использовать системную память.

MemorySize

Указывает объем образец памяти на устройстве (в байтах). Это поле должно содержать значение SYNTH_PC_SYSTEMMEMORY если устройство использует системную память для выборки памяти без ограничений на объем выделенной памяти.

MaxChannelGroups

Указывает максимальное количество групп каналов, поддерживаемых этим драйвером. Каждая группа каналов представляет набор 16 каналов MIDI и связан с ним все состояние, которое будет хранить аппаратное устройство MIDI, которое включает DLS, GM, GS, XG или другие сведения о режиме. Однако загрузки DLS являются драйверами и могут использоваться любой из групп каналов. Это предотвращает использование памяти путем скачивания нескольких копий одного и того же примера DLS, по одному на группу каналов.

MaxVoices

Указывает максимальное количество голосов, поддерживаемых устройством отрисовки. Если обработчик свойств не может указать допустимое число для этого элемента, он должен задать для него значение (ULONG)-1.

MaxAudioChannels

Указывает максимальное количество звуковых каналов, поддерживаемых устройством отрисовки. Если обработчик свойств не может указать допустимое число для этого элемента, он должен задать для него значение (ULONG)-1.

EffectFlags

Указывает эффекты, которые устройство отрисовки может производить. Этот элемент представляет собой битовое поле, значение которого равно нулю или битовой или битовой части следующих битов флага:

SYNTH_EFFECT_REVERB

Устройство отрисовки может привести к эффекту ревербации.

SYNTH_EFFECT_CHORUS

Отрисовка устройства может привести к эффекту хора.

SYNTH_EFFECT_DELAY

Отрисовка устройства может привести к эффекту задержки.

Если устройство поддерживает ни одну из этих возможностей, задайте для этого элемента значение SYNTH_EFFECT_NONE (ноль).

Description[128]

Содержит текстовое описание устройства. Этот элемент представляет собой массив WCHAR, содержащий строку, завершающую значение NULL (например, "Microsoft MPU-401").

Замечания

KSPROPERTY_SYNTH_CAPS запрос get-property использует структуру SYNTHCAPS для получения возможностей устройства синтезатора из мини-драйвера DMus.

SYNTH_CAPS похож на структуру DMUS_PORTCAPS, описанную в документации по пакету SDK для Microsoft Windows.

В примере драйвера DMusUART в комплекте драйверов Windows (WDK) обработчик свойств 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 задает элемент guid Guid структуры SYNTHCAPS как CLSID_MiniportDriverDMusUART или CLSID_MiniportDriverDMusUARTCapture. Один из элементов Guid зависит от того, является ли целевой узел (тип KSNODETYPE_SYNTHESIZER) для запроса свойств находится на пути к данным, обрабатывающим данные отрисовки или записи данных. Оба идентификатора класса определены в файле заголовка Dmusicks.h.

Требования

Требование Ценность
заголовка dmusprop.h (include Dmusprop.h)

См. также

KSNODETYPE_SYNTHESIZER

KSPROPERTY_SYNTH_CAPS