some dmusic stuff

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This patch adds better debug messages (fixme) to dmusic code (it'll be
useful for further development). It also implements some new but
irrelevant dmusic functions. Dmusic still crashes at some point - I
think it's the problem Raphael reported earlier (when trying to create
dmusic loader object).

MIDI and Performance channels are now faked (apps can set priorities
etc. but at the moment, they're just dummies).

ChangeLog:
  - added debug
  - implemented fake midi & performance channels
  - implemented some IDirectMusic*8* functions where IDirectMusic*
equivalent exists
  - IDirectMusic*8 interfaces can now be obtained from IDirectMusic*
interfaces (QueryInterface...)
  - channel-related performance functions are kinda implemented now
  
-- 
Rok Mandeljc <rok.mandeljc@gimb.org>
diff -Nru Original/wine/dlls/dmusic/dmusic.c wine/dlls/dmusic/dmusic.c
--- Original/wine/dlls/dmusic/dmusic.c	2003-05-31 09:41:46.000000000 +0200
+++ wine/dlls/dmusic/dmusic.c	2003-05-31 09:42:09.000000000 +0200
@@ -51,9 +51,23 @@
 	{
 		IDirectMusicImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
-
+	
+	if (IsEqualGUID(riid, &IID_IDirectMusic8))
+	{
+		IDirectMusic8Impl *dmusic8 = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusic8Impl));
+		if (NULL == dmusic8)
+		{
+			*ppobj = (LPDIRECTMUSIC8)NULL;
+			return E_OUTOFMEMORY;
+		}
+		dmusic8->lpVtbl = &DirectMusic8_Vtbl;
+		dmusic8->ref = 1;
+		*ppobj = (LPDIRECTMUSIC8)dmusic8;
+		return S_OK;
+	}
+	
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
 }
@@ -97,7 +111,7 @@
 		pPortCaps->dwClass = DMUS_PC_OUTPUTCLASS;
 		pPortCaps->dwType = DMUS_PORT_WINMM_DRIVER;
 		pPortCaps->dwMemorySize = DMUS_PC_SYSTEMMEMORY;
-		pPortCaps->dwMaxChannelGroups = 1000;
+		pPortCaps->dwMaxChannelGroups = 1; /* FIXME: dxdiag on windows seems to return 1000, but that kills my allocating engine; guess we'll live with 1 group */
 		pPortCaps->dwMaxVoices = 1000;
 		pPortCaps->dwMaxAudioChannels = -1;
 		pPortCaps->dwEffectFlags = DMUS_EFFECT_REVERB | DMUS_EFFECT_CHORUS | DMUS_EFFECT_DELAY;
@@ -126,15 +140,18 @@
 }
 
 HRESULT WINAPI IDirectMusicImpl_CreateMusicBuffer (LPDIRECTMUSIC iface, LPDMUS_BUFFERDESC pBufferDesc, LPDIRECTMUSICBUFFER** ppBuffer, LPUNKNOWN pUnkOuter)
-{
-	FIXME("stub\n");
-	return DS_OK;
+{	
+	ICOM_THIS(IDirectMusicImpl,iface);
+
+	FIXME("(%p, %p, %p, %p): stub\n", This, pBufferDesc, ppBuffer, pUnkOuter);
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicImpl_CreatePort (LPDIRECTMUSIC iface, REFCLSID rclsidPort, LPDMUS_PORTPARAMS pPortParams, LPDIRECTMUSICPORT* ppPort, LPUNKNOWN pUnkOuter)
 {
 	ICOM_THIS(IDirectMusicImpl,iface);
-	int i;
+	int i, j;
 	DMUS_PORTCAPS PortCaps;
 	
 	TRACE("(%p, %s, %p, %p, %p)\n", This, debugstr_guid(rclsidPort), pPortParams, ppPort, pUnkOuter);
@@ -142,7 +159,7 @@
 	{				
 		if (IsEqualGUID(rclsidPort, &PortCaps.guidPort))
 		{		
-			This->ports = HeapReAlloc(GetProcessHeap(),0,This->ports,sizeof(LPDIRECTMUSICPORT)*This->nrofports);
+			This->ports = HeapReAlloc(GetProcessHeap(),0,This->ports,sizeof(LPDIRECTMUSICPORT)*(This->nrofports+1));
 			if (NULL == This->ports[This->nrofports])
 			{
 				*ppPort = (LPDIRECTMUSICPORT)NULL;
@@ -152,7 +169,36 @@
 			This->ports[This->nrofports]->ref = 0;
 			This->ports[This->nrofports]->active = FALSE;
 			This->ports[This->nrofports]->caps = &PortCaps;
-			This->ports[This->nrofports]->params = pPortParams;
+			This->ports[This->nrofports]->params = pPortParams; /* this one is here just because there's a funct. which retrieves it back */
+			
+			if (pPortParams->dwValidParams & DMUS_PORTPARAMS_CHANNELGROUPS)
+			{
+				This->ports[This->nrofports]->nrofgroups = pPortParams->dwChannelGroups;
+				/* setting default priorities */			
+				for (j = 0; j < This->ports[This->nrofports]->nrofgroups; j++)
+				{
+					TRACE ("Setting default channel priorities on channel group %i\n", j+1);
+					This->ports[This->nrofports]->group[j].channel[0].priority = DAUD_CHAN1_DEF_VOICE_PRIORITY;
+					This->ports[This->nrofports]->group[j].channel[1].priority = DAUD_CHAN2_DEF_VOICE_PRIORITY;
+					This->ports[This->nrofports]->group[j].channel[2].priority = DAUD_CHAN3_DEF_VOICE_PRIORITY;
+					This->ports[This->nrofports]->group[j].channel[3].priority = DAUD_CHAN4_DEF_VOICE_PRIORITY;
+					This->ports[This->nrofports]->group[j].channel[4].priority = DAUD_CHAN5_DEF_VOICE_PRIORITY;
+					This->ports[This->nrofports]->group[j].channel[5].priority = DAUD_CHAN6_DEF_VOICE_PRIORITY;
+					This->ports[This->nrofports]->group[j].channel[6].priority = DAUD_CHAN7_DEF_VOICE_PRIORITY;
+					This->ports[This->nrofports]->group[j].channel[7].priority = DAUD_CHAN8_DEF_VOICE_PRIORITY;
+					This->ports[This->nrofports]->group[j].channel[8].priority = DAUD_CHAN9_DEF_VOICE_PRIORITY;
+					This->ports[This->nrofports]->group[j].channel[9].priority = DAUD_CHAN10_DEF_VOICE_PRIORITY;
+					This->ports[This->nrofports]->group[j].channel[10].priority = DAUD_CHAN11_DEF_VOICE_PRIORITY;
+					This->ports[This->nrofports]->group[j].channel[11].priority = DAUD_CHAN12_DEF_VOICE_PRIORITY;
+					This->ports[This->nrofports]->group[j].channel[12].priority = DAUD_CHAN13_DEF_VOICE_PRIORITY;
+					This->ports[This->nrofports]->group[j].channel[13].priority = DAUD_CHAN14_DEF_VOICE_PRIORITY;
+					This->ports[This->nrofports]->group[j].channel[14].priority = DAUD_CHAN15_DEF_VOICE_PRIORITY;
+					This->ports[This->nrofports]->group[j].channel[15].priority = DAUD_CHAN16_DEF_VOICE_PRIORITY;
+				}
+			}
+		
+
+
 			*ppPort = (LPDIRECTMUSICPORT)This->ports[This->nrofports];
 			IDirectMusicPortImpl_AddRef ((LPDIRECTMUSICPORT)This->ports[This->nrofports]);
 			This->nrofports ++;
@@ -176,7 +222,7 @@
 {
 	ICOM_THIS(IDirectMusicImpl,iface);
 	
-	FIXME("(%p, %s, %p): stub\n", This, debugstr_guid (pguidClock), ppReferenceClock);
+	FIXME("(%p, %p, %p): stub\n", This, pguidClock, ppReferenceClock);
 	
 	return S_OK;
 }
@@ -288,7 +334,7 @@
 	{
 		IDirectMusic8Impl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -316,63 +362,173 @@
 /* IDirectMusic8 Interface follow: */
 HRESULT WINAPI IDirectMusic8Impl_EnumPort (LPDIRECTMUSIC8 iface, DWORD dwIndex, LPDMUS_PORTCAPS pPortCaps)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusic8Impl,iface);
+	int numMIDI = midiOutGetNumDevs();
+	int numWAVE = waveOutGetNumDevs();
+	int i;
+	
+	TRACE("(%p, %ld, %p)\n", This, dwIndex, pPortCaps);
+	TRACE("1 software synth. + %i WAVE + %i MIDI available\n", numWAVE, numMIDI);
+	/* i guess the first port shown is always software synthesizer */
+	if (dwIndex == 0)
+	{
+		TRACE("enumerating 'Microsoft Software Synthesizer' port\n");
+		pPortCaps->dwSize = sizeof(DMUS_PORTCAPS);
+		pPortCaps->dwFlags = DMUS_PC_DLS | DMUS_PC_SOFTWARESYNTH | DMUS_PC_DIRECTSOUND | DMUS_PC_DLS2 | DMUS_PC_AUDIOPATH | DMUS_PC_WAVE;
+		pPortCaps->guidPort = CLSID_DirectMusicSynth;
+		pPortCaps->dwClass = DMUS_PC_OUTPUTCLASS;
+		pPortCaps->dwType = DMUS_PORT_WINMM_DRIVER;
+		pPortCaps->dwMemorySize = DMUS_PC_SYSTEMMEMORY;
+		pPortCaps->dwMaxChannelGroups = 1000;
+		pPortCaps->dwMaxVoices = 1000;
+		pPortCaps->dwMaxAudioChannels = -1;
+		pPortCaps->dwEffectFlags = DMUS_EFFECT_REVERB | DMUS_EFFECT_CHORUS | DMUS_EFFECT_DELAY;
+		MultiByteToWideChar (CP_ACP, 0, "Microsotf Synthesizer", -1, pPortCaps->wszDescription, sizeof(pPortCaps->wszDescription)/sizeof(WCHAR));
+		return S_OK;
+	}
+	/* then return digital sound ports */
+	for (i = 1; i <= numWAVE; i++)
+	{
+		TRACE("enumerating 'digital sound' ports\n");	
+		if (i == dwIndex)
+		{
+			DirectSoundEnumerateA((LPDSENUMCALLBACKA)register_waveport, (VOID*)pPortCaps);
+			return S_OK;	
+		}
+	}
+	/* finally, list all *real* MIDI ports*/
+	for (i = numWAVE+1; i <= numWAVE + numMIDI; i++) 
+	{
+		TRACE("enumerating 'real MIDI' ports\n");		
+		if (i == dwIndex)
+			FIXME("Found MIDI port, but *real* MIDI ports not supported yet\n");
+	}
+	
+	return S_FALSE;
 }
 
 HRESULT WINAPI IDirectMusic8Impl_CreateMusicBuffer (LPDIRECTMUSIC8 iface, LPDMUS_BUFFERDESC pBufferDesc, LPDIRECTMUSICBUFFER** ppBuffer, LPUNKNOWN pUnkOuter)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusic8Impl,iface);
+
+	FIXME("(%p, %p, %p, %p): stub\n", This, pBufferDesc, ppBuffer, pUnkOuter);
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusic8Impl_CreatePort (LPDIRECTMUSIC8 iface, REFCLSID rclsidPort, LPDMUS_PORTPARAMS pPortParams, LPDIRECTMUSICPORT* ppPort, LPUNKNOWN pUnkOuter)
 {
 	ICOM_THIS(IDirectMusic8Impl,iface);
-	FIXME("(%p, %s, %p, %p, %p): stub\n", This, debugstr_guid(rclsidPort), pPortParams, ppPort, pUnkOuter);
-	return S_OK;
+	int i;
+	DMUS_PORTCAPS PortCaps;
+	
+	TRACE("(%p, %s, %p, %p, %p)\n", This, debugstr_guid(rclsidPort), pPortParams, ppPort, pUnkOuter);
+	for (i = 0; IDirectMusic8Impl_EnumPort (iface, i, &PortCaps) != S_FALSE; i++)
+	{				
+		if (IsEqualGUID(rclsidPort, &PortCaps.guidPort))
+		{		
+			This->ports = HeapReAlloc(GetProcessHeap(),0,This->ports,sizeof(LPDIRECTMUSICPORT)*This->nrofports);
+			if (NULL == This->ports[This->nrofports])
+			{
+				*ppPort = (LPDIRECTMUSICPORT)NULL;
+				return E_OUTOFMEMORY;
+			}
+			This->ports[This->nrofports]->lpVtbl = &DirectMusicPort_Vtbl;
+			This->ports[This->nrofports]->ref = 0;
+			This->ports[This->nrofports]->active = FALSE;
+			This->ports[This->nrofports]->caps = &PortCaps;
+			This->ports[This->nrofports]->params = pPortParams;
+			*ppPort = (LPDIRECTMUSICPORT)This->ports[This->nrofports];
+			IDirectMusicPortImpl_AddRef ((LPDIRECTMUSICPORT)This->ports[This->nrofports]);
+			This->nrofports ++;
+			return S_OK;			
+		}
+	}
+	/* FIXME: place correct error here */
+	return E_NOINTERFACE;
 }
 
 HRESULT WINAPI IDirectMusic8Impl_EnumMasterClock (LPDIRECTMUSIC8 iface, DWORD dwIndex, LPDMUS_CLOCKINFO lpClockInfo)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusic8Impl,iface);
+
+	FIXME("(%p, %ld, %p): stub\n", This, dwIndex, lpClockInfo);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusic8Impl_GetMasterClock (LPDIRECTMUSIC8 iface, LPGUID pguidClock, IReferenceClock** ppReferenceClock)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusic8Impl,iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, pguidClock, ppReferenceClock);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusic8Impl_SetMasterClock (LPDIRECTMUSIC8 iface, REFGUID rguidClock)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusic8Impl,iface);
+	
+	FIXME("(%p, %s): stub\n", This, debugstr_guid(rguidClock));
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusic8Impl_Activate (LPDIRECTMUSIC8 iface, BOOL fEnable)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusic8Impl,iface);
+	int i;
+	
+	FIXME("(%p, %d): stub\n", This, fEnable);
+	for (i = 0; i < This->nrofports; i++)	
+	{
+		This->ports[i]->active = fEnable;
+	}
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusic8Impl_GetDefaultPort (LPDIRECTMUSIC8 iface, LPGUID pguidPort)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusic8Impl,iface);
+	HKEY hkGUID;
+	DWORD returnTypeGUID, sizeOfReturnBuffer = 50;
+	char returnBuffer[51];
+	GUID defaultPortGUID;
+	WCHAR    buff[51];
+
+	TRACE("(%p, %p)\n", This, pguidPort);
+	if ((RegOpenKeyExA (HKEY_LOCAL_MACHINE, "Software\\Microsoft\\DirectMusic\\Defaults" , 0, KEY_READ, &hkGUID) != ERROR_SUCCESS) || (RegQueryValueExA (hkGUID, "DefaultOutputPort", NULL, &returnTypeGUID, returnBuffer, &sizeOfReturnBuffer) != ERROR_SUCCESS))
+	{
+		WARN(": registry entry missing\n" );
+		*pguidPort = CLSID_DirectMusicSynth;
+		return S_OK;
+	}
+	/* FIXME: Check return types to ensure we're interpreting data right */
+	MultiByteToWideChar (CP_ACP, 0, returnBuffer, -1, buff, sizeof(buff)/sizeof(WCHAR));
+	CLSIDFromString ((LPCOLESTR)buff, &defaultPortGUID);
+	*pguidPort = defaultPortGUID;
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusic8Impl_SetDirectSound (LPDIRECTMUSIC8 iface, LPDIRECTSOUND pDirectSound, HWND hWnd)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusic8Impl,iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, pDirectSound, hWnd);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusic8Impl_SetExternalMasterClock (LPDIRECTMUSIC8 iface, IReferenceClock* pClock)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusic8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pClock);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusic8) DirectMusic8_Vtbl =
@@ -403,7 +559,7 @@
 	{
 		IDirectMusicDownloadImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -431,8 +587,11 @@
 /* IDirectMusicDownload Interface follow: */
 HRESULT WINAPI IDirectMusicDownloadImpl_GetBuffer (LPDIRECTMUSICDOWNLOAD iface, void** ppvBuffer, DWORD* pdwSize)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicDownloadImpl,iface);
+
+	FIXME("(%p,%p, %p): stub\n", This, ppvBuffer, pdwSize);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicDownload) DirectMusicDownload_Vtbl =
@@ -454,7 +613,7 @@
 	{
 		IDirectMusicBufferImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -482,80 +641,119 @@
 /* IDirectMusicBuffer Interface follow: */
 HRESULT WINAPI IDirectMusicBufferImpl_Flush (LPDIRECTMUSICBUFFER iface)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicBufferImpl,iface);
