- updated resources to DX9
- completely rewritten headers (DX9 compat.; look much nicer now ;=)
- removed IDirectMusicSong and IDirectMusicMelodyFormulationTrack
  (which are removed from DX9; weren't implemented in DX8 anyway)
- combined/simplified IDirectMusicSomething / IDirectMusicObject /
  IPersistStream for objects that support loading
- implemented IDirectMusicObject on all such objects; via generic
  functions
- combined IDirectMusicTrack(8)/IPersistStream on all tracks
- fully implemented IDirectMusicContainer (at least 90% if there are
  no private interfaces)
- implemented IDirectMusicCollection (99% work & MS compliant
  behaviour; except for instruments)
- tried to implement IDirectMusicInstrument (unfortunately uses some
  dirty private interfaces... :(
- added dswave.dll; DirectMusic Wave
- some changes in style
- many, many more ;)

diff --git a/dlls/dmsynth/dmsynth_main.c b/dlls/dmsynth/dmsynth_main.c
index c529981..db3f72d 100644
--- a/dlls/dmsynth/dmsynth_main.c
+++ b/dlls/dmsynth/dmsynth_main.c
@@ -1,6 +1,6 @@
 /* DirectMusicSynthesizer Main
  *
- * Copyright (C) 2003 Rok Mandeljc
+ * Copyright (C) 2003-2004 Rok Mandeljc
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -21,8 +21,7 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(dmsynth);
 
-typedef struct
-{
+typedef struct {
     /* IUnknown fields */
     ICOM_VFIELD(IClassFactory);
     DWORD                       ref;
@@ -31,43 +30,30 @@
 /******************************************************************
  *		DirectMusicSynth ClassFactory
  */
-static HRESULT WINAPI SynthCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj)
-{
+static HRESULT WINAPI SynthCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
 	ICOM_THIS(IClassFactoryImpl,iface);
-
 	FIXME("(%p)->(%s,%p),stub!\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
 }
 
-static ULONG WINAPI SynthCF_AddRef(LPCLASSFACTORY iface)
-{
+static ULONG WINAPI SynthCF_AddRef(LPCLASSFACTORY iface) {
 	ICOM_THIS(IClassFactoryImpl,iface);
 	return ++(This->ref);
 }
 
-static ULONG WINAPI SynthCF_Release(LPCLASSFACTORY iface)
-{
+static ULONG WINAPI SynthCF_Release(LPCLASSFACTORY iface) {
 	ICOM_THIS(IClassFactoryImpl,iface);
 	/* static class, won't be  freed */
 	return --(This->ref);
 }
 
-static HRESULT WINAPI SynthCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj)
-{
+static HRESULT WINAPI SynthCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
 	ICOM_THIS(IClassFactoryImpl,iface);
-
 	TRACE ("(%p)->(%p,%s,%p)\n", This, pOuter, debugstr_guid(riid), ppobj);
-	if (IsEqualIID (riid, &IID_IDirectMusicSynth) ||
-		IsEqualIID (riid, &IID_IDirectMusicSynth8)) {
-		return DMUSIC_CreateDirectMusicSynth (riid, (LPDIRECTMUSICSYNTH8*)ppobj, pOuter);
-		}
-		
-	WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
-	return E_NOINTERFACE;
+	return DMUSIC_CreateDirectMusicSynthImpl (riid, ppobj, pOuter);
 }
 
-static HRESULT WINAPI SynthCF_LockServer(LPCLASSFACTORY iface,BOOL dolock)
-{
+static HRESULT WINAPI SynthCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
 	ICOM_THIS(IClassFactoryImpl,iface);
 	FIXME("(%p)->(%d),stub!\n", This, dolock);
 	return S_OK;
@@ -87,42 +73,30 @@
 /******************************************************************
  *		DirectMusicSynthSink ClassFactory
  */
-static HRESULT WINAPI SynthSinkCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj)
-{
+static HRESULT WINAPI SynthSinkCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
 	ICOM_THIS(IClassFactoryImpl,iface);
-
 	FIXME("(%p)->(%s,%p),stub!\n",This,debugstr_guid(riid),ppobj);
 	return E_NOINTERFACE;
 }
 
-static ULONG WINAPI SynthSinkCF_AddRef(LPCLASSFACTORY iface)
-{
+static ULONG WINAPI SynthSinkCF_AddRef(LPCLASSFACTORY iface) {
 	ICOM_THIS(IClassFactoryImpl,iface);
 	return ++(This->ref);
 }
 
-static ULONG WINAPI SynthSinkCF_Release(LPCLASSFACTORY iface)
-{
+static ULONG WINAPI SynthSinkCF_Release(LPCLASSFACTORY iface) {
 	ICOM_THIS(IClassFactoryImpl,iface);
 	/* static class, won't be  freed */
 	return --(This->ref);
 }
 
-static HRESULT WINAPI SynthSinkCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj)
-{
+static HRESULT WINAPI SynthSinkCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
 	ICOM_THIS(IClassFactoryImpl,iface);
-
 	TRACE ("(%p)->(%p,%s,%p)\n", This, pOuter, debugstr_guid(riid), ppobj);
-	if (IsEqualIID (riid, &IID_IDirectMusicSynthSink)) {
-		return DMUSIC_CreateDirectMusicSynthSink (riid, (LPDIRECTMUSICSYNTHSINK*)ppobj, pOuter);
-	}
-		
-	WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
-	return E_NOINTERFACE;
+	return DMUSIC_CreateDirectMusicSynthSinkImpl (riid, ppobj, pOuter);
 }
 
-static HRESULT WINAPI SynthSinkCF_LockServer(LPCLASSFACTORY iface,BOOL dolock)
-{
+static HRESULT WINAPI SynthSinkCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
 	ICOM_THIS(IClassFactoryImpl,iface);
 	FIXME("(%p)->(%d),stub!\n", This, dolock);
 	return S_OK;
@@ -144,15 +118,11 @@
  *
  *
  */
-BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
-{
-	if (fdwReason == DLL_PROCESS_ATTACH)
-	{
-            DisableThreadLibraryCalls(hinstDLL);
+BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
+	if (fdwReason == DLL_PROCESS_ATTACH) {
+		DisableThreadLibraryCalls(hinstDLL);
 		/* FIXME: Initialisation */
-	}
-	else if (fdwReason == DLL_PROCESS_DETACH)
-	{
+	} else if (fdwReason == DLL_PROCESS_DETACH) {
 		/* FIXME: Cleanup */
 	}
 
@@ -165,10 +135,8 @@
  *
  *
  */
-HRESULT WINAPI DMSYNTH_DllCanUnloadNow(void)
-{
+HRESULT WINAPI DMSYNTH_DllCanUnloadNow(void) {
     FIXME("(void): stub\n");
-
     return S_FALSE;
 }
 
@@ -178,8 +146,7 @@
  *
  *
  */
-HRESULT WINAPI DMSYNTH_DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
-{
+HRESULT WINAPI DMSYNTH_DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv) {
     TRACE("(%p,%p,%p)\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
     if (IsEqualCLSID (rclsid, &CLSID_DirectMusicSynth) && IsEqualIID (riid, &IID_IClassFactory)) {
 		*ppv = (LPVOID) &Synth_CF;
diff --git a/dlls/dmsynth/dmsynth_private.h b/dlls/dmsynth/dmsynth_private.h
index 262ab57..f2a4488 100644
--- a/dlls/dmsynth/dmsynth_private.h
+++ b/dlls/dmsynth/dmsynth_private.h
@@ -1,6 +1,6 @@
 /* DirectMusicSynthesizer Private Include
  *
- * Copyright (C) 2003 Rok Mandeljc
+ * Copyright (C) 2003-2004 Rok Mandeljc
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -23,16 +23,19 @@
 #include <stdarg.h>
 
 #include "windef.h"
-#include "wine/debug.h"
 #include "winbase.h"
 #include "winnt.h"
 #include "wingdi.h"
-#include "dmusicc.h"
+#include "winuser.h"
+
+#include "wine/debug.h"
+#include "wine/list.h"
+#include "wine/unicode.h"
+#include "winreg.h"
+
 #include "dmusici.h"
-#include "dmusics.h"
-#include "dmplugin.h"
 #include "dmusicf.h"
-#include "dsound.h"
+#include "dmusics.h"
 
 /*****************************************************************************
  * Interfaces
@@ -49,20 +52,13 @@
 /*****************************************************************************
  * ClassFactory
  */
-/* can support IID_IDirectMusicSynth and IID_IDirectMusicSynth8
- * return always an IDirectMusicSynthImpl
- */
-extern HRESULT WINAPI DMUSIC_CreateDirectMusicSynth (LPCGUID lpcGUID, LPDIRECTMUSICSYNTH8* ppDMSynth, LPUNKNOWN pUnkOuter);
-/* can support IID_IDirectMusicSynthSink
- * return always an IDirectMusicSynthSinkImpl
- */
-extern HRESULT WINAPI DMUSIC_CreateDirectMusicSynthSink (LPCGUID lpcGUID, LPDIRECTMUSICSYNTHSINK* ppDMSynthSink, LPUNKNOWN pUnkOuter);
+extern HRESULT WINAPI DMUSIC_CreateDirectMusicSynthImpl (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
+extern HRESULT WINAPI DMUSIC_CreateDirectMusicSynthSinkImpl (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
 
 /*****************************************************************************
  * IDirectMusicSynth8Impl implementation structure
  */
-struct IDirectMusicSynth8Impl
-{
+struct IDirectMusicSynth8Impl {
   /* IUnknown fields */
   ICOM_VFIELD(IDirectMusicSynth8);
   DWORD          ref;
@@ -106,8 +102,7 @@
 /*****************************************************************************
  * IDirectMusicSynthSinkImpl implementation structure
  */
-struct IDirectMusicSynthSinkImpl
-{
+struct IDirectMusicSynthSinkImpl {
   /* IUnknown fields */
   ICOM_VFIELD(IDirectMusicSynthSink);
   DWORD          ref;
diff --git a/dlls/dmsynth/regsvr.c b/dlls/dmsynth/regsvr.c
index 8e8b96e..401033d 100644
--- a/dlls/dmsynth/regsvr.c
+++ b/dlls/dmsynth/regsvr.c
@@ -18,21 +18,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
-#include <stdarg.h>
-#include <string.h>
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winreg.h"
-#include "winerror.h"
-
-#include "dmusics.h"
-#include "dmusici.h"
-#include "dmplugin.h"
-
-#include "wine/debug.h"
+#include "dmsynth_private.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(dmsynth);
 
@@ -44,8 +30,7 @@
 /***********************************************************************
  *		interface for self-registering
  */
-struct regsvr_interface
-{
+struct regsvr_interface {
     IID const *iid;		/* NULL for end of list */
     LPCSTR name;		/* can be NULL to omit */
     IID const *base_iid;	/* can be NULL to omit */
@@ -57,8 +42,7 @@
 static HRESULT register_interfaces(struct regsvr_interface const *list);
 static HRESULT unregister_interfaces(struct regsvr_interface const *list);
 
-struct regsvr_coclass
-{
+struct regsvr_coclass {
     CLSID const *clsid;		/* NULL for end of list */
     LPCSTR name;		/* can be NULL to omit */
     LPCSTR ips;			/* can be NULL to omit */
@@ -124,8 +108,7 @@
 /***********************************************************************
  *		register_interfaces
  */
-static HRESULT register_interfaces(struct regsvr_interface const *list)
-{
+static HRESULT register_interfaces(struct regsvr_interface const *list) {
     LONG res = ERROR_SUCCESS;
     HKEY interface_key;
 
@@ -194,8 +177,7 @@
 /***********************************************************************
  *		unregister_interfaces
  */
-static HRESULT unregister_interfaces(struct regsvr_interface const *list)
-{
+static HRESULT unregister_interfaces(struct regsvr_interface const *list) {
     LONG res = ERROR_SUCCESS;
     HKEY interface_key;
 
@@ -219,8 +201,7 @@
 /***********************************************************************
  *		register_coclasses
  */
-static HRESULT register_coclasses(struct regsvr_coclass const *list)
-{
+static HRESULT register_coclasses(struct regsvr_coclass const *list) {
     LONG res = ERROR_SUCCESS;
     HKEY coclass_key;
 
@@ -301,8 +282,7 @@
 /***********************************************************************
  *		unregister_coclasses
  */
-static HRESULT unregister_coclasses(struct regsvr_coclass const *list)
-{
+static HRESULT unregister_coclasses(struct regsvr_coclass const *list) {
     LONG res = ERROR_SUCCESS;
     HKEY coclass_key;
 
@@ -338,8 +318,7 @@
 /***********************************************************************
  *		regsvr_key_guid
  */
-static LONG register_key_guid(HKEY base, WCHAR const *name, GUID const *guid)
-{
+static LONG register_key_guid(HKEY base, WCHAR const *name, GUID const *guid) {
     WCHAR buf[39];
 
     StringFromGUID2(guid, buf, 39);
@@ -352,8 +331,7 @@
 static LONG register_key_defvalueW(
     HKEY base,
     WCHAR const *name,
-    WCHAR const *value)
-{
+    WCHAR const *value) {
     LONG res;
     HKEY key;
 
@@ -372,8 +350,7 @@
 static LONG register_key_defvalueA(
     HKEY base,
     WCHAR const *name,
-    char const *value)
-{
+    char const *value) {
     LONG res;
     HKEY key;
 
@@ -394,8 +371,7 @@
     char const *progid,
     char const *curver_progid,
     char const *name,
-    char const *extra)
-{
+    char const *extra) {
     LONG res;
     HKEY progid_key;
 
@@ -439,8 +415,7 @@
 /***********************************************************************
  *		recursive_delete_key
  */
-static LONG recursive_delete_key(HKEY key)
-{
+static LONG recursive_delete_key(HKEY key) {
     LONG res;
     WCHAR subkey_name[MAX_PATH];
     DWORD cName;
@@ -471,8 +446,7 @@
 /***********************************************************************
  *		recursive_delete_keyA
  */
-static LONG recursive_delete_keyA(HKEY base, char const *name)
-{
+static LONG recursive_delete_keyA(HKEY base, char const *name) {
     LONG res;
     HKEY key;
 
@@ -487,8 +461,7 @@
 /***********************************************************************
  *		recursive_delete_keyW
  */
-static LONG recursive_delete_keyW(HKEY base, WCHAR const *name)
-{
+static LONG recursive_delete_keyW(HKEY base, WCHAR const *name) {
     LONG res;
     HKEY key;
 
@@ -534,8 +507,7 @@
 /***********************************************************************
  *		DllRegisterServer (DMSYNTH.3)
  */
-HRESULT WINAPI DMSYNTH_DllRegisterServer(void)
-{
+HRESULT WINAPI DMSYNTH_DllRegisterServer(void) {
     HRESULT hr;
 
     TRACE("\n");
@@ -549,8 +521,7 @@
 /***********************************************************************
  *		DllUnregisterServer (DMSYNTH.4)
  */
-HRESULT WINAPI DMSYNTH_DllUnregisterServer(void)
-{
+HRESULT WINAPI DMSYNTH_DllUnregisterServer(void) {
     HRESULT hr;
 
     TRACE("\n");
diff --git a/dlls/dmsynth/synth.c b/dlls/dmsynth/synth.c
index 5b89e66..0658b78 100644
--- a/dlls/dmsynth/synth.c
+++ b/dlls/dmsynth/synth.c
@@ -1,6 +1,6 @@
 /* IDirectMusicSynth8 Implementation
  *
- * Copyright (C) 2003 Rok Mandeljc
+ * Copyright (C) 2003-2004 Rok Mandeljc
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,22 +17,12 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-#include <stdarg.h>
-
-#include "windef.h"
-#include "winbase.h"
-#include "winuser.h"
-#include "wingdi.h"
-#include "wine/debug.h"
-#include "winnls.h"
-
 #include "dmsynth_private.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(dmsynth);
 
-/* IDirectMusicSynth8 IUnknown part: */
-HRESULT WINAPI IDirectMusicSynth8Impl_QueryInterface (LPDIRECTMUSICSYNTH8 iface, REFIID riid, LPVOID *ppobj)
-{
+/* IDirectMusicSynth8Impl IUnknown part: */
+HRESULT WINAPI IDirectMusicSynth8Impl_QueryInterface (LPDIRECTMUSICSYNTH8 iface, REFIID riid, LPVOID *ppobj) {
 	ICOM_THIS(IDirectMusicSynth8Impl,iface);
 
 	if (IsEqualIID (riid, &IID_IUnknown) || 
@@ -42,20 +32,17 @@
 		*ppobj = This;
 		return S_OK;
 	}
-
 	WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
 	return E_NOINTERFACE;
 }
 
-ULONG WINAPI IDirectMusicSynth8Impl_AddRef (LPDIRECTMUSICSYNTH8 iface)
-{
+ULONG WINAPI IDirectMusicSynth8Impl_AddRef (LPDIRECTMUSICSYNTH8 iface) {
 	ICOM_THIS(IDirectMusicSynth8Impl,iface);
 	TRACE("(%p) : AddRef from %ld\n", This, This->ref);
 	return ++(This->ref);
 }
 
-ULONG WINAPI IDirectMusicSynth8Impl_Release (LPDIRECTMUSICSYNTH8 iface)
-{
+ULONG WINAPI IDirectMusicSynth8Impl_Release (LPDIRECTMUSICSYNTH8 iface) {
 	ICOM_THIS(IDirectMusicSynth8Impl,iface);
 	ULONG ref = --This->ref;
 	TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
@@ -65,213 +52,146 @@
 	return ref;
 }
 
-/* IDirectMusicSynth8 IDirectMusicSynth part: */
-HRESULT WINAPI IDirectMusicSynth8Impl_Open (LPDIRECTMUSICSYNTH8 iface, LPDMUS_PORTPARAMS pPortParams)
-{
+/* IDirectMusicSynth8Impl IDirectMusicSynth part: */
+HRESULT WINAPI IDirectMusicSynth8Impl_Open (LPDIRECTMUSICSYNTH8 iface, LPDMUS_PORTPARAMS pPortParams) {
 	ICOM_THIS(IDirectMusicSynth8Impl,iface);
-
 	FIXME("(%p, %p): stub\n", This, pPortParams);
-
 	return S_OK;
 }
 
-HRESULT WINAPI IDirectMusicSynth8Impl_Close (LPDIRECTMUSICSYNTH8 iface)
-{
+HRESULT WINAPI IDirectMusicSynth8Impl_Close (LPDIRECTMUSICSYNTH8 iface) {
 	ICOM_THIS(IDirectMusicSynth8Impl,iface);
-
 	FIXME("(%p): stub\n", This);
-
 	return S_OK;
 }
 
-HRESULT WINAPI IDirectMusicSynth8Impl_SetNumChannelGroups (LPDIRECTMUSICSYNTH8 iface, DWORD dwGroups)
-{
+HRESULT WINAPI IDirectMusicSynth8Impl_SetNumChannelGroups (LPDIRECTMUSICSYNTH8 iface, DWORD dwGroups) {
 	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)
-{
+HRESULT WINAPI IDirectMusicSynth8Impl_Download (LPDIRECTMUSICSYNTH8 iface, LPHANDLE phDownload, LPVOID pvData, LPBOOL pbFree) {
 	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)
-{
+HRESULT WINAPI IDirectMusicSynth8Impl_Unload (LPDIRECTMUSICSYNTH8 iface, HANDLE hDownload, HRESULT (CALLBACK* lpFreeHandle)(HANDLE,HANDLE), HANDLE hUserData) {
 	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)
-{
+HRESULT WINAPI IDirectMusicSynth8Impl_PlayBuffer (LPDIRECTMUSICSYNTH8 iface, REFERENCE_TIME rt, LPBYTE pbBuffer, DWORD cbBuffer) {
 	ICOM_THIS(IDirectMusicSynth8Impl,iface);
-
 	FIXME("(%p, %lli, %p, %ld): stub\n", This, rt, pbBuffer, cbBuffer);
-
 	return S_OK;
 }
 
-HRESULT WINAPI IDirectMusicSynth8Impl_GetRunningStats (LPDIRECTMUSICSYNTH8 iface, LPDMUS_SYNTHSTATS pStats)
-{
+HRESULT WINAPI IDirectMusicSynth8Impl_GetRunningStats (LPDIRECTMUSICSYNTH8 iface, LPDMUS_SYNTHSTATS pStats) {
 	ICOM_THIS(IDirectMusicSynth8Impl,iface);
-
 	FIXME("(%p, %p): stub\n", This, pStats);
-
 	return S_OK;
 }
 
-HRESULT WINAPI IDirectMusicSynth8Impl_GetPortCaps (LPDIRECTMUSICSYNTH8 iface, LPDMUS_PORTCAPS pCaps)
-{
+HRESULT WINAPI IDirectMusicSynth8Impl_GetPortCaps (LPDIRECTMUSICSYNTH8 iface, LPDMUS_PORTCAPS pCaps) {
 	ICOM_THIS(IDirectMusicSynth8Impl,iface);
-
 	TRACE("(%p, %p)\n", This, pCaps);
 	*pCaps = This->pCaps;
-	
 	return S_OK;
 }
 
-HRESULT WINAPI IDirectMusicSynth8Impl_SetMasterClock (LPDIRECTMUSICSYNTH8 iface, IReferenceClock* pClock)
-{
+HRESULT WINAPI IDirectMusicSynth8Impl_SetMasterClock (LPDIRECTMUSICSYNTH8 iface, IReferenceClock* pClock) {
 	ICOM_THIS(IDirectMusicSynth8Impl,iface);
-
 	FIXME("(%p, %p): stub\n", This, pClock);
-
 	return S_OK;
 }
 
-HRESULT WINAPI IDirectMusicSynth8Impl_GetLatencyClock (LPDIRECTMUSICSYNTH8 iface, IReferenceClock** ppClock)
-{
+HRESULT WINAPI IDirectMusicSynth8Impl_GetLatencyClock (LPDIRECTMUSICSYNTH8 iface, IReferenceClock** ppClock) {
 	ICOM_THIS(IDirectMusicSynth8Impl,iface);
-
 	TRACE("(%p, %p)\n", This, ppClock);
 	*ppClock = This->pLatencyClock;
-
 	return S_OK;
 }
 
-HRESULT WINAPI IDirectMusicSynth8Impl_Activate (LPDIRECTMUSICSYNTH8 iface, BOOL fEnable)
-{
+HRESULT WINAPI IDirectMusicSynth8Impl_Activate (LPDIRECTMUSICSYNTH8 iface, BOOL fEnable) {
 	ICOM_THIS(IDirectMusicSynth8Impl,iface);
-
 	TRACE("(%p, %d)\n", This, fEnable);
 	This->fActive = fEnable;
-
 	return S_OK;
 }
 
-HRESULT WINAPI IDirectMusicSynth8Impl_SetSynthSink (LPDIRECTMUSICSYNTH8 iface, IDirectMusicSynthSink* pSynthSink)
-{
+HRESULT WINAPI IDirectMusicSynth8Impl_SetSynthSink (LPDIRECTMUSICSYNTH8 iface, IDirectMusicSynthSink* pSynthSink) {
 	ICOM_THIS(IDirectMusicSynth8Impl,iface);
-
 	TRACE("(%p, %p)\n", This, pSynthSink);
 	This->pSynthSink = (IDirectMusicSynthSinkImpl*)pSynthSink;
-
 	return S_OK;
 }
 
-HRESULT WINAPI IDirectMusicSynth8Impl_Render (LPDIRECTMUSICSYNTH8 iface, short* pBuffer, DWORD dwLength, LONGLONG llPosition)
-{
+HRESULT WINAPI IDirectMusicSynth8Impl_Render (LPDIRECTMUSICSYNTH8 iface, short* pBuffer, DWORD dwLength, LONGLONG llPosition) {
 	ICOM_THIS(IDirectMusicSynth8Impl,iface);
-
 	FIXME("(%p, %p, %ld, %lli): stub\n", This, pBuffer, dwLength, llPosition);
-
 	return S_OK;
 }
 
-HRESULT WINAPI IDirectMusicSynth8Impl_SetChannelPriority (LPDIRECTMUSICSYNTH8 iface, DWORD dwChannelGroup, DWORD dwChannel, DWORD dwPriority)
-{
+HRESULT WINAPI IDirectMusicSynth8Impl_SetChannelPriority (LPDIRECTMUSICSYNTH8 iface, DWORD dwChannelGroup, DWORD dwChannel, DWORD dwPriority) {
 	/*ICOM_THIS(IDirectMusicSynth8Impl,iface); */
-	
 	/* silenced because of too many messages - 1000 groups * 16 channels ;=) */
 	/*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)
-{
+HRESULT WINAPI IDirectMusicSynth8Impl_GetChannelPriority (LPDIRECTMUSICSYNTH8 iface, DWORD dwChannelGroup, DWORD dwChannel, LPDWORD pdwPriority) {
 	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)
-{
+HRESULT WINAPI IDirectMusicSynth8Impl_GetFormat (LPDIRECTMUSICSYNTH8 iface, LPWAVEFORMATEX pWaveFormatEx, LPDWORD pdwWaveFormatExSiz) {
 	ICOM_THIS(IDirectMusicSynth8Impl,iface);
-
 	FIXME("(%p, %p, %p): stub\n", This, pWaveFormatEx, pdwWaveFormatExSiz);
-
 	return S_OK;
 }
 
-HRESULT WINAPI IDirectMusicSynth8Impl_GetAppend (LPDIRECTMUSICSYNTH8 iface, DWORD* pdwAppend)
-{
+HRESULT WINAPI IDirectMusicSynth8Impl_GetAppend (LPDIRECTMUSICSYNTH8 iface, DWORD* pdwAppend) {
 	ICOM_THIS(IDirectMusicSynth8Impl,iface);
-
 	FIXME("(%p, %p): stub\n", This, pdwAppend);
-
 	return S_OK;
 }
 
-/* IDirectMusicSynth8 IDirectMusicSynth8 part: */
-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)
-{
+/* IDirectMusicSynth8Impl IDirectMusicSynth8 part: */
+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) {
 	ICOM_THIS(IDirectMusicSynth8Impl,iface);
-
 	FIXME("(%p, %lli, %ld, %ld, %ld, %ld, %li, %li,%lli, %lli, %lli): 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)
-{
+HRESULT WINAPI IDirectMusicSynth8Impl_StopVoice (LPDIRECTMUSICSYNTH8 iface, REFERENCE_TIME rt, DWORD dwVoiceId) {
 	ICOM_THIS(IDirectMusicSynth8Impl,iface);
-
 	FIXME("(%p, %lli, %ld): stub\n", This, rt, dwVoiceId);
-
 	return S_OK;
 }
 
-HRESULT WINAPI IDirectMusicSynth8Impl_GetVoiceState (LPDIRECTMUSICSYNTH8 iface, DWORD dwVoice[], DWORD cbVoice, DMUS_VOICE_STATE dwVoiceState[])
-{
+HRESULT WINAPI IDirectMusicSynth8Impl_GetVoiceState (LPDIRECTMUSICSYNTH8 iface, DWORD dwVoice[], DWORD cbVoice, DMUS_VOICE_STATE dwVoiceState[]) {
 	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)
-{
+HRESULT WINAPI IDirectMusicSynth8Impl_Refresh (LPDIRECTMUSICSYNTH8 iface, DWORD dwDownloadID, DWORD dwFlags) {
 	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)
-{
+HRESULT WINAPI IDirectMusicSynth8Impl_AssignChannelToBuses (LPDIRECTMUSICSYNTH8 iface, DWORD dwChannelGroup, DWORD dwChannel, LPDWORD pdwBuses, DWORD cBuses) {
 	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 =
-{
+ICOM_VTABLE(IDirectMusicSynth8) DirectMusicSynth8_Vtbl = {
     ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
 	IDirectMusicSynth8Impl_QueryInterface,
 	IDirectMusicSynth8Impl_AddRef,
@@ -301,39 +221,31 @@
 };
 
 /* for ClassFactory */
-HRESULT WINAPI DMUSIC_CreateDirectMusicSynth (LPCGUID lpcGUID, LPDIRECTMUSICSYNTH8* ppDMSynth, LPUNKNOWN pUnkOuter)
-{
-	IDirectMusicSynth8Impl *dmsynth;
+HRESULT WINAPI DMUSIC_CreateDirectMusicSynthImpl (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) {
+	IDirectMusicSynth8Impl *obj;
 	
-	TRACE("(%p,%p,%p)\n", lpcGUID, ppDMSynth, pUnkOuter);
-	if (IsEqualIID (lpcGUID, &IID_IDirectMusicSynth) ||
-		IsEqualIID (lpcGUID, &IID_IDirectMusicSynth8))	{
-		dmsynth = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicSynth8Impl));
-		if (NULL == dmsynth) {
-			*ppDMSynth = (LPDIRECTMUSICSYNTH8) NULL;
-			return E_OUTOFMEMORY;
-		}
-		dmsynth->lpVtbl = &DirectMusicSynth8_Vtbl;
-		dmsynth->ref = 1;
-		/* fill in caps */
-		dmsynth->pCaps.dwSize = sizeof(DMUS_PORTCAPS);
-		dmsynth->pCaps.dwFlags = DMUS_PC_DLS | DMUS_PC_SOFTWARESYNTH | DMUS_PC_DIRECTSOUND | DMUS_PC_DLS2 | DMUS_PC_AUDIOPATH | DMUS_PC_WAVE;
-		dmsynth->pCaps.guidPort = CLSID_DirectMusicSynth;
-		dmsynth->pCaps.dwClass = DMUS_PC_OUTPUTCLASS;
-		dmsynth->pCaps.dwType = DMUS_PORT_WINMM_DRIVER;
-		dmsynth->pCaps.dwMemorySize = DMUS_PC_SYSTEMMEMORY;
-		dmsynth->pCaps.dwMaxChannelGroups = 1000;
-		dmsynth->pCaps.dwMaxVoices = 1000;
-		dmsynth->pCaps.dwMaxAudioChannels = -1;
-		dmsynth->pCaps.dwEffectFlags = DMUS_EFFECT_REVERB | DMUS_EFFECT_CHORUS | DMUS_EFFECT_DELAY;
-		MultiByteToWideChar (CP_ACP, 0, "Microsotf Synthesizer", -1, dmsynth->pCaps.wszDescription, sizeof(dmsynth->pCaps.wszDescription)/sizeof(WCHAR));
-		/* assign latency clock */
-		/*DMUSIC_CreateReferenceClock (&IID_IReferenceClock, (LPREFERENCECLOCK*)&This->pLatencyClock, NULL); */
-
-		*ppDMSynth = (LPDIRECTMUSICSYNTH8) dmsynth;
-		return S_OK;
+	TRACE("(%p,%p,%p)\n", lpcGUID, ppobj, pUnkOuter);
+	obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicSynth8Impl));
+	if (NULL == obj) {
+		*ppobj = (LPDIRECTMUSICSYNTH8) NULL;
+		return E_OUTOFMEMORY;
 	}
-	WARN("No interface found\n");
-	
-	return E_NOINTERFACE;
+	obj->lpVtbl = &DirectMusicSynth8_Vtbl;
+	obj->ref = 0;
+	/* fill in caps */
+	obj->pCaps.dwSize = sizeof(DMUS_PORTCAPS);
+	obj->pCaps.dwFlags = DMUS_PC_DLS | DMUS_PC_SOFTWARESYNTH | DMUS_PC_DIRECTSOUND | DMUS_PC_DLS2 | DMUS_PC_AUDIOPATH | DMUS_PC_WAVE;
+	obj->pCaps.guidPort = CLSID_DirectMusicSynth;
+	obj->pCaps.dwClass = DMUS_PC_OUTPUTCLASS;
+	obj->pCaps.dwType = DMUS_PORT_WINMM_DRIVER;
+	obj->pCaps.dwMemorySize = DMUS_PC_SYSTEMMEMORY;
+	obj->pCaps.dwMaxChannelGroups = 1000;
+	obj->pCaps.dwMaxVoices = 1000;
+	obj->pCaps.dwMaxAudioChannels = -1;
+	obj->pCaps.dwEffectFlags = DMUS_EFFECT_REVERB | DMUS_EFFECT_CHORUS | DMUS_EFFECT_DELAY;
+	MultiByteToWideChar (CP_ACP, 0, "Microsotf Synthesizer", -1, obj->pCaps.wszDescription, sizeof(obj->pCaps.wszDescription)/sizeof(WCHAR));
+	/* assign latency clock */
+	/*DMUSIC_CreateReferenceClockImpl (&IID_IReferenceClock, (LPVOID*)&This->pLatencyClock, NULL); */
+
+	return IDirectMusicSynth8Impl_QueryInterface ((LPDIRECTMUSICSYNTH8)obj, lpcGUID, ppobj);
 }
diff --git a/dlls/dmsynth/synthsink.c b/dlls/dmsynth/synthsink.c
index fad7de4..49a7077 100644
--- a/dlls/dmsynth/synthsink.c
+++ b/dlls/dmsynth/synthsink.c
@@ -1,6 +1,6 @@
 /* IDirectMusicSynthSink Implementation
  *
- * Copyright (C) 2003 Rok Mandeljc
+ * Copyright (C) 2003-2004 Rok Mandeljc
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,21 +17,12 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-#include <stdarg.h>
-
-#include "windef.h"
-#include "winbase.h"
-#include "winuser.h"
-#include "wingdi.h"
-#include "wine/debug.h"
-
 #include "dmsynth_private.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(dmsynth);
 
-/* IDirectMusicSynthSink IUnknown part: */
-HRESULT WINAPI IDirectMusicSynthSinkImpl_QueryInterface (LPDIRECTMUSICSYNTHSINK iface, REFIID riid, LPVOID *ppobj)
-{
+/* IDirectMusicSynthSinkImpl IUnknown part: */
+HRESULT WINAPI IDirectMusicSynthSinkImpl_QueryInterface (LPDIRECTMUSICSYNTHSINK iface, REFIID riid, LPVOID *ppobj) {
 	ICOM_THIS(IDirectMusicSynthSinkImpl,iface);
 
 	if (IsEqualIID (riid, &IID_IUnknown) || 
@@ -40,20 +31,17 @@
 		*ppobj = This;
 		return S_OK;
 	}
-
 	WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
 	return E_NOINTERFACE;
 }
 
-ULONG WINAPI IDirectMusicSynthSinkImpl_AddRef (LPDIRECTMUSICSYNTHSINK iface)
-{
+ULONG WINAPI IDirectMusicSynthSinkImpl_AddRef (LPDIRECTMUSICSYNTHSINK iface) {
 	ICOM_THIS(IDirectMusicSynthSinkImpl,iface);
 	TRACE("(%p) : AddRef from %ld\n", This, This->ref);
 	return ++(This->ref);
 }
 
-ULONG WINAPI IDirectMusicSynthSinkImpl_Release (LPDIRECTMUSICSYNTHSINK iface)
-{
+ULONG WINAPI IDirectMusicSynthSinkImpl_Release (LPDIRECTMUSICSYNTHSINK iface) {
 	ICOM_THIS(IDirectMusicSynthSinkImpl,iface);
 	ULONG ref = --This->ref;
 	TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
@@ -63,81 +51,56 @@
 	return ref;
 }
 
-/* IDirectMusicSynth IDirectMusicSynth part: */
-HRESULT WINAPI IDirectMusicSynthSinkImpl_Init (LPDIRECTMUSICSYNTHSINK iface, IDirectMusicSynth* pSynth)
-{
+/* IDirectMusicSynthSinkImpl IDirectMusicSynthSink part: */
+HRESULT WINAPI IDirectMusicSynthSinkImpl_Init (LPDIRECTMUSICSYNTHSINK iface, IDirectMusicSynth* pSynth) {
 	ICOM_THIS(IDirectMusicSynthSinkImpl,iface);
-
 	FIXME("(%p, %p): stub\n", This, pSynth);
-
 	return S_OK;
 }
 
-HRESULT WINAPI IDirectMusicSynthSinkImpl_SetMasterClock (LPDIRECTMUSICSYNTHSINK iface, IReferenceClock* pClock)
-{
+HRESULT WINAPI IDirectMusicSynthSinkImpl_SetMasterClock (LPDIRECTMUSICSYNTHSINK iface, IReferenceClock* pClock) {
 	ICOM_THIS(IDirectMusicSynthSinkImpl,iface);
-
 	FIXME("(%p, %p): stub\n", This, pClock);
-
 	return S_OK;
 }
 
-HRESULT WINAPI IDirectMusicSynthSinkImpl_GetLatencyClock (LPDIRECTMUSICSYNTHSINK iface, IReferenceClock** ppClock)
-{
+HRESULT WINAPI IDirectMusicSynthSinkImpl_GetLatencyClock (LPDIRECTMUSICSYNTHSINK iface, IReferenceClock** ppClock) {
 	ICOM_THIS(IDirectMusicSynthSinkImpl,iface);
-
 	FIXME("(%p, %p): stub\n", This, ppClock);
-
 	return S_OK;
 }
 
-HRESULT WINAPI IDirectMusicSynthSinkImpl_Activate (LPDIRECTMUSICSYNTHSINK iface, BOOL fEnable)
-{
+HRESULT WINAPI IDirectMusicSynthSinkImpl_Activate (LPDIRECTMUSICSYNTHSINK iface, BOOL fEnable) {
 	ICOM_THIS(IDirectMusicSynthSinkImpl,iface);
-
 	FIXME("(%p, %d): stub\n", This, fEnable);
-
 	return S_OK;
 }
 
-HRESULT WINAPI IDirectMusicSynthSinkImpl_SampleToRefTime (LPDIRECTMUSICSYNTHSINK iface, LONGLONG llSampleTime, REFERENCE_TIME* prfTime)
-{
+HRESULT WINAPI IDirectMusicSynthSinkImpl_SampleToRefTime (LPDIRECTMUSICSYNTHSINK iface, LONGLONG llSampleTime, REFERENCE_TIME* prfTime) {
 	ICOM_THIS(IDirectMusicSynthSinkImpl,iface);
-
 	FIXME("(%p, %lli, %p): stub\n", This, llSampleTime, prfTime);
-
 	return S_OK;
 }
 
-HRESULT WINAPI IDirectMusicSynthSinkImpl_RefTimeToSample (LPDIRECTMUSICSYNTHSINK iface, REFERENCE_TIME rfTime, LONGLONG* pllSampleTime)
-{
+HRESULT WINAPI IDirectMusicSynthSinkImpl_RefTimeToSample (LPDIRECTMUSICSYNTHSINK iface, REFERENCE_TIME rfTime, LONGLONG* pllSampleTime) {
 	ICOM_THIS(IDirectMusicSynthSinkImpl,iface);
-
 	FIXME("(%p, %lli, %p): stub\n", This, rfTime, pllSampleTime );
-
 	return S_OK;
 }
 
-HRESULT WINAPI IDirectMusicSynthSinkImpl_SetDirectSound (LPDIRECTMUSICSYNTHSINK iface, LPDIRECTSOUND pDirectSound, LPDIRECTSOUNDBUFFER pDirectSoundBuffer)
-{
+HRESULT WINAPI IDirectMusicSynthSinkImpl_SetDirectSound (LPDIRECTMUSICSYNTHSINK iface, LPDIRECTSOUND pDirectSound, LPDIRECTSOUNDBUFFER pDirectSoundBuffer) {
 	ICOM_THIS(IDirectMusicSynthSinkImpl,iface);
-
 	FIXME("(%p, %p, %p): stub\n", This, pDirectSound, pDirectSoundBuffer);
-
 	return S_OK;
 }
 
-HRESULT WINAPI IDirectMusicSynthSinkImpl_GetDesiredBufferSize (LPDIRECTMUSICSYNTHSINK iface, LPDWORD pdwBufferSizeInSamples)
-{
+HRESULT WINAPI IDirectMusicSynthSinkImpl_GetDesiredBufferSize (LPDIRECTMUSICSYNTHSINK iface, LPDWORD pdwBufferSizeInSamples) {
 	ICOM_THIS(IDirectMusicSynthSinkImpl,iface);
-
 	FIXME("(%p, %p): stub\n", This, pdwBufferSizeInSamples);
-
 	return S_OK;
 }
 
-ICOM_VTABLE(IDirectMusicSynthSink) DirectMusicSynthSink_Vtbl =
-{
+ICOM_VTABLE(IDirectMusicSynthSink) DirectMusicSynthSink_Vtbl = {
     ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
 	IDirectMusicSynthSinkImpl_QueryInterface,
 	IDirectMusicSynthSinkImpl_AddRef,
@@ -153,23 +116,17 @@
 };
 
 /* for ClassFactory */
-HRESULT WINAPI DMUSIC_CreateDirectMusicSynthSink (LPCGUID lpcGUID, LPDIRECTMUSICSYNTHSINK* ppDMSynthSink, LPUNKNOWN pUnkOuter)
-{
-	IDirectMusicSynthSinkImpl *dmsink;
+HRESULT WINAPI DMUSIC_CreateDirectMusicSynthSinkImpl (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) {
+	IDirectMusicSynthSinkImpl *obj;
 	
-	TRACE("(%p,%p,%p)\n", lpcGUID, ppDMSynthSink, pUnkOuter);
-	if (IsEqualIID (lpcGUID, &IID_IDirectMusicSynthSink)) {
-		dmsink = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicSynthSinkImpl));
-		if (NULL == dmsink) {
-			*ppDMSynthSink = (LPDIRECTMUSICSYNTHSINK) NULL;
-			return E_OUTOFMEMORY;
-		}
-		dmsink->lpVtbl = &DirectMusicSynthSink_Vtbl;
-		dmsink->ref = 1;
-		*ppDMSynthSink = (LPDIRECTMUSICSYNTHSINK) dmsink;
-		return S_OK;
+	TRACE("(%p,%p,%p)\n", lpcGUID, ppobj, pUnkOuter);
+	obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicSynthSinkImpl));
+	if (NULL == obj) {
+		*ppobj = (LPDIRECTMUSICSYNTHSINK) NULL;
+		return E_OUTOFMEMORY;
 	}
+	obj->lpVtbl = &DirectMusicSynthSink_Vtbl;
+	obj->ref = 0;
 	
-	WARN("No interface found\n");
-	return E_NOINTERFACE;
+	return IDirectMusicSynthSinkImpl_QueryInterface((LPDIRECTMUSICSYNTHSINK)obj, lpcGUID, ppobj);
 }
diff --git a/dlls/dmsynth/version.rc b/dlls/dmsynth/version.rc
index 4ccbc66..5051092 100644
--- a/dlls/dmsynth/version.rc
+++ b/dlls/dmsynth/version.rc
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2003 Rok Mandeljc
+ * Copyright (C) 2003-2004 Rok Mandeljc <rok.mandeljc@gimb.org>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -18,10 +18,10 @@
 
 #define WINE_FILEDESCRIPTION_STR "Wine DirectMusic Software Synthesizer"
 #define WINE_FILENAME_STR "dmsynth.dll"
-#define WINE_FILEVERSION 4,8,1,881
-#define WINE_FILEVERSION_STR "4.8.1.881"
-#define WINE_PRODUCTVERSION 4,8,1,881
-#define WINE_PRODUCTVERSION_STR "4.8"
+#define WINE_FILEVERSION 4,9,0,900
+#define WINE_FILEVERSION_STR "4.9.0.900"
+#define WINE_PRODUCTVERSION 4,9,0,900
+#define WINE_PRODUCTVERSION_STR "4.9"
 #define WINE_PRODUCTNAME_STR "DirectX"
 
 #include "wine/wine_common_ver.rc"