Mercurial > mm7
comparison lib/legacy_dx/dmusics.h @ 0:9c0607679772
init
author | Ritor1 |
---|---|
date | Sat, 12 Jan 2013 09:45:18 +0600 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:9c0607679772 |
---|---|
1 /************************************************************************ | |
2 * * | |
3 * dmusics.h -- Definitions for created a DirectMusic software synth * | |
4 * * | |
5 * Copyright (c) Microsoft Corporation. All rights reserved. * | |
6 * * | |
7 ************************************************************************/ | |
8 | |
9 #ifndef _DMUSICS_ | |
10 #define _DMUSICS_ | |
11 | |
12 #include "dmusicc.h" | |
13 | |
14 /* Software synths are enumerated from under this registry key. | |
15 */ | |
16 #define REGSTR_PATH_SOFTWARESYNTHS "Software\\Microsoft\\DirectMusic\\SoftwareSynths" | |
17 | |
18 interface IDirectMusicSynth; | |
19 interface IDirectMusicSynthSink; | |
20 | |
21 #ifndef __cplusplus | |
22 typedef interface IDirectMusicSynth IDirectMusicSynth; | |
23 typedef interface IDirectMusicSynthSink IDirectMusicSynthSink; | |
24 #endif | |
25 | |
26 #ifndef _DMUS_VOICE_STATE_DEFINED | |
27 #define _DMUS_VOICE_STATE_DEFINED | |
28 | |
29 typedef struct _DMUS_VOICE_STATE | |
30 { | |
31 BOOL bExists; | |
32 SAMPLE_POSITION spPosition; | |
33 } DMUS_VOICE_STATE; | |
34 | |
35 #endif /* _DMUS_VOICE_STATE_DEFINED */ | |
36 | |
37 /* IDirectMusicSynth::Refresh | |
38 * | |
39 * This is the last buffer of the stream. It may be a partial block. | |
40 */ | |
41 #define REFRESH_F_LASTBUFFER 0x00000001 | |
42 | |
43 #undef INTERFACE | |
44 #define INTERFACE IDirectMusicSynth | |
45 DECLARE_INTERFACE_(IDirectMusicSynth, IUnknown) | |
46 { | |
47 /* IUnknown */ | |
48 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; | |
49 STDMETHOD_(ULONG,AddRef) (THIS) PURE; | |
50 STDMETHOD_(ULONG,Release) (THIS) PURE; | |
51 | |
52 /* IDirectMusicSynth */ | |
53 STDMETHOD(Open) (THIS_ LPDMUS_PORTPARAMS pPortParams) PURE; | |
54 STDMETHOD(Close) (THIS) PURE; | |
55 STDMETHOD(SetNumChannelGroups) (THIS_ DWORD dwGroups) PURE; | |
56 STDMETHOD(Download) (THIS_ LPHANDLE phDownload, | |
57 LPVOID pvData, | |
58 LPBOOL pbFree ) PURE; | |
59 STDMETHOD(Unload) (THIS_ HANDLE hDownload, | |
60 HRESULT ( CALLBACK *lpFreeHandle)(HANDLE,HANDLE), | |
61 HANDLE hUserData ) PURE; | |
62 STDMETHOD(PlayBuffer) (THIS_ REFERENCE_TIME rt, | |
63 LPBYTE pbBuffer, | |
64 DWORD cbBuffer) PURE; | |
65 STDMETHOD(GetRunningStats) (THIS_ LPDMUS_SYNTHSTATS pStats) PURE; | |
66 STDMETHOD(GetPortCaps) (THIS_ LPDMUS_PORTCAPS pCaps) PURE; | |
67 STDMETHOD(SetMasterClock) (THIS_ IReferenceClock *pClock) PURE; | |
68 STDMETHOD(GetLatencyClock) (THIS_ IReferenceClock **ppClock) PURE; | |
69 STDMETHOD(Activate) (THIS_ BOOL fEnable) PURE; | |
70 STDMETHOD(SetSynthSink) (THIS_ IDirectMusicSynthSink *pSynthSink) PURE; | |
71 STDMETHOD(Render) (THIS_ short *pBuffer, | |
72 DWORD dwLength, | |
73 LONGLONG llPosition) PURE; | |
74 STDMETHOD(SetChannelPriority) (THIS_ DWORD dwChannelGroup, | |
75 DWORD dwChannel, | |
76 DWORD dwPriority) PURE; | |
77 STDMETHOD(GetChannelPriority) (THIS_ DWORD dwChannelGroup, | |
78 DWORD dwChannel, | |
79 LPDWORD pdwPriority) PURE; | |
80 STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pWaveFormatEx, | |
81 LPDWORD pdwWaveFormatExSize) PURE; | |
82 STDMETHOD(GetAppend) (THIS_ DWORD* pdwAppend) PURE; | |
83 }; | |
84 | |
85 #undef INTERFACE | |
86 | |
87 #define INTERFACE IDirectMusicSynth8 | |
88 DECLARE_INTERFACE_(IDirectMusicSynth8, IDirectMusicSynth) | |
89 { | |
90 /* IUnknown */ | |
91 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; | |
92 STDMETHOD_(ULONG,AddRef) (THIS) PURE; | |
93 STDMETHOD_(ULONG,Release) (THIS) PURE; | |
94 | |
95 /* IDirectMusicSynth */ | |
96 STDMETHOD(Open) (THIS_ LPDMUS_PORTPARAMS pPortParams) PURE; | |
97 STDMETHOD(Close) (THIS) PURE; | |
98 STDMETHOD(SetNumChannelGroups) (THIS_ DWORD dwGroups) PURE; | |
99 STDMETHOD(Download) (THIS_ LPHANDLE phDownload, | |
100 LPVOID pvData, | |
101 LPBOOL pbFree ) PURE; | |
102 STDMETHOD(Unload) (THIS_ HANDLE hDownload, | |
103 HRESULT ( CALLBACK *lpFreeHandle)(HANDLE,HANDLE), | |
104 HANDLE hUserData ) PURE; | |
105 STDMETHOD(PlayBuffer) (THIS_ REFERENCE_TIME rt, | |
106 LPBYTE pbBuffer, | |
107 DWORD cbBuffer) PURE; | |
108 STDMETHOD(GetRunningStats) (THIS_ LPDMUS_SYNTHSTATS pStats) PURE; | |
109 STDMETHOD(GetPortCaps) (THIS_ LPDMUS_PORTCAPS pCaps) PURE; | |
110 STDMETHOD(SetMasterClock) (THIS_ IReferenceClock *pClock) PURE; | |
111 STDMETHOD(GetLatencyClock) (THIS_ IReferenceClock **ppClock) PURE; | |
112 STDMETHOD(Activate) (THIS_ BOOL fEnable) PURE; | |
113 STDMETHOD(SetSynthSink) (THIS_ IDirectMusicSynthSink *pSynthSink) PURE; | |
114 STDMETHOD(Render) (THIS_ short *pBuffer, | |
115 DWORD dwLength, | |
116 LONGLONG llPosition) PURE; | |
117 STDMETHOD(SetChannelPriority) (THIS_ DWORD dwChannelGroup, | |
118 DWORD dwChannel, | |
119 DWORD dwPriority) PURE; | |
120 STDMETHOD(GetChannelPriority) (THIS_ DWORD dwChannelGroup, | |
121 DWORD dwChannel, | |
122 LPDWORD pdwPriority) PURE; | |
123 STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pWaveFormatEx, | |
124 LPDWORD pdwWaveFormatExSize) PURE; | |
125 STDMETHOD(GetAppend) (THIS_ DWORD* pdwAppend) PURE; | |
126 | |
127 /* IDirectMusicSynth8 */ | |
128 STDMETHOD(PlayVoice) (THIS_ REFERENCE_TIME rt, | |
129 DWORD dwVoiceId, | |
130 DWORD dwChannelGroup, | |
131 DWORD dwChannel, | |
132 DWORD dwDLId, | |
133 long prPitch, /* PREL not defined here */ | |
134 long vrVolume, /* VREL not defined here */ | |
135 SAMPLE_TIME stVoiceStart, | |
136 SAMPLE_TIME stLoopStart, | |
137 SAMPLE_TIME stLoopEnd) PURE; | |
138 | |
139 STDMETHOD(StopVoice) (THIS_ REFERENCE_TIME rt, | |
140 DWORD dwVoiceId ) PURE; | |
141 | |
142 STDMETHOD(GetVoiceState) (THIS_ DWORD dwVoice[], | |
143 DWORD cbVoice, | |
144 DMUS_VOICE_STATE dwVoiceState[] ) PURE; | |
145 STDMETHOD(Refresh) (THIS_ DWORD dwDownloadID, | |
146 DWORD dwFlags) PURE; | |
147 STDMETHOD(AssignChannelToBuses) (THIS_ DWORD dwChannelGroup, | |
148 DWORD dwChannel, | |
149 LPDWORD pdwBuses, | |
150 DWORD cBuses) PURE; | |
151 }; | |
152 | |
153 #undef INTERFACE | |
154 #define INTERFACE IDirectMusicSynthSink | |
155 DECLARE_INTERFACE_(IDirectMusicSynthSink, IUnknown) | |
156 { | |
157 /* IUnknown */ | |
158 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; | |
159 STDMETHOD_(ULONG,AddRef) (THIS) PURE; | |
160 STDMETHOD_(ULONG,Release) (THIS) PURE; | |
161 | |
162 /* IDirectMusicSynthSink */ | |
163 STDMETHOD(Init) (THIS_ IDirectMusicSynth *pSynth) PURE; | |
164 STDMETHOD(SetMasterClock) (THIS_ IReferenceClock *pClock) PURE; | |
165 STDMETHOD(GetLatencyClock) (THIS_ IReferenceClock **ppClock) PURE; | |
166 STDMETHOD(Activate) (THIS_ BOOL fEnable) PURE; | |
167 STDMETHOD(SampleToRefTime) (THIS_ LONGLONG llSampleTime, | |
168 REFERENCE_TIME *prfTime) PURE; | |
169 STDMETHOD(RefTimeToSample) (THIS_ REFERENCE_TIME rfTime, | |
170 LONGLONG *pllSampleTime) PURE; | |
171 STDMETHOD(SetDirectSound) (THIS_ LPDIRECTSOUND pDirectSound, | |
172 LPDIRECTSOUNDBUFFER pDirectSoundBuffer) PURE; | |
173 STDMETHOD(GetDesiredBufferSize) (THIS_ LPDWORD pdwBufferSizeInSamples) PURE; | |
174 }; | |
175 | |
176 DEFINE_GUID(IID_IDirectMusicSynth, 0x9823661, 0x5c85, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); | |
177 DEFINE_GUID(IID_IDirectMusicSynth8,0x53cab625, 0x2711, 0x4c9f, 0x9d, 0xe7, 0x1b, 0x7f, 0x92, 0x5f, 0x6f, 0xc8); | |
178 DEFINE_GUID(IID_IDirectMusicSynthSink,0x9823663, 0x5c85, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); | |
179 | |
180 /* Property Set GUID_DMUS_PROP_SetSynthSink | |
181 * | |
182 * Item 0: An IUnknown on which the port can QueryInterface for a user-mode synth sink. | |
183 */ | |
184 DEFINE_GUID(GUID_DMUS_PROP_SetSynthSink,0x0a3a5ba5, 0x37b6, 0x11d2, 0xb9, 0xf9, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); | |
185 | |
186 /* Property Set GUID_DMUS_PROP_SinkUsesDSound | |
187 * | |
188 * Item 0: A DWORD boolean indicating whether or not the sink requires an IDirectSound interface. The | |
189 * default is FALSE if this property item is not implemented by the sink. | |
190 */ | |
191 DEFINE_GUID(GUID_DMUS_PROP_SinkUsesDSound, 0xbe208857, 0x8952, 0x11d2, 0xba, 0x1c, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); | |
192 | |
193 #endif |