- 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/include/dls1.h b/include/dls1.h
index 89c3b26..0fc1d7a 100644
--- a/include/dls1.h
+++ b/include/dls1.h
@@ -1,6 +1,6 @@
-/* Defines and Structures for Instrument Collection Form RIFF DLS
+/* Defines and Structures for Instrument Collection Form RIFF DLS1
  *
- * 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
@@ -16,12 +16,12 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
-
+ 
 #ifndef __WINE_INCLUDE_DLS1_H
 #define __WINE_INCLUDE_DLS1_H
 
 /*****************************************************************************
- * FOURCC's
+ * FOURCCs
  */
 #define FOURCC_DLS   mmioFOURCC('D','L','S',' ')
 #define FOURCC_DLID  mmioFOURCC('d','l','i','d')
@@ -43,149 +43,160 @@
 #define FOURCC_VERS  mmioFOURCC('v','e','r','s')
 
 /*****************************************************************************
- * Definitions
+ * Flags
  */
-#define CONN_SRC_NONE              0x0000
-#define CONN_SRC_LFO               0x0001
-#define CONN_SRC_KEYONVELOCITY     0x0002
-#define CONN_SRC_KEYNUMBER         0x0003
-#define CONN_SRC_EG1               0x0004
-#define CONN_SRC_EG2               0x0005
-#define CONN_SRC_PITCHWHEEL        0x0006
-#define CONN_SRC_CC1               0x0081
-#define CONN_SRC_CC7               0x0087
-#define CONN_SRC_CC10              0x008a
-#define CONN_SRC_CC11              0x008b
 
-#define CONN_DST_NONE              0x0000
-#define CONN_DST_ATTENUATION       0x0001
-#define CONN_DST_PITCH             0x0003
-#define CONN_DST_PAN               0x0004
-#define CONN_DST_LFO_FREQUENCY     0x0104
-#define CONN_DST_LFO_STARTDELAY    0x0105
-#define CONN_DST_EG1_ATTACKTIME    0x0206
-#define CONN_DST_EG1_DECAYTIME     0x0207
-#define CONN_DST_EG1_RELEASETIME   0x0209
-#define CONN_DST_EG1_SUSTAINLEVEL  0x020a
-#define CONN_DST_EG2_ATTACKTIME    0x030a
-#define CONN_DST_EG2_DECAYTIME     0x030b
-#define CONN_DST_EG2_RELEASETIME   0x030d
-#define CONN_DST_EG2_SUSTAINLEVEL  0x030e
+#define CONN_DST_NONE             0x000
+#define CONN_DST_ATTENUATION      0x001
+#define CONN_DST_PITCH            0x003
+#define CONN_DST_PAN              0x004
 
-#define CONN_TRN_NONE              0x0000
-#define CONN_TRN_CONCAVE           0x0001
+#define CONN_DST_LFO_FREQUENCY    0x104
+#define CONN_DST_LFO_STARTDELAY   0x105
 
-#define F_INSTRUMENT_DRUMS      0x80000000
-#define F_RGN_OPTION_SELFNONEXCLUSIVE  0x0001
+#define CONN_DST_EG1_ATTACKTIME   0x206
+#define CONN_DST_EG1_DECAYTIME    0x207
+#define CONN_DST_EG1_RELEASETIME  0x209
+#define CONN_DST_EG1_SUSTAINLEVEL 0x20A
 
-#define WAVELINK_CHANNEL_LEFT    0x0001l
-#define WAVELINK_CHANNEL_RIGHT   0x0002l
+#define CONN_DST_EG2_ATTACKTIME   0x30A
+#define CONN_DST_EG2_DECAYTIME    0x30B
+#define CONN_DST_EG2_RELEASETIME  0x30D
+#define CONN_DST_EG2_SUSTAINLEVEL 0x30E
 
