dmplugin.h 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. #undef INTERFACE
  2. /*
  3. * DirectMusic Performance Layer Plugins API
  4. *
  5. * Copyright (C) 2003-2004 Rok Mandeljc
  6. *
  7. * This program is free software; you can redistribute it and/or
  8. * modify it under the terms of the GNU Lesser General Public
  9. * License as published by the Free Software Foundation; either
  10. * version 2.1 of the License, or (at your option) any later version.
  11. *
  12. * This program is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  15. * Lesser General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU Lesser General Public
  18. * License along with this program; if not, write to the Free Software
  19. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  20. */
  21. #ifndef __WINE_DMUSIC_PLUGIN_H
  22. #define __WINE_DMUSIC_PLUGIN_H
  23. #include <windows.h>
  24. #define COM_NO_WINDOWS_H
  25. #include <objbase.h>
  26. #include <mmsystem.h>
  27. #include <dmusici.h>
  28. #include <pshpack8.h>
  29. #ifdef __cplusplus
  30. extern "C" {
  31. #endif
  32. /*****************************************************************************
  33. * Registry path
  34. */
  35. #define DMUS_REGSTR_PATH_TOOLS "Software\\Microsoft\\DirectMusic\\Tools"
  36. /*****************************************************************************
  37. * Predeclare the interfaces
  38. */
  39. /* CLSIDs */
  40. DEFINE_GUID(CLSID_DirectMusicBandTrack, 0xd2ac2894,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
  41. DEFINE_GUID(CLSID_DirectMusicChordTrack, 0xd2ac288b,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
  42. DEFINE_GUID(CLSID_DirectMusicChordMapTrack, 0xd2ac2896,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
  43. DEFINE_GUID(CLSID_DirectMusicCommandTrack, 0xd2ac288c,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
  44. DEFINE_GUID(CLSID_DirectMusicLyricsTrack, 0x995c1cf5,0x54ff,0x11d3,0x8b,0xda,0x00,0x60,0x08,0x93,0xb1,0xb6);
  45. DEFINE_GUID(CLSID_DirectMusicMarkerTrack, 0x55a8fd00,0x4288,0x11d3,0x9b,0xd1,0x8a,0x0d,0x61,0xc8,0x88,0x35);
  46. DEFINE_GUID(CLSID_DirectMusicMotifTrack, 0xd2ac288e,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
  47. DEFINE_GUID(CLSID_DirectMusicMuteTrack, 0xd2ac2898,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
  48. DEFINE_GUID(CLSID_DirectMusicParamControlTrack, 0x4be0537b,0x5c19,0x11d3,0x8b,0xdc,0x00,0x60,0x08,0x93,0xb1,0xb6);
  49. DEFINE_GUID(CLSID_DirectMusicScriptTrack, 0x4108fa85,0x3586,0x11d3,0x8b,0xd7,0x00,0x60,0x08,0x93,0xb1,0xb6);
  50. DEFINE_GUID(CLSID_DirectMusicSegmentTriggerTrack, 0xbae4d665,0x4ea1,0x11d3,0x8b,0xda,0x00,0x60,0x08,0x93,0xb1,0xb6);
  51. DEFINE_GUID(CLSID_DirectMusicSeqTrack, 0xd2ac2886,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
  52. DEFINE_GUID(CLSID_DirectMusicSignPostTrack, 0xf17e8672,0xc3b4,0x11d1,0x87,0x0b,0x00,0x60,0x08,0x93,0xb1,0xbd);
  53. DEFINE_GUID(CLSID_DirectMusicStyleTrack, 0xd2ac288d,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
  54. DEFINE_GUID(CLSID_DirectMusicSysExTrack, 0xd2ac2887,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
  55. DEFINE_GUID(CLSID_DirectMusicTempoTrack, 0xd2ac2885,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
  56. DEFINE_GUID(CLSID_DirectMusicTimeSigTrack, 0xd2ac2888,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
  57. DEFINE_GUID(CLSID_DirectMusicWaveTrack, 0xeed36461,0x9ea5,0x11d3,0x9b,0xd1,0x00,0x80,0xc7,0x15,0x0a,0x74);
  58. /* MS doesn't support this in DX 9.0 and newer... but there's no harm in keeping it around */
  59. DEFINE_GUID(CLSID_DirectMusicMelodyFormulationTrack, 0xb0684266,0xb57f,0x11d2,0x97,0xf9,0x00,0xc0,0x4f,0xa3,0x6e,0x58);
  60. /* IIDs */
  61. DEFINE_GUID(IID_IDirectMusicTool, 0xd2ac28ba,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
  62. DEFINE_GUID(IID_IDirectMusicTool8, 0x0e674303,0x3b05,0x11d3,0x9b,0xd1,0xf9,0xe7,0xf0,0xa0,0x15,0x36);
  63. DEFINE_GUID(IID_IDirectMusicTrack, 0xf96029a1,0x4282,0x11d2,0x87,0x17,0x00,0x60,0x08,0x93,0xb1,0xbd);
  64. DEFINE_GUID(IID_IDirectMusicTrack8, 0x0e674304,0x3b05,0x11d3,0x9b,0xd1,0xf9,0xe7,0xf0,0xa0,0x15,0x36);
  65. /* typedef definitions */
  66. typedef struct IDirectMusicTrack *LPDIRECTMUSICTRACK;
  67. typedef struct IDirectMusicTrack8 *LPDIRECTMUSICTRACK8;
  68. typedef struct IDirectMusicTool *LPDIRECTMUSICTOOL;
  69. typedef struct IDirectMusicTool8 *LPDIRECTMUSICTOOL8;
  70. /* these are from dmusici.h and are needed here */
  71. typedef struct IDirectMusicPerformance *LPDIRECTMUSICPERFORMANCE;
  72. typedef struct IDirectMusicPerformance8 *LPDIRECTMUSICPERFORMANCE8;
  73. typedef struct IDirectMusicSegment *LPDIRECTMUSICSEGMENT;
  74. typedef struct IDirectMusicSegment8 *LPDIRECTMUSICSEGMENT8;
  75. typedef struct IDirectMusicSegmentState *LPDIRECTMUSICSEGMENTSTATE;
  76. typedef struct IDirectMusicSegmentState8 *LPDIRECTMUSICSEGMENTSTATE8;
  77. typedef struct IDirectMusicGraph *LPDIRECTMUSICGRAPH;
  78. typedef struct IDirectMusicGraph IDirectMusicGraph8, *LPDIRECTMUSICGRAPH8;
  79. /*****************************************************************************
  80. * Typedef definitions
  81. */
  82. typedef struct _DMUS_PMSG DMUS_PMSG;
  83. typedef LONG MUSIC_TIME;
  84. /*****************************************************************************
  85. * Flags
  86. */
  87. #define DMUS_TRACK_PARAMF_CLOCK 0x1
  88. /*****************************************************************************
  89. * Enumerations
  90. */
  91. typedef enum enumDMUS_TRACKF_FLAGS
  92. {
  93. DMUS_TRACKF_SEEK = 0x001,
  94. DMUS_TRACKF_LOOP = 0x002,
  95. DMUS_TRACKF_START = 0x004,
  96. DMUS_TRACKF_FLUSH = 0x008,
  97. DMUS_TRACKF_DIRTY = 0x010,
  98. DMUS_TRACKF_NOTIFY_OFF = 0x020,
  99. DMUS_TRACKF_PLAY_OFF = 0x040,
  100. DMUS_TRACKF_LOOPEND = 0x080,
  101. DMUS_TRACKF_STOP = 0x100,
  102. DMUS_TRACKF_RECOMPOSE = 0x200,
  103. DMUS_TRACKF_CLOCK = 0x400,
  104. } DMUS_TRACKF_FLAGS;
  105. /*****************************************************************************
  106. * IDirectMusicTool interface
  107. */
  108. #define INTERFACE IDirectMusicTool
  109. DECLARE_INTERFACE_(IDirectMusicTool,IUnknown)
  110. {
  111. /*** IUnknown methods ***/
  112. STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
  113. STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  114. STDMETHOD_(ULONG,Release)(THIS) PURE;
  115. /*** IDirectMusicTool methods ***/
  116. STDMETHOD(Init)(THIS_ struct IDirectMusicGraph *pGraph) PURE;
  117. STDMETHOD(GetMsgDeliveryType)(THIS_ DWORD *pdwDeliveryType) PURE;
  118. STDMETHOD(GetMediaTypeArraySize)(THIS_ DWORD *pdwNumElements) PURE;
  119. STDMETHOD(GetMediaTypes)(THIS_ DWORD **padwMediaTypes, DWORD dwNumElements) PURE;
  120. STDMETHOD(ProcessPMsg)(THIS_ struct IDirectMusicPerformance *pPerf, DMUS_PMSG *pPMSG) PURE;
  121. STDMETHOD(Flush)(THIS_ struct IDirectMusicPerformance *pPerf, DMUS_PMSG *pPMSG, REFERENCE_TIME rtTime) PURE;
  122. };
  123. #undef INTERFACE
  124. #if !defined(__cplusplus) || defined(CINTERFACE)
  125. /*** IUnknown methods ***/
  126. #define IDirectMusicTool_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
  127. #define IDirectMusicTool_AddRef(p) (p)->lpVtbl->AddRef(p)
  128. #define IDirectMusicTool_Release(p) (p)->lpVtbl->Release(p)
  129. /*** IDirectMusicTool methods ***/
  130. #define IDirectMusicTool_Init(p,a) (p)->lpVtbl->Init(p,a)
  131. #define IDirectMusicTool_GetMsgDeliveryType(p,a) (p)->lpVtbl->GetMsgDeliveryType(p,a)
  132. #define IDirectMusicTool_GetMediaTypeArraySize(p,a) (p)->lpVtbl->GetMediaTypeArraySize(p,a)
  133. #define IDirectMusicTool_GetMediaTypes(p,a,b) (p)->lpVtbl->GetMediaTypes(p,a,b)
  134. #define IDirectMusicTool_ProcessPMsg(p,a,b) (p)->lpVtbl->ProcessPMsg(p,a,b)
  135. #define IDirectMusicTool_Flush(p,a,b,c) (p)->lpVtbl->Flush(p,a,b,c)
  136. #endif
  137. /*****************************************************************************
  138. * IDirectMusicTool8 interface
  139. */
  140. #define INTERFACE IDirectMusicTool8
  141. DECLARE_INTERFACE_(IDirectMusicTool8,IDirectMusicTool)
  142. {
  143. /*** IUnknown methods ***/
  144. STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
  145. STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  146. STDMETHOD_(ULONG,Release)(THIS) PURE;
  147. /*** IDirectMusicTool methods ***/
  148. STDMETHOD(Init)(THIS_ struct IDirectMusicGraph *pGraph) PURE;
  149. STDMETHOD(GetMsgDeliveryType)(THIS_ DWORD *pdwDeliveryType) PURE;
  150. STDMETHOD(GetMediaTypeArraySize)(THIS_ DWORD *pdwNumElements) PURE;
  151. STDMETHOD(GetMediaTypes)(THIS_ DWORD **padwMediaTypes, DWORD dwNumElements) PURE;
  152. STDMETHOD(ProcessPMsg)(THIS_ struct IDirectMusicPerformance *pPerf, DMUS_PMSG *pPMSG) PURE;
  153. STDMETHOD(Flush)(THIS_ struct IDirectMusicPerformance *pPerf, DMUS_PMSG *pPMSG, REFERENCE_TIME rtTime) PURE;
  154. /*** IDirectMusicTool8 methods ***/
  155. STDMETHOD(Clone)(THIS_ IDirectMusicTool **ppTool) PURE;
  156. };
  157. #undef INTERFACE
  158. #if !defined(__cplusplus) || defined(CINTERFACE)
  159. /*** IUnknown methods ***/
  160. #define IDirectMusicTool8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
  161. #define IDirectMusicTool8_AddRef(p) (p)->lpVtbl->AddRef(p)
  162. #define IDirectMusicTool8_Release(p) (p)->lpVtbl->Release(p)
  163. /*** IDirectMusicTool methods ***/
  164. #define IDirectMusicTool8_Init(p,a) (p)->lpVtbl->Init(p,a)
  165. #define IDirectMusicTool8_GetMsgDeliveryType(p,a) (p)->lpVtbl->GetMsgDeliveryType(p,a)
  166. #define IDirectMusicTool8_GetMediaTypeArraySize(p,a) (p)->lpVtbl->GetMediaTypeArraySize(p,a)
  167. #define IDirectMusicTool8_GetMediaTypes(p,a,b) (p)->lpVtbl->GetMediaTypes(p,a,b)
  168. #define IDirectMusicTool8_ProcessPMsg(p,a,b) (p)->lpVtbl->ProcessPMsg(p,a,b)
  169. #define IDirectMusicTool8_Flush(p,a,b) (p)->lpVtbl->Flush(p,a,b)
  170. /*** IDirectMusicTool8 methods ***/
  171. #define IDirectMusicTool8_Clone(p,a) (p)->lpVtbl->Clone(p,a)
  172. #endif
  173. /*****************************************************************************
  174. * IDirectMusicTrack interface
  175. */
  176. #define INTERFACE IDirectMusicTrack
  177. DECLARE_INTERFACE_(IDirectMusicTrack,IUnknown)
  178. {
  179. /*** IUnknown methods ***/
  180. STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
  181. STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  182. STDMETHOD_(ULONG,Release)(THIS) PURE;
  183. /*** IDirectMusicTrack methods ***/
  184. STDMETHOD(Init)(THIS_ struct IDirectMusicSegment *pSegment) PURE;
  185. STDMETHOD(InitPlay)(THIS_ struct IDirectMusicSegmentState *pSegmentState, struct IDirectMusicPerformance *pPerformance, void **ppStateData, DWORD dwVirtualTrackID, DWORD dwFlags) PURE;
  186. STDMETHOD(EndPlay)(THIS_ void *pStateData) PURE;
  187. STDMETHOD(Play)(THIS_ void *pStateData, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, MUSIC_TIME mtOffset, DWORD dwFlags, struct IDirectMusicPerformance *pPerf, struct IDirectMusicSegmentState *pSegSt, DWORD dwVirtualID) PURE;
  188. STDMETHOD(GetParam)(THIS_ REFGUID rguidType, MUSIC_TIME mtTime, MUSIC_TIME *pmtNext, void *pParam) PURE;
  189. STDMETHOD(SetParam)(THIS_ REFGUID rguidType, MUSIC_TIME mtTime, void *pParam) PURE;
  190. STDMETHOD(IsParamSupported)(THIS_ REFGUID rguidType) PURE;
  191. STDMETHOD(AddNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
  192. STDMETHOD(RemoveNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
  193. STDMETHOD(Clone)(THIS_ MUSIC_TIME mtStart, MUSIC_TIME mtEnd, IDirectMusicTrack **ppTrack) PURE;
  194. };
  195. #undef INTERFACE
  196. #if !defined(__cplusplus) || defined(CINTERFACE)
  197. /*** IUnknown methods ***/
  198. #define IDirectMusicTrack_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
  199. #define IDirectMusicTrack_AddRef(p) (p)->lpVtbl->AddRef(p)
  200. #define IDirectMusicTrack_Release(p) (p)->lpVtbl->Release(p)
  201. /*** IDirectMusicTrack methods ***/
  202. #define IDirectMusicTrack_Init(p,a) (p)->lpVtbl->Init(p,a)
  203. #define IDirectMusicTrack_InitPlay(p,a,b,c,d,e) (p)->lpVtbl->InitPlay(p,a,b,c,d,e)
  204. #define IDirectMusicTrack_EndPlay(p,a) (p)->lpVtbl->EndPlay(p,a)
  205. #define IDirectMusicTrack_Play(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Play(p,a,b,c,d,e,f,g,h)
  206. #define IDirectMusicTrack_GetParam(p,a,b,c,d) (p)->lpVtbl->GetParam(p,a,b,c,d)
  207. #define IDirectMusicTrack_SetParam(p,a,b,c) (p)->lpVtbl->SetParam(p,a,b,c)
  208. #define IDirectMusicTrack_IsParamSupported(p,a) (p)->lpVtbl->IsParamSupported(p,a)
  209. #define IDirectMusicTrack_AddNotificationType(p,a) (p)->lpVtbl->AddNotificationType(p,a)
  210. #define IDirectMusicTrack_RemoveNotificationType(p,a) (p)->lpVtbl->RemoveNotificationType(p,a)
  211. #define IDirectMusicTrack_Clone(p,a,b,c) (p)->lpVtbl->Clone(p,a,b,c)
  212. #endif
  213. /*****************************************************************************
  214. * IDirectMusicTrack8 interface
  215. */
  216. #define INTERFACE IDirectMusicTrack8
  217. DECLARE_INTERFACE_(IDirectMusicTrack8,IDirectMusicTrack)
  218. {
  219. /*** IUnknown methods ***/
  220. STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
  221. STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  222. STDMETHOD_(ULONG,Release)(THIS) PURE;
  223. /*** IDirectMusicTrack methods ***/
  224. STDMETHOD(Init)(THIS_ struct IDirectMusicSegment *pSegment) PURE;
  225. STDMETHOD(InitPlay)(THIS_ struct IDirectMusicSegmentState *pSegmentState, struct IDirectMusicPerformance *pPerformance, void **ppStateData, DWORD dwVirtualTrackID, DWORD dwFlags) PURE;
  226. STDMETHOD(EndPlay)(THIS_ void *pStateData) PURE;
  227. STDMETHOD(Play)(THIS_ void *pStateData, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, MUSIC_TIME mtOffset, DWORD dwFlags, struct IDirectMusicPerformance *pPerf, struct IDirectMusicSegmentState *pSegSt, DWORD dwVirtualID) PURE;
  228. STDMETHOD(GetParam)(THIS_ REFGUID rguidType, MUSIC_TIME mtTime, MUSIC_TIME *pmtNext, void *pParam) PURE;
  229. STDMETHOD(SetParam)(THIS_ REFGUID rguidType, MUSIC_TIME mtTime, void *pParam) PURE;
  230. STDMETHOD(IsParamSupported)(THIS_ REFGUID rguidType) PURE;
  231. STDMETHOD(AddNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
  232. STDMETHOD(RemoveNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
  233. STDMETHOD(Clone)(THIS_ MUSIC_TIME mtStart, MUSIC_TIME mtEnd, IDirectMusicTrack **ppTrack) PURE;
  234. /*** IDirectMusicTrack8 methods ***/
  235. STDMETHOD(PlayEx)(THIS_ void *pStateData, REFERENCE_TIME rtStart, REFERENCE_TIME rtEnd, REFERENCE_TIME rtOffset, DWORD dwFlags, struct IDirectMusicPerformance *pPerf, struct IDirectMusicSegmentState *pSegSt, DWORD dwVirtualID) PURE;
  236. STDMETHOD(GetParamEx)(THIS_ REFGUID rguidType, REFERENCE_TIME rtTime, REFERENCE_TIME *prtNext, void *pParam, void *pStateData, DWORD dwFlags) PURE;
  237. STDMETHOD(SetParamEx)(THIS_ REFGUID rguidType, REFERENCE_TIME rtTime, void *pParam, void *pStateData, DWORD dwFlags) PURE;
  238. STDMETHOD(Compose)(THIS_ IUnknown *pContext, DWORD dwTrackGroup, IDirectMusicTrack **ppResultTrack) PURE;
  239. STDMETHOD(Join)(THIS_ IDirectMusicTrack *pNewTrack, MUSIC_TIME mtJoin, IUnknown *pContext, DWORD dwTrackGroup, IDirectMusicTrack **ppResultTrack) PURE;
  240. };
  241. #undef INTERFACE
  242. #if !defined(__cplusplus) || defined(CINTERFACE)
  243. /*** IUnknown methods ***/
  244. #define IDirectMusicTrack8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
  245. #define IDirectMusicTrack8_AddRef(p) (p)->lpVtbl->AddRef(p)
  246. #define IDirectMusicTrack8_Release(p) (p)->lpVtbl->Release(p)
  247. /*** IDirectMusicTrack methods ***/
  248. #define IDirectMusicTrack8_Init(p,a) (p)->lpVtbl->Init(p,a)
  249. #define IDirectMusicTrack8_InitPlay(p,a,b,c,d,e) (p)->lpVtbl->InitPlay(p,a,b,c,d,e)
  250. #define IDirectMusicTrack8_EndPlay(p,a) (p)->lpVtbl->EndPlay(p,a)
  251. #define IDirectMusicTrack8_Play(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Play(p,a,b,c,d,e,f,g,h)
  252. #define IDirectMusicTrack8_GetParam(p,a,b,c,d) (p)->lpVtbl->GetParam(p,a,b,c,d)
  253. #define IDirectMusicTrack8_SetParam(p,a,b,c) (p)->lpVtbl->SetParam(p,a,b,c)
  254. #define IDirectMusicTrack8_IsParamSupported(p,a) (p)->lpVtbl->IsParamSupported(p,a)
  255. #define IDirectMusicTrack8_AddNotificationType(p,a) (p)->lpVtbl->AddNotificationType(p,a)
  256. #define IDirectMusicTrack8_RemoveNotificationType(p,a) (p)->lpVtbl->RemoveNotificationType(p,a)
  257. #define IDirectMusicTrack8_Clone(p,a,b,c) (p)->lpVtbl->Clone(p,a,b,c)
  258. /*** IDirectMusicTrack8 methods ***/
  259. #define IDirectMusicTrack8_PlayEx(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->PlayEx(p,a,b,c,d,e,f,g,h)
  260. #define IDirectMusicTrack8_GetParamEx(p,a,b,c,d,e,f) (p)->lpVtbl->GetParamEx(p,a,b,c,d,e,f)
  261. #define IDirectMusicTrack8_SetParamEx(p,a,b,c,d,e) (p)->lpVtbl->SetParamEx(p,a,b,c,d,e)
  262. #define IDirectMusicTrack8_Compose(p,a,b,c) (p)->lpVtbl->Compose(p,a,b,c)
  263. #define IDirectMusicTrack8_Join(p,a,b,c,d,e) (p)->lpVtbl->Join(p,a,b,c,d,e)
  264. #endif
  265. #ifdef __cplusplus
  266. }
  267. #endif
  268. #include <poppack.h>
  269. #endif /* __WINE_DMUSIC_PLUGIN_H */