+
+	FIXME("(%p): stub\n", This);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicBufferImpl_TotalTime (LPDIRECTMUSICBUFFER iface, LPREFERENCE_TIME prtTime)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicBufferImpl,iface);
+	
+	FIXME("(%p, %p): stub\n", This, prtTime);
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicBufferImpl_PackStructured (LPDIRECTMUSICBUFFER iface, REFERENCE_TIME rt, DWORD dwChannelGroup, DWORD dwChannelMessage)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicBufferImpl,iface);
+
+	FIXME("(%p, FIXME, %ld, %ld): stub\n", This,/* rt,*/ dwChannelGroup, dwChannelMessage);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicBufferImpl_PackUnstructured (LPDIRECTMUSICBUFFER iface, REFERENCE_TIME rt, DWORD dwChannelGroup, DWORD cb, LPBYTE lpb)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicBufferImpl,iface);
+
+	FIXME("(%p, FIXME, %ld, %ld, %p): stub\n", This,/* rt,*/ dwChannelGroup, cb, lpb);
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicBufferImpl_ResetReadPtr (LPDIRECTMUSICBUFFER iface)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicBufferImpl,iface);
+
+	FIXME("(%p): stub\n", This);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicBufferImpl_GetNextEvent (LPDIRECTMUSICBUFFER iface, LPREFERENCE_TIME prt, LPDWORD pdwChannelGroup, LPDWORD pdwLength, LPBYTE* ppData)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicBufferImpl,iface);
+
+	FIXME("(%p, %p, %p, %p, %p): stub\n", This, prt, pdwChannelGroup, pdwLength, ppData);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicBufferImpl_GetRawBufferPtr (LPDIRECTMUSICBUFFER iface, LPBYTE* ppData)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicBufferImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, ppData);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicBufferImpl_GetStartTime (LPDIRECTMUSICBUFFER iface, LPREFERENCE_TIME prt)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicBufferImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, prt);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicBufferImpl_GetUsedBytes (LPDIRECTMUSICBUFFER iface, LPDWORD pcb)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicBufferImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pcb);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicBufferImpl_GetMaxBytes (LPDIRECTMUSICBUFFER iface, LPDWORD pcb)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicBufferImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pcb);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicBufferImpl_GetBufferFormat (LPDIRECTMUSICBUFFER iface, LPGUID pGuidFormat)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicBufferImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pGuidFormat);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicBufferImpl_SetStartTime (LPDIRECTMUSICBUFFER iface, REFERENCE_TIME rt)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicBufferImpl,iface);
+
+	FIXME("(%p, FIXME): stub\n", This/*, rt*/);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicBufferImpl_SetUsedBytes (LPDIRECTMUSICBUFFER iface, DWORD cb)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicBufferImpl,iface);
+
+	FIXME("(%p, %ld): stub\n", This, cb);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicBuffer) DirectMusicBuffer_Vtbl =
@@ -589,7 +787,7 @@
 	{
 		IDirectMusicObjectImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -617,20 +815,31 @@
 /* IDirectMusicObject Interface follow: */
 HRESULT WINAPI IDirectMusicObjectImpl_GetDescriptor (LPDIRECTMUSICOBJECT iface, LPDMUS_OBJECTDESC pDesc)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicObjectImpl,iface);
+
+	TRACE("(%p, %p)\n", This, pDesc);
+	pDesc = This->desc;
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicObjectImpl_SetDescriptor (LPDIRECTMUSICOBJECT iface, LPDMUS_OBJECTDESC pDesc)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicObjectImpl,iface);
+
+	TRACE("(%p, %p)\n", This, pDesc);
+	This->desc = pDesc;
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicObjectImpl_ParseDescriptor (LPDIRECTMUSICOBJECT iface, LPSTREAM pStream, LPDMUS_OBJECTDESC pDesc)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicObjectImpl,iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, pStream, pDesc);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicObject) DirectMusicObject_Vtbl =
@@ -656,8 +865,8 @@
 	pPortCaps->dwClass = DMUS_PC_OUTPUTCLASS;
 	pPortCaps->dwType = DMUS_PORT_WINMM_DRIVER;
 	pPortCaps->dwMemorySize = DMUS_PC_SYSTEMMEMORY;
-	pPortCaps->dwMaxChannelGroups = 1000;
-	pPortCaps->dwMaxVoices = 1000;
+	pPortCaps->dwMaxChannelGroups = 2;
+	pPortCaps->dwMaxVoices = -1;
 	pPortCaps->dwMaxAudioChannels = -1;
 	pPortCaps->dwEffectFlags = DMUS_EFFECT_REVERB | DMUS_EFFECT_CHORUS | DMUS_EFFECT_DELAY;
 	MultiByteToWideChar (CP_ACP, 0, lpszDesc, -1, pPortCaps->wszDescription, sizeof(pPortCaps->wszDescription)/sizeof(WCHAR));
diff -Nru Original/wine/dlls/dmusic/dmusic_instrument.c wine/dlls/dmusic/dmusic_instrument.c
--- Original/wine/dlls/dmusic/dmusic_instrument.c	2003-05-31 09:41:46.000000000 +0200
+++ wine/dlls/dmusic/dmusic_instrument.c	2003-05-31 09:42:09.000000000 +0200
@@ -38,7 +38,7 @@
 	{
 		IDirectMusicInstrumentImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -66,14 +66,22 @@
 /* IDirectMusicInstrument Interface follow: */
 HRESULT WINAPI IDirectMusicInstrumentImpl_GetPatch (LPDIRECTMUSICINSTRUMENT iface, DWORD* pdwPatch)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicInstrumentImpl,iface);
+
+	TRACE("(%p, %p)\n", This, pdwPatch);
+	*pdwPatch = This->patch;
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicInstrumentImpl_SetPatch (LPDIRECTMUSICINSTRUMENT iface, DWORD dwPatch)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicInstrumentImpl,iface);
+
+	TRACE("(%p, %ld)\n", This, dwPatch);
+	This->patch = dwPatch;
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicInstrument) DirectMusicInstrument_Vtbl =
@@ -96,7 +104,7 @@
 	{
 		IDirectMusicDownloadedInstrumentImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -142,7 +150,7 @@
 	{
 		IDirectMusicCollectionImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -170,14 +178,20 @@
 /* IDirectMusicCollection Interface follow: */
 HRESULT WINAPI IDirectMusicCollectionImpl_GetInstrument (LPDIRECTMUSICCOLLECTION iface, DWORD dwPatch, IDirectMusicInstrument** ppInstrument)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicCollectionImpl,iface);
+
+	FIXME("(%p, %ld, %p): stub\n", This, dwPatch, ppInstrument);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicCollectionImpl_EnumInstrument (LPDIRECTMUSICCOLLECTION iface, DWORD dwIndex, DWORD* pdwPatch, LPWSTR pwszName, DWORD dwNameLen)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicCollectionImpl,iface);
+
+	FIXME("(%p, %ld, %p, %p, %ld): stub\n", This, dwIndex, pdwPatch, pwszName, dwNameLen);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicCollection) DirectMusicCollection_Vtbl =
diff -Nru Original/wine/dlls/dmusic/dmusic_loader.c wine/dlls/dmusic/dmusic_loader.c
--- Original/wine/dlls/dmusic/dmusic_loader.c	2003-05-31 09:41:46.000000000 +0200
+++ wine/dlls/dmusic/dmusic_loader.c	2003-05-31 09:42:09.000000000 +0200
@@ -38,7 +38,7 @@
 	{
 		IDirectMusicLoaderImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -66,56 +66,83 @@
 /* IDirectMusicLoader Interface follow: */
 HRESULT WINAPI IDirectMusicLoaderImpl_GetObject (LPDIRECTMUSICLOADER iface, LPDMUS_OBJECTDESC pDesc, REFIID riid, LPVOID*ppv)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicLoaderImpl,iface);
+
+	FIXME("(%p, %p, %s, %p): stub\n", This, pDesc, debugstr_guid(riid), ppv);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicLoaderImpl_SetObject (LPDIRECTMUSICLOADER iface, LPDMUS_OBJECTDESC pDesc)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicLoaderImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pDesc);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicLoaderImpl_SetSearchDirectory (LPDIRECTMUSICLOADER iface, REFGUID rguidClass, WCHAR* pwzPath, BOOL fClear)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicLoaderImpl,iface);
+
+	FIXME("(%p, %s, %p, %d): stub\n", This, debugstr_guid(rguidClass), pwzPath, fClear);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicLoaderImpl_ScanDirectory (LPDIRECTMUSICLOADER iface, REFGUID rguidClass, WCHAR* pwzFileExtension, WCHAR* pwzScanFileName)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicLoaderImpl,iface);
+
+	FIXME("(%p, %s, %p, %p): stub\n", This, debugstr_guid(rguidClass), pwzFileExtension, pwzScanFileName);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicLoaderImpl_CacheObject (LPDIRECTMUSICLOADER iface, IDirectMusicObject* pObject)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicLoaderImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pObject);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicLoaderImpl_ReleaseObject (LPDIRECTMUSICLOADER iface, IDirectMusicObject* pObject)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicLoaderImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pObject);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicLoaderImpl_ClearCache (LPDIRECTMUSICLOADER iface, REFGUID rguidClass)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicLoaderImpl,iface);
+
+	FIXME("(%p,%s): stub\n", This, debugstr_guid(rguidClass));
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicLoaderImpl_EnableCache (LPDIRECTMUSICLOADER iface, REFGUID rguidClass, BOOL fEnable)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicLoaderImpl,iface);
+
+	FIXME("(%p, %s, %d): stub\n", This, debugstr_guid(rguidClass), fEnable);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicLoaderImpl_EnumObject (LPDIRECTMUSICLOADER iface, REFGUID rguidClass, DWORD dwIndex, LPDMUS_OBJECTDESC pDesc)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicLoaderImpl,iface);
+
+	FIXME("(%p, %s, %ld, %p): stub\n", This, debugstr_guid(rguidClass), dwIndex, pDesc);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicLoader) DirectMusicLoader_Vtbl =
@@ -145,7 +172,7 @@
 	{
 		IDirectMusicLoader8Impl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -173,74 +200,109 @@
 /* IDirectMusicLoader Interface part follow: */
 HRESULT WINAPI IDirectMusicLoader8Impl_GetObject (LPDIRECTMUSICLOADER8 iface, LPDMUS_OBJECTDESC pDesc, REFIID riid, LPVOID*ppv)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicLoader8Impl,iface);
+
+	FIXME("(%p, %p, %s, %p): stub\n", This, pDesc, debugstr_guid(riid), ppv);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicLoader8Impl_SetObject (LPDIRECTMUSICLOADER8 iface, LPDMUS_OBJECTDESC pDesc)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicLoader8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pDesc);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicLoader8Impl_SetSearchDirectory (LPDIRECTMUSICLOADER8 iface, REFGUID rguidClass, WCHAR* pwzPath, BOOL fClear)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicLoader8Impl,iface);
+
+	FIXME("(%p, %s, %p, %d): stub\n", This, debugstr_guid(rguidClass), pwzPath, fClear);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicLoader8Impl_ScanDirectory (LPDIRECTMUSICLOADER8 iface, REFGUID rguidClass, WCHAR* pwzFileExtension, WCHAR* pwzScanFileName)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicLoader8Impl,iface);
+
+	FIXME("(%p, %s, %p, %p): stub\n", This, debugstr_guid(rguidClass), pwzFileExtension, pwzScanFileName);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicLoader8Impl_CacheObject (LPDIRECTMUSICLOADER8 iface, IDirectMusicObject* pObject)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicLoader8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pObject);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicLoader8Impl_ReleaseObject (LPDIRECTMUSICLOADER8 iface, IDirectMusicObject* pObject)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicLoader8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pObject);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicLoader8Impl_ClearCache (LPDIRECTMUSICLOADER8 iface, REFGUID rguidClass)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicLoader8Impl,iface);
+
+	FIXME("(%p, %s): stub\n", This, debugstr_guid(rguidClass));
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicLoader8Impl_EnableCache (LPDIRECTMUSICLOADER8 iface, REFGUID rguidClass, BOOL fEnable)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicLoader8Impl,iface);
+
+	FIXME("(%p, %s, %d): stub\n", This, debugstr_guid(rguidClass), fEnable);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicLoader8Impl_EnumObject (LPDIRECTMUSICLOADER8 iface, REFGUID rguidClass, DWORD dwIndex, LPDMUS_OBJECTDESC pDesc)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicLoader8Impl,iface);
+
+	FIXME("(%p, %s, %ld, %p): stub\n", This, debugstr_guid(rguidClass), dwIndex, pDesc);
+
+	return S_OK;
 }
 
 /* IDirectMusicLoader8 Interface part follow: */
 void WINAPI IDirectMusicLoader8Impl_CollectGarbage (LPDIRECTMUSICLOADER8 iface)
 {
-	FIXME("stub\n");
+	ICOM_THIS(IDirectMusicLoader8Impl,iface);
+
+	FIXME("(%p): stub\n", This);
 }
 
 HRESULT WINAPI IDirectMusicLoader8Impl_ReleaseObjectByUnknown (LPDIRECTMUSICLOADER8 iface, IUnknown* pObject)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicLoader8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pObject);
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicLoader8Impl_LoadObjectFromFile (LPDIRECTMUSICLOADER8 iface, REFGUID rguidClassID, REFIID iidInterfaceID, WCHAR* pwzFilePath, void** ppObject)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicLoader8Impl,iface);
+
+	FIXME("(%p, %s, %s, %p, %p): stub\n", This, debugstr_guid(rguidClassID), debugstr_guid(iidInterfaceID), pwzFilePath, ppObject);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicLoader8) DirectMusicLoader8_Vtbl =
@@ -296,7 +358,7 @@
 	{
 		IDirectMusicGetLoaderImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -324,8 +386,11 @@
 /* IDirectMusicGetLoader Interface follow: */
 HRESULT WINAPI IDirectMusicGetLoaderImpl_GetLoader (LPDIRECTMUSICGETLOADER iface, IDirectMusicLoader** ppLoader)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicGetLoaderImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, ppLoader);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicGetLoader) DirectMusicGetLoader_Vtbl =
diff -Nru Original/wine/dlls/dmusic/dmusic_main.c wine/dlls/dmusic/dmusic_main.c
--- Original/wine/dlls/dmusic/dmusic_main.c	2003-05-31 09:41:46.000000000 +0200
+++ wine/dlls/dmusic/dmusic_main.c	2003-05-31 09:42:09.000000000 +0200
@@ -73,10 +73,10 @@
 	{
 		return DMUSIC_CreateDirectMusicPerformance8 (riid, (LPDIRECTMUSICPERFORMANCE8*)ppobj, pOuter);
 	}
-	if (IsEqualGUID (&IID_IDirectMusicLoader8, riid))
+	/*if (IsEqualGUID (&IID_IDirectMusicLoader8, riid))
 	{
 		return DMUSIC_CreateDirectMusicLoader8 (riid, (LPDIRECTMUSICLOADER8*)ppobj, pOuter);
-	}
+	}*/
 	
     WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
diff -Nru Original/wine/dlls/dmusic/dmusic_misc.c wine/dlls/dmusic/dmusic_misc.c
--- Original/wine/dlls/dmusic/dmusic_misc.c	2003-05-31 09:41:46.000000000 +0200
+++ wine/dlls/dmusic/dmusic_misc.c	2003-05-31 09:42:09.000000000 +0200
@@ -45,7 +45,7 @@
 	{
 		IReferenceClockImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -73,26 +73,38 @@
 /* IReferenceClock Interface follow: */
 HRESULT WINAPI IReferenceClockImpl_GetTime (LPREFERENCECLOCK iface, REFERENCE_TIME* pTime)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IReferenceClockImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pTime);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IReferenceClockImpl_AdviseTime (LPREFERENCECLOCK iface, REFERENCE_TIME baseTime, REFERENCE_TIME streamTime, HANDLE hEvent, DWORD* pdwAdviseCookie)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IReferenceClockImpl,iface);
+
+	FIXME("(%p, FIXME, FIXME, %p, %p): stub\n", This,/* baseTime, streamTime,*/ hEvent, pdwAdviseCookie);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IReferenceClockImpl_AdvisePeriodic (LPREFERENCECLOCK iface, REFERENCE_TIME startTime, REFERENCE_TIME periodTime, HANDLE hSemaphore, DWORD* pdwAdviseCookie)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IReferenceClockImpl,iface);
+
+	FIXME("(%p, FIXME, FIXME, %p, %p): stub\n", This,/* startTime, periodTime,*/ hSemaphore, pdwAdviseCookie);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IReferenceClockImpl_Unadvise (LPREFERENCECLOCK iface, DWORD dwAdviseCookie)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IReferenceClockImpl,iface);
+
+	FIXME("(%p, %ld): stub\n", This, dwAdviseCookie);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IReferenceClock) ReferenceClock_Vtbl =
@@ -117,7 +129,7 @@
 	{
 		IDirectMusicThruImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -145,8 +157,11 @@
 /* IDirectMusicThru Interface follow: */
 HRESULT WINAPI IDirectMusicThruImpl_ThruChannel (LPDIRECTMUSICTHRU iface, DWORD dwSourceChannelGroup, DWORD dwSourceChannel, DWORD dwDestinationChannelGroup, DWORD dwDestinationChannel, LPDIRECTMUSICPORT pDestinationPort)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicThruImpl,iface);