-#define F_WAVELINK_PHASE_MASTER  0x0001
-#define POOL_CUE_NULL  0xffffffffl
+#define CONN_SRC_NONE             0x000
+#define CONN_SRC_LFO              0x001
+#define CONN_SRC_KEYONVELOCITY    0x002
+#define CONN_SRC_KEYNUMBER        0x003
+#define CONN_SRC_EG1              0x004
+#define CONN_SRC_EG2              0x005
+#define CONN_SRC_PITCHWHEEL       0x006
 
-#define F_WSMP_NO_TRUNCATION     0x0001l
-#define F_WSMP_NO_COMPRESSION    0x0002l
-  
-#define WLOOP_TYPE_FORWARD   0
+#define CONN_SRC_CC1              0x081
+#define CONN_SRC_CC7              0x087
+#define CONN_SRC_CC10             0x08A
+#define CONN_SRC_CC11             0x08B
+
+#define CONN_TRN_NONE             0x000
+#define CONN_TRN_CONCAVE          0x001
+
+#define F_INSTRUMENT_DRUMS 0x80000000
+
+#define F_RGN_OPTION_SELFNONEXCLUSIVE 0x1
+
+#define F_WAVELINK_PHASE_MASTER 0x1
+
+#define F_WSMP_NO_TRUNCATION  0x1
+#define F_WSMP_NO_COMPRESSION 0x2
+
+#define POOL_CUE_NULL 0xFFFFFFFF
+
+#define WAVELINK_CHANNEL_LEFT  0x1
+#define WAVELINK_CHANNEL_RIGHT 0x2
+
+#define WLOOP_TYPE_FORWARD 0x0
 
 /*****************************************************************************
  * Structures
  */
-typedef struct _DLSID 
-{
-  ULONG    ulData1;
-  USHORT   usData2;
-  USHORT   usData3;
-  BYTE     abData4[8];
-} DLSID, *LPDLSID;
+/* typedef definitions */
+typedef struct _DLSID          DLSID,          *LPDLSID;
+typedef struct _DLSVERSION     DLSVERSION,     *LPDLSVERSION;
+typedef struct _CONNECTION     CONNECTION,     *LPCONNECTION;
+typedef struct _CONNECTIONLIST CONNECTIONLIST, *LPCONNECTIONLIST;
+typedef struct _RGNRANGE       RGNRANGE,       *LPRGNRANGE;
+typedef struct _MIDILOCALE     MIDILOCALE,     *LPMIDILOCALE;
+typedef struct _RGNHEADER      RGNHEADER,      *LPRGNHEADER;
+typedef struct _INSTHEADER     INSTHEADER,     *LPINSTHEADER;
+typedef struct _DLSHEADER      DLSHEADER,      *LPDLSHEADER;
+typedef struct _WAVELINK       WAVELINK,       *LPWAVELINK;
+typedef struct _POOLCUE        POOLCUE,        *LPPOOLCUE;
+typedef struct _POOLTABLE      POOLTABLE,      *LPPOOLTABLE;
+typedef struct _rwsmp          WSMPL,          *LPWSMPL;
+typedef struct _rloop          WLOOP,          *LPWLOOP;
 
-typedef struct _DLSVERSION
-{ DWORD    dwVersionMS;
-  DWORD    dwVersionLS;
-} DLSVERSION, *LPDLSVERSION;
-                   
-typedef struct _CONNECTION
-{
-  USHORT   usSource;
-  USHORT   usControl;
-  USHORT   usDestination;
-  USHORT   usTransform;
-  LONG     lScale;
-} CONNECTION, *LPCONNECTION;
+/* actual structures */
+struct _DLSID {
+	ULONG  ulData1;
+	USHORT usData2;
+	USHORT usData3;
+	BYTE   abData4[8];
+};
 
