7 #define REGSTR_PATH_SOFTWARESYNTHS "Software\\Microsoft\\DirectMusic\\SoftwareSynths"
9 interface IDirectMusicSynth
;
10 interface IDirectMusicSynthSink
;
13 typedef interface IDirectMusicSynth IDirectMusicSynth
;
14 typedef interface IDirectMusicSynthSink IDirectMusicSynthSink
;
17 #ifndef _DMUS_VOICE_STATE_DEFINED
18 #define _DMUS_VOICE_STATE_DEFINED
21 DEFINE_GUID(IID_IDirectMusicSynth
, 0x9823661, 0x5C85, 0x11D2, 0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6);
22 DEFINE_GUID(IID_IDirectMusicSynth8
, 0x53CAB625, 0x2711, 0x4C9F, 0x9D, 0xE7, 0x1B, 0x7F, 0x92, 0x5F, 0x6F, 0xC8);
23 DEFINE_GUID(IID_IDirectMusicSynthSink
, 0x09823663, 0x5C85, 0x11D2, 0xAF, 0xA6, 0x00, 0xAA, 0x00, 0x24, 0xD8, 0xB6);
24 DEFINE_GUID(GUID_DMUS_PROP_SetSynthSink
, 0x0A3A5BA5, 0x37B6, 0x11D2, 0xB9, 0xF9, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12);
25 DEFINE_GUID(GUID_DMUS_PROP_SinkUsesDSound
, 0xBE208857, 0x8952, 0x11D2, 0xBA, 0x1C, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12);
27 #define REFRESH_F_LASTBUFFER 0x00000001
29 typedef struct _DMUS_VOICE_STATE
32 SAMPLE_POSITION spPosition
;
38 #define INTERFACE IDirectMusicSynth
39 DECLARE_INTERFACE_(IDirectMusicSynth
, IUnknown
)
41 STDMETHOD(QueryInterface
) (THIS_ REFIID
, LPVOID FAR
*) PURE
;
42 STDMETHOD_(ULONG
,AddRef
) (THIS
) PURE
;
43 STDMETHOD_(ULONG
,Release
) (THIS
) PURE
;
44 STDMETHOD(Open
) (THIS_ LPDMUS_PORTPARAMS pPortParams
) PURE
;
45 STDMETHOD(Close
) (THIS
) PURE
;
46 STDMETHOD(SetNumChannelGroups
) (THIS_ DWORD dwGroups
) PURE
;
47 STDMETHOD(Download
) (THIS_ LPHANDLE phDownload
, LPVOID pvData
, LPBOOL pbFree
) PURE
;
48 STDMETHOD(Unload
) (THIS_ HANDLE hDownload
, HRESULT ( CALLBACK
*lpFreeHandle
)(HANDLE
,HANDLE
), HANDLE hUserData
) PURE
;
49 STDMETHOD(PlayBuffer
) (THIS_ REFERENCE_TIME rt
,LPBYTE pbBuffer
, DWORD cbBuffer
) PURE
;
50 STDMETHOD(GetRunningStats
) (THIS_ LPDMUS_SYNTHSTATS pStats
) PURE
;
51 STDMETHOD(GetPortCaps
) (THIS_ LPDMUS_PORTCAPS pCaps
) PURE
;
52 STDMETHOD(SetMasterClock
) (THIS_ IReferenceClock
*pClock
) PURE
;
53 STDMETHOD(GetLatencyClock
) (THIS_ IReferenceClock
**ppClock
) PURE
;
54 STDMETHOD(Activate
) (THIS_ BOOL fEnable
) PURE
;
55 STDMETHOD(SetSynthSink
) (THIS_ IDirectMusicSynthSink
*pSynthSink
) PURE
;
56 STDMETHOD(Render
) (THIS_
short *pBuffer
, DWORD dwLength
, LONGLONG llPosition
) PURE
;
57 STDMETHOD(SetChannelPriority
) (THIS_ DWORD dwChannelGroup
, DWORD dwChannel
, DWORD dwPriority
) PURE
;
58 STDMETHOD(GetChannelPriority
) (THIS_ DWORD dwChannelGroup
, DWORD dwChannel
, LPDWORD pdwPriority
) PURE
;
59 STDMETHOD(GetFormat
) (THIS_ LPWAVEFORMATEX pWaveFormatEx
, LPDWORD pdwWaveFormatExSize
) PURE
;
60 STDMETHOD(GetAppend
) (THIS_ DWORD
* pdwAppend
) PURE
;
65 #define INTERFACE IDirectMusicSynth8
66 DECLARE_INTERFACE_(IDirectMusicSynth8
, IDirectMusicSynth
)
68 STDMETHOD(QueryInterface
) (THIS_ REFIID
, LPVOID FAR
*) PURE
;
69 STDMETHOD_(ULONG
,AddRef
) (THIS
) PURE
;
70 STDMETHOD_(ULONG
,Release
) (THIS
) PURE
;
71 STDMETHOD(Open
) (THIS_ LPDMUS_PORTPARAMS pPortParams
) PURE
;
72 STDMETHOD(Close
) (THIS
) PURE
;
73 STDMETHOD(SetNumChannelGroups
) (THIS_ DWORD dwGroups
) PURE
;
74 STDMETHOD(Download
) (THIS_ LPHANDLE phDownload
, LPVOID pvData
, LPBOOL pbFree
) PURE
;
75 STDMETHOD(Unload
) (THIS_ HANDLE hDownload
, HRESULT ( CALLBACK
*lpFreeHandle
)(HANDLE
,HANDLE
), HANDLE hUserData
) PURE
;
76 STDMETHOD(PlayBuffer
) (THIS_ REFERENCE_TIME rt
, LPBYTE pbBuffer
, DWORD cbBuffer
) PURE
;
77 STDMETHOD(GetRunningStats
) (THIS_ LPDMUS_SYNTHSTATS pStats
) PURE
;
78 STDMETHOD(GetPortCaps
) (THIS_ LPDMUS_PORTCAPS pCaps
) PURE
;
79 STDMETHOD(SetMasterClock
) (THIS_ IReferenceClock
*pClock
) PURE
;
80 STDMETHOD(GetLatencyClock
) (THIS_ IReferenceClock
**ppClock
) PURE
;
81 STDMETHOD(Activate
) (THIS_ BOOL fEnable
) PURE
;
82 STDMETHOD(SetSynthSink
) (THIS_ IDirectMusicSynthSink
*pSynthSink
) PURE
;
83 STDMETHOD(Render
) (THIS_
short *pBuffer
, DWORD dwLength
, LONGLONG llPosition
) PURE
;
84 STDMETHOD(SetChannelPriority
) (THIS_ DWORD dwChannelGroup
, DWORD dwChannel
, DWORD dwPriority
) PURE
;
85 STDMETHOD(GetChannelPriority
) (THIS_ DWORD dwChannelGroup
, DWORD dwChannel
, LPDWORD pdwPriority
) PURE
;
86 STDMETHOD(GetFormat
) (THIS_ LPWAVEFORMATEX pWaveFormatEx
, LPDWORD pdwWaveFormatExSize
) PURE
;
87 STDMETHOD(GetAppend
) (THIS_ DWORD
* pdwAppend
) PURE
;
88 STDMETHOD(PlayVoice
) (THIS_ REFERENCE_TIME rt
, DWORD dwVoiceId
, DWORD dwChannelGroup
, DWORD dwChannel
, DWORD dwDLId
, long prPitch
, long vrVolume
, SAMPLE_TIME stVoiceStart
, SAMPLE_TIME stLoopStart
, SAMPLE_TIME stLoopEnd
) PURE
;
89 STDMETHOD(StopVoice
) (THIS_ REFERENCE_TIME rt
, DWORD dwVoiceId
) PURE
;
90 STDMETHOD(GetVoiceState
) (THIS_ DWORD dwVoice
[], DWORD cbVoice
, DMUS_VOICE_STATE dwVoiceState
[] ) PURE
;
91 STDMETHOD(Refresh
) (THIS_ DWORD dwDownloadID
, DWORD dwFlags
) PURE
;
92 STDMETHOD(AssignChannelToBuses
) (THIS_ DWORD dwChannelGroup
, DWORD dwChannel
, LPDWORD pdwBuses
, DWORD cBuses
) PURE
;
96 #define INTERFACE IDirectMusicSynthSink
97 DECLARE_INTERFACE_(IDirectMusicSynthSink
, IUnknown
)
99 STDMETHOD(QueryInterface
) (THIS_ REFIID
, LPVOID FAR
*) PURE
;
100 STDMETHOD_(ULONG
,AddRef
) (THIS
) PURE
;
101 STDMETHOD_(ULONG
,Release
) (THIS
) PURE
;
102 STDMETHOD(Init
) (THIS_ IDirectMusicSynth
*pSynth
) PURE
;
103 STDMETHOD(SetMasterClock
) (THIS_ IReferenceClock
*pClock
) PURE
;
104 STDMETHOD(GetLatencyClock
) (THIS_ IReferenceClock
**ppClock
) PURE
;
105 STDMETHOD(Activate
) (THIS_ BOOL fEnable
) PURE
;
106 STDMETHOD(SampleToRefTime
) (THIS_ LONGLONG llSampleTime
, REFERENCE_TIME
*prfTime
) PURE
;
107 STDMETHOD(RefTimeToSample
) (THIS_ REFERENCE_TIME rfTime
, LONGLONG
*pllSampleTime
) PURE
;
108 STDMETHOD(SetDirectSound
) (THIS_ LPDIRECTSOUND pDirectSound
, LPDIRECTSOUNDBUFFER pDirectSoundBuffer
) PURE
;
109 STDMETHOD(GetDesiredBufferSize
) (THIS_ LPDWORD pdwBufferSizeInSamples
) PURE
;