+
+	FIXME("(%p, %ld, %ld, %ld, %ld, %p): stub\n", This, dwSourceChannelGroup, dwSourceChannel, dwDestinationChannelGroup, dwDestinationChannel, pDestinationPort);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicThru) DirectMusicThru_Vtbl =
@@ -168,7 +183,7 @@
 	{
 		IDirectMusicAudioPathImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -196,26 +211,38 @@
 /* IDirectMusicAudioPath Interface follow: */
 HRESULT WINAPI IDirectMusicAudioPathImpl_GetObjectInPath (LPDIRECTMUSICAUDIOPATH iface, DWORD dwPChannel, DWORD dwStage, DWORD dwBuffer, REFGUID guidObject, WORD dwIndex, REFGUID iidInterface, void** ppObject)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicAudioPathImpl,iface);
+
+	FIXME("(%p, %ld, %ld, %ld, %s, %d, %s, %p): stub\n", This, dwPChannel, dwStage, dwBuffer, debugstr_guid(guidObject), dwIndex, debugstr_guid(iidInterface), ppObject);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicAudioPathImpl_Activate (LPDIRECTMUSICAUDIOPATH iface, BOOL fActivate)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicAudioPathImpl,iface);
+
+	FIXME("(%p, %d): stub\n", This, fActivate);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicAudioPathImpl_SetVolume (LPDIRECTMUSICAUDIOPATH iface, long lVolume, DWORD dwDuration)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicAudioPathImpl,iface);
+
+	FIXME("(%p, %li, %ld): stub\n", This, lVolume, dwDuration);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicAudioPathImpl_ConvertPChannel (LPDIRECTMUSICAUDIOPATH iface, DWORD dwPChannelIn, DWORD* pdwPChannelOut)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicAudioPathImpl,iface);
+
+	FIXME("(%p, %ld, %p): stub\n", This, dwPChannelIn, pdwPChannelOut);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicAudioPath) DirectMusicAudioPath_Vtbl =
@@ -224,7 +251,10 @@
 	IDirectMusicAudioPathImpl_QueryInterface,
 	IDirectMusicAudioPathImpl_AddRef,
 	IDirectMusicAudioPathImpl_Release,
-
+	IDirectMusicAudioPathImpl_GetObjectInPath,
+	IDirectMusicAudioPathImpl_Activate,
+	IDirectMusicAudioPathImpl_SetVolume,
+	IDirectMusicAudioPathImpl_ConvertPChannel
 };
 
 
@@ -237,7 +267,7 @@
 	{
 		IDirectMusicBandImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -265,20 +295,29 @@
 /* IDirectMusicBand Interface follow: */
 HRESULT WINAPI IDirectMusicBandImpl_CreateSegment (LPDIRECTMUSICBAND iface, IDirectMusicSegment** ppSegment)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicBandImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, ppSegment);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicBandImpl_Download (LPDIRECTMUSICBAND iface, IDirectMusicPerformance* pPerformance)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicBandImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pPerformance);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicBandImpl_Unload (LPDIRECTMUSICBAND iface, IDirectMusicPerformance* pPerformance)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicBandImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pPerformance);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicBand) DirectMusicBand_Vtbl =
@@ -302,7 +341,7 @@
 	{
 		IDirectMusicSongImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -330,44 +369,65 @@
 /* IDirectMusicSong Interface follow: */
 HRESULT WINAPI IDirectMusicSongImpl_Compose (LPDIRECTMUSICSONG iface)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSongImpl,iface);
+
+	FIXME("(%p): stub\n", This);
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSongImpl_GetParam (LPDIRECTMUSICSONG iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSongImpl,iface);
+
+	FIXME("(%p, %s, %ld, %ld, %ld, %p, %p): stub\n", This, debugstr_guid(rguidType), dwGroupBits, dwIndex, mtTime, pmtNext, pParam);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSongImpl_GetSegment (LPDIRECTMUSICSONG iface, WCHAR* pwzName, IDirectMusicSegment** ppSegment)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSongImpl,iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, pwzName, ppSegment);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSongImpl_GetAudioPathConfig (LPDIRECTMUSICSONG iface, IUnknown** ppAudioPathConfig)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSongImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, ppAudioPathConfig);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSongImpl_Download (LPDIRECTMUSICSONG iface, IUnknown* pAudioPath)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSongImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pAudioPath);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSongImpl_Unload (LPDIRECTMUSICSONG iface, IUnknown* pAudioPath)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSongImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pAudioPath);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSongImpl_EnumSegment (LPDIRECTMUSICSONG iface, DWORD dwIndex, IDirectMusicSegment** ppSegment)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSongImpl,iface);
+
+	FIXME("(%p, %ld, %p): stub\n", This, dwIndex, ppSegment);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicSong) DirectMusicSong_Vtbl =
@@ -395,7 +455,7 @@
 	{
 		IDirectMusicChordMapImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -423,8 +483,11 @@
 /* IDirectMusicChordMap Interface follow: */
 HRESULT WINAPI IDirectMusicChordMapImpl_GetScale (LPDIRECTMUSICCHORDMAP iface, DWORD* pdwScale)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicChordMapImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pdwScale);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicChordMap) DirectMusicChordMap_Vtbl =
@@ -446,7 +509,7 @@
 	{
 		IDirectMusicComposerImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -474,38 +537,56 @@
 /* IDirectMusicComposer Interface follow: */
 HRESULT WINAPI IDirectMusicComposerImpl_ComposeSegmentFromTemplate (LPDIRECTMUSICCOMPOSER iface, IDirectMusicStyle* pStyle, IDirectMusicSegment* pTemplate, WORD wActivity, IDirectMusicChordMap* pChordMap, IDirectMusicSegment** ppSegment)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicComposerImpl,iface);
+
+	FIXME("(%p, %p, %p, %d, %p, %p): stub\n", This, pStyle, pTemplate, wActivity, pChordMap, ppSegment);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicComposerImpl_ComposeSegmentFromShape (LPDIRECTMUSICCOMPOSER iface, IDirectMusicStyle* pStyle, WORD wNumMeasures, WORD wShape, WORD wActivity, BOOL fIntro, BOOL fEnd, IDirectMusicChordMap* pChordMap, IDirectMusicSegment** ppSegment)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicComposerImpl,iface);
+
+	FIXME("(%p, %p, %d, %d, %d, %d, %d, %p, %p): stub\n", This, pStyle, wNumMeasures, wShape, wActivity, fIntro, fEnd, pChordMap, ppSegment);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicComposerImpl_ComposeTransition (LPDIRECTMUSICCOMPOSER iface, IDirectMusicSegment* pFromSeg, IDirectMusicSegment* pToSeg, MUSIC_TIME mtTime, WORD wCommand, DWORD dwFlags, IDirectMusicChordMap* pChordMap, IDirectMusicSegment** ppTransSeg)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicComposerImpl,iface);
+
+	FIXME("(%p, %p, %p, %ld, %d, %ld, %p, %p): stub\n", This, pFromSeg, pToSeg, mtTime, wCommand, dwFlags, pChordMap, ppTransSeg);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicComposerImpl_AutoTransition (LPDIRECTMUSICCOMPOSER iface, IDirectMusicPerformance* pPerformance, IDirectMusicSegment* pToSeg, WORD wCommand, DWORD dwFlags, IDirectMusicChordMap* pChordMap, IDirectMusicSegment** ppTransSeg, IDirectMusicSegmentState** ppToSegState, IDirectMusicSegmentState** ppTransSegState)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicComposerImpl,iface);
+
+	FIXME("(%p, %p, %d, %ld, %p, %p, %p, %p): stub\n", This, pPerformance, wCommand, dwFlags, pChordMap, ppTransSeg, ppToSegState, ppTransSegState);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicComposerImpl_ComposeTemplateFromShape (LPDIRECTMUSICCOMPOSER iface, WORD wNumMeasures, WORD wShape, BOOL fIntro, BOOL fEnd, WORD wEndLength, IDirectMusicSegment** ppTemplate)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicComposerImpl,iface);
+
+	FIXME("(%p, %d, %d, %d, %d, %d, %p): stub\n", This, wNumMeasures, wShape, fIntro, fEnd, wEndLength, ppTemplate);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicComposerImpl_ChangeChordMap (LPDIRECTMUSICCOMPOSER iface, IDirectMusicSegment* pSegment, BOOL fTrackScale, IDirectMusicChordMap* pChordMap)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicComposerImpl,iface);
+
+	FIXME("(%p, %p, %d, %p): stub\n", This, pSegment, fTrackScale, pChordMap);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicComposer) DirectMusicComposer_Vtbl =
@@ -532,7 +613,7 @@
 	{
 		IDirectMusicContainerImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -560,8 +641,11 @@
 /* IDirectMusicContainer Interface follow: */
 HRESULT WINAPI IDirectMusicContainerImpl_EnumObject (LPDIRECTMUSICCONTAINER iface, REFGUID rguidClass, DWORD dwIndex, LPDMUS_OBJECTDESC pDesc, WCHAR* pwszAlias)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicContainerImpl,iface);
+
+	FIXME("(%p, %s, %ld, %p, %p): stub\n", This, debugstr_guid(rguidClass), dwIndex, pDesc, pwszAlias);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicContainer) DirectMusicContainer_Vtbl =
@@ -583,7 +667,7 @@
 	{
 		IDirectMusicGraphImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -611,26 +695,38 @@
 /* IDirectMusicGraph Interface follow: */
 HRESULT WINAPI IDirectMusicGraphImpl_StampPMsg (LPDIRECTMUSICGRAPH iface, DMUS_PMSG* pPMSG)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicGraphImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pPMSG);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicGraphImpl_InsertTool (LPDIRECTMUSICGRAPH iface, IDirectMusicTool* pTool, DWORD* pdwPChannels, DWORD cPChannels, LONG lIndex)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicGraphImpl,iface);
+
+	FIXME("(%p, %p, %p, %ld, %li): stub\n", This, pTool, pdwPChannels, cPChannels, lIndex);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicGraphImpl_GetTool (LPDIRECTMUSICGRAPH iface, DWORD dwIndex, IDirectMusicTool** ppTool)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicGraphImpl,iface);
+
+	FIXME("(%p, %ld, %p): stub\n", This, dwIndex, ppTool);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicGraphImpl_RemoveTool (LPDIRECTMUSICGRAPH iface, IDirectMusicTool* pTool)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicGraphImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pTool);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicGraph) DirectMusicGraph_Vtbl =
@@ -655,7 +751,7 @@
 	{
 		IDirectMusicScriptImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -683,62 +779,92 @@
 /* IDirectMusicScript Interface follow: */
 HRESULT WINAPI IDirectMusicScriptImpl_Init (LPDIRECTMUSICSCRIPT iface, IDirectMusicPerformance* pPerformance, DMUS_SCRIPT_ERRORINFO* pErrorInfo)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicScriptImpl,iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, pPerformance, pErrorInfo);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicScriptImpl_CallRoutine (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszRoutineName, DMUS_SCRIPT_ERRORINFO* pErrorInfo)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicScriptImpl,iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, pwszRoutineName, pErrorInfo);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicScriptImpl_SetVariableVariant (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszVariableName, VARIANT varValue, BOOL fSetRef, DMUS_SCRIPT_ERRORINFO* pErrorInfo)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicScriptImpl,iface);