-typedef struct _CONNECTIONLIST
-{
-  ULONG    cbSize;
-  ULONG    cConnections;
-} CONNECTIONLIST, *LPCONNECTIONLIST;
+struct _DLSVERSION {
+	DWORD dwVersionMS;
+	DWORD dwVersionLS;
+};
 
-typedef struct _RGNRANGE
-{
-  USHORT usLow;
-  USHORT usHigh;
-} RGNRANGE, *LPRGNRANGE;
+struct _CONNECTION {
+	USHORT usSource;
+	USHORT usControl;
+	USHORT usDestination;
+	USHORT usTransform;
+	LONG   lScale;
+};
 
-typedef struct _MIDILOCALE
-{
-  ULONG ulBank;
-  ULONG ulInstrument;
-} MIDILOCALE, *LPMIDILOCALE;
+struct _CONNECTIONLIST {
+	ULONG cbSize;
+	ULONG cConnections;
+};
 
-typedef struct _RGNHEADER
-{
-  RGNRANGE RangeKey;
-  RGNRANGE RangeVelocity;
-  USHORT   fusOptions;
-  USHORT   usKeyGroup;
-} RGNHEADER, *LPRGNHEADER;
+struct _RGNRANGE {
+	USHORT usLow;
+	USHORT usHigh;
+};
 
-typedef struct _INSTHEADER
-{
-  ULONG      cRegions;
-  MIDILOCALE Locale;
-} INSTHEADER, *LPINSTHEADER;
+struct _MIDILOCALE {
+	ULONG ulBank;
+	ULONG ulInstrument;
+};
 
-typedef struct _DLSHEADER
-{
-  ULONG      cInstruments;
-} DLSHEADER, *LPDLSHEADER;
+struct _RGNHEADER {
+	RGNRANGE RangeKey;
+	RGNRANGE RangeVelocity;
+	USHORT   fusOptions;
+	USHORT   usKeyGroup;
+};
 
-typedef struct _WAVELINK
-{
-  USHORT   fusOptions;
-  USHORT   usPhaseGroup;
-  ULONG    ulChannel;
-  ULONG    ulTableIndex;
-} WAVELINK, *LPWAVELINK;
+struct _INSTHEADER {
+	ULONG      cRegions;
+	MIDILOCALE Locale;
+};
 
-typedef struct _POOLCUE
-{ 
-  ULONG    ulOffset;
-} POOLCUE, *LPPOOLCUE;
+struct _DLSHEADER {
+	ULONG cInstruments;
+};
 
-typedef struct _POOLTABLE
-{
-  ULONG    cbSize;
-  ULONG    cCues;
-} POOLTABLE, *LPPOOLTABLE;
+struct _WAVELINK {
+	USHORT fusOptions;
+	USHORT usPhaseGroup;
+	ULONG  ulChannel;
+	ULONG  ulTableIndex;
+};
 
-typedef struct _rwsmp
-{
-  ULONG   cbSize;
-  USHORT  usUnityNote;
-  SHORT   sFineTune;
-  LONG    lAttenuation;
-  ULONG   fulOptions;
-  ULONG   cSampleLoops;
-} WSMPL, *LPWSMPL;
+struct _POOLCUE { 
+	ULONG ulOffset;
+};
 
-typedef struct _rloop
-{
-  ULONG cbSize;
-  ULONG ulType;
-  ULONG ulStart;
-  ULONG ulLength;
-} WLOOP, *LPWLOOP;
+struct _POOLTABLE {
+	ULONG cbSize;
+	ULONG cCues;
+};
+
+struct _rwsmp {
+	ULONG  cbSize;
+	USHORT usUnityNote;
+	SHORT  sFineTune;
+	LONG   lAttenuation;
+	ULONG  fulOptions;
+	ULONG  cSampleLoops;
+};
+
+struct _rloop {
+	ULONG cbSize;
+	ULONG ulType;
+	ULONG ulStart;
+	ULONG ulLength;
+};
 
 #endif /* __WINE_INCLUDE_DLS1_H */