#ifndef _DMusProp_ #define _DMusProp_ //#include "dmusbuff.h" #define STATIC_KSDATAFORMAT_SUBTYPE_DIRECTMUSIC\ 0x1a82f8bc, 0x3f8b, 0x11d2, {0xb7, 0x74, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1} DEFINE_GUIDSTRUCT("1a82f8bc-3f8b-11d2-b774-0060083316c1", KSDATAFORMAT_SUBTYPE_DIRECTMUSIC); #define KSDATAFORMAT_SUBTYPE_DIRECTMUSIC DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DIRECTMUSIC) #define STATIC_KSNODETYPE_DMSYNTH\ 0x94824f88, 0x6183, 0x11d2, {0x8f, 0x7a, 0x0, 0xc0, 0x4f, 0xbf, 0x8f, 0xef} DEFINE_GUIDSTRUCT("94824F88-6183-11d2-8F7A-00C04FBF8FEF", KSNODETYPE_DMSYNTH); #define KSNODETYPE_DMSYNTH DEFINE_GUIDNAMED(KSNODETYPE_DMSYNTH) #define STATIC_KSNODETYPE_DMSYNTH_CAPS\ 0xbca2a2f1, 0x93c6, 0x11d2, {0xba, 0x1d, 0x0, 0x0, 0xf8, 0x75, 0xac, 0x12} DEFINE_GUIDSTRUCT("bca2a2f1-93c6-11d2-ba1d-0000f875ac12", KSNODETYPE_DMSYNTH_CAPS); #define KSNODETYPE_DMSYNTH_CAPS DEFINE_GUIDNAMED(KSNODETYPE_DMSYNTH_CAPS) #define STATIC_KSPROPSETID_Synth_Dls\ 0xd523fa2c, 0xdee3, 0x11d1, {0xa7, 0x89, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12} DEFINE_GUIDSTRUCT("d523fa2c-dee3-11d1-a789-0000f875ac12", KSPROPSETID_Synth_Dls); #define KSPROPSETID_Synth_Dls DEFINE_GUIDNAMED(KSPROPSETID_Synth_Dls) typedef enum { KSPROPERTY_SYNTH_DLS_DOWNLOAD = 0, KSPROPERTY_SYNTH_DLS_UNLOAD, KSPROPERTY_SYNTH_DLS_COMPACT, KSPROPERTY_SYNTH_DLS_APPEND, KSPROPERTY_SYNTH_DLS_WAVEFORMAT } KSPROPERTY_SYNTH_DLS; typedef struct _SYNTH_BUFFER { ULONG BufferSize; PVOID BufferAddress; } SYNTH_BUFFER, *PSYNTH_BUFFER; typedef struct _SYNTHDOWNLOAD { HANDLE DownloadHandle; BOOL Free; } SYNTHDOWNLOAD, *PSYNTHDOWNLOAD; #define STATIC_KSPROPSETID_Synth\ 0xfedfae25L, 0xe46e, 0x11d1, {0xaa, 0xce, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12} DEFINE_GUIDSTRUCT("fedfae25-e46e-11d1-aace-0000f875ac12", KSPROPSETID_Synth); #define KSPROPSETID_Synth DEFINE_GUIDNAMED(KSPROPSETID_Synth) typedef enum { KSPROPERTY_SYNTH_VOLUME = 0, KSPROPERTY_SYNTH_VOLUMEBOOST, KSPROPERTY_SYNTH_CAPS, KSPROPERTY_SYNTH_PORTPARAMETERS, KSPROPERTY_SYNTH_CHANNELGROUPS, KSPROPERTY_SYNTH_VOICEPRIORITY, KSPROPERTY_SYNTH_LATENCYCLOCK, KSPROPERTY_SYNTH_RUNNINGSTATS } KSPROPERTY_SYNTH; #define SYNTH_PC_DLS (0x00000001) #define SYNTH_PC_EXTERNAL (0x00000002) #define SYNTH_PC_SOFTWARESYNTH (0x00000004) #define SYNTH_PC_MEMORYSIZEFIXED (0x00000008) #define SYNTH_PC_GMINHARDWARE (0x00000010) #define SYNTH_PC_GSINHARDWARE (0x00000020) #define SYNTH_PC_SYSTEMMEMORY (0x7fffffff) #if (NTDDI_VERSION < NTDDI_WINXP) #define SYNTH_PC_REVERB (0x00000040) #elif (NTDDI_VERSION >= NTDDI_WINXP) #define SYNTH_PC_XGINHARDWARE (0x00000040) #define SYNTH_PC_DLS2 (0x00000200) #define SYNTH_PC_REVERB (0x40000000) #endif typedef struct _SYNTHCAPS { GUID Guid; DWORD Flags; DWORD MemorySize; DWORD MaxChannelGroups; DWORD MaxVoices; DWORD MaxAudioChannels; DWORD EffectFlags; WCHAR Description[128]; } SYNTHCAPS, *PSYNTHCAPS; typedef struct _SYNTH_PORTPARAMS { DWORD ValidParams; DWORD Voices; DWORD ChannelGroups; DWORD AudioChannels; DWORD SampleRate; DWORD EffectsFlags; DWORD Share; } SYNTH_PORTPARAMS, *PSYNTH_PORTPARAMS; #define SYNTH_PORTPARAMS_VOICES 0x00000001 #define SYNTH_PORTPARAMS_CHANNELGROUPS 0x00000002 #define SYNTH_PORTPARAMS_AUDIOCHANNELS 0x00000004 #define SYNTH_PORTPARAMS_SAMPLERATE 0x00000008 #define SYNTH_PORTPARAMS_EFFECTS 0x00000020 #define SYNTH_PORTPARAMS_SHARE 0x00000040 #define SYNTH_EFFECT_NONE 0x00000000 #define SYNTH_EFFECT_REVERB 0x00000001 #define SYNTH_EFFECT_CHORUS 0x00000002 #define SYNTH_EFFECT_DELAY 0x00000004 typedef struct _SYNTHVOICEPRIORITY_INSTANCE { DWORD ChannelGroup; DWORD Channel; } SYNTHVOICEPRIORITY_INSTANCE, *PSYNTHVOICEPRIORITY_INSTANCE; typedef struct _SYNTH_STATS { DWORD ValidStats; DWORD Voices; DWORD TotalCPU; DWORD CPUPerVoice; DWORD LostNotes; DWORD FreeMemory; LONG PeakVolume; } SYNTH_STATS, *PSYNTH_STATS; #define SYNTH_STATS_VOICES (1 << 0) #define SYNTH_STATS_TOTAL_CPU (1 << 1) #define SYNTH_STATS_CPU_PER_VOICE (1 << 2) #define SYNTH_STATS_LOST_NOTES (1 << 3) #define SYNTH_STATS_PEAK_VOLUME (1 << 4) #define SYNTH_STATS_FREE_MEMORY (1 << 5) #ifndef _DIRECTAUDIO_PRIORITIES_DEFINED_ #define _DIRECTAUDIO_PRIORITIES_DEFINED_ #define DAUD_CRITICAL_VOICE_PRIORITY (0xF0000000) #define DAUD_HIGH_VOICE_PRIORITY (0xC0000000) #define DAUD_STANDARD_VOICE_PRIORITY (0x80000000) #define DAUD_LOW_VOICE_PRIORITY (0x40000000) #define DAUD_PERSIST_VOICE_PRIORITY (0x10000000) #define DAUD_CHAN1_VOICE_PRIORITY_OFFSET (0x0000000E) #define DAUD_CHAN2_VOICE_PRIORITY_OFFSET (0x0000000D) #define DAUD_CHAN3_VOICE_PRIORITY_OFFSET (0x0000000C) #define DAUD_CHAN4_VOICE_PRIORITY_OFFSET (0x0000000B) #define DAUD_CHAN5_VOICE_PRIORITY_OFFSET (0x0000000A) #define DAUD_CHAN6_VOICE_PRIORITY_OFFSET (0x00000009) #define DAUD_CHAN7_VOICE_PRIORITY_OFFSET (0x00000008) #define DAUD_CHAN8_VOICE_PRIORITY_OFFSET (0x00000007) #define DAUD_CHAN9_VOICE_PRIORITY_OFFSET (0x00000006) #define DAUD_CHAN10_VOICE_PRIORITY_OFFSET (0x0000000F) #define DAUD_CHAN11_VOICE_PRIORITY_OFFSET (0x00000005) #define DAUD_CHAN12_VOICE_PRIORITY_OFFSET (0x00000004) #define DAUD_CHAN13_VOICE_PRIORITY_OFFSET (0x00000003) #define DAUD_CHAN14_VOICE_PRIORITY_OFFSET (0x00000002) #define DAUD_CHAN15_VOICE_PRIORITY_OFFSET (0x00000001) #define DAUD_CHAN16_VOICE_PRIORITY_OFFSET (0x00000000) #define DAUD_CHAN1_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN1_VOICE_PRIORITY_OFFSET) #define DAUD_CHAN2_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN2_VOICE_PRIORITY_OFFSET) #define DAUD_CHAN3_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN3_VOICE_PRIORITY_OFFSET) #define DAUD_CHAN4_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN4_VOICE_PRIORITY_OFFSET) #define DAUD_CHAN5_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN5_VOICE_PRIORITY_OFFSET) #define DAUD_CHAN6_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN6_VOICE_PRIORITY_OFFSET) #define DAUD_CHAN7_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN7_VOICE_PRIORITY_OFFSET) #define DAUD_CHAN8_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN8_VOICE_PRIORITY_OFFSET) #define DAUD_CHAN9_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN9_VOICE_PRIORITY_OFFSET) #define DAUD_CHAN10_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN10_VOICE_PRIORITY_OFFSET) #define DAUD_CHAN11_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN11_VOICE_PRIORITY_OFFSET) #define DAUD_CHAN12_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN12_VOICE_PRIORITY_OFFSET) #define DAUD_CHAN13_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN13_VOICE_PRIORITY_OFFSET) #define DAUD_CHAN14_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN14_VOICE_PRIORITY_OFFSET) #define DAUD_CHAN15_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN15_VOICE_PRIORITY_OFFSET) #define DAUD_CHAN16_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN16_VOICE_PRIORITY_OFFSET) #endif typedef struct _SYNTH_REVERB_PARAMS { float fInGain; float fReverbMix; float fReverbTime; float fHighFreqRTRatio; } SYNTH_REVERB_PARAMS, *PSYNTH_REVERB_PARAMS; #define STATIC_KSPROPSETID_SynthClock \ 0xfedfae26L, 0xe46e, 0x11d1, {0xaa, 0xce, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12} DEFINE_GUIDSTRUCT("fedfae26-e46e-11d1-aace-0000f875ac12", KSPROPSETID_SynthClock); #define KSPROPSETID_SynthClock DEFINE_GUIDNAMED(KSPROPSETID_SynthClock) typedef enum { KSPROPERTY_SYNTH_MASTERCLOCK } KSPROPERTY_SYNTHCLOCK; #endif