+
+	FIXME("(%p, %p, FIXME, %d, %p): stub\n", This, pwszVariableName,/* varValue,*/ fSetRef, pErrorInfo);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicScriptImpl_GetVariableVariant (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszVariableName, VARIANT* pvarValue, DMUS_SCRIPT_ERRORINFO* pErrorInfo)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicScriptImpl,iface);
+
+	FIXME("(%p, %p, %p, %p): stub\n", This, pwszVariableName, pvarValue, pErrorInfo);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicScriptImpl_SetVariableNumber (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszVariableName, LONG lValue, DMUS_SCRIPT_ERRORINFO* pErrorInfo)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicScriptImpl,iface);
+
+	FIXME("(%p, %p, %li, %p): stub\n", This, pwszVariableName, lValue, pErrorInfo);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicScriptImpl_GetVariableNumber (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszVariableName, LONG* plValue, DMUS_SCRIPT_ERRORINFO* pErrorInfo)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicScriptImpl,iface);
+
+	FIXME("(%p, %p, %p, %p): stub\n", This, pwszVariableName, plValue, pErrorInfo);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicScriptImpl_SetVariableObject (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszVariableName, IUnknown* punkValue, DMUS_SCRIPT_ERRORINFO* pErrorInfo)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicScriptImpl,iface);
+
+	FIXME("(%p, %p, %p, %p): stub\n", This, pwszVariableName, punkValue, pErrorInfo);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicScriptImpl_GetVariableObject (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszVariableName, REFIID riid, LPVOID* ppv, DMUS_SCRIPT_ERRORINFO* pErrorInfo)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicScriptImpl,iface);
+
+	FIXME("(%p, %p, %s, %p, %p): stub\n", This, pwszVariableName, debugstr_guid(riid), ppv, pErrorInfo);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicScriptImpl_EnumRoutine (LPDIRECTMUSICSCRIPT iface, DWORD dwIndex, WCHAR* pwszName)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicScriptImpl,iface);
+
+	FIXME("(%p, %ld, %p): stub\n", This, dwIndex, pwszName);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicScriptImpl_EnumVariable (LPDIRECTMUSICSCRIPT iface, DWORD dwIndex, WCHAR* pwszName)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicScriptImpl,iface);
+
+	FIXME("(%p, %ld, %p): stub\n", This, dwIndex, pwszName);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicScript) DirectMusicScript_Vtbl =
diff -Nru Original/wine/dlls/dmusic/dmusic_performance.c wine/dlls/dmusic/dmusic_performance.c
--- Original/wine/dlls/dmusic/dmusic_performance.c	2003-05-31 09:41:46.000000000 +0200
+++ wine/dlls/dmusic/dmusic_performance.c	2003-05-31 09:42:09.000000000 +0200
@@ -37,7 +37,11 @@
 	{
 		IDirectMusicPerformanceImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
+	}
+	if (IsEqualGUID(riid, &IID_IDirectMusicPerformance8))
+	{
+		return DMUSIC_CreateDirectMusicPerformance8 (riid, (LPDIRECTMUSICPERFORMANCE8 *)ppobj, NULL);
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -99,249 +103,408 @@
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_PlaySegment (LPDIRECTMUSICPERFORMANCE iface, IDirectMusicSegment* pSegment, DWORD dwFlags, __int64 i64StartTime, IDirectMusicSegmentState** ppSegmentState)
 {
-	FIXME("stub\n");
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %p, %ld, FIXME, %p): stub\n", This, pSegment, dwFlags/*, i64StartTime*/, ppSegmentState);
+
 	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_Stop (LPDIRECTMUSICPERFORMANCE iface, IDirectMusicSegment* pSegment, IDirectMusicSegmentState* pSegmentState, MUSIC_TIME mtTime, DWORD dwFlags)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %p, %p, %ld, %ld): stub\n", This, pSegment, pSegmentState, mtTime, dwFlags);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_GetSegmentState (LPDIRECTMUSICPERFORMANCE iface, IDirectMusicSegmentState** ppSegmentState, MUSIC_TIME mtTime)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p,%p, %ld): stub\n", This, ppSegmentState, mtTime);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_SetPrepareTime (LPDIRECTMUSICPERFORMANCE iface, DWORD dwMilliSeconds)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %ld): stub\n", This, dwMilliSeconds);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_GetPrepareTime (LPDIRECTMUSICPERFORMANCE iface, DWORD* pdwMilliSeconds)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pdwMilliSeconds);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_SetBumperLength (LPDIRECTMUSICPERFORMANCE iface, DWORD dwMilliSeconds)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %ld): stub\n", This, dwMilliSeconds);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_GetBumperLength (LPDIRECTMUSICPERFORMANCE iface, DWORD* pdwMilliSeconds)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pdwMilliSeconds);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_SendPMsg (LPDIRECTMUSICPERFORMANCE iface, DMUS_PMSG* pPMSG)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pPMSG);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_MusicToReferenceTime (LPDIRECTMUSICPERFORMANCE iface, MUSIC_TIME mtTime, REFERENCE_TIME* prtTime)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %ld, FIXME): stub\n", This, mtTime/*,prtTime*/);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_ReferenceToMusicTime (LPDIRECTMUSICPERFORMANCE iface, REFERENCE_TIME rtTime, MUSIC_TIME* pmtTime)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, FIXME, %p): stub\n", This/*, rtTime*/, pmtTime);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_IsPlaying (LPDIRECTMUSICPERFORMANCE iface, IDirectMusicSegment* pSegment, IDirectMusicSegmentState* pSegState)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, pSegment, pSegState);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_GetTime (LPDIRECTMUSICPERFORMANCE iface, REFERENCE_TIME* prtNow, MUSIC_TIME* pmtNow)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, FIXME, %p): stub\n", This/*, prtNow*/, pmtNow);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_AllocPMsg (LPDIRECTMUSICPERFORMANCE iface, ULONG cb, DMUS_PMSG** ppPMSG)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %ld, %p): stub\n", This, cb, ppPMSG);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_FreePMsg (LPDIRECTMUSICPERFORMANCE iface, DMUS_PMSG* pPMSG)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pPMSG);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_GetGraph (LPDIRECTMUSICPERFORMANCE iface, IDirectMusicGraph** ppGraph)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, ppGraph);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_SetGraph (LPDIRECTMUSICPERFORMANCE iface, IDirectMusicGraph* pGraph)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pGraph);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_SetNotificationHandle (LPDIRECTMUSICPERFORMANCE iface, HANDLE hNotification, REFERENCE_TIME rtMinimum)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %p, FIXME): stub\n", This, hNotification/*, rtMinimum*/);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_GetNotificationPMsg (LPDIRECTMUSICPERFORMANCE iface, DMUS_NOTIFICATION_PMSG** ppNotificationPMsg)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, ppNotificationPMsg);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_AddNotificationType (LPDIRECTMUSICPERFORMANCE iface, REFGUID rguidNotificationType)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %s): stub\n", This, debugstr_guid(rguidNotificationType));
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_RemoveNotificationType (LPDIRECTMUSICPERFORMANCE iface, REFGUID rguidNotificationType)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %s): stub\n", This, debugstr_guid(rguidNotificationType));
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_AddPort (LPDIRECTMUSICPERFORMANCE iface, IDirectMusicPort* pPort)
 {
 	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
 	
-	FIXME("(%p, %p): stub\n", This, pPort);
+	FIXME("(%p, %p): semi-stub\n", This, pPort);
+	/* just pretend that the port has been added */
 	
-	return DMUS_E_CANNOT_OPEN_PORT;
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_RemovePort (LPDIRECTMUSICPERFORMANCE iface, IDirectMusicPort* pPort)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pPort);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_AssignPChannelBlock (LPDIRECTMUSICPERFORMANCE iface, DWORD dwBlockNum, IDirectMusicPort* pPort, DWORD dwGroup)
 {
 	ICOM_THIS(IDirectMusicPerformanceImpl,iface);	
-
-	FIXME("(%p, %ld, %p, %ld): stub\n", This, dwBlockNum, pPort, dwGroup);
-
-	return E_INVALIDARG;
+	int i, j, range /* min value in range */;
+	
+	range = 16 * dwBlockNum;
+	j = 0;
+	
+	FIXME("(%p, %ld, %p, %ld): semi-stub\n", This, dwBlockNum, pPort, dwGroup-1);
+	for (i = range; i < range+16; i++)
+	{
+		//TRACE("Setting PChannel[%i] to port %p, group %ld, MIDI port %i\n", i, pPort, dwGroup-1, j);
+		This->PChannel[i].port = pPort; 
+		This->PChannel[i].group = dwGroup - 1; /* first index is always zero */
+		This->PChannel[i].channel = j; /* FIXME: should this be assigned? */
+		j++;
+	}
+		
+	return S_FALSE;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_AssignPChannel (LPDIRECTMUSICPERFORMANCE iface, DWORD dwPChannel, IDirectMusicPort* pPort, DWORD dwGroup, DWORD dwMChannel)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	TRACE("(%p, %ld, %p, %ld, %ld)\n", This, dwPChannel, pPort, dwGroup, dwMChannel);
+	This->PChannel[dwPChannel].port = pPort; 
+	This->PChannel[dwPChannel].group = dwGroup; 
+	This->PChannel[dwPChannel].channel = dwMChannel;
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_PChannelInfo (LPDIRECTMUSICPERFORMANCE iface, DWORD dwPChannel, IDirectMusicPort** ppPort, DWORD* pdwGroup, DWORD* pdwMChannel)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %ld, %p, %p, %p): stub\n", This, dwPChannel, ppPort, pdwGroup, pdwMChannel);
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_DownloadInstrument (LPDIRECTMUSICPERFORMANCE iface, IDirectMusicInstrument* pInst, DWORD dwPChannel, IDirectMusicDownloadedInstrument** ppDownInst, DMUS_NOTERANGE* pNoteRanges, DWORD dwNumNoteRanges, IDirectMusicPort** ppPort, DWORD* pdwGroup, DWORD* pdwMChannel)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %p, %ld, %p, %p, %ld, %p, %p, %p): stub\n", This, pInst, dwPChannel, ppDownInst, pNoteRanges, dwNumNoteRanges, ppPort, pdwGroup, pdwMChannel);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_Invalidate (LPDIRECTMUSICPERFORMANCE iface, MUSIC_TIME mtTime, DWORD dwFlags)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %ld, %ld): stub\n", This, mtTime, dwFlags);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_GetParam (LPDIRECTMUSICPERFORMANCE iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %s, %ld, %ld, %ld, %p, %p): stub\n", This, debugstr_guid(rguidType), dwGroupBits, dwIndex, mtTime, pmtNext, pParam);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_SetParam (LPDIRECTMUSICPERFORMANCE iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, void* pParam)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %s, %ld, %ld, %ld, %p): stub\n", This, debugstr_guid(rguidType), dwGroupBits, dwIndex, mtTime, pParam);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_GetGlobalParam (LPDIRECTMUSICPERFORMANCE iface, REFGUID rguidType, void* pParam, DWORD dwSize)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	TRACE("(%p, %s, %p, %ld)\n", This, debugstr_guid(rguidType), pParam, dwSize);
+	
+	if (IsEqualGUID(rguidType, &GUID_PerfAutoDownload))
+		memcpy(pParam, &This->AutoDownload, sizeof(&This->AutoDownload));
+	if (IsEqualGUID(rguidType, &GUID_PerfMasterGrooveLevel))
+		memcpy(pParam, &This->MasterGrooveLevel, sizeof(&This->MasterGrooveLevel));
+	if (IsEqualGUID(rguidType, &GUID_PerfMasterTempo))
+		memcpy(pParam, &This->MasterTempo, sizeof(&This->MasterTempo));
+	if (IsEqualGUID(rguidType, &GUID_PerfMasterVolume))
+		memcpy(pParam, &This->MasterVolume, sizeof(&This->MasterVolume));
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_SetGlobalParam (LPDIRECTMUSICPERFORMANCE iface, REFGUID rguidType, void* pParam, DWORD dwSize)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	TRACE("(%p, %s, %p, %ld)\n", This, debugstr_guid(rguidType), pParam, dwSize);
+	
+	if (IsEqualGUID(rguidType, &GUID_PerfAutoDownload))
+	{
+		memcpy(&This->AutoDownload, pParam, dwSize);
+		TRACE("=> AutoDownload set to %d\n", This->AutoDownload);
+	}
+	if (IsEqualGUID(rguidType, &GUID_PerfMasterGrooveLevel))
+	{
+		memcpy(&This->MasterGrooveLevel, pParam, dwSize);
+		TRACE("=> MasterGrooveLevel set to %i\n", This->MasterGrooveLevel);
+	}
+	if (IsEqualGUID(rguidType, &GUID_PerfMasterTempo))
+	{
+		memcpy(&This->MasterTempo, pParam, dwSize);
+		TRACE("=> MasterTempo set to %f\n", This->MasterTempo);
+	}
+	if (IsEqualGUID(rguidType, &GUID_PerfMasterVolume))
+	{
+		memcpy(&This->MasterVolume, pParam, dwSize);
+		TRACE("=> MasterVolume set to %li\n", This->MasterVolume);
+	}
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_GetLatencyTime (LPDIRECTMUSICPERFORMANCE iface, REFERENCE_TIME* prtTime)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, prtTime);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_GetQueueTime (LPDIRECTMUSICPERFORMANCE iface, REFERENCE_TIME* prtTime)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, prtTime);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_AdjustTime (LPDIRECTMUSICPERFORMANCE iface, REFERENCE_TIME rtAmount)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+	
+	FIXME("(%p, FIXME): stub\n", This/*, rtAmount*/);
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_CloseDown (LPDIRECTMUSICPERFORMANCE iface)
 {
  	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
-	FIXME("(%p): semi-stub\n", This);
+	
+	FIXME("(%p): stub\n", This);
+	
 	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_GetResolvedTime (LPDIRECTMUSICPERFORMANCE iface, REFERENCE_TIME rtTime, REFERENCE_TIME* prtResolved, DWORD dwTimeResolveFlags)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, FIXME, %p, %ld): stub\n", This/*, rtTime*/, prtResolved, dwTimeResolveFlags);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_MIDIToMusic (LPDIRECTMUSICPERFORMANCE iface, BYTE bMIDIValue, DMUS_CHORD_KEY* pChord, BYTE bPlayMode, BYTE bChordLevel, WORD* pwMusicValue)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %d, %p, %d, %d, %p): stub\n", This, bMIDIValue, pChord, bPlayMode, bChordLevel, pwMusicValue);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_MusicToMIDI (LPDIRECTMUSICPERFORMANCE iface, WORD wMusicValue, DMUS_CHORD_KEY* pChord, BYTE bPlayMode, BYTE bChordLevel, BYTE* pbMIDIValue)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %d, %p, %d, %d, %p): stub\n", This, wMusicValue, pChord, bPlayMode, bChordLevel, pbMIDIValue);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_TimeToRhythm (LPDIRECTMUSICPERFORMANCE iface, MUSIC_TIME mtTime, DMUS_TIMESIGNATURE* pTimeSig, WORD* pwMeasure, BYTE* pbBeat, BYTE* pbGrid, short* pnOffset)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %ld, %p, %p, %p, %p, %p): stub\n", This, mtTime, pTimeSig, pwMeasure, pbBeat, pbGrid, pnOffset);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformanceImpl_RhythmToTime (LPDIRECTMUSICPERFORMANCE iface, WORD wMeasure, BYTE bBeat, BYTE bGrid, short nOffset, DMUS_TIMESIGNATURE* pTimeSig, MUSIC_TIME* pmtTime)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+	FIXME("(%p, %d, %d, %d, %i, %p, %p): stub\n", This, wMeasure, bBeat, bGrid, nOffset, pTimeSig, pmtTime);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicPerformance) DirectMusicPerformance_Vtbl =
