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