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
指定驅動程式的一般功能。 這個成員是位欄位元,其值為零或位 OR 的一個或多個下列旗標位:
SYNTH_PC_DLS
驅動程式支援可下載的範例集合, (DLS 層級 1) 。
SYNTH_PC_EXTERNAL
合成器代表與外部硬體的連線。
SYNTH_PC_SOFTWARESYNTH
驅動程式會實作軟體合成器。
SYNTH_PC_MEMORYSIZEFIXED
MemorySize 成員中提供的記憶體大小有效,並且代表以位元組為單位的樣本記憶體數量上限。 當範例記憶體不是系統記憶體時,通常會設定此旗標。
SYNTH_PC_GMINHARDWARE
合成器支持硬體中的一般MIDI音效集。
SYNTH_PC_GSINHARDWARE
synth 支持硬體中的 Roland GS 音效集。
SYNTH_PC_REVERB
合成器支援殘響。
SYNTH_PC_DLS2
驅動程式支援可下載的範例集合, (DLS 層級 2) 。
SYNTH_PC_SYSTEMMEMORY
合成器可以使用系統記憶體。
MemorySize
指定裝置上的範例記憶體數量, (位元組) 。 如果裝置針對範例記憶體使用系統記憶體,且配置記憶體數量沒有限制,此欄位應該包含值SYNTH_PC_SYSTEMMEMORY。
MaxChannelGroups
指定此驅動程式支援的通道群組數目上限。 每個通道群組都代表一組 16 個 MIDI 通道,並與 MIDI 硬體裝置保留的所有狀態相關聯,其中包括 DLS、GM、GS、XG 或其他模式資訊。 不過,DLS 下載是每個驅動程式,可供任何通道群組使用。 這可防止下載相同 DLS 範例的數個複本,每個通道群組一個,以防止記憶體浪費。
MaxVoices
指定轉譯裝置支援的語音數目上限。 如果屬性處理程式無法為此成員提供有效的數位,它應該將成員設定為 (ULONG) -1。
MaxAudioChannels
指定轉譯裝置支援的音訊通道數目上限。 如果屬性處理程式無法為此成員提供有效的數位,它應該將成員設定為 (ULONG) -1。
EffectFlags
指定轉譯裝置能夠產生的效果。 這個成員是位欄位元,其值為零或下列旗標位的位 OR:
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結構,如 Microsoft Windows SDK 檔中所述。
在 Windows 驅動程式套件中的 DMusUART 範例驅動程式 (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 屬性處理程式會將 SYNTHCAPS 結構的 Guid 成員設定為 CLSID_MiniportDriverDMusUART 或 CLSID_MiniportDriverDMusUARTCapture。 Guid 成員設定為 ,取決於屬性要求類型 (的目標節點 (KSNODETYPE_SYNTHESIZER) 位於處理轉譯數據或擷取數據的數據路徑上。 這兩個類別標識碼都是在頭檔 Dmusicks.h 中定義。
規格需求
需求 | 值 |
---|---|
標頭 | dmusprop.h (包含 Dmusprop.h) |