@@ -427,7 +590,7 @@
 	{
 		IDirectMusicPerformance8Impl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -455,303 +618,478 @@
 /* IDirectMusicPerformance Interface part follow: */
 HRESULT WINAPI IDirectMusicPerformance8Impl_Init (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusic** ppDirectMusic, LPDIRECTSOUND pDirectSound, HWND hWnd)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+	FIXME("(iface = %p, dmusic = %p (*dmusic = %p), dsound = %p, hwnd = %p): semi-stub\n", This, ppDirectMusic, *ppDirectMusic, pDirectSound, hWnd);
+	
+	/* app creates it's own dmusic object and gives it to performance */
+	if (*ppDirectMusic)
+	{
+		TRACE("App provides DirectMusic\n");
+		/* FIXME: is this correct? */
+		memcpy((LPDIRECTMUSIC)This->dmusic, *ppDirectMusic, sizeof(*ppDirectMusic));
+		IDirectMusicImpl_AddRef((LPDIRECTMUSIC)This->dmusic);
+		/* app is supposed to be in charge of everything else */
+		return S_OK;
+	}
+	/* app allows the performance to initialise itfself and needs a pointer to object*/
+	if (!*ppDirectMusic)
+	{
+		TRACE("DirectMusic to be created; needed\n");
+		if (!This->dmusic)
+			DMUSIC_CreateDirectMusic(&IID_IDirectMusic, (LPDIRECTMUSIC*)&This->dmusic, NULL);
+		*ppDirectMusic = (LPDIRECTMUSIC)This->dmusic;
+		if (*ppDirectMusic)
+			IDirectMusicImpl_AddRef(*ppDirectMusic);
+	}
+	/* app allows the performance to initialise itself and does not need a pointer to object*/
+	if (!ppDirectMusic)
+	{
+		TRACE("DirectMusic to be created; not needed\n");
+	}
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_PlaySegment (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicSegment* pSegment, DWORD dwFlags, __int64 i64StartTime, IDirectMusicSegmentState** ppSegmentState)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %p, %ld, FIXME, %p): stub\n", This, pSegment, dwFlags/*, i64StartTime*/, ppSegmentState);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_Stop (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicSegment* pSegment, IDirectMusicSegmentState* pSegmentState, MUSIC_TIME mtTime, DWORD dwFlags)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %p, %p, %ld, %ld): stub\n", This, pSegment, pSegmentState, mtTime, dwFlags);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_GetSegmentState (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicSegmentState** ppSegmentState, MUSIC_TIME mtTime)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p,%p, %ld): stub\n", This, ppSegmentState, mtTime);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_SetPrepareTime (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwMilliSeconds)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+	
+	FIXME("(%p, %ld): stub\n", This, dwMilliSeconds);
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_GetPrepareTime (LPDIRECTMUSICPERFORMANCE8 iface, DWORD* pdwMilliSeconds)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pdwMilliSeconds);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_SetBumperLength (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwMilliSeconds)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %ld): stub\n", This, dwMilliSeconds);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_GetBumperLength (LPDIRECTMUSICPERFORMANCE8 iface, DWORD* pdwMilliSeconds)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pdwMilliSeconds);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_SendPMsg (LPDIRECTMUSICPERFORMANCE8 iface, DMUS_PMSG* pPMSG)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pPMSG);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_MusicToReferenceTime (LPDIRECTMUSICPERFORMANCE8 iface, MUSIC_TIME mtTime, REFERENCE_TIME* prtTime)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %ld, FIXME): stub\n", This, mtTime/*,prtTime*/);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_ReferenceToMusicTime (LPDIRECTMUSICPERFORMANCE8 iface, REFERENCE_TIME rtTime, MUSIC_TIME* pmtTime)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, FIXME, %p): stub\n", This/*, rtTime*/, pmtTime);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_IsPlaying (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicSegment* pSegment, IDirectMusicSegmentState* pSegState)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, pSegment, pSegState);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_GetTime (LPDIRECTMUSICPERFORMANCE8 iface, REFERENCE_TIME* prtNow, MUSIC_TIME* pmtNow)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, FIXME, %p): stub\n", This/*, prtNow*/, pmtNow);	
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_AllocPMsg (LPDIRECTMUSICPERFORMANCE8 iface, ULONG cb, DMUS_PMSG** ppPMSG)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %ld, %p): stub\n", This, cb, ppPMSG);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_FreePMsg (LPDIRECTMUSICPERFORMANCE8 iface, DMUS_PMSG* pPMSG)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pPMSG);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_GetGraph (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicGraph** ppGraph)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, ppGraph);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_SetGraph (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicGraph* pGraph)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pGraph);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_SetNotificationHandle (LPDIRECTMUSICPERFORMANCE8 iface, HANDLE hNotification, REFERENCE_TIME rtMinimum)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %p, FIXME): stub\n", This, hNotification/*, rtMinimum*/);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_GetNotificationPMsg (LPDIRECTMUSICPERFORMANCE8 iface, DMUS_NOTIFICATION_PMSG** ppNotificationPMsg)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, ppNotificationPMsg);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_AddNotificationType (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidNotificationType)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %s): stub\n", This, debugstr_guid(rguidNotificationType));
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_RemoveNotificationType (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidNotificationType)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %s): stub\n", This, debugstr_guid(rguidNotificationType));
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_AddPort (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicPort* pPort)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pPort);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_RemovePort (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicPort* pPort)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pPort);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_AssignPChannelBlock (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwBlockNum, IDirectMusicPort* pPort, DWORD dwGroup)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %ld, %p, %ld): stub\n", This, dwBlockNum, pPort, dwGroup);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_AssignPChannel (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwPChannel, IDirectMusicPort* pPort, DWORD dwGroup, DWORD dwMChannel)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %ld, %p, %ld, %ld): stub\n", This, dwPChannel, pPort, dwGroup, dwMChannel);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_PChannelInfo (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwPChannel, IDirectMusicPort** ppPort, DWORD* pdwGroup, DWORD* pdwMChannel)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %ld, %p, %p, %p): stub\n", This, dwPChannel, ppPort, pdwGroup, pdwMChannel);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_DownloadInstrument (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicInstrument* pInst, DWORD dwPChannel, IDirectMusicDownloadedInstrument** ppDownInst, DMUS_NOTERANGE* pNoteRanges, DWORD dwNumNoteRanges, IDirectMusicPort** ppPort, DWORD* pdwGroup, DWORD* pdwMChannel)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %p, %ld, %p, %p, %ld, %p, %p, %p): stub\n", This, pInst, dwPChannel, ppDownInst, pNoteRanges, dwNumNoteRanges, ppPort, pdwGroup, pdwMChannel);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_Invalidate (LPDIRECTMUSICPERFORMANCE8 iface, MUSIC_TIME mtTime, DWORD dwFlags)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %ld, %ld): stub\n", This, mtTime, dwFlags);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_GetParam (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %s, %ld, %ld, %ld, %p, %p): stub\n", This, debugstr_guid(rguidType), dwGroupBits, dwIndex, mtTime, pmtNext, pParam);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_SetParam (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, void* pParam)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %s, %ld, %ld, %ld, %p): stub\n", This, debugstr_guid(rguidType), dwGroupBits, dwIndex, mtTime, pParam);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_GetGlobalParam (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidType, void* pParam, DWORD dwSize)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %s, %p, %ld): stub\n", This, debugstr_guid(rguidType), pParam, dwSize);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_SetGlobalParam (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidType, void* pParam, DWORD dwSize)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %s, %p, %ld): stub\n", This, debugstr_guid(rguidType), pParam, dwSize);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_GetLatencyTime (LPDIRECTMUSICPERFORMANCE8 iface, REFERENCE_TIME* prtTime)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, prtTime);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_GetQueueTime (LPDIRECTMUSICPERFORMANCE8 iface, REFERENCE_TIME* prtTime)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, prtTime);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_AdjustTime (LPDIRECTMUSICPERFORMANCE8 iface, REFERENCE_TIME rtAmount)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, FIXME): stub\n", This/*, rtAmount*/);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_CloseDown (LPDIRECTMUSICPERFORMANCE8 iface)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p): stub\n", This);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_GetResolvedTime (LPDIRECTMUSICPERFORMANCE8 iface, REFERENCE_TIME rtTime, REFERENCE_TIME* prtResolved, DWORD dwTimeResolveFlags)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, FIXME, %p, %ld): stub\n", This/*, rtTime*/, prtResolved, dwTimeResolveFlags);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_MIDIToMusic (LPDIRECTMUSICPERFORMANCE8 iface, BYTE bMIDIValue, DMUS_CHORD_KEY* pChord, BYTE bPlayMode, BYTE bChordLevel, WORD* pwMusicValue)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %d, %p, %d, %d, %p): stub\n", This, bMIDIValue, pChord, bPlayMode, bChordLevel, pwMusicValue);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_MusicToMIDI (LPDIRECTMUSICPERFORMANCE8 iface, WORD wMusicValue, DMUS_CHORD_KEY* pChord, BYTE bPlayMode, BYTE bChordLevel, BYTE* pbMIDIValue)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %d, %p, %d, %d, %p): stub\n", This, wMusicValue, pChord, bPlayMode, bChordLevel, pbMIDIValue);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_TimeToRhythm (LPDIRECTMUSICPERFORMANCE8 iface, MUSIC_TIME mtTime, DMUS_TIMESIGNATURE* pTimeSig, WORD* pwMeasure, BYTE* pbBeat, BYTE* pbGrid, short* pnOffset)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %ld, %p, %p, %p, %p, %p): stub\n", This, mtTime, pTimeSig, pwMeasure, pbBeat, pbGrid, pnOffset);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8Impl_RhythmToTime (LPDIRECTMUSICPERFORMANCE8 iface, WORD wMeasure, BYTE bBeat, BYTE bGrid, short nOffset, DMUS_TIMESIGNATURE* pTimeSig, MUSIC_TIME* pmtTime)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %d, %d, %d, %i, %p, %p): stub\n", This, wMeasure, bBeat, bGrid, nOffset, pTimeSig, pmtTime);
+
+	return S_OK;
 }
 
 /* IDirectMusicPerformance8 Interface part follow: */
 HRESULT WINAPI IDirectMusicPerformance8ImplInitAudio (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusic** ppDirectMusic, IDirectSound** ppDirectSound, HWND hWnd, DWORD dwDefaultPathType, DWORD dwPChannelCount, DWORD dwFlags, DMUS_AUDIOPARAMS* pParams)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %p, %p, %p, %ld, %ld, %ld, %p): stub\n", This, ppDirectMusic, ppDirectSound, hWnd, dwDefaultPathType, dwPChannelCount, dwFlags, pParams);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8ImplPlaySegmentEx (LPDIRECTMUSICPERFORMANCE8 iface, IUnknown* pSource, WCHAR* pwzSegmentName, IUnknown* pTransition, DWORD dwFlags, __int64 i64StartTime, IDirectMusicSegmentState** ppSegmentState, IUnknown* pFrom, IUnknown* pAudioPath)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %p, %p, %p, %ld, FIXME, %p, %p, %p): stub\n", This, pSource, pwzSegmentName, pTransition, dwFlags/*, i64StartTime*/, ppSegmentState, pFrom, pAudioPath);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8ImplStopEx (LPDIRECTMUSICPERFORMANCE8 iface, IUnknown* pObjectToStop, __int64 i64StopTime, DWORD dwFlags)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %p, FIXME, %ld): stub\n", This, pObjectToStop/*, i64StopTime*/, dwFlags);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8ImplClonePMsg (LPDIRECTMUSICPERFORMANCE8 iface, DMUS_PMSG* pSourcePMSG, DMUS_PMSG** ppCopyPMSG)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, pSourcePMSG, ppCopyPMSG);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8ImplCreateAudioPath (LPDIRECTMUSICPERFORMANCE8 iface, IUnknown* pSourceConfig, BOOL fActivate, IDirectMusicAudioPath** ppNewPath)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %p, %d, %p): stub\n", This, pSourceConfig, fActivate, ppNewPath);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8ImplCreateStandardAudioPath (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwType, DWORD dwPChannelCount, BOOL fActivate, IDirectMusicAudioPath** ppNewPath)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %ld, %ld, %d, %p): stub\n", This, dwType, dwPChannelCount, fActivate, ppNewPath);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8ImplSetDefaultAudioPath (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicAudioPath* pAudioPath)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pAudioPath);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8ImplGetDefaultAudioPath (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicAudioPath** ppAudioPath)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, ppAudioPath);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPerformance8ImplGetParamEx (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidType, DWORD dwTrackID, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+	FIXME("(%p, %s, %ld, %ld, %ld, %ld, %p, %p): stub\n", This, debugstr_guid(rguidType), dwTrackID, dwGroupBits, dwIndex, mtTime, pmtNext, pParam);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicPerformance8) DirectMusicPerformance8_Vtbl =
diff -Nru Original/wine/dlls/dmusic/dmusic_plugins.c wine/dlls/dmusic/dmusic_plugins.c
--- Original/wine/dlls/dmusic/dmusic_plugins.c	2003-05-31 09:41:46.000000000 +0200
+++ wine/dlls/dmusic/dmusic_plugins.c	2003-05-31 09:42:09.000000000 +0200
@@ -33,13 +33,13 @@
 /* IDirectMusicTool IUnknown parts follow: */
 HRESULT WINAPI IDirectMusicToolImpl_QueryInterface (LPDIRECTMUSICTOOL iface, REFIID riid, LPVOID *ppobj)
 {
-	ICOM_THIS(IDirectMusicToolImpl,iface);
+	ICOM_THIS(IDirectMusicToolImpl, iface);
 
 	if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicTool))
 	{
 		IDirectMusicToolImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -47,14 +47,14 @@
 
 ULONG WINAPI IDirectMusicToolImpl_AddRef (LPDIRECTMUSICTOOL iface)
 {
-	ICOM_THIS(IDirectMusicToolImpl,iface);
+	ICOM_THIS(IDirectMusicToolImpl, iface);
 	TRACE("(%p) : AddRef from %ld\n", This, This->ref);
 	return ++(This->ref);
 }
 
 ULONG WINAPI IDirectMusicToolImpl_Release (LPDIRECTMUSICTOOL iface)
 {
-	ICOM_THIS(IDirectMusicToolImpl,iface);
+	ICOM_THIS(IDirectMusicToolImpl, iface);
 	ULONG ref = --This->ref;
 	TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
 	if (ref == 0)
@@ -67,38 +67,56 @@
 /* IDirectMusicTool Interface follow: */
 HRESULT WINAPI IDirectMusicToolImpl_Init (LPDIRECTMUSICTOOL iface, IDirectMusicGraph* pGraph)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicToolImpl, iface);
+
+	FIXME("(%p, %p): stub\n", This, pGraph);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicToolImpl_GetMsgDeliveryType (LPDIRECTMUSICTOOL iface, DWORD* pdwDeliveryType)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicToolImpl, iface);
+
+	FIXME("(%p, %p): stub\n", This, pdwDeliveryType);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicToolImpl_GetMediaTypeArraySize (LPDIRECTMUSICTOOL iface, DWORD* pdwNumElements)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicToolImpl, iface);
+
+	FIXME("(%p, %p): stub\n", This, pdwNumElements);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicToolImpl_GetMediaTypes (LPDIRECTMUSICTOOL iface, DWORD** padwMediaTypes, DWORD dwNumElements)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicToolImpl, iface);
+
+	FIXME("(%p, %p, %ld): stub\n", This, padwMediaTypes, dwNumElements);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicToolImpl_ProcessPMsg (LPDIRECTMUSICTOOL iface, IDirectMusicPerformance* pPerf, DMUS_PMSG* pPMSG)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicToolImpl, iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, pPerf, pPMSG);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicToolImpl_Flush (LPDIRECTMUSICTOOL iface, IDirectMusicPerformance* pPerf, DMUS_PMSG* pPMSG, REFERENCE_TIME rtTime)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicToolImpl, iface);
+
+	FIXME("(%p, %p, %p, FIXME): stub\n", This, pPerf, pPMSG/*, rtTime*/);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicTool) DirectMusicTool_Vtbl =
@@ -125,7 +143,7 @@
 	{
 		IDirectMusicTool8Impl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -153,44 +171,65 @@
 /* IDirectMusicTool8 Interface follow: */
 HRESULT WINAPI IDirectMusicTool8Impl_Init (LPDIRECTMUSICTOOL8 iface, IDirectMusicGraph* pGraph)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTool8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pGraph);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTool8Impl_GetMsgDeliveryType (LPDIRECTMUSICTOOL8 iface, DWORD* pdwDeliveryType)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTool8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pdwDeliveryType);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTool8Impl_GetMediaTypeArraySize (LPDIRECTMUSICTOOL8 iface, DWORD* pdwNumElements)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTool8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pdwNumElements);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTool8Impl_GetMediaTypes (LPDIRECTMUSICTOOL8 iface, DWORD** padwMediaTypes, DWORD dwNumElements)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTool8Impl,iface);
+
+	FIXME("(%p, %p, %ld): stub\n", This, padwMediaTypes, dwNumElements);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTool8Impl_ProcessPMsg (LPDIRECTMUSICTOOL8 iface, IDirectMusicPerformance* pPerf, DMUS_PMSG* pPMSG)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTool8Impl,iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, pPerf, pPMSG);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTool8Impl_Flush (LPDIRECTMUSICTOOL8 iface, IDirectMusicPerformance* pPerf, DMUS_PMSG* pPMSG, REFERENCE_TIME rtTime)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTool8Impl,iface);
+
+	FIXME("(%p, %p, %p, FIXME): stub\n", This, pPerf, pPMSG/*, rtTime*/);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTool8Impl_Clone (LPDIRECTMUSICTOOL8 iface, IDirectMusicTool** ppTool)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTool8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, ppTool);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicTool8) DirectMusicTool8_Vtbl =
@@ -218,7 +257,7 @@
 	{
 		IDirectMusicTrackImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -245,62 +284,92 @@
 /* IDirectMusicTrack Interface follow: */
 HRESULT WINAPI IDirectMusicTrackImpl_Init (LPDIRECTMUSICTRACK iface, IDirectMusicSegment* pSegment)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTrackImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pSegment);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTrackImpl_InitPlay (LPDIRECTMUSICTRACK iface, IDirectMusicSegmentState* pSegmentState, IDirectMusicPerformance* pPerformance, void** ppStateData, DWORD dwVirtualTrackID, DWORD dwFlags)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTrackImpl,iface);
+
+	FIXME("(%p, %p, %p, %p, %ld, %ld): stub\n", This, pSegmentState, pPerformance, ppStateData, dwVirtualTrackID, dwFlags);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTrackImpl_EndPlay (LPDIRECTMUSICTRACK iface, void* pStateData)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTrackImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pStateData);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTrackImpl_Play (LPDIRECTMUSICTRACK iface, void* pStateData, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, MUSIC_TIME mtOffset, DWORD dwFlags, IDirectMusicPerformance* pPerf, IDirectMusicSegmentState* pSegSt, DWORD dwVirtualID)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTrackImpl,iface);
+
+	FIXME("(%p, %p, %ld, %ld, %ld, %ld, %p, %p, %ld): stub\n", This, pStateData, mtStart, mtEnd, mtOffset, dwFlags, pPerf, pSegSt, dwVirtualID);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTrackImpl_GetParam (LPDIRECTMUSICTRACK iface, REFGUID rguidType, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTrackImpl,iface);
+
+	FIXME("(%p, %s, %ld, %p, %p): stub\n", This, debugstr_guid(rguidType), mtTime, pmtNext, pParam);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTrackImpl_SetParam (LPDIRECTMUSICTRACK iface, REFGUID rguidType, MUSIC_TIME mtTime, void* pParam)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTrackImpl,iface);
+
+	FIXME("(%p, %s, %ld, %p): stub\n", This, debugstr_guid(rguidType), mtTime, pParam);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTrackImpl_IsParamSupported (LPDIRECTMUSICTRACK iface, REFGUID rguidType)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTrackImpl,iface);
+
+	FIXME("(%p, %s): stub\n", This, debugstr_guid(rguidType));
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTrackImpl_AddNotificationType (LPDIRECTMUSICTRACK iface, REFGUID rguidNotificationType)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTrackImpl,iface);
+
+	FIXME("(%p, %s): stub\n", This, debugstr_guid(rguidNotificationType));
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTrackImpl_RemoveNotificationType (LPDIRECTMUSICTRACK iface, REFGUID rguidNotificationType)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTrackImpl,iface);
+
+	FIXME("(%p, %s): stub\n", This, debugstr_guid(rguidNotificationType));
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTrackImpl_Clone (LPDIRECTMUSICTRACK iface, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, IDirectMusicTrack** ppTrack)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTrackImpl,iface);
+
+	FIXME("(%p, %ld, %ld, %p): stub\n", This, mtStart, mtEnd, ppTrack);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicTrack) DirectMusicTrack_Vtbl =
@@ -330,7 +399,7 @@
 	{
 		IDirectMusicTrack8Impl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -357,94 +426,139 @@
 /* IDirectMusicTrack Interface part follow: */
 HRESULT WINAPI IDirectMusicTrack8Impl_Init (LPDIRECTMUSICTRACK8 iface, IDirectMusicSegment* pSegment)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTrack8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pSegment);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTrack8Impl_InitPlay (LPDIRECTMUSICTRACK8 iface, IDirectMusicSegmentState* pSegmentState, IDirectMusicPerformance* pPerformance, void** ppStateData, DWORD dwVirtualTrack8ID, DWORD dwFlags)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTrack8Impl,iface);
