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이거나 다음 플래그 비트 중 하나 이상의 비트 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 샘플의 여러 복사본을 다운로드하여 메모리를 낭비하지 않습니다.

MaxVoices

렌더링 디바이스에서 지원하는 최대 음성 수를 지정합니다. 속성 처리기가 이 멤버에 유효한 숫자를 제공할 수 없는 경우 멤버를 (ULONG)-1로 설정해야 합니다.

MaxAudioChannels

렌더링 디바이스에서 지원하는 최대 오디오 채널 수를 지정합니다. 속성 처리기가 이 멤버에 유효한 숫자를 제공할 수 없는 경우 멤버를 (ULONG)-1로 설정해야 합니다.

EffectFlags

렌더링 디바이스에서 생성할 수 있는 효과를 지정합니다. 이 멤버는 값이 0이거나 다음 플래그 비트의 비트 OR인 비트 필드입니다.

SYNTH_EFFECT_REVERB

렌더링 디바이스는 반향 효과를 생성할 수 있습니다.

SYNTH_EFFECT_CHORUS

렌더링 디바이스는 코러스 효과를 생성할 수 있습니다.

SYNTH_EFFECT_DELAY

렌더링 디바이스는 지연 효과를 생성할 수 있습니다.

디바이스에서 이러한 기능을 지원하지 않는 경우 이 멤버를 SYNTH_EFFECT_NONE(0)으로 설정합니다.

Description[128]

디바이스에 대한 텍스트 설명을 포함합니다. 이 멤버는 null로 끝나는 문자열(예: "Microsoft MPU-401")을 포함하는 WCHAR 배열입니다.

설명

KSPROPERTY_SYNTH_CAPS get-property 요청은 SYNTHCAPS 구조를 사용하여 DMus 미니포트 드라이버에서 신시사이저 디바이스의 기능을 검색합니다.

SYNTH_CAPS Microsoft Windows SDK 설명서에 설명된 DMUS_PORTCAPS 구조와 유사합니다.

WDK(Windows 드라이버 키트)의 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 값은 처리기가 UART에 연결될 때 발생하는 외부 신디사이저에 완전히 의존하기 때문에 실제 MaxVoicesMaxAudioChannels 제한을 알 수 없음을 나타냅니다. 코드의 다른 곳에서는 이전 예제에 표시되지 않지만 DMusUART 속성 처리기는 SYNTHCAPS 구조체의 Guid 멤버를 CLSID_MiniportDriverDMusUART 또는 CLSID_MiniportDriverDMusUARTCapture 설정합니다. Guid 멤버는 속성 요청의 대상 노드(KSNODETYPE_SYNTHESIZER 형식)가 렌더링 데이터를 처리하거나 데이터를 캡처하는 데이터 경로에 있는지 여부에 따라 달라집니다. 두 클래스 ID는 모두 헤더 파일 Dmusicks.h에 정의됩니다.

요구 사항

요구 사항
헤더 dmusprop.h(Dmusprop.h 포함)

추가 정보

KSNODETYPE_SYNTHESIZER

KSPROPERTY_SYNTH_CAPS