+
+	FIXME("(%p, %p, %p, %p, %ld, %ld): stub\n", This, pSegmentState, pPerformance, ppStateData, dwVirtualTrack8ID, dwFlags);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTrack8Impl_EndPlay (LPDIRECTMUSICTRACK8 iface, void* pStateData)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTrack8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pStateData);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTrack8Impl_Play (LPDIRECTMUSICTRACK8 iface, void* pStateData, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, MUSIC_TIME mtOffset, DWORD dwFlags, IDirectMusicPerformance* pPerf, IDirectMusicSegmentState* pSegSt, DWORD dwVirtualID)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTrack8Impl,iface);
+
+	FIXME("(%p, %p, %ld, %ld, %ld, %ld, %p, %p, %ld): stub\n", This, pStateData, mtStart, mtEnd, mtOffset, dwFlags, pPerf, pSegSt, dwVirtualID);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTrack8Impl_GetParam (LPDIRECTMUSICTRACK8 iface, REFGUID rguidType, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTrack8Impl,iface);
+
+	FIXME("(%p, %s, %ld, %p, %p): stub\n", This, debugstr_guid(rguidType), mtTime, pmtNext, pParam);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTrack8Impl_SetParam (LPDIRECTMUSICTRACK8 iface, REFGUID rguidType, MUSIC_TIME mtTime, void* pParam)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTrack8Impl,iface);
+
+	FIXME("(%p, %s, %ld, %p): stub\n", This, debugstr_guid(rguidType), mtTime, pParam);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTrack8Impl_IsParamSupported (LPDIRECTMUSICTRACK8 iface, REFGUID rguidType)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTrack8Impl,iface);
+
+	FIXME("(%p, %s): stub\n", This, debugstr_guid(rguidType));
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTrack8Impl_AddNotificationType (LPDIRECTMUSICTRACK8 iface, REFGUID rguidNotificationType)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTrack8Impl,iface);
+
+	FIXME("(%p, %s): stub\n", This, debugstr_guid(rguidNotificationType));
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTrack8Impl_RemoveNotificationType (LPDIRECTMUSICTRACK8 iface, REFGUID rguidNotificationType)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTrack8Impl,iface);
+
+	FIXME("(%p, %s): stub\n", This, debugstr_guid(rguidNotificationType));
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTrack8Impl_Clone (LPDIRECTMUSICTRACK8 iface, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, IDirectMusicTrack** ppTrack)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTrack8Impl,iface);
+
+	FIXME("(%p, %ld, %ld, %p): stub\n", This, mtStart, mtEnd, ppTrack);
+
+	return S_OK;
 }
 
 /* IDirectMusicTrack8 Interface part follow: */
 
 HRESULT WINAPI IDirectMusicTrack8Impl_PlayEx (LPDIRECTMUSICTRACK8 iface, void* pStateData, REFERENCE_TIME rtStart, REFERENCE_TIME rtEnd, REFERENCE_TIME rtOffset, DWORD dwFlags, IDirectMusicPerformance* pPerf, IDirectMusicSegmentState* pSegSt, DWORD dwVirtualID)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTrack8Impl,iface);
+
+	FIXME("(%p, %p, FIXME, FIXME, FIXME, %ld, %p, %p, %ld): stub\n", This, pStateData/*, rtStart, rtEnd, rtOffset*/, dwFlags, pPerf, pSegSt, dwVirtualID);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTrack8Impl_GetParamEx (LPDIRECTMUSICTRACK8 iface, REFGUID rguidType, REFERENCE_TIME rtTime, REFERENCE_TIME* prtNext, void* pParam, void* pStateData, DWORD dwFlags)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTrack8Impl,iface);
+
+	FIXME("(%p, %s, FIXME, %p, %p, %p, %ld): stub\n", This, debugstr_guid(rguidType)/*, rtTime*/, prtNext, pParam, pStateData, dwFlags);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTrack8Impl_SetParamEx (LPDIRECTMUSICTRACK8 iface, REFGUID rguidType, REFERENCE_TIME rtTime, void* pParam, void* pStateData, DWORD dwFlags)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTrack8Impl,iface);
+
+	FIXME("(%p, %s, FIXME, %p, %p, %ld): stub\n", This, debugstr_guid(rguidType)/*, rtTime*/, pParam, pStateData, dwFlags);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTrack8Impl_Compose (LPDIRECTMUSICTRACK8 iface, IUnknown* pContext, DWORD dwTrackGroup, IDirectMusicTrack** ppResultTrack)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTrack8Impl,iface);
+
+	FIXME("(%p, %p, %ld, %p): stub\n", This, pContext, dwTrackGroup, ppResultTrack);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicTrack8Impl_Join (LPDIRECTMUSICTRACK8 iface, IDirectMusicTrack* pNewTrack, MUSIC_TIME mtJoin, IUnknown* pContext, DWORD dwTrackGroup, IDirectMusicTrack** ppResultTrack)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicTrack8Impl,iface);
+
+	FIXME("(%p, %p, %ld, %p, %ld, %p): stub\n", This, pNewTrack, mtJoin, pContext, dwTrackGroup, ppResultTrack);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicTrack8) DirectMusicTrack8_Vtbl =
diff -Nru Original/wine/dlls/dmusic/dmusic_port.c wine/dlls/dmusic/dmusic_port.c
--- Original/wine/dlls/dmusic/dmusic_port.c	2003-05-31 09:41:46.000000000 +0200
+++ wine/dlls/dmusic/dmusic_port.c	2003-05-31 09:42:09.000000000 +0200
@@ -37,7 +37,7 @@
 	{
 		IDirectMusicPortImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -65,44 +65,65 @@
 /* IDirectMusicPort Interface follow: */
 HRESULT WINAPI IDirectMusicPortImpl_PlayBuffer (LPDIRECTMUSICPORT iface, LPDIRECTMUSICBUFFER pBuffer)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPortImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pBuffer);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPortImpl_SetReadNotificationHandle (LPDIRECTMUSICPORT iface, HANDLE hEvent)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPortImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, hEvent);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPortImpl_Read (LPDIRECTMUSICPORT iface, LPDIRECTMUSICBUFFER pBuffer)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPortImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pBuffer);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPortImpl_DownloadInstrument (LPDIRECTMUSICPORT iface, IDirectMusicInstrument* pInstrument, IDirectMusicDownloadedInstrument** ppDownloadedInstrument, DMUS_NOTERANGE* pNoteRanges, DWORD dwNumNoteRanges)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPortImpl,iface);
+
+	FIXME("(%p, %p, %p, %p, %ld): stub\n", This, pInstrument, ppDownloadedInstrument, pNoteRanges, dwNumNoteRanges);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPortImpl_UnloadInstrument (LPDIRECTMUSICPORT iface, IDirectMusicDownloadedInstrument *pDownloadedInstrument)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPortImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pDownloadedInstrument);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPortImpl_GetLatencyClock (LPDIRECTMUSICPORT iface, IReferenceClock** ppClock)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPortImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, ppClock);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPortImpl_GetRunningStats (LPDIRECTMUSICPORT iface, LPDMUS_SYNTHSTATS pStats)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPortImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pStats);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPortImpl_GetCaps (LPDIRECTMUSICPORT iface, LPDMUS_PORTCAPS pPortCaps)
@@ -117,50 +138,84 @@
 
 HRESULT WINAPI IDirectMusicPortImpl_DeviceIoControl (LPDIRECTMUSICPORT iface, DWORD dwIoControlCode, LPVOID lpInBuffer, DWORD nInBufferSize, LPVOID lpOutBuffer, DWORD nOutBufferSize, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPortImpl,iface);
+
+	FIXME("(%p, %ld, %p, %ld, %p, %ld, %p, %p): stub\n", This, dwIoControlCode, lpInBuffer, nInBufferSize, lpOutBuffer, nOutBufferSize, lpBytesReturned, lpOverlapped);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPortImpl_SetNumChannelGroups (LPDIRECTMUSICPORT iface, DWORD dwChannelGroups)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPortImpl,iface);
+
+	FIXME("(%p, %ld): semi-stub\n", This, dwChannelGroups);
+	This->nrofgroups = dwChannelGroups;
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPortImpl_GetNumChannelGroups (LPDIRECTMUSICPORT iface, LPDWORD pdwChannelGroups)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPortImpl,iface);
+
+	TRACE("(%p, %p)\n", This, pdwChannelGroups);
+	*pdwChannelGroups = This->nrofgroups;
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPortImpl_Activate (LPDIRECTMUSICPORT iface, BOOL fActive)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPortImpl,iface);
+
+	TRACE("(%p, %d)\n", This, fActive);
+	This->active = fActive;
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPortImpl_SetChannelPriority (LPDIRECTMUSICPORT iface, DWORD dwChannelGroup, DWORD dwChannel, DWORD dwPriority)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPortImpl,iface);
+	
+	FIXME("(%p, %ld, %ld, %ld): semi-stub\n", This, dwChannelGroup, dwChannel, dwPriority);
+	
+	if (dwChannel > 16)
+	{
+		WARN("isn't there supposed to be 16 channels (no. %ld requested)?! (faking as it is ok)\n", dwChannel);
+		/*return E_INVALIDARG;*/
+	}	
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPortImpl_GetChannelPriority (LPDIRECTMUSICPORT iface, DWORD dwChannelGroup, DWORD dwChannel, LPDWORD pdwPriority)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPortImpl,iface);
+
+	TRACE("(%p, %ld, %ld, %p)\n", This, dwChannelGroup, dwChannel, pdwPriority);
+	*pdwPriority = This->group[dwChannelGroup-1].channel[dwChannel].priority;
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPortImpl_SetDirectSound (LPDIRECTMUSICPORT iface, LPDIRECTSOUND pDirectSound, LPDIRECTSOUNDBUFFER pDirectSoundBuffer)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPortImpl,iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, pDirectSound, pDirectSoundBuffer);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPortImpl_GetFormat (LPDIRECTMUSICPORT iface, LPWAVEFORMATEX pWaveFormatEx, LPDWORD pdwWaveFormatExSize, LPDWORD pdwBufferSize)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPortImpl,iface);
+
+	FIXME("(%p, %p, %p, %p): stub\n", This, pWaveFormatEx, pdwWaveFormatExSize, pdwBufferSize);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicPort) DirectMusicPort_Vtbl =
@@ -197,7 +252,7 @@
 	{
 		IDirectMusicPortDownloadImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -225,38 +280,56 @@
 /* IDirectMusicPortDownload Interface follow: */
 HRESULT WINAPI IDirectMusicPortDownloadImpl_GetBuffer (LPDIRECTMUSICPORTDOWNLOAD iface, DWORD dwDLId, IDirectMusicDownload** ppIDMDownload)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPortDownloadImpl,iface);
+	
+	FIXME("(%p, %ld, %p): stub\n", This, dwDLId, ppIDMDownload);
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPortDownloadImpl_AllocateBuffer (LPDIRECTMUSICPORTDOWNLOAD iface, DWORD dwSize, IDirectMusicDownload** ppIDMDownload)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPortDownloadImpl,iface);
+	
+	FIXME("(%p, %ld, %p): stub\n", This, dwSize, ppIDMDownload);
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPortDownloadImpl_GetDLId (LPDIRECTMUSICPORTDOWNLOAD iface, DWORD* pdwStartDLId, DWORD dwCount)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPortDownloadImpl,iface);
+	
+	FIXME("(%p, %p, %ld): stub\n", This, pdwStartDLId, dwCount);
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPortDownloadImpl_GetAppend (LPDIRECTMUSICPORTDOWNLOAD iface, DWORD* pdwAppend)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPortDownloadImpl,iface);
+	
+	FIXME("(%p, %p): stub\n", This, pdwAppend);
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPortDownloadImpl_Download (LPDIRECTMUSICPORTDOWNLOAD iface, IDirectMusicDownload* pIDMDownload)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPortDownloadImpl,iface);
+	
+	FIXME("(%p, %p): stub\n", This, pIDMDownload);
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPortDownloadImpl_Unload (LPDIRECTMUSICPORTDOWNLOAD iface, IDirectMusicDownload* pIDMDownload)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPortDownloadImpl,iface);
+	
+	FIXME("(%p, %p): stub\n", This, pIDMDownload);
+	
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicPortDownload) DirectMusicPortDownload_Vtbl =
diff -Nru Original/wine/dlls/dmusic/dmusic_private.h wine/dlls/dmusic/dmusic_private.h
--- Original/wine/dlls/dmusic/dmusic_private.h	2003-05-31 09:41:46.000000000 +0200
+++ wine/dlls/dmusic/dmusic_private.h	2003-05-31 09:42:14.000000000 +0200
@@ -123,6 +123,36 @@
 extern ICOM_VTABLE(IDirectMusicContainer) DirectMusicContainer_Vtbl;
 extern ICOM_VTABLE(IDirectMusicSong) DirectMusicSong_Vtbl;
 
+
+/*****************************************************************************
+ * Some stuff to make my life easier :=)
+ */
+ 
+/* some sort of aux. performance channel: as far as i can understand, these are 
+   used to represent a particular midi channel in particular group at particular
+   group; so all we need to do is to fill it with parent port, group and midi 
+   channel ? */
+typedef struct DMUSIC_PRIVATE_PCHANNEL_
+{
+	DWORD channel; /* map to this channel... */
+	DWORD group; /* ... in this group ... */
+	IDirectMusicPort *port; /* ... at this port */
+} DMUSIC_PRIVATE_PCHANNEL, *LPDMUSIC_PRIVATE_PCHANNEL;
+
+/* some sort of aux. midi channel: big fake at the moment; accepts only priority
+   changes... more coming soon */
+typedef struct DMUSIC_PRIVATE_MCHANNEL_
+{
+	DWORD priority;
+} DMUSIC_PRIVATE_MCHANNEL, *LPDMUSIC_PRIVATE_MCHANNEL;
+
+/* some sort of aux. channel group: collection of 16 midi channels */
+typedef struct DMUSIC_PRIVATE_CHANNEL_GROUP_
+{
+	DMUSIC_PRIVATE_MCHANNEL channel[16]; /* 16 channels in a group */
+} DMUSIC_PRIVATE_CHANNEL_GROUP, *LPDMUSIC_PRIVATE_CHANNEL_GROUP;
+
+
 /*****************************************************************************
  * IDirectMusicImpl implementation structure
  */
@@ -165,6 +195,8 @@
   DWORD          ref;
 
   /* IDirectMusic8Impl fields */
+  IDirectMusicPortImpl** ports;
+  int nrofports;
 };
 
 /* IUnknown: */
@@ -224,6 +256,7 @@
   DWORD          ref;
 
   /* IDirectMusicInstrumentImpl fields */
+  DWORD patch;
 };
 
 /* IUnknown: */
@@ -329,6 +362,8 @@
   BOOL active;
   LPDMUS_PORTCAPS caps;
   LPDMUS_PORTPARAMS params;
+  int nrofgroups;
+  DMUSIC_PRIVATE_CHANNEL_GROUP group[];
 };
 
 /* IUnknown: */
@@ -641,6 +676,7 @@
   DWORD          ref;
 
   /* IDirectMusicObjectImpl fields */
+  LPDMUS_OBJECTDESC desc;
 };
 
 /* IUnknown: */
@@ -902,6 +938,15 @@
   /* IDirectMusicPerformanceImpl fields */
   IDirectMusicImpl *dmusic;
   IDirectSound *dsound;
+	
+  /* global parameters */
+  BOOL AutoDownload;
+  char MasterGrooveLevel;
+  float MasterTempo;
+  long MasterVolume;
+	
+  /* performance channels */
+  DMUSIC_PRIVATE_PCHANNEL PChannel[];
 };
 
 /* IUnknown: */
@@ -963,6 +1008,8 @@
   DWORD          ref;
 
   /* IDirectMusicPerformance8Impl fields */
+  IDirectMusicImpl *dmusic;
+  IDirectSound *dsound;
 };
 
 /* IUnknown: */
diff -Nru Original/wine/dlls/dmusic/dmusic_segment.c wine/dlls/dmusic/dmusic_segment.c
--- Original/wine/dlls/dmusic/dmusic_segment.c	2003-05-31 09:41:46.000000000 +0200
+++ wine/dlls/dmusic/dmusic_segment.c	2003-05-31 09:42:09.000000000 +0200
@@ -40,7 +40,7 @@
 	{
 		IDirectMusicSegmentImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -68,140 +68,209 @@
 /* IDirectMusicSegment Interface follow: */
 HRESULT WINAPI IDirectMusicSegmentImpl_GetLength (LPDIRECTMUSICSEGMENT iface, MUSIC_TIME* pmtLength)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pmtLength);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentImpl_SetLength (LPDIRECTMUSICSEGMENT iface, MUSIC_TIME mtLength)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentImpl,iface);
+
+	FIXME("(%p, %ld): stub\n", This, mtLength);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentImpl_GetRepeats (LPDIRECTMUSICSEGMENT iface, DWORD* pdwRepeats)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pdwRepeats);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentImpl_SetRepeats (LPDIRECTMUSICSEGMENT iface, DWORD dwRepeats)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentImpl,iface);
+
+	FIXME("(%p, %ld): stub\n", This, dwRepeats);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentImpl_GetDefaultResolution (LPDIRECTMUSICSEGMENT iface, DWORD* pdwResolution)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pdwResolution);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentImpl_SetDefaultResolution (LPDIRECTMUSICSEGMENT iface, DWORD dwResolution)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentImpl,iface);
+
+	FIXME("(%p, %ld): stub\n", This, dwResolution);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentImpl_GetTrack (LPDIRECTMUSICSEGMENT iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, IDirectMusicTrack** ppTrack)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentImpl,iface);
+
+	FIXME("(%p, %s, %ld, %ld, %p): stub\n", This, debugstr_guid(rguidType), dwGroupBits, dwIndex, ppTrack);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentImpl_GetTrackGroup (LPDIRECTMUSICSEGMENT iface, IDirectMusicTrack* pTrack, DWORD* pdwGroupBits)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentImpl,iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, pTrack, pdwGroupBits);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentImpl_InsertTrack (LPDIRECTMUSICSEGMENT iface, IDirectMusicTrack* pTrack, DWORD dwGroupBits)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentImpl,iface);
+
+	FIXME("(%p, %p, %ld): stub\n", This, pTrack, dwGroupBits);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentImpl_RemoveTrack (LPDIRECTMUSICSEGMENT iface, IDirectMusicTrack* pTrack)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pTrack);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentImpl_InitPlay (LPDIRECTMUSICSEGMENT iface, IDirectMusicSegmentState** ppSegState, IDirectMusicPerformance* pPerformance, DWORD dwFlags)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentImpl,iface);
+
+	FIXME("(%p, %p, %p, %ld): stub\n", This, ppSegState, pPerformance, dwFlags);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentImpl_GetGraph (LPDIRECTMUSICSEGMENT iface, IDirectMusicGraph** ppGraph)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, ppGraph);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentImpl_SetGraph (LPDIRECTMUSICSEGMENT iface, IDirectMusicGraph* pGraph)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pGraph);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentImpl_AddNotificationType (LPDIRECTMUSICSEGMENT iface, REFGUID rguidNotificationType)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentImpl,iface);
+
+	FIXME("(%p, %s): stub\n", This, debugstr_guid(rguidNotificationType));
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentImpl_RemoveNotificationType (LPDIRECTMUSICSEGMENT iface, REFGUID rguidNotificationType)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentImpl,iface);
+
+	FIXME("(%p, %s): stub\n", This, debugstr_guid(rguidNotificationType));
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentImpl_GetParam (LPDIRECTMUSICSEGMENT iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentImpl,iface);
+
+	FIXME("(%p, %s, %ld, %ld, %ld, %p, %p): stub\n", This, debugstr_guid(rguidType), dwGroupBits, dwIndex, mtTime, pmtNext, pParam);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentImpl_SetParam (LPDIRECTMUSICSEGMENT iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, void* pParam)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentImpl,iface);
+
+	FIXME("(%p, %s, %ld, %ld, %ld, %p): stub\n", This, debugstr_guid(rguidType), dwGroupBits, dwIndex, mtTime, pParam);
+	
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentImpl_Clone (LPDIRECTMUSICSEGMENT iface, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, IDirectMusicSegment** ppSegment)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentImpl,iface);
+
+	FIXME("(%p, %ld, %ld, %p): stub\n", This, mtStart, mtEnd, ppSegment);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentImpl_SetStartPoint (LPDIRECTMUSICSEGMENT iface, MUSIC_TIME mtStart)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentImpl,iface);
+
+	FIXME("(%p, %ld): stub\n", This, mtStart);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentImpl_GetStartPoint (LPDIRECTMUSICSEGMENT iface, MUSIC_TIME* pmtStart)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pmtStart);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentImpl_SetLoopPoints (LPDIRECTMUSICSEGMENT iface, MUSIC_TIME mtStart, MUSIC_TIME mtEnd)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentImpl,iface);
+
+	FIXME("(%p, %ld, %ld): stub\n", This, mtStart, mtEnd);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentImpl_GetLoopPoints (LPDIRECTMUSICSEGMENT iface, MUSIC_TIME* pmtStart, MUSIC_TIME* pmtEnd)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentImpl,iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, pmtStart, pmtEnd);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentImpl_SetPChannelsUsed (LPDIRECTMUSICSEGMENT iface, DWORD dwNumPChannels, DWORD* paPChannels)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentImpl,iface);
+
+	FIXME("(%p, %ld, %p): stub\n", This, dwNumPChannels, paPChannels);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicSegment) DirectMusicSegment_Vtbl =
@@ -245,7 +314,7 @@
 	{
 		IDirectMusicSegment8Impl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -273,171 +342,255 @@
 /* IDirectMusicSegment Interface part follow: */
 HRESULT WINAPI IDirectMusicSegment8Impl_GetLength (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME* pmtLength)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pmtLength);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegment8Impl_SetLength (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME mtLength)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %ld): stub\n", This, mtLength);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegment8Impl_GetRepeats (LPDIRECTMUSICSEGMENT8 iface, DWORD* pdwRepeats)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pdwRepeats);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegment8Impl_SetRepeats (LPDIRECTMUSICSEGMENT8 iface, DWORD dwRepeats)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %ld): stub\n", This, dwRepeats);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegment8Impl_GetDefaultResolution (LPDIRECTMUSICSEGMENT8 iface, DWORD* pdwResolution)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pdwResolution);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegment8Impl_SetDefaultResolution (LPDIRECTMUSICSEGMENT8 iface, DWORD dwResolution)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %ld): stub\n", This, dwResolution);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegment8Impl_GetTrack (LPDIRECTMUSICSEGMENT8 iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, IDirectMusicTrack** ppTrack)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %s, %ld, %ld, %p): stub\n", This, debugstr_guid(rguidType), dwGroupBits, dwIndex, ppTrack);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegment8Impl_GetTrackGroup (LPDIRECTMUSICSEGMENT8 iface, IDirectMusicTrack* pTrack, DWORD* pdwGroupBits)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, pTrack, pdwGroupBits);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegment8Impl_InsertTrack (LPDIRECTMUSICSEGMENT8 iface, IDirectMusicTrack* pTrack, DWORD dwGroupBits)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %p, %ld): stub\n", This, pTrack, dwGroupBits);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegment8Impl_RemoveTrack (LPDIRECTMUSICSEGMENT8 iface, IDirectMusicTrack* pTrack)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pTrack);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegment8Impl_InitPlay (LPDIRECTMUSICSEGMENT8 iface, IDirectMusicSegmentState** ppSegState, IDirectMusicPerformance* pPerformance, DWORD dwFlags)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %p, %p, %ld): stub\n", This, ppSegState, pPerformance, dwFlags);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegment8Impl_GetGraph (LPDIRECTMUSICSEGMENT8 iface, IDirectMusicGraph** ppGraph)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, ppGraph);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegment8Impl_SetGraph (LPDIRECTMUSICSEGMENT8 iface, IDirectMusicGraph* pGraph)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pGraph);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegment8Impl_AddNotificationType (LPDIRECTMUSICSEGMENT8 iface, REFGUID rguidNotificationType)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %s): stub\n", This, debugstr_guid(rguidNotificationType));
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegment8Impl_RemoveNotificationType (LPDIRECTMUSICSEGMENT8 iface, REFGUID rguidNotificationType)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %s): stub\n", This, debugstr_guid(rguidNotificationType));
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegment8Impl_GetParam (LPDIRECTMUSICSEGMENT8 iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %s, %ld, %ld, %ld, %p, %p): stub\n", This, debugstr_guid(rguidType), dwGroupBits, dwIndex, mtTime, pmtNext, pParam);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegment8Impl_SetParam (LPDIRECTMUSICSEGMENT8 iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, void* pParam)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %s, %ld, %ld, %ld, %p): stub\n", This, debugstr_guid(rguidType), dwGroupBits, dwIndex, mtTime, pParam);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegment8Impl_Clone (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, IDirectMusicSegment** ppSegment)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %ld, %ld, %p): stub\n", This, mtStart, mtEnd, ppSegment);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegment8Impl_SetStartPoint (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME mtStart)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %ld): stub\n", This, mtStart);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegment8Impl_GetStartPoint (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME* pmtStart)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pmtStart);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegment8Impl_SetLoopPoints (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME mtStart, MUSIC_TIME mtEnd)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %ld, %ld): stub\n", This, mtStart, mtEnd);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegment8Impl_GetLoopPoints (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME* pmtStart, MUSIC_TIME* pmtEnd)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, pmtStart, pmtEnd);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegment8Impl_SetPChannelsUsed (LPDIRECTMUSICSEGMENT8 iface, DWORD dwNumPChannels, DWORD* paPChannels)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %ld, %p): stub\n", This, dwNumPChannels, paPChannels);	
+
+	return S_OK;
 }
 
 /* IDirectMusicSegment Interface part follow: */
 HRESULT WINAPI IDirectMusicSegment8Impl_SetTrackConfig (LPDIRECTMUSICSEGMENT8 iface, REFGUID rguidTrackClassID, DWORD dwGroupBits, DWORD dwIndex, DWORD dwFlagsOn, DWORD dwFlagsOff)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %s, %ld, %ld, %ld, %ld): stub\n", This, debugstr_guid(rguidTrackClassID), dwGroupBits, dwIndex, dwFlagsOn, dwFlagsOff);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegment8Impl_GetAudioPathConfig (LPDIRECTMUSICSEGMENT8 iface, IUnknown** ppAudioPathConfig)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, ppAudioPathConfig);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegment8Impl_Compose (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME mtTime, IDirectMusicSegment* pFromSegment, IDirectMusicSegment* pToSegment, IDirectMusicSegment** ppComposedSegment)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %ld, %p, %p, %p): stub\n", This, mtTime, pFromSegment, pToSegment, ppComposedSegment);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegment8Impl_Download (LPDIRECTMUSICSEGMENT8 iface, IUnknown *pAudioPath)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pAudioPath);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegment8Impl_Unload (LPDIRECTMUSICSEGMENT8 iface, IUnknown *pAudioPath)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pAudioPath);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicSegment8) DirectMusicSegment8_Vtbl =
@@ -486,7 +639,7 @@
 	{
 		IDirectMusicSegmentStateImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -514,32 +667,47 @@
 /* IDirectMusicSegmentState Interface follow: */
 HRESULT WINAPI IDirectMusicSegmentStateImpl_GetRepeats (LPDIRECTMUSICSEGMENTSTATE iface,  DWORD* pdwRepeats)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentStateImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pdwRepeats);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentStateImpl_GetSegment (LPDIRECTMUSICSEGMENTSTATE iface, IDirectMusicSegment** ppSegment)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentStateImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, ppSegment);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentStateImpl_GetStartTime (LPDIRECTMUSICSEGMENTSTATE iface, MUSIC_TIME* pmtStart)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentStateImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pmtStart);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentStateImpl_GetSeek (LPDIRECTMUSICSEGMENTSTATE iface, MUSIC_TIME* pmtSeek)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentStateImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pmtSeek);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentStateImpl_GetStartPoint (LPDIRECTMUSICSEGMENTSTATE iface, MUSIC_TIME* pmtStart)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentStateImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pmtStart);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicSegmentState) DirectMusicSegmentState_Vtbl =
@@ -564,7 +732,7 @@
 	{
 		IDirectMusicSegmentState8Impl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -592,45 +760,66 @@
 /* IDirectMusicSegmentState Interface part follow: */
 HRESULT WINAPI IDirectMusicSegmentState8Impl_GetRepeats (LPDIRECTMUSICSEGMENTSTATE8 iface,  DWORD* pdwRepeats)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentState8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pdwRepeats);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentState8Impl_GetSegment (LPDIRECTMUSICSEGMENTSTATE8 iface, IDirectMusicSegment** ppSegment)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentState8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, ppSegment);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentState8Impl_GetStartTime (LPDIRECTMUSICSEGMENTSTATE8 iface, MUSIC_TIME* pmtStart)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentState8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pmtStart);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentState8Impl_GetSeek (LPDIRECTMUSICSEGMENTSTATE8 iface, MUSIC_TIME* pmtSeek)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentState8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pmtSeek);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentState8Impl_GetStartPoint (LPDIRECTMUSICSEGMENTSTATE8 iface, MUSIC_TIME* pmtStart)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentState8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pmtStart);
+
+	return S_OK;
 }
 
 /* IDirectMusicSegmentState8 Interface part follow: */
 HRESULT WINAPI IDirectMusicSegmentState8Impl_SetTrackConfig (LPDIRECTMUSICSEGMENTSTATE8 iface, REFGUID rguidTrackClassID, DWORD dwGroupBits, DWORD dwIndex, DWORD dwFlagsOn, DWORD dwFlagsOff)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentState8Impl,iface);
+
+	FIXME("(%p, %s, %ld, %ld, %ld, %ld): stub\n", This, debugstr_guid(rguidTrackClassID), dwGroupBits, dwIndex, dwFlagsOn, dwFlagsOff);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSegmentState8Impl_GetObjectInPath (LPDIRECTMUSICSEGMENTSTATE8 iface, DWORD dwPChannel, DWORD dwStage, DWORD dwBuffer, REFGUID guidObject, DWORD dwIndex, REFGUID iidInterface, void** ppObject)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSegmentState8Impl,iface);
+
+	FIXME("(%p, %ld, %ld, %ld, %s, %ld, %s, %p): stub\n", This, dwPChannel, dwStage, dwBuffer, debugstr_guid(guidObject), dwIndex, debugstr_guid(iidInterface), ppObject);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicSegmentState8) DirectMusicSegmentState8_Vtbl =
@@ -658,7 +847,7 @@
 	{
 		IDirectMusicPatternTrackImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -686,20 +875,29 @@
 /* IDirectMusicPatternTrack Interface follow: */
 HRESULT WINAPI IDirectMusicPatternTrackImpl_CreateSegment (LPDIRECTMUSICPATTERNTRACK iface, IDirectMusicStyle* pStyle, IDirectMusicSegment** ppSegment)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPatternTrackImpl,iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, pStyle, ppSegment);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPatternTrackImpl_SetVariation (LPDIRECTMUSICPATTERNTRACK iface, IDirectMusicSegmentState* pSegState, DWORD dwVariationFlags, DWORD dwPart)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPatternTrackImpl,iface);
+
+	FIXME("(%p, %p, %ld, %ld): stub\n", This, pSegState, dwVariationFlags, dwPart);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicPatternTrackImpl_SetPatternByName (LPDIRECTMUSICPATTERNTRACK iface, IDirectMusicSegmentState* pSegState, WCHAR* wszName, IDirectMusicStyle* pStyle, DWORD dwPatternType, DWORD* pdwLength)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicPatternTrackImpl,iface);
+
+	FIXME("(%p, %p, %p, %p, %ld, %p): stub\n", This, pSegState, wszName, pStyle, dwPatternType, pdwLength);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicPatternTrack) DirectMusicPatternTrack_Vtbl =
diff -Nru Original/wine/dlls/dmusic/dmusic_style.c wine/dlls/dmusic/dmusic_style.c
--- Original/wine/dlls/dmusic/dmusic_style.c	2003-05-31 09:41:46.000000000 +0200
+++ wine/dlls/dmusic/dmusic_style.c	2003-05-31 09:42:09.000000000 +0200
@@ -37,7 +37,7 @@
 	{
 		IDirectMusicStyleImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -65,68 +65,101 @@
 /* IDirectMusicStyle Interface follow: */
 HRESULT WINAPI IDirectMusicStyleImpl_GetBand (LPDIRECTMUSICSTYLE iface, WCHAR* pwszName, IDirectMusicBand** ppBand)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicStyleImpl,iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, pwszName, ppBand);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicStyleImpl_EnumBand (LPDIRECTMUSICSTYLE iface, DWORD dwIndex, WCHAR* pwszName)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicStyleImpl,iface);
+
+	FIXME("(%p, %ld, %p): stub\n", This, dwIndex, pwszName);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicStyleImpl_GetDefaultBand (LPDIRECTMUSICSTYLE iface, IDirectMusicBand** ppBand)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicStyleImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, ppBand);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicStyleImpl_EnumMotif (LPDIRECTMUSICSTYLE iface, DWORD dwIndex, WCHAR* pwszName)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicStyleImpl,iface);
+
+	FIXME("(%p, %ld, %p): stub\n", This, dwIndex, pwszName);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicStyleImpl_GetMotif (LPDIRECTMUSICSTYLE iface, WCHAR* pwszName, IDirectMusicSegment** ppSegment)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicStyleImpl,iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, pwszName, ppSegment);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicStyleImpl_GetDefaultChordMap (LPDIRECTMUSICSTYLE iface, IDirectMusicChordMap** ppChordMap)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicStyleImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, ppChordMap);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicStyleImpl_EnumChordMap (LPDIRECTMUSICSTYLE iface, DWORD dwIndex, WCHAR* pwszName)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicStyleImpl,iface);
+
+	FIXME("(%p, %ld, %p): stub\n", This, dwIndex, pwszName);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicStyleImpl_GetChordMap (LPDIRECTMUSICSTYLE iface, WCHAR* pwszName, IDirectMusicChordMap** ppChordMap)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicStyleImpl,iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, pwszName, ppChordMap);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicStyleImpl_GetTimeSignature (LPDIRECTMUSICSTYLE iface, DMUS_TIMESIGNATURE* pTimeSig)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicStyleImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pTimeSig);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicStyleImpl_GetEmbellishmentLength (LPDIRECTMUSICSTYLE iface, DWORD dwType, DWORD dwLevel, DWORD* pdwMin, DWORD* pdwMax)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicStyleImpl,iface);
+
+	FIXME("(%p, %ld, %ld, %p, %p): stub\n", This, dwType, dwLevel, pdwMin, pdwMax);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicStyleImpl_GetTempo (LPDIRECTMUSICSTYLE iface, double* pTempo)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicStyleImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pTempo);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicStyle) DirectMusicStyle_Vtbl =
@@ -158,7 +191,7 @@
 	{
 		IDirectMusicStyle8Impl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -186,75 +219,111 @@
 /* IDirectMusicStyle Interface part follow: */
 HRESULT WINAPI IDirectMusicStyle8Impl_GetBand (LPDIRECTMUSICSTYLE8 iface, WCHAR* pwszName, IDirectMusicBand** ppBand)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicStyle8Impl,iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, pwszName, ppBand);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicStyle8Impl_EnumBand (LPDIRECTMUSICSTYLE8 iface, DWORD dwIndex, WCHAR* pwszName)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicStyle8Impl,iface);
+
+	FIXME("(%p, %ld, %p): stub\n", This, dwIndex, pwszName);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicStyle8Impl_GetDefaultBand (LPDIRECTMUSICSTYLE8 iface, IDirectMusicBand** ppBand)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicStyle8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, ppBand);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicStyle8Impl_EnumMotif (LPDIRECTMUSICSTYLE8 iface, DWORD dwIndex, WCHAR* pwszName)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicStyle8Impl,iface);
+
+	FIXME("(%p, %ld, %p): stub\n", This, dwIndex, pwszName);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicStyle8Impl_GetMotif (LPDIRECTMUSICSTYLE8 iface, WCHAR* pwszName, IDirectMusicSegment** ppSegment)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicStyle8Impl,iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, pwszName, ppSegment);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicStyle8Impl_GetDefaultChordMap (LPDIRECTMUSICSTYLE8 iface, IDirectMusicChordMap** ppChordMap)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicStyle8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, ppChordMap);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicStyle8Impl_EnumChordMap (LPDIRECTMUSICSTYLE8 iface, DWORD dwIndex, WCHAR* pwszName)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicStyle8Impl,iface);
+
+	FIXME("(%p, %ld, %p): stub\n", This, dwIndex, pwszName);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicStyle8Impl_GetChordMap (LPDIRECTMUSICSTYLE8 iface, WCHAR* pwszName, IDirectMusicChordMap** ppChordMap)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicStyle8Impl,iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, pwszName, ppChordMap);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicStyle8Impl_GetTimeSignature (LPDIRECTMUSICSTYLE8 iface, DMUS_TIMESIGNATURE* pTimeSig)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicStyle8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pTimeSig);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicStyle8Impl_GetEmbellishmentLength (LPDIRECTMUSICSTYLE8 iface, DWORD dwType, DWORD dwLevel, DWORD* pdwMin, DWORD* pdwMax)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicStyle8Impl,iface);
+
+	FIXME("(%p, %ld, %ld, %p, %p): stub\n", This, dwType, dwLevel, pdwMin, pdwMax);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicStyle8Impl_GetTempo (LPDIRECTMUSICSTYLE8 iface, double* pTempo)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicStyle8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pTempo);
+
+	return S_OK;
 }
 
 /* IDirectMusicStyle8 Interface part follow: */
 HRESULT WINAPI IDirectMusicStyle8ImplEnumPattern (LPDIRECTMUSICSTYLE8 iface, DWORD dwIndex, DWORD dwPatternType, WCHAR* pwszName)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicStyle8Impl,iface);
+
+	FIXME("(%p, %ld, %ld, %p): stub\n", This, dwIndex, dwPatternType, pwszName);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicStyle8) DirectMusicStyle8_Vtbl =
diff -Nru Original/wine/dlls/dmusic/dmusic_synth.c wine/dlls/dmusic/dmusic_synth.c
--- Original/wine/dlls/dmusic/dmusic_synth.c	2003-05-31 09:41:46.000000000 +0200
+++ wine/dlls/dmusic/dmusic_synth.c	2003-05-31 09:42:09.000000000 +0200
@@ -38,7 +38,7 @@
 	{
 		IDirectMusicSynthImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -66,104 +66,155 @@
 /* IDirectMusicSynth Interface follow: */
 HRESULT WINAPI IDirectMusicSynthImpl_Open (LPDIRECTMUSICSYNTH iface, LPDMUS_PORTPARAMS pPortParams)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynthImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pPortParams);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynthImpl_Close (LPDIRECTMUSICSYNTH iface)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynthImpl,iface);
+
+	FIXME("(%p): stub\n", This);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynthImpl_SetNumChannelGroups (LPDIRECTMUSICSYNTH iface, DWORD dwGroups)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynthImpl,iface);
+
+	FIXME("(%p, %ld): stub\n", This, dwGroups);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynthImpl_Download (LPDIRECTMUSICSYNTH iface, LPHANDLE phDownload, LPVOID pvData, LPBOOL pbFree)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynthImpl,iface);
+
+	FIXME("(%p, %p, %p, %p): stub\n", This, phDownload, pvData, pbFree);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynthImpl_Unload (LPDIRECTMUSICSYNTH iface, HANDLE hDownload, HRESULT (CALLBACK* lpFreeHandle)(HANDLE,HANDLE), HANDLE hUserData)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynthImpl,iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, hDownload, hUserData);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynthImpl_PlayBuffer (LPDIRECTMUSICSYNTH iface, REFERENCE_TIME rt, LPBYTE pbBuffer, DWORD cbBuffer)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynthImpl,iface);
+
+	FIXME("(%p, FIXME, %p, %ld): stub\n", This/*, rt*/, pbBuffer, cbBuffer);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynthImpl_GetRunningStats (LPDIRECTMUSICSYNTH iface, LPDMUS_SYNTHSTATS pStats)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynthImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pStats);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynthImpl_GetPortCaps (LPDIRECTMUSICSYNTH iface, LPDMUS_PORTCAPS pCaps)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynthImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pCaps);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynthImpl_SetMasterClock (LPDIRECTMUSICSYNTH iface, IReferenceClock* pClock)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynthImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pClock);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynthImpl_GetLatencyClock (LPDIRECTMUSICSYNTH iface, IReferenceClock** ppClock)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynthImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, ppClock);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynthImpl_Activate (LPDIRECTMUSICSYNTH iface, BOOL fEnable)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynthImpl,iface);
+
+	FIXME("(%p, %d): stub\n", This, fEnable);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynthImpl_SetSynthSink (LPDIRECTMUSICSYNTH iface, IDirectMusicSynthSink* pSynthSink)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynthImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pSynthSink);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynthImpl_Render (LPDIRECTMUSICSYNTH iface, short* pBuffer, DWORD dwLength, LONGLONG llPosition)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynthImpl,iface);
+
+	FIXME("(%p, %p, %ld, FIXME): stub\n", This, pBuffer, dwLength/*, llPosition*/);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynthImpl_SetChannelPriority (LPDIRECTMUSICSYNTH iface, DWORD dwChannelGroup, DWORD dwChannel, DWORD dwPriority)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynthImpl,iface);
+
+	FIXME("(%p, %ld, %ld, %ld): stub\n", This, dwChannelGroup, dwChannel, dwPriority);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynthImpl_GetChannelPriority (LPDIRECTMUSICSYNTH iface, DWORD dwChannelGroup, DWORD dwChannel, LPDWORD pdwPriority)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynthImpl,iface);
+
+	FIXME("(%p, %ld, %ld, %p): stub\n", This, dwChannelGroup, dwChannel, pdwPriority);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynthImpl_GetFormat (LPDIRECTMUSICSYNTH iface, LPWAVEFORMATEX pWaveFormatEx, LPDWORD pdwWaveFormatExSiz)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynthImpl,iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, pWaveFormatEx, pdwWaveFormatExSiz);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynthImpl_GetAppend (LPDIRECTMUSICSYNTH iface, DWORD* pdwAppend)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynthImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pdwAppend);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicSynth) DirectMusicSynth_Vtbl =
@@ -201,7 +252,7 @@
 	{
 		IDirectMusicSynth8Impl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -229,135 +280,201 @@
 /* IDirectMusicSynth Interface parts follow: */
 HRESULT WINAPI IDirectMusicSynth8Impl_Open (LPDIRECTMUSICSYNTH8 iface, LPDMUS_PORTPARAMS pPortParams)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynth8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pPortParams);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynth8Impl_Close (LPDIRECTMUSICSYNTH8 iface)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynth8Impl,iface);
+
+	FIXME("(%p): stub\n", This);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynth8Impl_SetNumChannelGroups (LPDIRECTMUSICSYNTH8 iface, DWORD dwGroups)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynth8Impl,iface);
+
+	FIXME("(%p, %ld): stub\n", This, dwGroups);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynth8Impl_Download (LPDIRECTMUSICSYNTH8 iface, LPHANDLE phDownload, LPVOID pvData, LPBOOL pbFree)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynth8Impl,iface);
+
+	FIXME("(%p, %p, %p, %p): stub\n", This, phDownload, pvData, pbFree);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynth8Impl_Unload (LPDIRECTMUSICSYNTH8 iface, HANDLE hDownload, HRESULT (CALLBACK* lpFreeHandle)(HANDLE,HANDLE), HANDLE hUserData)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynth8Impl,iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, hDownload, hUserData);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynth8Impl_PlayBuffer (LPDIRECTMUSICSYNTH8 iface, REFERENCE_TIME rt, LPBYTE pbBuffer, DWORD cbBuffer)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynth8Impl,iface);
+
+	FIXME("(%p, FIXME, %p, %ld): stub\n", This/*, rt*/, pbBuffer, cbBuffer);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynth8Impl_GetRunningStats (LPDIRECTMUSICSYNTH8 iface, LPDMUS_SYNTHSTATS pStats)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynth8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pStats);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynth8Impl_GetPortCaps (LPDIRECTMUSICSYNTH8 iface, LPDMUS_PORTCAPS pCaps)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynth8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pCaps);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynth8Impl_SetMasterClock (LPDIRECTMUSICSYNTH8 iface, IReferenceClock* pClock)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynth8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pClock);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynth8Impl_GetLatencyClock (LPDIRECTMUSICSYNTH8 iface, IReferenceClock** ppClock)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynth8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, ppClock);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynth8Impl_Activate (LPDIRECTMUSICSYNTH8 iface, BOOL fEnable)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynth8Impl,iface);
+
+	FIXME("(%p, %d): stub\n", This, fEnable);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynth8Impl_SetSynthSink (LPDIRECTMUSICSYNTH8 iface, IDirectMusicSynthSink* pSynthSink)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynth8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pSynthSink);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynth8Impl_Render (LPDIRECTMUSICSYNTH8 iface, short* pBuffer, DWORD dwLength, LONGLONG llPosition)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynth8Impl,iface);
+
+	FIXME("(%p, %p, %ld, FIXME): stub\n", This, pBuffer, dwLength/*, llPosition*/);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynth8Impl_SetChannelPriority (LPDIRECTMUSICSYNTH8 iface, DWORD dwChannelGroup, DWORD dwChannel, DWORD dwPriority)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynth8Impl,iface);
+
+	FIXME("(%p, %ld, %ld, %ld): stub\n", This, dwChannelGroup, dwChannel, dwPriority);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynth8Impl_GetChannelPriority (LPDIRECTMUSICSYNTH8 iface, DWORD dwChannelGroup, DWORD dwChannel, LPDWORD pdwPriority)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynth8Impl,iface);
+
+	FIXME("(%p, %ld, %ld, %p): stub\n", This, dwChannelGroup, dwChannel, pdwPriority);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynth8Impl_GetFormat (LPDIRECTMUSICSYNTH8 iface, LPWAVEFORMATEX pWaveFormatEx, LPDWORD pdwWaveFormatExSiz)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynth8Impl,iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, pWaveFormatEx, pdwWaveFormatExSiz);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynth8Impl_GetAppend (LPDIRECTMUSICSYNTH8 iface, DWORD* pdwAppend)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynth8Impl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pdwAppend);
+
+	return S_OK;
 }
 
 /* IDirectMusicSynth8 Interface parts follow: */
 HRESULT WINAPI IDirectMusicSynth8Impl_PlayVoice (LPDIRECTMUSICSYNTH8 iface, REFERENCE_TIME rt, DWORD dwVoiceId, DWORD dwChannelGroup, DWORD dwChannel, DWORD dwDLId, long prPitch, long vrVolume, SAMPLE_TIME stVoiceStart, SAMPLE_TIME stLoopStart, SAMPLE_TIME stLoopEnd)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynth8Impl,iface);
+
+	FIXME("(%p, FIXME, %ld, %ld, %ld, %ld, %li, %li, FIXME, FIXME, FIXME): stub\n", This/*, rt*/, dwVoiceId, dwChannelGroup, dwChannel, dwDLId, prPitch, vrVolume/*, stVoiceStart, stLoopStart, stLoopEnd*/);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynth8Impl_StopVoice (LPDIRECTMUSICSYNTH8 iface, REFERENCE_TIME rt, DWORD dwVoiceId)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynth8Impl,iface);
+
+	FIXME("(%p, FIXME, %ld): stub\n", This/*, rt*/, dwVoiceId);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynth8Impl_GetVoiceState (LPDIRECTMUSICSYNTH8 iface, DWORD dwVoice[], DWORD cbVoice, DMUS_VOICE_STATE dwVoiceState[])
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynth8Impl,iface);
+
+	FIXME("(%p, %p, %ld, %p): stub\n", This, dwVoice, cbVoice, dwVoiceState);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynth8Impl_Refresh (LPDIRECTMUSICSYNTH8 iface, DWORD dwDownloadID, DWORD dwFlags)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynth8Impl,iface);
+
+	FIXME("(%p, %ld, %ld): stub\n", This, dwDownloadID, dwFlags);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSynth8Impl_AssignChannelToBuses (LPDIRECTMUSICSYNTH8 iface, DWORD dwChannelGroup, DWORD dwChannel, LPDWORD pdwBuses, DWORD cBuses)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynth8Impl,iface);
+
+	FIXME("(%p, %ld, %ld, %p, %ld): stub\n", This, dwChannelGroup, dwChannel, pdwBuses, cBuses);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicSynth8) DirectMusicSynth8_Vtbl =
@@ -400,7 +517,7 @@
 	{
 		IDirectMusicSynthSinkImpl_AddRef(iface);
 		*ppobj = This;
-		return DS_OK;
+		return S_OK;
 	}
 	WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
@@ -428,50 +545,74 @@
 /* IDirectMusicSynth Interface follow: */
 HRESULT WINAPI IDirectMusicSinkSynthImpl_Init (LPDIRECTMUSICSYNTHSINK iface, IDirectMusicSynth* pSynth)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynthSinkImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pSynth);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSinkSynthImpl_SetMasterClock (LPDIRECTMUSICSYNTHSINK iface, IReferenceClock* pClock)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynthSinkImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pClock);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSinkSynthImpl_GetLatencyClock (LPDIRECTMUSICSYNTHSINK iface, IReferenceClock** ppClock)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynthSinkImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, ppClock);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSinkSynthImpl_Activate (LPDIRECTMUSICSYNTHSINK iface, BOOL fEnable)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynthSinkImpl,iface);
+
+	FIXME("(%p, %d): stub\n", This, fEnable);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSinkSynthImpl_SampleToRefTime (LPDIRECTMUSICSYNTHSINK iface, LONGLONG llSampleTime, REFERENCE_TIME* prfTime)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynthSinkImpl,iface);
+
+	FIXME("(%p, FIXME, %p): stub\n", This/*, llSampleTime*/, prfTime);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSinkSynthImpl_RefTimeToSample (LPDIRECTMUSICSYNTHSINK iface, REFERENCE_TIME rfTime, LONGLONG* pllSampleTime)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynthSinkImpl,iface);
+
+	FIXME("(%p, FIXME, %p): stub\n", This/*, rfTime*/, pllSampleTime );
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSinkSynthImpl_SetDirectSound (LPDIRECTMUSICSYNTHSINK iface, LPDIRECTSOUND pDirectSound, LPDIRECTSOUNDBUFFER pDirectSoundBuffer)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynthSinkImpl,iface);
+
+	FIXME("(%p, %p, %p): stub\n", This, pDirectSound, pDirectSoundBuffer);
+
+	return S_OK;
 }
 
 HRESULT WINAPI IDirectMusicSinkSynthImpl_GetDesiredBufferSize (LPDIRECTMUSICSYNTHSINK iface, LPDWORD pdwBufferSizeInSamples)
 {
-	FIXME("stub\n");
-	return DS_OK;
+	ICOM_THIS(IDirectMusicSynthSinkImpl,iface);
+
+	FIXME("(%p, %p): stub\n", This, pdwBufferSizeInSamples);
+
+	return S_OK;
 }
 
 ICOM_VTABLE(IDirectMusicSynthSink) DirectMusicSynthSink_Vtbl =

[Index of Archives]     [Gimp for Windows]     [Red Hat]     [Samba]     [Yosemite Camping]     [Graphics Cards]     [Wine Home]

  Powered by Linux