- 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/Makefile.in b/include/Makefile.in
index b44a3f5..ad5201e 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -63,6 +63,7 @@
dispdib.h \
dlgs.h \
dls1.h \
+ dls2.h \
dmdls.h \
dmerror.h \
dmo.h \
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 */
diff --git a/include/dls2.h b/include/dls2.h
new file mode 100644
index 0000000..db3dc8d
--- /dev/null
+++ b/include/dls2.h
@@ -0,0 +1,107 @@
+/* Defines and Structures for Instrument Collection Form RIFF DLS2
+ *
+ * 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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * 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_DLS2_H
+#define __WINE_INCLUDE_DLS2_H
+
+/*****************************************************************************
+ * DLSIDs - property set
+ */
+DEFINE_GUID(DLSID_GMInHardware, 0x178f2f24,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(DLSID_GSInHardware, 0x178f2f25,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(DLSID_ManufacturersID, 0xb03e1181,0x8095,0x11d2,0xa1,0xef,0x00,0x60,0x08,0x33,0xdb,0xd8);
+DEFINE_GUID(DLSID_ProductID, 0xb03e1182,0x8095,0x11d2,0xa1,0xef,0x00,0x60,0x08,0x33,0xdb,0xd8);
+DEFINE_GUID(DLSID_SampleMemorySize, 0x178f2f28,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(DLSID_SupportsDLS1, 0x178f2f27,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(DLSID_SupportsDLS2, 0xf14599e5,0x4689,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
+DEFINE_GUID(DLSID_SamplePlaybackRate, 0x2a91f713,0xa4bf,0x11d2,0xbb,0xdf,0x00,0x60,0x08,0x33,0xdb,0xd8);
+DEFINE_GUID(DLSID_XGInHardware, 0x178f2f26,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
+
+/*****************************************************************************
+ * FOURCCs
+ */
+#define FOURCC_RGN2 mmioFOURCC('r','g','n','2')
+#define FOURCC_LAR2 mmioFOURCC('l','a','r','2')
+#define FOURCC_ART2 mmioFOURCC('a','r','t','2')
+#define FOURCC_CDL mmioFOURCC('c','d','l',' ')
+#define FOURCC_DLID mmioFOURCC('d','l','i','d')
+
+/*****************************************************************************
+ * Flags
+ */
+#define CONN_DST_GAIN 0x001
+#define CONN_DST_KEYNUMBER 0x005
+
+#define CONN_DST_LEFT 0x010
+#define CONN_DST_RIGHT 0x011
+#define CONN_DST_CENTER 0x012
+#define CONN_DST_LEFTREAR 0x013
+#define CONN_DST_RIGHTREAR 0x014
+#define CONN_DST_LFE_CHANNEL 0x015
+#define CONN_DST_CHORUS 0x080
+#define CONN_DST_REVERB 0x081
+
+#define CONN_DST_VIB_FREQUENCY 0x114
+#define CONN_DST_VIB_STARTDELAY 0x115
+
+#define CONN_DST_EG1_DELAYTIME 0x20B
+#define CONN_DST_EG1_HOLDTIME 0x20C
+#define CONN_DST_EG1_SHUTDOWNTIME 0x20D
+
+#define CONN_DST_EG2_DELAYTIME 0x30F
+#define CONN_DST_EG2_HOLDTIME 0x310
+
+#define CONN_DST_FILTER_CUTOFF 0x500
+#define CONN_DST_FILTER_Q 0x501
+
+#define CONN_SRC_POLYPRESSURE 0x007
+#define CONN_SRC_CHANNELPRESSURE 0x008
+#define CONN_SRC_VIBRATO 0x009
+#define CONN_SRC_MONOPRESSURE 0x00A
+
+#define CONN_SRC_CC91 0x0DB
+#define CONN_SRC_CC93 0x0DD
+
+#define CONN_TRN_CONVEX 0x002
+#define CONN_TRN_SWITCH 0x003
+
+#define DLS_CDL_AND 0x01
+#define DLS_CDL_OR 0x02
+#define DLS_CDL_XOR 0x03
+#define DLS_CDL_ADD 0x04
+#define DLS_CDL_SUBTRACT 0x05
+#define DLS_CDL_MULTIPLY 0x06
+#define DLS_CDL_DIVIDE 0x07
+#define DLS_CDL_LOGICAL_AND 0x08
+#define DLS_CDL_LOGICAL_OR 0x09
+#define DLS_CDL_LT 0x0A
+#define DLS_CDL_LE 0x0B
+#define DLS_CDL_GT 0x0C
+#define DLS_CDL_GE 0x0D
+#define DLS_CDL_EQ 0x0E
+#define DLS_CDL_NOT 0x0F
+#define DLS_CDL_CONST 0x10
+#define DLS_CDL_QUERY 0x11
+#define DLS_CDL_QUERYSUPPORTED 0x12
+
+#define F_WAVELINK_MULTICHANNEL 0x2
+
+#define WLOOP_TYPE_RELEASE 0x1
+
+#endif /* __WINE_INCLUDE_DLS2_H */
diff --git a/include/dmdls.h b/include/dmdls.h
index dfe73c5..6826d58 100644
--- a/include/dmdls.h
+++ b/include/dmdls.h
@@ -1,6 +1,6 @@
/* DirectMusic DLS Download Definitions
*
- * 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,182 +16,194 @@
* 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_DMUSIC_DLS_H
#define __WINE_DMUSIC_DLS_H
#include <dls1.h>
-typedef long PCENT, GCENT, TCENT, PERCENT;
+/*****************************************************************************
+ * Typedef definitions
+ */
+typedef long GCENT;
+typedef long PCENT;
+typedef long PERCENT;
+typedef long TCENT;
+
typedef LONGLONG REFERENCE_TIME, *LPREFERENCE_TIME;
-/*
-#ifndef MAKE_FOURCC
-#define MAKEFOURCC(ch0, ch1, ch2, ch3) \
- ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \
- ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
-typedef DWORD FOURCC;
-#endif*/
/*****************************************************************************
- * Definitions
+ * FOURCC definition
*/
-#define DMUS_DOWNLOADINFO_INSTRUMENT 1
-#define DMUS_DOWNLOADINFO_WAVE 2
-#define DMUS_DOWNLOADINFO_INSTRUMENT2 3
-#define DMUS_DOWNLOADINFO_WAVEARTICULATION 4
-#define DMUS_DOWNLOADINFO_STREAMINGWAVE 5
-#define DMUS_DOWNLOADINFO_ONESHOTWAVE 6
+#ifndef mmioFOURCC
+typedef DWORD FOURCC;
+#define mmioFOURCC(ch0,ch1,ch2,ch3) \
+ ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \
+ ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
+#endif
-#define DMUS_DEFAULT_SIZE_OFFSETTABLE 1
-
-#define DMUS_INSTRUMENT_GM_INSTRUMENT (1 << 0)
+/*****************************************************************************
+ * Flags
+ */
+#define DMUS_DEFAULT_SIZE_OFFSETTABLE 0x1
-#define DMUS_MIN_DATA_SIZE 4
+#define DMUS_DOWNLOADINFO_INSTRUMENT 0x1
+#define DMUS_DOWNLOADINFO_WAVE 0x2
+#define DMUS_DOWNLOADINFO_INSTRUMENT2 0x3
+#define DMUS_DOWNLOADINFO_WAVEARTICULATION 0x4
+#define DMUS_DOWNLOADINFO_STREAMINGWAVE 0x5
+#define DMUS_DOWNLOADINFO_ONESHOTWAVE 0x6
+
+#define DMUS_INSTRUMENT_GM_INSTRUMENT 0x1
+
+#define DMUS_MIN_DATA_SIZE 0x4
/*****************************************************************************
* Structures
*/
-typedef struct _DMUS_DOWNLOADINFO
-{
- DWORD dwDLType;
- DWORD dwDLId;
- DWORD dwNumOffsetTableEntries;
- DWORD cbSize;
-} DMUS_DOWNLOADINFO;
+/* typedef definitions */
+typedef struct _DMUS_DOWNLOADINFO DMUS_DOWNLOADINFO, *LPDMUS_DOWNLOADINFO;
+typedef struct _DMUS_OFFSETTABLE DMUS_OFFSETTABLE, *LPDMUS_OFFSETTABLE;
+typedef struct _DMUS_INSTRUMENT DMUS_INSTRUMENT, *LPDMUS_INSTRUMENT;
+typedef struct _DMUS_REGION DMUS_REGION, *LPDMUS_REGION;
+typedef struct _DMUS_LFOPARAMS DMUS_LFOPARAMS, *LPDMUS_LFOPARAMS;
+typedef struct _DMUS_VEGPARAMS DMUS_VEGPARAMS, *LPDMUS_VEGPARAMS;
+typedef struct _DMUS_PEGPARAMS DMUS_PEGPARAMS, *LPDMUS_PEGPARAMS;
+typedef struct _DMUS_MSCPARAMS DMUS_MSCPARAMS, *LPDMUS_MSCPARAMS;
+typedef struct _DMUS_ARTICPARAMS DMUS_ARTICPARAMS, *LPDMUS_ARTICPARAMS;
+typedef struct _DMUS_ARTICULATION DMUS_ARTICULATION, *LPDMUS_ARTICULATION;
+typedef struct _DMUS_ARTICULATION2 DMUS_ARTICULATION2, *LPDMUS_ARTICULATION2;
+typedef struct _DMUS_EXTENSIONCHUNK DMUS_EXTENSIONCHUNK, *LPDMUS_EXTENSIONCHUNK;
+typedef struct _DMUS_COPYRIGHT DMUS_COPYRIGHT, *LPDMUS_COPYRIGHT;
+typedef struct _DMUS_WAVEDATA DMUS_WAVEDATA, *LPDMUS_WAVEDATA;
+typedef struct _DMUS_WAVE DMUS_WAVE, *LPDMUS_WAVE;
+typedef struct _DMUS_NOTERANGE DMUS_NOTERANGE, *LPDMUS_NOTERANGE;
+typedef struct _DMUS_WAVEARTDL DMUS_WAVEARTDL, *LPDMUS_WAVEARTDL;
+typedef struct _DMUS_WAVEDL DMUS_WAVEDL, *LPDMUS_WAVEDL;
-typedef struct _DMUS_OFFSETTABLE
-{
- ULONG ulOffsetTable[DMUS_DEFAULT_SIZE_OFFSETTABLE];
-} DMUS_OFFSETTABLE;
+/* actual structures */
+struct _DMUS_DOWNLOADINFO {
+ DWORD dwDLType;
+ DWORD dwDLId;
+ DWORD dwNumOffsetTableEntries;
+ DWORD cbSize;
+};
-typedef struct _DMUS_INSTRUMENT
-{
- ULONG ulPatch;
- ULONG ulFirstRegionIdx;
- ULONG ulGlobalArtIdx;
- ULONG ulFirstExtCkIdx;
- ULONG ulCopyrightIdx;
- ULONG ulFlags;
-} DMUS_INSTRUMENT;
+struct _DMUS_OFFSETTABLE {
+ ULONG ulOffsetTable[DMUS_DEFAULT_SIZE_OFFSETTABLE];
+};
-typedef struct _DMUS_REGION
-{
- RGNRANGE RangeKey;
- RGNRANGE RangeVelocity;
- USHORT fusOptions;
- USHORT usKeyGroup;
- ULONG ulRegionArtIdx;
- ULONG ulNextRegionIdx;
- ULONG ulFirstExtCkIdx;
- WAVELINK WaveLink;
- WSMPL WSMP;
- WLOOP WLOOP[1];
-} DMUS_REGION;
+struct _DMUS_INSTRUMENT {
+ ULONG ulPatch;
+ ULONG ulFirstRegionIdx;
+ ULONG ulGlobalArtIdx;
+ ULONG ulFirstExtCkIdx;
+ ULONG ulCopyrightIdx;
+ ULONG ulFlags;
+};
-typedef struct _DMUS_LFOPARAMS
-{
- PCENT pcFrequency;
- TCENT tcDelay;
- GCENT gcVolumeScale;
- PCENT pcPitchScale;
- GCENT gcMWToVolume;
- PCENT pcMWToPitch;
-} DMUS_LFOPARAMS;
+struct _DMUS_REGION {
+ RGNRANGE RangeKey;
+ RGNRANGE RangeVelocity;
+ USHORT fusOptions;
+ USHORT usKeyGroup;
+ ULONG ulRegionArtIdx;
+ ULONG ulNextRegionIdx;
+ ULONG ulFirstExtCkIdx;
+ WAVELINK WaveLink;
+ WSMPL WSMP;
+ WLOOP WLOOP[1];
+};
-typedef struct _DMUS_VEGPARAMS
-{
- TCENT tcAttack;
- TCENT tcDecay;
- PERCENT ptSustain;
- TCENT tcRelease;
- TCENT tcVel2Attack;
- TCENT tcKey2Decay;
-} DMUS_VEGPARAMS;
+struct _DMUS_LFOPARAMS {
+ PCENT pcFrequency;
+ TCENT tcDelay;
+ GCENT gcVolumeScale;
+ PCENT pcPitchScale;
+ GCENT gcMWToVolume;
+ PCENT pcMWToPitch;
+};
-typedef struct _DMUS_PEGPARAMS
-{
- TCENT tcAttack;
- TCENT tcDecay;
- PERCENT ptSustain;
- TCENT tcRelease;
- TCENT tcVel2Attack;
- TCENT tcKey2Decay;
- PCENT pcRange;
-} DMUS_PEGPARAMS;
+struct _DMUS_VEGPARAMS {
+ TCENT tcAttack;
+ TCENT tcDecay;
+ PERCENT ptSustain;
+ TCENT tcRelease;
+ TCENT tcVel2Attack;
+ TCENT tcKey2Decay;
+};
-typedef struct _DMUS_MSCPARAMS
-{
- PERCENT ptDefaultPan;
-} DMUS_MSCPARAMS;
+struct _DMUS_PEGPARAMS {
+ TCENT tcAttack;
+ TCENT tcDecay;
+ PERCENT ptSustain;
+ TCENT tcRelease;
+ TCENT tcVel2Attack;
+ TCENT tcKey2Decay;
+ PCENT pcRange;
+};
-typedef struct _DMUS_ARTICPARAMS
-{
- DMUS_LFOPARAMS LFO;
- DMUS_VEGPARAMS VolEG;
- DMUS_PEGPARAMS PitchEG;
- DMUS_MSCPARAMS Misc;
-} DMUS_ARTICPARAMS;
+struct _DMUS_MSCPARAMS {
+ PERCENT ptDefaultPan;
+};
-typedef struct _DMUS_ARTICULATION
-{
- ULONG ulArt1Idx;
- ULONG ulFirstExtCkIdx;
-} DMUS_ARTICULATION;
+struct _DMUS_ARTICPARAMS {
+ DMUS_LFOPARAMS LFO;
+ DMUS_VEGPARAMS VolEG;
+ DMUS_PEGPARAMS PitchEG;
+ DMUS_MSCPARAMS Misc;
+};
-typedef struct _DMUS_ARTICULATION2
-{
- ULONG ulArtIdx;
- ULONG ulFirstExtCkIdx;
- ULONG ulNextArtIdx;
-} DMUS_ARTICULATION2;
+struct _DMUS_ARTICULATION {
+ ULONG ulArt1Idx;
+ ULONG ulFirstExtCkIdx;
+};
-typedef struct _DMUS_EXTENSIONCHUNK
-{
- ULONG cbSize;
- ULONG ulNextExtCkIdx;
- FOURCC ExtCkID;
- BYTE byExtCk[DMUS_MIN_DATA_SIZE];
-} DMUS_EXTENSIONCHUNK;
+struct _DMUS_ARTICULATION2 {
+ ULONG ulArtIdx;
+ ULONG ulFirstExtCkIdx;
+ ULONG ulNextArtIdx;
+};
+struct _DMUS_EXTENSIONCHUNK {
+ ULONG cbSize;
+ ULONG ulNextExtCkIdx;
+ FOURCC ExtCkID;
+ BYTE byExtCk[DMUS_MIN_DATA_SIZE];
+};
-typedef struct _DMUS_COPYRIGHT
-{
- ULONG cbSize;
- BYTE byCopyright[DMUS_MIN_DATA_SIZE];
-} DMUS_COPYRIGHT;
+struct _DMUS_COPYRIGHT {
+ ULONG cbSize;
+ BYTE byCopyright[DMUS_MIN_DATA_SIZE];
+};
-typedef struct _DMUS_WAVEDATA
-{
- ULONG cbSize;
- BYTE byData[DMUS_MIN_DATA_SIZE];
-} DMUS_WAVEDATA;
+struct _DMUS_WAVEDATA {
+ ULONG cbSize;
+ BYTE byData[DMUS_MIN_DATA_SIZE];
+};
-typedef struct _DMUS_WAVE
-{
- ULONG ulFirstExtCkIdx;
- ULONG ulCopyrightIdx;
- ULONG ulWaveDataIdx;
- WAVEFORMATEX WaveformatEx;
-} DMUS_WAVE;
+struct _DMUS_WAVE {
+ ULONG ulFirstExtCkIdx;
+ ULONG ulCopyrightIdx;
+ ULONG ulWaveDataIdx;
+ WAVEFORMATEX WaveformatEx;
+};
-typedef struct _DMUS_NOTERANGE
-{
- DWORD dwLowNote;
- DWORD dwHighNote;
-} DMUS_NOTERANGE, *LPDMUS_NOTERANGE;
+struct _DMUS_NOTERANGE {
+ DWORD dwLowNote;
+ DWORD dwHighNote;
+};
-typedef struct _DMUS_WAVEARTDL
-{
- ULONG ulDownloadIdIdx;
- ULONG ulBus;
- ULONG ulBuffers;
- ULONG ulMasterDLId;
- USHORT usOptions;
-} DMUS_WAVEARTDL, *LPDMUS_WAVEARTDL;
+struct _DMUS_WAVEARTDL {
+ ULONG ulDownloadIdIdx;
+ ULONG ulBus;
+ ULONG ulBuffers;
+ ULONG ulMasterDLId;
+ USHORT usOptions;
+};
-typedef struct _DMUS_WAVEDL
-{
- ULONG cbWaveData;
-} DMUS_WAVEDL, *LPDMUS_WAVEDL;
+struct _DMUS_WAVEDL {
+ ULONG cbWaveData;
+};
#endif /* __WINE_DMUSIC_DLS_H */
diff --git a/include/dmerror.h b/include/dmerror.h
index adae948..7af2653 100644
--- a/include/dmerror.h
+++ b/include/dmerror.h
@@ -1,6 +1,6 @@
/* DirectMusic Error Codes
*
- * 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,8 +23,8 @@
/*****************************************************************************
* Error code handling
*/
-#define FACILITY_DIRECTMUSIC 0x878
-#define DMUS_ERRBASE 0x1000
+#define FACILITY_DIRECTMUSIC 0x878
+#define DMUS_ERRBASE 0x1000
#ifndef MAKE_HRESULT
#define MAKE_HRESULT(sev,fac,code) \
diff --git a/include/dmplugin.h b/include/dmplugin.h
index e447246..94925ec 100644
--- a/include/dmplugin.h
+++ b/include/dmplugin.h
@@ -1,7 +1,7 @@
/*
* DirectMusic Performance Layer Plugins API
*
- * 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,47 +21,106 @@
#ifndef __WINE_DMUSIC_PLUGIN_H
#define __WINE_DMUSIC_PLUGIN_H
+#ifndef __WINESRC__
+#include <windows.h>
+#endif /* __WINESRC__ */
+
#include <objbase.h>
#include <mmsystem.h>
+#include <dmusici.h>
+#include <pshpack8.h>
#ifdef __cplusplus
extern "C" {
#endif
-#define DMUS_REGSTR_PATH_TOOLS "Software\\Microsoft\\DirectMusic\\Tools"
+/*****************************************************************************
+ * Registry path
+ */
+#define DMUS_REGSTR_PATH_TOOLS "Software\\Microsoft\\DirectMusic\\Tools"
+
/*****************************************************************************
* Predeclare the interfaces
*/
-DEFINE_GUID(IID_IDirectMusicTrack, 0xf96029a1,0x4282,0x11d2,0x87,0x17,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(IID_IDirectMusicTool, 0xd2ac28ba,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(IID_IDirectMusicTool8, 0xe674303,0x3b05,0x11d3,0x9b,0xd1,0xf9,0xe7,0xf0,0xa0,0x15,0x36);
-DEFINE_GUID(IID_IDirectMusicTrack8, 0xe674304,0x3b05,0x11d3,0x9b,0xd1,0xf9,0xe7,0xf0,0xa0,0x15,0x36);
+/* CLSIDs */
+DEFINE_GUID(CLSID_DirectMusicBandTrack, 0xd2ac2894,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicChordTrack, 0xd2ac288b,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicChordMapTrack, 0xd2ac2896,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicCommandTrack, 0xd2ac288c,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicLyricsTrack, 0x995c1cf5,0x54ff,0x11d3,0x8b,0xda,0x00,0x60,0x08,0x93,0xb1,0xb6);
+DEFINE_GUID(CLSID_DirectMusicMarkerTrack, 0x55a8fd00,0x4288,0x11d3,0x9b,0xd1,0x8a,0x0d,0x61,0xc8,0x88,0x35);
+DEFINE_GUID(CLSID_DirectMusicMotifTrack, 0xd2ac288e,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicMuteTrack, 0xd2ac2898,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicParamControlTrack, 0x4be0537b,0x5c19,0x11d3,0x8b,0xdc,0x00,0x60,0x08,0x93,0xb1,0xb6);
+DEFINE_GUID(CLSID_DirectMusicScriptTrack, 0x4108fa85,0x3586,0x11d3,0x8b,0xd7,0x00,0x60,0x08,0x93,0xb1,0xb6);
+DEFINE_GUID(CLSID_DirectMusicSegmentTriggerTrack, 0xbae4d665,0x4ea1,0x11d3,0x8b,0xda,0x00,0x60,0x08,0x93,0xb1,0xb6);
+DEFINE_GUID(CLSID_DirectMusicSeqTrack, 0xd2ac2886,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicSignPostTrack, 0xf17e8672,0xc3b4,0x11d1,0x87,0x0b,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicStyleTrack, 0xd2ac288d,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicSysExTrack, 0xd2ac2887,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicTempoTrack, 0xd2ac2885,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicTimeSigTrack, 0xd2ac2888,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicWaveTrack, 0xeed36461,0x9ea5,0x11d3,0x9b,0xd1,0x00,0x80,0xc7,0x15,0x0a,0x74);
+/* MS doesn't support this in DX 9.0 and newer... but there's no harm in keeping it around */
+DEFINE_GUID(CLSID_DirectMusicMelodyFormulationTrack, 0xb0684266,0xb57f,0x11d2,0x97,0xf9,0x00,0xc0,0x4f,0xa3,0x6e,0x58);
-/* typedef definitions of interfaces are in dmusici.h */
+/* IIDs */
+DEFINE_GUID(IID_IDirectMusicTool, 0xd2ac28ba,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicTool8, 0x0e674303,0x3b05,0x11d3,0x9b,0xd1,0xf9,0xe7,0xf0,0xa0,0x15,0x36);
+DEFINE_GUID(IID_IDirectMusicTrack, 0xf96029a1,0x4282,0x11d2,0x87,0x17,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicTrack8, 0x0e674304,0x3b05,0x11d3,0x9b,0xd1,0xf9,0xe7,0xf0,0xa0,0x15,0x36);
-DEFINE_GUID(CLSID_DirectMusicTempoTrack, 0xd2ac2885,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(CLSID_DirectMusicSeqTrack, 0xd2ac2886,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(CLSID_DirectMusicSysExTrack, 0xd2ac2887,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(CLSID_DirectMusicTimeSigTrack, 0xd2ac2888,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(CLSID_DirectMusicChordTrack, 0xd2ac288b,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(CLSID_DirectMusicCommandTrack, 0xd2ac288c,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(CLSID_DirectMusicStyleTrack, 0xd2ac288d,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(CLSID_DirectMusicMotifTrack, 0xd2ac288e,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(CLSID_DirectMusicSignPostTrack, 0xf17e8672,0xc3b4,0x11d1,0x87,0xb,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(CLSID_DirectMusicBandTrack, 0xd2ac2894,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(CLSID_DirectMusicChordMapTrack, 0xd2ac2896,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(CLSID_DirectMusicMuteTrack, 0xd2ac2898,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(CLSID_DirectMusicScriptTrack, 0x4108fa85,0x3586,0x11d3,0x8b,0xd7,0x0,0x60,0x8,0x93,0xb1,0xb6);
-DEFINE_GUID(CLSID_DirectMusicMarkerTrack, 0x55a8fd00,0x4288,0x11d3,0x9b,0xd1,0x8a,0xd,0x61,0xc8,0x88,0x35);
-DEFINE_GUID(CLSID_DirectMusicSegmentTriggerTrack, 0xbae4d665,0x4ea1,0x11d3,0x8b,0xda,0x0,0x60,0x8,0x93,0xb1,0xb6);
-DEFINE_GUID(CLSID_DirectMusicLyricsTrack, 0x995c1cf5,0x54ff,0x11d3,0x8b,0xda,0x0,0x60,0x8,0x93,0xb1,0xb6);
-DEFINE_GUID(CLSID_DirectMusicParamControlTrack, 0x4be0537b,0x5c19,0x11d3,0x8b,0xdc,0x0,0x60,0x8,0x93,0xb1,0xb6);
-DEFINE_GUID(CLSID_DirectMusicMelodyFormulationTrack, 0xb0684266,0xb57f,0x11d2,0x97,0xf9,0x0,0xc0,0x4f,0xa3,0x6e,0x58);
-DEFINE_GUID(CLSID_DirectMusicWaveTrack, 0xeed36461,0x9ea5,0x11d3,0x9b,0xd1,0x0,0x80,0xc7,0x15,0xa,0x74);
+/* typedef definitions */
+typedef struct IDirectMusicTrack IDirectMusicTrack, *LPDIRECTMUSICTRACK;
+typedef struct IDirectMusicTrack IDirectMusicTrack8, *LPDIRECTMUSICTRACK8;
+typedef struct IDirectMusicTool IDirectMusicTool, *LPDIRECTMUSICTOOL;
+typedef struct IDirectMusicTool8 IDirectMusicTool8, *LPDIRECTMUSICTOOL8;
+/* these are from dmusici.h and are needed here */
+typedef struct IDirectMusicPerformance IDirectMusicPerformance, *LPDIRECTMUSICPERFORMANCE;
+typedef struct IDirectMusicPerformance8 IDirectMusicPerformance8, *LPDIRECTMUSICPERFORMANCE8;
+typedef struct IDirectMusicSegment IDirectMusicSegment, *LPDIRECTMUSICSEGMENT;
+typedef struct IDirectMusicSegment IDirectMusicSegment8, *LPDIRECTMUSICSEGMENT8;
+typedef struct IDirectMusicSegmentState IDirectMusicSegmentState, *LPDIRECTMUSICSEGMENTSTATE;
+typedef struct IDirectMusicSegmentState8 IDirectMusicSegmentState8, *LPDIRECTMUSICSEGMENTSTATE8;
+typedef struct IDirectMusicGraph IDirectMusicGraph, *LPDIRECTMUSICGRAPH;
+typedef struct IDirectMusicGraph IDirectMusicGraph8, *LPDIRECTMUSICGRAPH8;
/*****************************************************************************
+ * Typedef definitions
+ */
+typedef struct _DMUS_PMSG DMUS_PMSG;
+typedef long MUSIC_TIME;
+
+
+/*****************************************************************************
+ * Flags
+ */
+#define DMUS_TRACK_PARAMF_CLOCK 0x1
+
+/*****************************************************************************
+ * Enumerations
+ */
+/* typedef definitions */
+typedef enum enumDMUS_TRACKF_FLAGS DMUS_TRACKF_FLAGS;
+
+/* actual enumerations */
+enum enumDMUS_TRACKF_FLAGS {
+ DMUS_TRACKF_SEEK = 0x001,
+ DMUS_TRACKF_LOOP = 0x002,
+ DMUS_TRACKF_START = 0x004,
+ DMUS_TRACKF_FLUSH = 0x008,
+ DMUS_TRACKF_DIRTY = 0x010,
+ DMUS_TRACKF_NOTIFY_OFF = 0x020,
+ DMUS_TRACKF_PLAY_OFF = 0x040,
+ DMUS_TRACKF_LOOPEND = 0x080,
+ DMUS_TRACKF_STOP = 0x100,
+ DMUS_TRACKF_RECOMPOSE = 0x200,
+ DMUS_TRACKF_CLOCK = 0x400,
+};
+
+/*****************************************************************************
* IDirectMusicTool interface
*/
#undef INTERFACE
@@ -79,16 +138,16 @@
#ifdef COBJMACROS
/*** IUnknown methods ***/
-#define IDirectMusicTool_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectMusicTool_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectMusicTool_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectMusicTool_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicTool_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectMusicTool_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectMusicTool methods ***/
-#define IDirectMusicTool_Init(p,a) (p)->lpVtbl->Init(p,a)
-#define IDirectMusicTool_GetMsgDeliveryType(p,a) (p)->lpVtbl->GetMsgDeliveryType(p,a)
-#define IDirectMusicTool_GetMediaTypeArraySize(p,a) (p)->lpVtbl->GetMediaTypeArraySize(p,a)
-#define IDirectMusicTool_GetMediaTypes(p,a,b) (p)->lpVtbl->GetMediaTypes(p,a,b)
-#define IDirectMusicTool_ProcessPMsg(p,a,b) (p)->lpVtbl->ProcessPMsg(p,a,b)
-#define IDirectMusicTool_Flush(p,a,b,c) (p)->lpVtbl->Flush(p,a,b,c)
+#define IDirectMusicTool_Init(p,a) (p)->lpVtbl->Init(p,a)
+#define IDirectMusicTool_GetMsgDeliveryType(p,a) (p)->lpVtbl->GetMsgDeliveryType(p,a)
+#define IDirectMusicTool_GetMediaTypeArraySize(p,a) (p)->lpVtbl->GetMediaTypeArraySize(p,a)
+#define IDirectMusicTool_GetMediaTypes(p,a,b) (p)->lpVtbl->GetMediaTypes(p,a,b)
+#define IDirectMusicTool_ProcessPMsg(p,a,b) (p)->lpVtbl->ProcessPMsg(p,a,b)
+#define IDirectMusicTool_Flush(p,a,b,c) (p)->lpVtbl->Flush(p,a,b,c)
#endif
@@ -105,40 +164,21 @@
#ifdef COBJMACROS
/*** IUnknown methods ***/
-#define IDirectMusicTool8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectMusicTool8_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectMusicTool8_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectMusicTool8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicTool8_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectMusicTool8_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectMusicTool methods ***/
-#define IDirectMusicTool8_Init(p,a) (p)->lpVtbl->Init(p,a)
-#define IDirectMusicTool8_GetMsgDeliveryType(p,a) (p)->lpVtbl->GetMsgDeliveryType(p,a)
-#define IDirectMusicTool8_GetMediaTypeArraySize(p,a) (p)->lpVtbl->GetMediaTypeArraySize(p,a)
-#define IDirectMusicTool8_GetMediaTypes(p,a,b) (p)->lpVtbl->GetMediaTypes(p,a,b)
-#define IDirectMusicTool8_ProcessPMsg(p,a,b) (p)->lpVtbl->ProcessPMsg(p,a,b)
-#define IDirectMusicTool8_Flush(p,a,b) (p)->lpVtbl->Flush(p,a,b)
+#define IDirectMusicTool8_Init(p,a) (p)->lpVtbl->Init(p,a)
+#define IDirectMusicTool8_GetMsgDeliveryType(p,a) (p)->lpVtbl->GetMsgDeliveryType(p,a)
+#define IDirectMusicTool8_GetMediaTypeArraySize(p,a) (p)->lpVtbl->GetMediaTypeArraySize(p,a)
+#define IDirectMusicTool8_GetMediaTypes(p,a,b) (p)->lpVtbl->GetMediaTypes(p,a,b)
+#define IDirectMusicTool8_ProcessPMsg(p,a,b) (p)->lpVtbl->ProcessPMsg(p,a,b)
+#define IDirectMusicTool8_Flush(p,a,b) (p)->lpVtbl->Flush(p,a,b)
/*** IDirectMusicTool8 methods ***/
-#define IDirectMusicTool8_Clone(p,a) (p)->lpVtbl->Clone(p,a)
+#define IDirectMusicTool8_Clone(p,a) (p)->lpVtbl->Clone(p,a)
#endif
-typedef enum enumDMUS_TRACKF_FLAGS
-{
- DMUS_TRACKF_SEEK = 1,
- DMUS_TRACKF_LOOP = 2,
- DMUS_TRACKF_START = 4,
- DMUS_TRACKF_FLUSH = 8,
- DMUS_TRACKF_DIRTY = 0x10,
- DMUS_TRACKF_NOTIFY_OFF = 0x20,
- DMUS_TRACKF_PLAY_OFF = 0x40,
- DMUS_TRACKF_LOOPEND = 0x80,
- DMUS_TRACKF_STOP = 0x100,
- DMUS_TRACKF_RECOMPOSE = 0x200,
- DMUS_TRACKF_CLOCK = 0x400,
-} DMUS_TRACKF_FLAGS;
-
-#define DMUS_TRACK_PARAMF_CLOCK 0x01
-
-
-
/*****************************************************************************
* IDirectMusicTrack interface
*/
@@ -161,20 +201,20 @@
#ifdef COBJMACROS
/*** IUnknown methods ***/
-#define IDirectMusicTrack_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectMusicTrack_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectMusicTrack_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectMusicTrack_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicTrack_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectMusicTrack_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectMusicTrack methods ***/
-#define IDirectMusicTrack_Init(p,a) (p)->lpVtbl->Init(p,a)
-#define IDirectMusicTrack_InitPlay(p,a,b,c,d,e) (p)->lpVtbl->InitPlay(p,a,b,c,d,e)
-#define IDirectMusicTrack_EndPlay(p,a) (p)->lpVtbl->EndPlay(p,a)
-#define IDirectMusicTrack_Play(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Play(p,a,b,c,d,e,f,g,h)
-#define IDirectMusicTrack_GetParam(p,a,b,c,d) (p)->lpVtbl->GetParam(p,a,b,c,d)
-#define IDirectMusicTrack_SetParam(p,a,b,c) (p)->lpVtbl->SetParam(p,a,b,c)
-#define IDirectMusicTrack_IsParamSupported(p,a) (p)->lpVtbl->IsParamSupported(p,a)
-#define IDirectMusicTrack_AddNotificationType(p,a) (p)->lpVtbl->AddNotificationType(p,a)
-#define IDirectMusicTrack_RemoveNotificationType(p,a) (p)->lpVtbl->RemoveNotificationType(p,a)
-#define IDirectMusicTrack_Clone(p,a,b,c) (p)->lpVtbl->Clone(p,a,b,c)
+#define IDirectMusicTrack_Init(p,a) (p)->lpVtbl->Init(p,a)
+#define IDirectMusicTrack_InitPlay(p,a,b,c,d,e) (p)->lpVtbl->InitPlay(p,a,b,c,d,e)
+#define IDirectMusicTrack_EndPlay(p,a) (p)->lpVtbl->EndPlay(p,a)
+#define IDirectMusicTrack_Play(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Play(p,a,b,c,d,e,f,g,h)
+#define IDirectMusicTrack_GetParam(p,a,b,c,d) (p)->lpVtbl->GetParam(p,a,b,c,d)
+#define IDirectMusicTrack_SetParam(p,a,b,c) (p)->lpVtbl->SetParam(p,a,b,c)
+#define IDirectMusicTrack_IsParamSupported(p,a) (p)->lpVtbl->IsParamSupported(p,a)
+#define IDirectMusicTrack_AddNotificationType(p,a) (p)->lpVtbl->AddNotificationType(p,a)
+#define IDirectMusicTrack_RemoveNotificationType(p,a) (p)->lpVtbl->RemoveNotificationType(p,a)
+#define IDirectMusicTrack_Clone(p,a,b,c) (p)->lpVtbl->Clone(p,a,b,c)
#endif
@@ -195,31 +235,32 @@
#ifdef COBJMACROS
/*** IUnknown methods ***/
-#define IDirectMusicTrack8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectMusicTrack8_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectMusicTrack8_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectMusicTrack8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicTrack8_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectMusicTrack8_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectMusicTrack methods ***/
-#define IDirectMusicTrack8_Init(p,a) (p)->lpVtbl->Init(p,a)
-#define IDirectMusicTrack8_InitPlay(p,a,b,c,d,e) (p)->lpVtbl->InitPlay(p,a,b,c,d,e)
-#define IDirectMusicTrack8_EndPlay(p,a) (p)->lpVtbl->EndPlay(p,a)
-#define IDirectMusicTrack8_Play(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Play(p,a,b,c,d,e,f,g,h)
-#define IDirectMusicTrack8_GetParam(p,a,b,c,d) (p)->lpVtbl->GetParam(p,a,b,c,d)
-#define IDirectMusicTrack8_SetParam(p,a,b,c) (p)->lpVtbl->SetParam(p,a,b,c)
-#define IDirectMusicTrack8_IsParamSupported(p,a) (p)->lpVtbl->IsParamSupported(p,a)
-#define IDirectMusicTrack8_AddNotificationType(p,a) (p)->lpVtbl->AddNotificationType(p,a)
-#define IDirectMusicTrack8_RemoveNotificationType(p,a) (p)->lpVtbl->RemoveNotificationType(p,a)
-#define IDirectMusicTrack8_Clone(p,a,b,c) (p)->lpVtbl->Clone(p,a,b,c)
+#define IDirectMusicTrack8_Init(p,a) (p)->lpVtbl->Init(p,a)
+#define IDirectMusicTrack8_InitPlay(p,a,b,c,d,e) (p)->lpVtbl->InitPlay(p,a,b,c,d,e)
+#define IDirectMusicTrack8_EndPlay(p,a) (p)->lpVtbl->EndPlay(p,a)
+#define IDirectMusicTrack8_Play(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Play(p,a,b,c,d,e,f,g,h)
+#define IDirectMusicTrack8_GetParam(p,a,b,c,d) (p)->lpVtbl->GetParam(p,a,b,c,d)
+#define IDirectMusicTrack8_SetParam(p,a,b,c) (p)->lpVtbl->SetParam(p,a,b,c)
+#define IDirectMusicTrack8_IsParamSupported(p,a) (p)->lpVtbl->IsParamSupported(p,a)
+#define IDirectMusicTrack8_AddNotificationType(p,a) (p)->lpVtbl->AddNotificationType(p,a)
+#define IDirectMusicTrack8_RemoveNotificationType(p,a) (p)->lpVtbl->RemoveNotificationType(p,a)
+#define IDirectMusicTrack8_Clone(p,a,b,c) (p)->lpVtbl->Clone(p,a,b,c)
/*** IDirectMusicTrack8 methods ***/
-#define IDirectMusicTrack8_PlayEx(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->PlayEx(p,a,b,c,d,e,f,g,h)
-#define IDirectMusicTrack8_GetParamEx(p,a,b,c,d,e,f) (p)->lpVtbl->GetParamEx(p,a,b,c,d,e,f)
-#define IDirectMusicTrack8_SetParamEx(p,a,b,c,d,e) (p)->lpVtbl->SetParamEx(p,a,b,c,d,e)
-#define IDirectMusicTrack8_Compose(p,a,b,c) (p)->lpVtbl->Compose(p,a,b,c)
-#define IDirectMusicTrack8_Join(p,a,b,c,d,e) (p)->lpVtbl->Join(p,a,b,c,d,e)
+#define IDirectMusicTrack8_PlayEx(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->PlayEx(p,a,b,c,d,e,f,g,h)
+#define IDirectMusicTrack8_GetParamEx(p,a,b,c,d,e,f) (p)->lpVtbl->GetParamEx(p,a,b,c,d,e,f)
+#define IDirectMusicTrack8_SetParamEx(p,a,b,c,d,e) (p)->lpVtbl->SetParamEx(p,a,b,c,d,e)
+#define IDirectMusicTrack8_Compose(p,a,b,c) (p)->lpVtbl->Compose(p,a,b,c)
+#define IDirectMusicTrack8_Join(p,a,b,c,d,e) (p)->lpVtbl->Join(p,a,b,c,d,e)
#endif
-
#ifdef __cplusplus
}
#endif
+#include <poppack.h>
+
#endif /* __WINE_DMUSIC_PLUGIN_H */
diff --git a/include/dmusbuff.h b/include/dmusbuff.h
index 6008fdc..c4fa408 100644
--- a/include/dmusbuff.h
+++ b/include/dmusbuff.h
@@ -1,6 +1,6 @@
/* DirectMusic Buffer Format
*
- * 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
@@ -20,26 +20,31 @@
#ifndef __WINE_DMUSIC_BUFFER_H
#define __WINE_DMUSIC_BUFFER_H
-#include <pshpack4.h>
-
/*****************************************************************************
- * Definitions
+ * Misc. definitions
*/
-#define DMUS_EVENT_STRUCTURED 0x00000001
#define QWORD_ALIGN(x) (((x) + 7) & ~7)
#define DMUS_EVENT_SIZE(cb) QWORD_ALIGN(sizeof(DMUS_EVENTHEADER) + cb)
/*****************************************************************************
+ * Flags
+ */
+#define DMUS_EVENT_STRUCTURED 0x1
+
+/*****************************************************************************
* Structures
*/
-typedef struct _DMUS_EVENTHEADER
-{
+/* typedef definitions */
+typedef struct _DMUS_EVENTHEADER DMUS_EVENTHEADER, *LPDMUS_EVENTHEADER;
+
+/* actual structure*/
+#include <pshpack4.h>
+struct _DMUS_EVENTHEADER {
DWORD cbEvent;
DWORD dwChannelGroup;
REFERENCE_TIME rtDelta;
DWORD dwFlags;
-} DMUS_EVENTHEADER, *LPDMUS_EVENTHEADER;
-
+};
#include <poppack.h>
#endif /* __WINE_DMUSIC_BUFFER_H */
diff --git a/include/dmusicc.h b/include/dmusicc.h
index bc5b5a6..24f786d 100644
--- a/include/dmusicc.h
+++ b/include/dmusicc.h
@@ -1,6 +1,6 @@
/* DirectMusic Core API Stuff
*
- * 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
@@ -20,269 +20,351 @@
#ifndef __WINE_DMUSIC_CORE_H
#define __WINE_DMUSIC_CORE_H
-#include <objbase.h>
+#ifndef __WINESRC__
+#include <windows.h>
+#endif /* __WINESRC__ */
+#include <objbase.h>
#include <mmsystem.h>
-#include <dsound.h>
#include <dls1.h>
#include <dmerror.h>
#include <dmdls.h>
+#include <dsound.h>
#include <dmusbuff.h>
-/*#include <pshpack8.h> */
+#include <pshpack8.h>
#ifdef __cplusplus
extern "C" {
-#endif /* __cplusplus */
+#endif
+
/*****************************************************************************
* Predeclare the interfaces
*/
-DEFINE_GUID(CLSID_DirectMusic, 0x636b9f10, 0x0c7d, 0x11d1, 0x95, 0xb2, 0x00, 0x20, 0xaf, 0xdc, 0x74, 0x21);
-DEFINE_GUID(CLSID_DirectMusicCollection, 0x480ff4b0, 0x28b2, 0x11d1, 0xbe, 0xf7, 0x0, 0xc0, 0x4f, 0xbf, 0x8f, 0xef);
-DEFINE_GUID(CLSID_DirectMusicSynth, 0x58C2B4D0, 0x46E7, 0x11D1, 0x89, 0xAC, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29);
+/* CLSIDs */
+DEFINE_GUID(CLSID_DirectMusic, 0x636b9f10,0x0c7d,0x11d1,0x95,0xb2,0x00,0x20,0xaf,0xdc,0x74,0x21);
+DEFINE_GUID(CLSID_DirectMusicCollection, 0x480ff4b0,0x28b2,0x11d1,0xbe,0xf7,0x00,0xc0,0x4f,0xbf,0x8f,0xef);
+DEFINE_GUID(CLSID_DirectMusicSynth, 0x58c2b4d0,0x46e7,0x11d1,0x89,0xac,0x00,0xa0,0xc9,0x05,0x41,0x29);
+
+/* IIDs */
+DEFINE_GUID(IID_IDirectMusic, 0x6536115a,0x7b2d,0x11d2,0xba,0x18,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(IID_IDirectMusic2, 0x6fc2cae1,0xbc78,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
+DEFINE_GUID(IID_IDirectMusic8, 0x2d3629f7,0x813d,0x4939,0x85,0x08,0xf0,0x5c,0x6b,0x75,0xfd,0x97);
+DEFINE_GUID(IID_IDirectMusicBuffer, 0xd2ac2878,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicCollection, 0xd2ac287c,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicDownload, 0xd2ac287b,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicDownloadedInstrument, 0xd2ac287e,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicInstrument, 0xd2ac287d,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicPort, 0x08f2d8c9,0x37c2,0x11d2,0xb9,0xf9,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(IID_IDirectMusicPortDownload, 0xd2ac287a,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicThru, 0xced153e7,0x3606,0x11d2,0xb9,0xf9,0x00,0x00,0xf8,0x75,0xac,0x12);
-#ifndef __IReferenceClock_FWD_DEFINED__
-#define __IReferenceClock_FWD_DEFINED__
-typedef struct IReferenceClock IReferenceClock;
-#endif
-
-DEFINE_GUID(IID_IDirectMusic, 0x6536115a,0x7b2d,0x11d2,0xba,0x18,0x00,0x00,0xf8,0x75,0xac,0x12);
-typedef struct IDirectMusic IDirectMusic, *LPDIRECTMUSIC;
-DEFINE_GUID(IID_IDirectMusicBuffer, 0xd2ac2878,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-typedef struct IDirectMusicBuffer IDirectMusicBuffer, *LPDIRECTMUSICBUFFER, IDirectMusicBuffer8, *LPDIRECTMUSICBUFFER8;
-DEFINE_GUID(IID_IDirectMusicPort, 0x08f2d8c9,0x37c2,0x11d2,0xb9,0xf9,0x00,0x00,0xf8,0x75,0xac,0x12);
-#define IID_IDirectMusicPort8 IID_IDirectMusicPort
-typedef struct IDirectMusicPort IDirectMusicPort, *LPDIRECTMUSICPORT, IDirectMusicPort8, *LPDIRECTMUSICPORT8;
-DEFINE_GUID(IID_IDirectMusicThru, 0xced153e7,0x3606,0x11d2,0xb9,0xf9,0x00,0x00,0xf8,0x75,0xac,0x12);
-#define IID_IDirectMusicThru8 IID_IDirectMusicThru
-typedef struct IDirectMusicThru IDirectMusicThru, *LPDIRECTMUSICTHRU, IDirectMusicThru8, *LPDIRECTMUSICTHRU8;
-DEFINE_GUID(IID_IDirectMusicPortDownload, 0xd2ac287a,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-typedef struct IDirectMusicPortDownload IDirectMusicPortDownload, *LPDIRECTMUSICPORTDOWNLOAD, IDirectMusicPortDownload8, *LPDIRECTMUSICPORTDOWNLOAD8;
-#define IID_IDirectMusicPortDownload8 IID_IDirectMusicPortDownload
-DEFINE_GUID(IID_IDirectMusicDownload, 0xd2ac287b,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-#define IID_IDirectMusicDownload8 IID_IDirectMusicDownload
-typedef struct IDirectMusicDownload IDirectMusicDownload, *LPDIRECTMUSICDOWNLOAD, IDirectMusicDownload8, *LPDIRECTMUSICDOWNLOAD8;
-DEFINE_GUID(IID_IDirectMusicCollection, 0xd2ac287c,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
#define IID_IDirectMusicCollection8 IID_IDirectMusicCollection
-typedef struct IDirectMusicCollection IDirectMusicCollection, *LPDIRECTMUSICCOLLECTION, IDirectMusicCollection8, *LPDIRECTMUSICCOLLECTION8;
-DEFINE_GUID(IID_IDirectMusicInstrument, 0xd2ac287d,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-#define IID_IDirectMusicInstrument8 IID_IDirectMusicInstrument
-typedef struct IDirectMusicInstrument IDirectMusicInstrument, *LPDIRECTMUSICINSTRUMENT, IDirectMusicInstrument8, *LPDIRECTMUSICINSTRUMENT8;
-DEFINE_GUID(IID_IDirectMusicDownloadedInstrument, 0xd2ac287e,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
+#define IID_IDirectMusicDownload8 IID_IDirectMusicDownload
#define IID_IDirectMusicDownloadedInstrument8 IID_IDirectMusicDownloadedInstrument
-typedef struct IDirectMusicDownloadedInstrument IDirectMusicDownloadedInstrument, *LPDIRECTMUSICDOWNLOADEDINSTRUMENT, IDirectMusicDownloadedInstrument8, *LPDIRECTMUSICDOWNLOADEDINSTRUMENT8;
-DEFINE_GUID(IID_IDirectMusic2, 0x6fc2cae1,0xbc78,0x11d2,0xaf,0xa6,0x0,0xaa,0x0,0x24,0xd8,0xb6);
-DEFINE_GUID(IID_IDirectMusic8, 0x2d3629f7,0x813d,0x4939,0x85,0x08,0xf0,0x5c,0x6b,0x75,0xfd,0x97);
-typedef struct IDirectMusic8 IDirectMusic8, *LPDIRECTMUSIC8;
+#define IID_IDirectMusicInstrument8 IID_IDirectMusicInstrument
+#define IID_IDirectMusicPort8 IID_IDirectMusicPort
+#define IID_IDirectMusicPortDownload8 IID_IDirectMusicPortDownload
+#define IID_IDirectMusicThru8 IID_IDirectMusicThru
-DEFINE_GUID(GUID_DMUS_PROP_GM_Hardware, 0x178f2f24,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
-DEFINE_GUID(GUID_DMUS_PROP_GS_Hardware, 0x178f2f25,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
-DEFINE_GUID(GUID_DMUS_PROP_XG_Hardware, 0x178f2f26,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
-DEFINE_GUID(GUID_DMUS_PROP_XG_Capable, 0x6496aba1,0x61b0,0x11d2,0xaf,0xa6,0x0,0xaa,0x0,0x24,0xd8,0xb6);
-DEFINE_GUID(GUID_DMUS_PROP_GS_Capable, 0x6496aba2,0x61b0,0x11d2,0xaf,0xa6,0x0,0xaa,0x0,0x24,0xd8,0xb6);
-DEFINE_GUID(GUID_DMUS_PROP_DLS1, 0x178f2f27,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
-DEFINE_GUID(GUID_DMUS_PROP_DLS2, 0xf14599e5,0x4689,0x11d2,0xaf,0xa6,0x0,0xaa,0x0,0x24,0xd8,0xb6);
-DEFINE_GUID(GUID_DMUS_PROP_INSTRUMENT2, 0x865fd372,0x9f67,0x11d2,0x87,0x2a,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(GUID_DMUS_PROP_SynthSink_DSOUND, 0xaa97844,0xc877,0x11d1,0x87,0xc,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(GUID_DMUS_PROP_SynthSink_WAVE, 0xaa97845,0xc877,0x11d1,0x87,0xc,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(GUID_DMUS_PROP_SampleMemorySize, 0x178f2f28,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac, 0x12);
-DEFINE_GUID(GUID_DMUS_PROP_SamplePlaybackRate, 0x2a91f713,0xa4bf,0x11d2,0xbb,0xdf,0x0,0x60,0x8,0x33,0xdb,0xd8);
-DEFINE_GUID(GUID_DMUS_PROP_WriteLatency, 0x268a0fa0,0x60f2,0x11d2,0xaf,0xa6,0x0,0xaa,0x0,0x24,0xd8,0xb6);
-DEFINE_GUID(GUID_DMUS_PROP_WritePeriod, 0x268a0fa1,0x60f2,0x11d2,0xaf,0xa6,0x0,0xaa,0x0,0x24,0xd8,0xb6);
-DEFINE_GUID(GUID_DMUS_PROP_MemorySize, 0x178f2f28,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8, 0x75, 0xac, 0x12);
-DEFINE_GUID(GUID_DMUS_PROP_WavesReverb, 0x4cb5622,0x32e5,0x11d2,0xaf,0xa6,0x0,0xaa,0x0,0x24,0xd8,0xb6);
-DEFINE_GUID(GUID_DMUS_PROP_Effects, 0xcda8d611,0x684a,0x11d2,0x87,0x1e,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(GUID_DMUS_PROP_LegacyCaps, 0xcfa7cdc2,0x00a1,0x11d2,0xaa,0xd5,0x00,0x00,0xf8,0x75,0xac,0x12);
-DEFINE_GUID(GUID_DMUS_PROP_Volume, 0xfedfae25L,0xe46e,0x11d1,0xaa,0xce,0x00,0x00,0xf8,0x75,0xac,0x12);
+/* GUIDs - property set */
+DEFINE_GUID(GUID_DMUS_PROP_GM_Hardware, 0x178f2f24,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(GUID_DMUS_PROP_GS_Capable, 0x6496aba2,0x61b0,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
+DEFINE_GUID(GUID_DMUS_PROP_GS_Hardware, 0x178f2f25,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(GUID_DMUS_PROP_DLS1, 0x178f2f27,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(GUID_DMUS_PROP_DLS2, 0xf14599e5,0x4689,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
+DEFINE_GUID(GUID_DMUS_PROP_Effects, 0xcda8d611,0x684a,0x11d2,0x87,0x1e,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_DMUS_PROP_INSTRUMENT2, 0x865fd372,0x9f67,0x11d2,0x87,0x2a,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_DMUS_PROP_LegacyCaps, 0xcfa7cdc2,0x00a1,0x11d2,0xaa,0xd5,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(GUID_DMUS_PROP_MemorySize, 0x178f2f28,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(GUID_DMUS_PROP_SampleMemorySize, 0x178f2f28,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(GUID_DMUS_PROP_SamplePlaybackRate, 0x2a91f713,0xa4bf,0x11d2,0xbb,0xdf,0x00,0x60,0x08,0x33,0xdb,0xd8);
+DEFINE_GUID(GUID_DMUS_PROP_SynthSink_DSOUND, 0x0aa97844,0xc877,0x11d1,0x87,0x0c,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_DMUS_PROP_SynthSink_WAVE, 0x0aa97845,0xc877,0x11d1,0x87,0x0c,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_DMUS_PROP_Volume, 0xfedfae25,0xe46e,0x11d1,0xaa,0xce,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(GUID_DMUS_PROP_WavesReverb, 0x04cb5622,0x32e5,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
+DEFINE_GUID(GUID_DMUS_PROP_WriteLatency, 0x268a0fa0,0x60f2,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
+DEFINE_GUID(GUID_DMUS_PROP_WritePeriod, 0x268a0fa1,0x60f2,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
+DEFINE_GUID(GUID_DMUS_PROP_XG_Capable, 0x6496aba1,0x61b0,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
+DEFINE_GUID(GUID_DMUS_PROP_XG_Hardware, 0x178f2f26,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
+/* typedef definitions */
+typedef struct IDirectMusic IDirectMusic, *LPDIRECTMUSIC;
+typedef struct IDirectMusic IDirectMusic8, *LPDIRECTMUSIC8;
+typedef struct IDirectMusicBuffer IDirectMusicBuffer, *LPDIRECTMUSICBUFFER;
+typedef struct IDirectMusicBuffer IDirectMusicBuffer8, *LPDIRECTMUSICBUFFER8;
+typedef struct IDirectMusicInstrument IDirectMusicInstrument, *LPDIRECTMUSICINSTRUMENT;
+typedef struct IDirectMusicInstrument IDirectMusicInstrument8, *LPDIRECTMUSICINSTRUMENT8;
+typedef struct IDirectMusicDownloadedInstrument IDirectMusicDownloadedInstrument, *LPDIRECTMUSICDOWNLOADEDINSTRUMENT;
+typedef struct IDirectMusicDownloadedInstrument IDirectMusicDownloadedInstrument8, *LPDIRECTMUSICDOWNLOADEDINSTRUMENT8;
+typedef struct IDirectMusicCollection IDirectMusicCollection, *LPDIRECTMUSICCOLLECTION;
+typedef struct IDirectMusicCollection IDirectMusicCollection8, *LPDIRECTMUSICCOLLECTION8;
+typedef struct IDirectMusicDownload IDirectMusicDownload, *LPDIRECTMUSICDOWNLOAD;
+typedef struct IDirectMusicDownload IDirectMusicDownload8, *LPDIRECTMUSICDOWNLOAD8;
+typedef struct IDirectMusicPortDownload IDirectMusicPortDownload, *LPDIRECTMUSICPORTDOWNLOAD;
+typedef struct IDirectMusicPortDownload IDirectMusicPortDownload8, *LPDIRECTMUSICPORTDOWNLOAD8;
+typedef struct IDirectMusicPort IDirectMusicPort, *LPDIRECTMUSICPORT;
+typedef struct IDirectMusicPort IDirectMusicPort8, *LPDIRECTMUSICPORT8;
+typedef struct IDirectMusicThru IDirectMusicThru, *LPDIRECTMUSICTHRU;
+typedef struct IDirectMusicThru IDirectMusicThru8, *LPDIRECTMUSICTHRU8;
+typedef struct IReferenceClock IReferenceClock, *LPREFERENCECLOCK;
+
+
+/*****************************************************************************
+ * Typedef definitions
+ */
typedef ULONGLONG SAMPLE_TIME, *LPSAMPLE_TIME;
-typedef ULONGLONG SAMPLE_POSITION;
+typedef ULONGLONG SAMPLE_POSITION, *LPSAMPLE_POSITION;
-#define DMUS_MAX_DESCRIPTION 128
-#define DMUS_MAX_DRIVER 128
-typedef struct _DMUS_BUFFERDESC
-{
- DWORD dwSize;
- DWORD dwFlags;
- GUID guidBufferFormat;
- DWORD cbBuffer;
-} DMUS_BUFFERDESC, *LPDMUS_BUFFERDESC;
+/*****************************************************************************
+ * Flags
+ */
+#ifndef _DIRECTAUDIO_PRIORITIES_DEFINED_
+ #define _DIRECTAUDIO_PRIORITIES_DEFINED_
-#define DMUS_EFFECT_NONE 0x00000000
-#define DMUS_EFFECT_REVERB 0x00000001
-#define DMUS_EFFECT_CHORUS 0x00000002
-#define DMUS_EFFECT_DELAY 0x00000004
-
-#define DMUS_PC_INPUTCLASS (0)
-#define DMUS_PC_OUTPUTCLASS (1)
+ #define DAUD_CRITICAL_VOICE_PRIORITY 0xF0000000
+ #define DAUD_HIGH_VOICE_PRIORITY 0xC0000000
+ #define DAUD_STANDARD_VOICE_PRIORITY 0x80000000
+ #define DAUD_LOW_VOICE_PRIORITY 0x40000000
+ #define DAUD_PERSIST_VOICE_PRIORITY 0x10000000
+
+ #define DAUD_CHAN1_VOICE_PRIORITY_OFFSET 0x0000000E
+ #define DAUD_CHAN2_VOICE_PRIORITY_OFFSET 0x0000000D
+ #define DAUD_CHAN3_VOICE_PRIORITY_OFFSET 0x0000000C
+ #define DAUD_CHAN4_VOICE_PRIORITY_OFFSET 0x0000000B
+ #define DAUD_CHAN5_VOICE_PRIORITY_OFFSET 0x0000000A
+ #define DAUD_CHAN6_VOICE_PRIORITY_OFFSET 0x00000009
+ #define DAUD_CHAN7_VOICE_PRIORITY_OFFSET 0x00000008
+ #define DAUD_CHAN8_VOICE_PRIORITY_OFFSET 0x00000007
+ #define DAUD_CHAN9_VOICE_PRIORITY_OFFSET 0x00000006
+ #define DAUD_CHAN10_VOICE_PRIORITY_OFFSET 0x0000000F
+ #define DAUD_CHAN11_VOICE_PRIORITY_OFFSET 0x00000005
+ #define DAUD_CHAN12_VOICE_PRIORITY_OFFSET 0x00000004
+ #define DAUD_CHAN13_VOICE_PRIORITY_OFFSET 0x00000003
+ #define DAUD_CHAN14_VOICE_PRIORITY_OFFSET 0x00000002
+ #define DAUD_CHAN15_VOICE_PRIORITY_OFFSET 0x00000001
+ #define DAUD_CHAN16_VOICE_PRIORITY_OFFSET 0x00000000
+
+ #define DAUD_CHAN1_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN1_VOICE_PRIORITY_OFFSET)
+ #define DAUD_CHAN2_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN2_VOICE_PRIORITY_OFFSET)
+ #define DAUD_CHAN3_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN3_VOICE_PRIORITY_OFFSET)
+ #define DAUD_CHAN4_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN4_VOICE_PRIORITY_OFFSET)
+ #define DAUD_CHAN5_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN5_VOICE_PRIORITY_OFFSET)
+ #define DAUD_CHAN6_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN6_VOICE_PRIORITY_OFFSET)
+ #define DAUD_CHAN7_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN7_VOICE_PRIORITY_OFFSET)
+ #define DAUD_CHAN8_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN8_VOICE_PRIORITY_OFFSET)
+ #define DAUD_CHAN9_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN9_VOICE_PRIORITY_OFFSET)
+ #define DAUD_CHAN10_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN10_VOICE_PRIORITY_OFFSET)
+ #define DAUD_CHAN11_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN11_VOICE_PRIORITY_OFFSET)
+ #define DAUD_CHAN12_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN12_VOICE_PRIORITY_OFFSET)
+ #define DAUD_CHAN13_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN13_VOICE_PRIORITY_OFFSET)
+ #define DAUD_CHAN14_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN14_VOICE_PRIORITY_OFFSET)
+ #define DAUD_CHAN15_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN15_VOICE_PRIORITY_OFFSET)
+ #define DAUD_CHAN16_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN16_VOICE_PRIORITY_OFFSET)
+#endif /* _DIRECTAUDIO_PRIORITIES_DEFINED_ */
-#define DMUS_PC_DLS (0x00000001)
-#define DMUS_PC_EXTERNAL (0x00000002)
-#define DMUS_PC_SOFTWARESYNTH (0x00000004)
-#define DMUS_PC_MEMORYSIZEFIXED (0x00000008)
-#define DMUS_PC_GMINHARDWARE (0x00000010)
-#define DMUS_PC_GSINHARDWARE (0x00000020)
-#define DMUS_PC_XGINHARDWARE (0x00000040)
-#define DMUS_PC_DIRECTSOUND (0x00000080)
-#define DMUS_PC_SHAREABLE (0x00000100)
-#define DMUS_PC_DLS2 (0x00000200)
-#define DMUS_PC_AUDIOPATH (0x00000400)
-#define DMUS_PC_WAVE (0x00000800)
+#define DMUS_CLOCKF_GLOBAL 0x1
-#define DMUS_PC_SYSTEMMEMORY (0x7FFFFFFF)
+#define DMUS_EFFECT_NONE 0x0
+#define DMUS_EFFECT_REVERB 0x1
+#define DMUS_EFFECT_CHORUS 0x2
+#define DMUS_EFFECT_DELAY 0x4
+
+#define DMUS_MAX_DESCRIPTION 0x80
+#define DMUS_MAX_DRIVER 0x80
-typedef struct _DMUS_PORTCAPS
-{
- DWORD dwSize;
- DWORD dwFlags;
- GUID guidPort;
- DWORD dwClass;
- DWORD dwType;
- DWORD dwMemorySize;
- DWORD dwMaxChannelGroups;
- DWORD dwMaxVoices;
- DWORD dwMaxAudioChannels;
- DWORD dwEffectFlags;
- WCHAR wszDescription[DMUS_MAX_DESCRIPTION];
-} DMUS_PORTCAPS, *LPDMUS_PORTCAPS;
+#define DMUS_PC_INPUTCLASS 0x0
+#define DMUS_PC_OUTPUTCLASS 0x1
-#define DMUS_PORT_WINMM_DRIVER (0)
-#define DMUS_PORT_USER_MODE_SYNTH (1)
-#define DMUS_PORT_KERNEL_MODE (2)
+#define DMUS_PC_DLS 0x00000001
+#define DMUS_PC_EXTERNAL 0x00000002
+#define DMUS_PC_SOFTWARESYNTH 0x00000004
+#define DMUS_PC_MEMORYSIZEFIXED 0x00000008
+#define DMUS_PC_GMINHARDWARE 0x00000010
+#define DMUS_PC_GSINHARDWARE 0x00000020
+#define DMUS_PC_XGINHARDWARE 0x00000040
+#define DMUS_PC_DIRECTSOUND 0x00000080
+#define DMUS_PC_SHAREABLE 0x00000100
+#define DMUS_PC_DLS2 0x00000200
+#define DMUS_PC_AUDIOPATH 0x00000400
+#define DMUS_PC_WAVE 0x00000800
+#define DMUS_PC_SYSTEMMEMORY 0x7FFFFFFF
-#define DMUS_PORTPARAMS_VOICES 0x00000001
-#define DMUS_PORTPARAMS_CHANNELGROUPS 0x00000002
-#define DMUS_PORTPARAMS_AUDIOCHANNELS 0x00000004
-#define DMUS_PORTPARAMS_SAMPLERATE 0x00000008
-#define DMUS_PORTPARAMS_EFFECTS 0x00000020
-#define DMUS_PORTPARAMS_SHARE 0x00000040
-#define DMUS_PORTPARAMS_FEATURES 0x00000080
+#define DMUS_PORT_WINMM_DRIVER 0x0
+#define DMUS_PORT_USER_MODE_SYNTH 0x1
+#define DMUS_PORT_KERNEL_MODE 0x2
-typedef struct _DMUS_PORTPARAMS
-{
- DWORD dwSize;
- DWORD dwValidParams;
- DWORD dwVoices;
- DWORD dwChannelGroups;
- DWORD dwAudioChannels;
- DWORD dwSampleRate;
- DWORD dwEffectFlags;
- BOOL fShare;
-} DMUS_PORTPARAMS7;
+#define DMUS_PORT_FEATURE_AUDIOPATH 0x1
+#define DMUS_PORT_FEATURE_STREAMING 0x2
-typedef struct _DMUS_PORTPARAMS8
-{
- DWORD dwSize;
- DWORD dwValidParams;
- DWORD dwVoices;
- DWORD dwChannelGroups;
- DWORD dwAudioChannels;
- DWORD dwSampleRate;
- DWORD dwEffectFlags;
- BOOL fShare;
- DWORD dwFeatures;
-} DMUS_PORTPARAMS8, DMUS_PORTPARAMS, *LPDMUS_PORTPARAMS;
+#define DMUS_PORTPARAMS_VOICES 0x01
+#define DMUS_PORTPARAMS_CHANNELGROUPS 0x02
+#define DMUS_PORTPARAMS_AUDIOCHANNELS 0x04
+#define DMUS_PORTPARAMS_SAMPLERATE 0x08
+#define DMUS_PORTPARAMS_EFFECTS 0x20
+#define DMUS_PORTPARAMS_SHARE 0x40
+#define DMUS_PORTPARAMS_FEATURES 0x80
-#define DMUS_PORT_FEATURE_AUDIOPATH 0x00000001
-#define DMUS_PORT_FEATURE_STREAMING 0x00000002
+#define DMUS_VOLUME_MAX 2000
+#define DMUS_VOLUME_MIN -20000
-typedef struct _DMUS_SYNTHSTATS
-{
- DWORD dwSize;
- DWORD dwValidStats;
- DWORD dwVoices;
- DWORD dwTotalCPU;
- DWORD dwCPUPerVoice;
- DWORD dwLostNotes;
- DWORD dwFreeMemory;
- long lPeakVolume;
-} DMUS_SYNTHSTATS, *LPDMUS_SYNTHSTATS;
+#define DMUS_SYNTHSTATS_VOICES 0x01
+#define DMUS_SYNTHSTATS_TOTAL_CPU 0x02
+#define DMUS_SYNTHSTATS_CPU_PER_VOICE 0x04
+#define DMUS_SYNTHSTATS_LOST_NOTES 0x08
+#define DMUS_SYNTHSTATS_PEAK_VOLUME 0x10
+#define DMUS_SYNTHSTATS_FREE_MEMORY 0x20
+#define DMUS_SYNTHSTATS_SYSTEMMEMORY DMUS_PC_SYSTEMMEMORY
-typedef struct _DMUS_SYNTHSTATS8
-{
- DWORD dwSize;
- DWORD dwValidStats;
- DWORD dwVoices;
- DWORD dwTotalCPU;
- DWORD dwCPUPerVoice;
- DWORD dwLostNotes;
- DWORD dwFreeMemory;
- long lPeakVolume;
- DWORD dwSynthMemUse;
-} DMUS_SYNTHSTATS8, *LPDMUS_SYNTHSTATS8;
+#define DSBUSID_FIRST_SPKR_LOC 0x00000000
+#define DSBUSID_FRONT_LEFT 0x00000000
+#define DSBUSID_LEFT 0x00000000
+#define DSBUSID_FRONT_RIGHT 0x00000001
+#define DSBUSID_RIGHT 0x00000001
+#define DSBUSID_FRONT_CENTER 0x00000002
+#define DSBUSID_LOW_FREQUENCY 0x00000003
+#define DSBUSID_BACK_LEFT 0x00000004
+#define DSBUSID_BACK_RIGHT 0x00000005
+#define DSBUSID_FRONT_LEFT_OF_CENTER 0x00000006
+#define DSBUSID_FRONT_RIGHT_OF_CENTER 0x00000007
+#define DSBUSID_BACK_CENTER 0x00000008
+#define DSBUSID_SIDE_LEFT 0x00000009
+#define DSBUSID_SIDE_RIGHT 0x0000000A
+#define DSBUSID_TOP_CENTER 0x0000000B
+#define DSBUSID_TOP_FRONT_LEFT 0x0000000C
+#define DSBUSID_TOP_FRONT_CENTER 0x0000000D
+#define DSBUSID_TOP_FRONT_RIGHT 0x0000000E
+#define DSBUSID_TOP_BACK_LEFT 0x0000000F
+#define DSBUSID_TOP_BACK_CENTER 0x00000010
+#define DSBUSID_TOP_BACK_RIGHT 0x011
+#define DSBUSID_LAST_SPKR_LOC 0x00000011
+#define DSBUSID_IS_SPKR_LOC(id) (((id) >= DSBUSID_FIRST_SPKR_LOC) && ((id) <= DSBUSID_LAST_SPKR_LOC))
-#define DMUS_SYNTHSTATS_VOICES 1
-#define DMUS_SYNTHSTATS_TOTAL_CPU 2
-#define DMUS_SYNTHSTATS_CPU_PER_VOICE 4
-#define DMUS_SYNTHSTATS_LOST_NOTES 8
-#define DMUS_SYNTHSTATS_PEAK_VOLUME 16
-#define DMUS_SYNTHSTATS_FREE_MEMORY 32
+#define DSBUSID_REVERB_SEND 0x00000040
+#define DSBUSID_CHORUS_SEND 0x00000041
-#define DMUS_SYNTHSTATS_SYSTEMMEMORY DMUS_PC_SYSTEMMEMORY
+#define DSBUSID_DYNAMIC_0 0x00000200
-typedef struct _DMUS_WAVES_REVERB_PARAMS
-{
- float fInGain;
- float fReverbMix;
- float fReverbTime;
- float fHighFreqRTRatio;
-} DMUS_WAVES_REVERB_PARAMS;
+#define DSBUSID_NULL 0xFFFFFFFF
-typedef enum
-{
- DMUS_CLOCK_SYSTEM = 0,
- DMUS_CLOCK_WAVE = 1
+/*****************************************************************************
+ * Enumerations
+ */
+typedef enum {
+ DMUS_CLOCK_SYSTEM = 0x0,
+ DMUS_CLOCK_WAVE = 0x1
} DMUS_CLOCKTYPE;
-#define DMUS_CLOCKF_GLOBAL 0x00000001
-typedef struct _DMUS_CLOCKINFO7
-{
- DWORD dwSize;
- DMUS_CLOCKTYPE ctType;
- GUID guidClock;
- WCHAR wszDescription[DMUS_MAX_DESCRIPTION];
-} DMUS_CLOCKINFO7, *LPDMUS_CLOCKINFO7;
+/*****************************************************************************
+ * Structures
+ */
+/* typedef definitions */
+typedef struct _DMUS_BUFFERDESC DMUS_BUFFERDESC, *LPDMUS_BUFFERDESC;
+typedef struct _DMUS_PORTCAPS DMUS_PORTCAPS, *LPDMUS_PORTCAPS;
+typedef struct _DMUS_PORTPARAMS DMUS_PORTPARAMS7, *LPDMUS_PORTPARAMS7;
+typedef struct _DMUS_PORTPARAMS8 DMUS_PORTPARAMS8, *LPDMUS_PORTPARAMS8;
+typedef DMUS_PORTPARAMS8 DMUS_PORTPARAMS, *LPDMUS_PORTPARAMS;
+typedef struct _DMUS_SYNTHSTATS DMUS_SYNTHSTATS, *LPDMUS_SYNTHSTATS;
+typedef struct _DMUS_SYNTHSTATS8 DMUS_SYNTHSTATS8, *LPDMUS_SYNTHSTATS8;
+typedef struct _DMUS_WAVES_REVERB_PARAMS DMUS_WAVES_REVERB_PARAMS, *LPDMUS_WAVES_REVERB_PARAMS;
+typedef struct _DMUS_CLOCKINFO7 DMUS_CLOCKINFO7, *LPDMUS_CLOCKINFO7;
+typedef struct _DMUS_CLOCKINFO8 DMUS_CLOCKINFO8, *LPDMUS_CLOCKINFO8;
+typedef DMUS_CLOCKINFO8 DMUS_CLOCKINFO, *LPDMUS_CLOCKINFO;
-typedef struct _DMUS_CLOCKINFO8
-{
- DWORD dwSize;
- DMUS_CLOCKTYPE ctType;
- GUID guidClock;
- WCHAR wszDescription[DMUS_MAX_DESCRIPTION];
- DWORD dwFlags;
-} DMUS_CLOCKINFO8, *LPDMUS_CLOCKINFO8, DMUS_CLOCKINFO, *LPDMUS_CLOCKINFO;
-#define DSBUSID_FIRST_SPKR_LOC 0
-#define DSBUSID_FRONT_LEFT 0
-#define DSBUSID_LEFT 0
-#define DSBUSID_FRONT_RIGHT 1
-#define DSBUSID_RIGHT 1
-#define DSBUSID_FRONT_CENTER 2
-#define DSBUSID_LOW_FREQUENCY 3
-#define DSBUSID_BACK_LEFT 4
-#define DSBUSID_BACK_RIGHT 5
-#define DSBUSID_FRONT_LEFT_OF_CENTER 6
-#define DSBUSID_FRONT_RIGHT_OF_CENTER 7
-#define DSBUSID_BACK_CENTER 8
-#define DSBUSID_SIDE_LEFT 9
-#define DSBUSID_SIDE_RIGHT 10
-#define DSBUSID_TOP_CENTER 11
-#define DSBUSID_TOP_FRONT_LEFT 12
-#define DSBUSID_TOP_FRONT_CENTER 13
-#define DSBUSID_TOP_FRONT_RIGHT 14
-#define DSBUSID_TOP_BACK_LEFT 15
-#define DSBUSID_TOP_BACK_CENTER 16
-#define DSBUSID_TOP_BACK_RIGHT 17
-#define DSBUSID_LAST_SPKR_LOC 17
-#define DSBUSID_IS_SPKR_LOC(id) ( ((id) >= DSBUSID_FIRST_SPKR_LOC) && ((id) <= DSBUSID_LAST_SPKR_LOC) )
-#define DSBUSID_REVERB_SEND 64
-#define DSBUSID_CHORUS_SEND 65
-#define DSBUSID_DYNAMIC_0 512
-#define DSBUSID_NULL 0xFFFFFFFF
+/* actual structures */
+struct _DMUS_BUFFERDESC {
+ DWORD dwSize;
+ DWORD dwFlags;
+ GUID guidBufferFormat;
+ DWORD cbBuffer;
+} ;
+
+struct _DMUS_PORTCAPS {
+ DWORD dwSize;
+ DWORD dwFlags;
+ GUID guidPort;
+ DWORD dwClass;
+ DWORD dwType;
+ DWORD dwMemorySize;
+ DWORD dwMaxChannelGroups;
+ DWORD dwMaxVoices;
+ DWORD dwMaxAudioChannels;
+ DWORD dwEffectFlags;
+ WCHAR wszDescription[DMUS_MAX_DESCRIPTION];
+};
+
+struct _DMUS_PORTPARAMS {
+ DWORD dwSize;
+ DWORD dwValidParams;
+ DWORD dwVoices;
+ DWORD dwChannelGroups;
+ DWORD dwAudioChannels;
+ DWORD dwSampleRate;
+ DWORD dwEffectFlags;
+ BOOL fShare;
+};
+
+struct _DMUS_PORTPARAMS8 {
+ DWORD dwSize;
+ DWORD dwValidParams;
+ DWORD dwVoices;
+ DWORD dwChannelGroups;
+ DWORD dwAudioChannels;
+ DWORD dwSampleRate;
+ DWORD dwEffectFlags;
+ BOOL fShare;
+ DWORD dwFeatures;
+};
+
+struct _DMUS_SYNTHSTATS {
+ DWORD dwSize;
+ DWORD dwValidStats;
+ DWORD dwVoices;
+ DWORD dwTotalCPU;
+ DWORD dwCPUPerVoice;
+ DWORD dwLostNotes;
+ DWORD dwFreeMemory;
+ long lPeakVolume;
+};
+
+struct _DMUS_SYNTHSTATS8 {
+ DWORD dwSize;
+ DWORD dwValidStats;
+ DWORD dwVoices;
+ DWORD dwTotalCPU;
+ DWORD dwCPUPerVoice;
+ DWORD dwLostNotes;
+ DWORD dwFreeMemory;
+ long lPeakVolume;
+ DWORD dwSynthMemUse;
+};
+
+struct _DMUS_WAVES_REVERB_PARAMS {
+ float fInGain;
+ float fReverbMix;
+ float fReverbTime;
+ float fHighFreqRTRatio;
+};
+
+struct _DMUS_CLOCKINFO7 {
+ DWORD dwSize;
+ DMUS_CLOCKTYPE ctType;
+ GUID guidClock;
+ WCHAR wszDescription[DMUS_MAX_DESCRIPTION];
+};
+
+struct _DMUS_CLOCKINFO8 {
+ DWORD dwSize;
+ DMUS_CLOCKTYPE ctType;
+ GUID guidClock;
+ WCHAR wszDescription[DMUS_MAX_DESCRIPTION];
+ DWORD dwFlags;
+};
/*****************************************************************************
@@ -306,19 +388,19 @@
#ifdef COBJMACROS
/*** IUnknown methods ***/
-#define IDirectMusic_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectMusic_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectMusic_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectMusic_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusic_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectMusic_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectMusic methods ***/
-#define IDirectMusic_EnumPort(p,a,b) (p)->lpVtbl->EnumPort(p,a,b)
-#define IDirectMusic_CreateMusicBuffer(p,a,b,c) (p)->lpVtbl->CreateMusicBuffer(p,a,b,c)
-#define IDirectMusic_CreatePort(p,a,b,c,d) (p)->lpVtbl->CreatePort(p,a,b,c,d)
-#define IDirectMusic_EnumMasterClock(p,a,b) (p)->lpVtbl->EnumMasterClock(p,a,b)
-#define IDirectMusic_GetMasterClock(p,a,b) (p)->lpVtbl->GetMasterClock(p,a,b)
-#define IDirectMusic_SetMasterClock(p,a) (p)->lpVtbl->SetMasterClock(p,a)
-#define IDirectMusic_Activate(p,a) (p)->lpVtbl->Activate(p,a)
-#define IDirectMusic_GetDefaultPort(p,a) (p)->lpVtbl->GetDefaultPort(p,a)
-#define IDirectMusic_SetDirectSound(p,a,b) (p)->lpVtbl->SetDirectSound(p,a,b)
+#define IDirectMusic_EnumPort(p,a,b) (p)->lpVtbl->EnumPort(p,a,b)
+#define IDirectMusic_CreateMusicBuffer(p,a,b,c) (p)->lpVtbl->CreateMusicBuffer(p,a,b,c)
+#define IDirectMusic_CreatePort(p,a,b,c,d) (p)->lpVtbl->CreatePort(p,a,b,c,d)
+#define IDirectMusic_EnumMasterClock(p,a,b) (p)->lpVtbl->EnumMasterClock(p,a,b)
+#define IDirectMusic_GetMasterClock(p,a,b) (p)->lpVtbl->GetMasterClock(p,a,b)
+#define IDirectMusic_SetMasterClock(p,a) (p)->lpVtbl->SetMasterClock(p,a)
+#define IDirectMusic_Activate(p,a) (p)->lpVtbl->Activate(p,a)
+#define IDirectMusic_GetDefaultPort(p,a) (p)->lpVtbl->GetDefaultPort(p,a)
+#define IDirectMusic_SetDirectSound(p,a,b) (p)->lpVtbl->SetDirectSound(p,a,b)
#endif
@@ -335,21 +417,21 @@
#ifdef COBJMACROS
/*** IUnknown methods ***/
-#define IDirectMusic8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectMusic8_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectMusic8_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectMusic8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusic8_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectMusic8_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectMusic methods ***/
-#define IDirectMusic8_EnumPort(p,a,b) (p)->lpVtbl->EnumPort(p,a,b)
-#define IDirectMusic8_CreateMusicBuffer(p,a,b,c) (p)->lpVtbl->CreateMusicBuffer(p,a,b,c)
-#define IDirectMusic8_CreatePort(p,a,b,c,d) (p)->lpVtbl->CreatePort(p,a,b,c,d)
-#define IDirectMusic8_EnumMasterClock(p,a,b) (p)->lpVtbl->EnumMasterClock(p,a,b)
-#define IDirectMusic8_GetMasterClock(p,a,b) (p)->lpVtbl->GetMasterClock(p,a,b)
-#define IDirectMusic8_SetMasterClock(p,a) (p)->lpVtbl->SetMasterClock(p,a)
-#define IDirectMusic8_Activate(p,a) (p)->lpVtbl->Activate(p,a)
-#define IDirectMusic8_GetDefaultPort(p,a) (p)->lpVtbl->GetDefaultPort(p,a)
-#define IDirectMusic8_SetDirectSound(p,a,b) (p)->lpVtbl->SetDirectSound(p,a,b)
+#define IDirectMusic8_EnumPort(p,a,b) (p)->lpVtbl->EnumPort(p,a,b)
+#define IDirectMusic8_CreateMusicBuffer(p,a,b,c) (p)->lpVtbl->CreateMusicBuffer(p,a,b,c)
+#define IDirectMusic8_CreatePort(p,a,b,c,d) (p)->lpVtbl->CreatePort(p,a,b,c,d)
+#define IDirectMusic8_EnumMasterClock(p,a,b) (p)->lpVtbl->EnumMasterClock(p,a,b)
+#define IDirectMusic8_GetMasterClock(p,a,b) (p)->lpVtbl->GetMasterClock(p,a,b)
+#define IDirectMusic8_SetMasterClock(p,a) (p)->lpVtbl->SetMasterClock(p,a)
+#define IDirectMusic8_Activate(p,a) (p)->lpVtbl->Activate(p,a)
+#define IDirectMusic8_GetDefaultPort(p,a) (p)->lpVtbl->GetDefaultPort(p,a)
+#define IDirectMusic8_SetDirectSound(p,a,b) (p)->lpVtbl->SetDirectSound(p,a,b)
/*** IDirectMusic8 methods ***/
-#define IDirectMusic8_SetExternalMasterClock(p,a) (p)->lpVtbl->SetExternalMasterClock(p,a)
+#define IDirectMusic8_SetExternalMasterClock(p,a) (p)->lpVtbl->SetExternalMasterClock(p,a)
#endif
@@ -397,6 +479,7 @@
#define IDirectMusicBuffer_SetUsedBytes(p,a) (p)->lpVtbl->SetUsedBytes(p,a)
#endif
+
/*****************************************************************************
* IDirectMusicInstrument interface
*/
@@ -411,12 +494,12 @@
#ifdef COBJMACROS
/*** IUnknown methods ***/
-#define IDirectMusicInstrument_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectMusicInstrument_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectMusicInstrument_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectMusicInstrument_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicInstrument_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectMusicInstrument_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectMusicInstrument methods ***/
-#define IDirectMusicInstrument_GetPatch(p,a) (p)->lpVtbl->GetPatch(p,a)
-#define IDirectMusicInstrument_SetPatch(p,a) (p)->lpVtbl->SetPatch(p,a)
+#define IDirectMusicInstrument_GetPatch(p,a) (p)->lpVtbl->GetPatch(p,a)
+#define IDirectMusicInstrument_SetPatch(p,a) (p)->lpVtbl->SetPatch(p,a)
#endif
@@ -433,9 +516,9 @@
#ifdef COBJMACROS
/*** IUnknown methods ***/
-#define IDirectMusicDownloadedInstrument_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectMusicDownloadedInstrument_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectMusicDownloadedInstrument_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectMusicDownloadedInstrument_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicDownloadedInstrument_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectMusicDownloadedInstrument_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectMusicDownloadedInstrument methods ***/
/* none at this time */
#endif
@@ -460,7 +543,7 @@
#define IDirectMusicCollection_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectMusicCollection methods ***/
#define IDirectMusicCollection_GetInstrument(p,a,b) (p)->lpVtbl->GetInstrument(p,a,b)
-#define IDirectMusicCollection_EnumInstrument(p,a,b,c) (p)->lpVtbl->EnumInstrument(p,a,b,c)
+#define IDirectMusicCollection_EnumInstrument(p,a,b,c,d) (p)->lpVtbl->EnumInstrument(p,a,b,c,d)
#endif
@@ -503,65 +586,19 @@
#ifdef COBJMACROS
/*** IUnknown methods ***/
-#define IDirectMusicPortDownload_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectMusicPortDownload_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectMusicPortDownload_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectMusicPortDownload_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicPortDownload_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectMusicPortDownload_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectMusicPortDownload methods ***/
-#define IDirectMusicPortDownload_GetBuffer(p,a,b) (p)->lpVtbl->GetBuffer(p,a,b)
-#define IDirectMusicPortDownload_AllocateBuffer(p,a,b) (p)->lpVtbl->AllocateBuffer(p,a,b)
-#define IDirectMusicPortDownload_GetDLId(p,a,b) (p)->lpVtbl->GetDLId(p,a,b)
-#define IDirectMusicPortDownload_GetAppend(p,a) (p)->lpVtbl->GetAppend(p,a)
-#define IDirectMusicPortDownload_Download(p,a) (p)->lpVtbl->Download(p,a)
-#define IDirectMusicPortDownload_Unload(p,a) (p)->lpVtbl->GetBuffer(p,a)
+#define IDirectMusicPortDownload_GetBuffer(p,a,b) (p)->lpVtbl->GetBuffer(p,a,b)
+#define IDirectMusicPortDownload_AllocateBuffer(p,a,b) (p)->lpVtbl->AllocateBuffer(p,a,b)
+#define IDirectMusicPortDownload_GetDLId(p,a,b) (p)->lpVtbl->GetDLId(p,a,b)
+#define IDirectMusicPortDownload_GetAppend(p,a) (p)->lpVtbl->GetAppend(p,a)
+#define IDirectMusicPortDownload_Download(p,a) (p)->lpVtbl->Download(p,a)
+#define IDirectMusicPortDownload_Unload(p,a) (p)->lpVtbl->GetBuffer(p,a)
#endif
-#ifndef __WINE_DIRECTAUDIO_PRIORITIES_DEFINED
-#define __WINE_DIRECTAUDIO_PRIORITIES_DEFINED
-
-#define DAUD_CRITICAL_VOICE_PRIORITY (0xF0000000)
-#define DAUD_HIGH_VOICE_PRIORITY (0xC0000000)
-#define DAUD_STANDARD_VOICE_PRIORITY (0x80000000)
-#define DAUD_LOW_VOICE_PRIORITY (0x40000000)
-#define DAUD_PERSIST_VOICE_PRIORITY (0x10000000)
-
-#define DAUD_CHAN1_VOICE_PRIORITY_OFFSET (0x0000000E)
-#define DAUD_CHAN2_VOICE_PRIORITY_OFFSET (0x0000000D)
-#define DAUD_CHAN3_VOICE_PRIORITY_OFFSET (0x0000000C)
-#define DAUD_CHAN4_VOICE_PRIORITY_OFFSET (0x0000000B)
-#define DAUD_CHAN5_VOICE_PRIORITY_OFFSET (0x0000000A)
-#define DAUD_CHAN6_VOICE_PRIORITY_OFFSET (0x00000009)
-#define DAUD_CHAN7_VOICE_PRIORITY_OFFSET (0x00000008)
-#define DAUD_CHAN8_VOICE_PRIORITY_OFFSET (0x00000007)
-#define DAUD_CHAN9_VOICE_PRIORITY_OFFSET (0x00000006)
-#define DAUD_CHAN10_VOICE_PRIORITY_OFFSET (0x0000000F)
-#define DAUD_CHAN11_VOICE_PRIORITY_OFFSET (0x00000005)
-#define DAUD_CHAN12_VOICE_PRIORITY_OFFSET (0x00000004)
-#define DAUD_CHAN13_VOICE_PRIORITY_OFFSET (0x00000003)
-#define DAUD_CHAN14_VOICE_PRIORITY_OFFSET (0x00000002)
-#define DAUD_CHAN15_VOICE_PRIORITY_OFFSET (0x00000001)
-#define DAUD_CHAN16_VOICE_PRIORITY_OFFSET (0x00000000)
-
-#define DAUD_CHAN1_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN1_VOICE_PRIORITY_OFFSET)
-#define DAUD_CHAN2_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN2_VOICE_PRIORITY_OFFSET)
-#define DAUD_CHAN3_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN3_VOICE_PRIORITY_OFFSET)
-#define DAUD_CHAN4_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN4_VOICE_PRIORITY_OFFSET)
-#define DAUD_CHAN5_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN5_VOICE_PRIORITY_OFFSET)
-#define DAUD_CHAN6_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN6_VOICE_PRIORITY_OFFSET)
-#define DAUD_CHAN7_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN7_VOICE_PRIORITY_OFFSET)
-#define DAUD_CHAN8_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN8_VOICE_PRIORITY_OFFSET)
-#define DAUD_CHAN9_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN9_VOICE_PRIORITY_OFFSET)
-#define DAUD_CHAN10_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN10_VOICE_PRIORITY_OFFSET)
-#define DAUD_CHAN11_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN11_VOICE_PRIORITY_OFFSET)
-#define DAUD_CHAN12_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN12_VOICE_PRIORITY_OFFSET)
-#define DAUD_CHAN13_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN13_VOICE_PRIORITY_OFFSET)
-#define DAUD_CHAN14_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN14_VOICE_PRIORITY_OFFSET)
-#define DAUD_CHAN15_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN15_VOICE_PRIORITY_OFFSET)
-#define DAUD_CHAN16_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN16_VOICE_PRIORITY_OFFSET)
-
-#endif /* __WINE_DIRECTAUDIO_PRIORITIES_DEFINED */
-
-
/*****************************************************************************
* IDirectMusicPort interface
*/
@@ -576,6 +613,7 @@
STDMETHOD(UnloadInstrument)(THIS_ IDirectMusicDownloadedInstrument *pDownloadedInstrument) PURE; \
STDMETHOD(GetLatencyClock)(THIS_ IReferenceClock **ppClock) PURE; \
STDMETHOD(GetRunningStats)(THIS_ LPDMUS_SYNTHSTATS pStats) PURE; \
+ STDMETHOD(Compact)(THIS) PURE; \
STDMETHOD(GetCaps)(THIS_ LPDMUS_PORTCAPS pPortCaps) PURE; \
STDMETHOD(DeviceIoControl)(THIS_ DWORD dwIoControlCode, LPVOID lpInBuffer, DWORD nInBufferSize, LPVOID lpOutBuffer, DWORD nOutBufferSize, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped) PURE; \
STDMETHOD(SetNumChannelGroups)(THIS_ DWORD dwChannelGroups) PURE; \
@@ -590,26 +628,27 @@
#ifdef COBJMACROS
/*** IUnknown methods ***/
-#define IDirectMusicPort_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectMusicPort_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectMusicPort_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectMusicPort_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicPort_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectMusicPort_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectMusicPort methods ***/
-#define IDirectMusicPort_PlayBuffer(p,a) (p)->lpVtbl->PlayBuffer(p,a)
-#define IDirectMusicPort_SetReadNotificationHandle(p,a) (p)->lpVtbl->SetReadNotificationHandle(p,a)
-#define IDirectMusicPort_Read(p,a) (p)->lpVtbl->Read(p,a)
-#define IDirectMusicPort_DownloadInstrument(p,a,b,c,d) (p)->lpVtbl->DownloadInstrument(p,a,b,c,d)
-#define IDirectMusicPort_UnloadInstrument(p,a) (p)->lpVtbl->UnloadInstrument(p,a)
-#define IDirectMusicPort_GetLatencyClock(p,a) (p)->lpVtbl->GetLatencyClock(p,a)
-#define IDirectMusicPort_GetRunningStats(p,a) (p)->lpVtbl->GetRunningStats(p,a)
-#define IDirectMusicPort_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
-#define IDirectMusicPort_DeviceIoControl(p,a,b,c,d,e,f,g) (p)->lpVtbl->DeviceIoControl(p,a,b,c,d,e,f,g)
-#define IDirectMusicPort_SetNumChannelGroups(p,a) (p)->lpVtbl->SetNumChannelGroups(p,a)
-#define IDirectMusicPort_GetNumChannelGroups(p,a) (p)->lpVtbl->GetNumChannelGroups(p,a)
-#define IDirectMusicPort_Activate(p,a) (p)->lpVtbl->Activate(p,a)
-#define IDirectMusicPort_SetChannelPriority(p,a,b,c) (p)->lpVtbl->SetChannelPriority(p,a,b,c)
-#define IDirectMusicPort_GetChannelPriority(p,a,b,c) (p)->lpVtbl->GetChannelPriority(p,a,b,c)
-#define IDirectMusicPort_SetDirectSound(p,a,b) (p)->lpVtbl->SetDirectSound(p,a,b)
-#define IDirectMusicPort_GetFormat(p,a,b,c) (p)->lpVtbl->GetFormat(p,a,b,c)
+#define IDirectMusicPort_PlayBuffer(p,a) (p)->lpVtbl->PlayBuffer(p,a)
+#define IDirectMusicPort_SetReadNotificationHandle(p,a) (p)->lpVtbl->SetReadNotificationHandle(p,a)
+#define IDirectMusicPort_Read(p,a) (p)->lpVtbl->Read(p,a)
+#define IDirectMusicPort_DownloadInstrument(p,a,b,c,d) (p)->lpVtbl->DownloadInstrument(p,a,b,c,d)
+#define IDirectMusicPort_UnloadInstrument(p,a) (p)->lpVtbl->UnloadInstrument(p,a)
+#define IDirectMusicPort_GetLatencyClock(p,a) (p)->lpVtbl->GetLatencyClock(p,a)
+#define IDirectMusicPort_GetRunningStats(p,a) (p)->lpVtbl->GetRunningStats(p,a)
+#define IDirectMusicPort_Compact(p) (p)->lpVtbl->Compact(p)
+#define IDirectMusicPort_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
+#define IDirectMusicPort_DeviceIoControl(p,a,b,c,d,e,f,g) (p)->lpVtbl->DeviceIoControl(p,a,b,c,d,e,f,g)
+#define IDirectMusicPort_SetNumChannelGroups(p,a) (p)->lpVtbl->SetNumChannelGroups(p,a)
+#define IDirectMusicPort_GetNumChannelGroups(p,a) (p)->lpVtbl->GetNumChannelGroups(p,a)
+#define IDirectMusicPort_Activate(p,a) (p)->lpVtbl->Activate(p,a)
+#define IDirectMusicPort_SetChannelPriority(p,a,b,c) (p)->lpVtbl->SetChannelPriority(p,a,b,c)
+#define IDirectMusicPort_GetChannelPriority(p,a,b,c) (p)->lpVtbl->GetChannelPriority(p,a,b,c)
+#define IDirectMusicPort_SetDirectSound(p,a,b) (p)->lpVtbl->SetDirectSound(p,a,b)
+#define IDirectMusicPort_GetFormat(p,a,b,c) (p)->lpVtbl->GetFormat(p,a,b,c)
#endif
@@ -634,47 +673,41 @@
#endif
-/* this one should be defined in dsound.h too, but it's ok if it's here */
#ifndef __IReferenceClock_INTERFACE_DEFINED__
-#define __IReferenceClock_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_IReferenceClock, 0x56a86897,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70);
-
-/*****************************************************************************
- * IReferenceClock interface
- */
-#undef INTERFACE
-#define INTERFACE IReferenceClock
-#define IReferenceClock_METHODS \
- IUnknown_METHODS \
- STDMETHOD(GetTime)(THIS_ REFERENCE_TIME *pTime) PURE; \
- STDMETHOD(AdviseTime)(THIS_ REFERENCE_TIME baseTime, REFERENCE_TIME streamTime, HANDLE hEvent, DWORD *pdwAdviseCookie) PURE; \
- STDMETHOD(AdvisePeriodic)(THIS_ REFERENCE_TIME startTime, REFERENCE_TIME periodTime, HANDLE hSemaphore, DWORD *pdwAdviseCookie) PURE; \
- STDMETHOD(Unadvise)(THIS_ DWORD dwAdviseCookie) PURE;
-ICOM_DEFINE(IReferenceClock,IUnknown)
-#undef INTERFACE
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define IReferenceClock_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IReferenceClock_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IReferenceClock_Release(p) (p)->lpVtbl->Release(p)
-/*** IReferenceClock methods ***/
-#define IReferenceClock_GetTime(p,a) (p)->lpVtbl->GetTime(p,a)
-#define IReferenceClock_AdviseTime(p,a,b,c,d) (p)->lpVtbl->AdviseTime(p,a,b,c,d)
-#define IReferenceClock_AdvisePeriodic(p,a,b,c,d) (p)->lpVtbl->AdvisePeriodic(p,a,b,c,d)
-#define IReferenceClock_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a)
-#endif
-
+ #define __IReferenceClock_INTERFACE_DEFINED__
+ DEFINE_GUID(IID_IReferenceClock,0x56a86897,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70);
+
+ /*****************************************************************************
+ * IReferenceClock interface
+ */
+ #undef INTERFACE
+ #define INTERFACE IReferenceClock
+ #define IReferenceClock_METHODS \
+ IUnknown_METHODS \
+ STDMETHOD(GetTime)(THIS_ REFERENCE_TIME *pTime) PURE; \
+ STDMETHOD(AdviseTime)(THIS_ REFERENCE_TIME baseTime, REFERENCE_TIME streamTime, HANDLE hEvent, DWORD *pdwAdviseCookie) PURE; \
+ STDMETHOD(AdvisePeriodic)(THIS_ REFERENCE_TIME startTime, REFERENCE_TIME periodTime, HANDLE hSemaphore, DWORD *pdwAdviseCookie) PURE; \
+ STDMETHOD(Unadvise)(THIS_ DWORD dwAdviseCookie) PURE;
+ ICOM_DEFINE(IReferenceClock,IUnknown)
+ #undef INTERFACE
+
+ #ifdef COBJMACROS
+ /*** IUnknown methods ***/
+ #define IReferenceClock_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+ #define IReferenceClock_AddRef(p) (p)->lpVtbl->AddRef(p)
+ #define IReferenceClock_Release(p) (p)->lpVtbl->Release(p)
+ /*** IReferenceClock methods ***/
+ #define IReferenceClock_GetTime(p,a) (p)->lpVtbl->GetTime(p,a)
+ #define IReferenceClock_AdviseTime(p,a,b,c,d) (p)->lpVtbl->AdviseTime(p,a,b,c,d)
+ #define IReferenceClock_AdvisePeriodic(p,a,b,c,d) (p)->lpVtbl->AdvisePeriodic(p,a,b,c,d)
+ #define IReferenceClock_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a)
+ #endif
#endif /* __IReferenceClock_INTERFACE_DEFINED__ */
-#define DMUS_VOLUME_MAX 2000
-#define DMUS_VOLUME_MIN -20000
-
#ifdef __cplusplus
-} /* extern "C" */
-#endif /* __cplusplus */
+}
+#endif
-/*#include <poppack.h> */
+#include <poppack.h>
#endif /* __WINE_DMUSIC_CORE_H */
diff --git a/include/dmusicf.h b/include/dmusicf.h
index 9a496b5..deaba1b 100644
--- a/include/dmusicf.h
+++ b/include/dmusicf.h
@@ -1,7 +1,7 @@
/*
* DirectMusic File Formats
*
- * 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,923 +21,890 @@
#ifndef __WINE_DMUSIC_FILEFORMATS_H
#define __WINE_DMUSIC_FILEFORMATS_H
+#ifndef __WINESRC__
+#include <windows.h>
+#endif /* __WINESRC__ */
+
#include <objbase.h>
#include <mmsystem.h>
+#include <pshpack8.h>
#ifdef __cplusplus
extern "C" {
#endif
+
/*****************************************************************************
* FOURCC Definitons
*/
-#define DMUS_FOURCC_GUID_CHUNK mmioFOURCC('g','u','i','d')
-#define DMUS_FOURCC_INFO_LIST mmioFOURCC('I','N','F','O')
-#define DMUS_FOURCC_UNFO_LIST mmioFOURCC('U','N','F','O')
-#define DMUS_FOURCC_UNAM_CHUNK mmioFOURCC('U','N','A','M')
-#define DMUS_FOURCC_UART_CHUNK mmioFOURCC('U','A','R','T')
-#define DMUS_FOURCC_UCOP_CHUNK mmioFOURCC('U','C','O','P')
-#define DMUS_FOURCC_USBJ_CHUNK mmioFOURCC('U','S','B','J')
-#define DMUS_FOURCC_UCMT_CHUNK mmioFOURCC('U','C','M','T')
-#define DMUS_FOURCC_CATEGORY_CHUNK mmioFOURCC('c','a','t','g')
-#define DMUS_FOURCC_VERSION_CHUNK mmioFOURCC('v','e','r','s')
+/* Common chunks */
+#define DMUS_FOURCC_GUID_CHUNK mmioFOURCC('g','u','i','d')
+#define DMUS_FOURCC_INFO_LIST mmioFOURCC('I','N','F','O')
+#define DMUS_FOURCC_UNFO_LIST mmioFOURCC('U','N','F','O')
+#define DMUS_FOURCC_UNAM_CHUNK mmioFOURCC('U','N','A','M')
+#define DMUS_FOURCC_UART_CHUNK mmioFOURCC('U','A','R','T')
+#define DMUS_FOURCC_UCOP_CHUNK mmioFOURCC('U','C','O','P')
+#define DMUS_FOURCC_USBJ_CHUNK mmioFOURCC('U','S','B','J')
+#define DMUS_FOURCC_UCMT_CHUNK mmioFOURCC('U','C','M','T')
+#define DMUS_FOURCC_CATEGORY_CHUNK mmioFOURCC('c','a','t','g')
+#define DMUS_FOURCC_VERSION_CHUNK mmioFOURCC('v','e','r','s')
+/* AudioPath */
+#define DMUS_FOURCC_AUDIOPATH_FORM mmioFOURCC('D','M','A','P')
+#define DMUS_FOURCC_PORTCONFIGS_LIST mmioFOURCC('p','c','s','l')
+#define DMUS_FOURCC_PORTCONFIG_LIST mmioFOURCC('p','c','f','l')
+#define DMUS_FOURCC_PORTCONFIG_ITEM mmioFOURCC('p','c','f','h')
+#define DMUS_FOURCC_PORTPARAMS_ITEM mmioFOURCC('p','p','r','h')
+#define DMUS_FOURCC_DSBUFFER_LIST mmioFOURCC('d','b','f','l')
+#define DMUS_FOURCC_DSBUFFATTR_ITEM mmioFOURCC('d','d','a','h')
+#define DMUS_FOURCC_PCHANNELS_LIST mmioFOURCC('p','c','h','l')
+#define DMUS_FOURCC_PCHANNELS_ITEM mmioFOURCC('p','c','h','h')
+/* Band */
+#define DMUS_FOURCC_BAND_FORM mmioFOURCC('D','M','B','D')
+#define DMUS_FOURCC_INSTRUMENTS_LIST mmioFOURCC('l','b','i','l')
+#define DMUS_FOURCC_INSTRUMENT_LIST mmioFOURCC('l','b','i','n')
+#define DMUS_FOURCC_INSTRUMENT_CHUNK mmioFOURCC('b','i','n','s')
+/* Chordmap */
+#define DMUS_FOURCC_CHORDMAP_FORM mmioFOURCC('D','M','P','R')
+#define DMUS_FOURCC_IOCHORDMAP_CHUNK mmioFOURCC('p','e','r','h')
+#define DMUS_FOURCC_SUBCHORD_CHUNK mmioFOURCC('c','h','d','t')
+#define DMUS_FOURCC_CHORDENTRY_CHUNK mmioFOURCC('c','h','e','h')
+#define DMUS_FOURCC_SUBCHORDID_CHUNK mmioFOURCC('s','b','c','n')
+#define DMUS_FOURCC_IONEXTCHORD_CHUNK mmioFOURCC('n','c','r','d')
+#define DMUS_FOURCC_NEXTCHORDSEQ_CHUNK mmioFOURCC('n','c','s','q')
+#define DMUS_FOURCC_IOSIGNPOST_CHUNK mmioFOURCC('s','p','s','h')
+#define DMUS_FOURCC_CHORDNAME_CHUNK mmioFOURCC('I','N','A','M')
+#define DMUS_FOURCC_CHORDENTRY_LIST mmioFOURCC('c','h','o','e')
+#define DMUS_FOURCC_CHORDMAP_LIST mmioFOURCC('c','m','a','p')
+#define DMUS_FOURCC_CHORD_LIST mmioFOURCC('c','h','r','d')
+#define DMUS_FOURCC_CHORDPALETTE_LIST mmioFOURCC('c','h','p','l')
+#define DMUS_FOURCC_CADENCE_LIST mmioFOURCC('c','a','d','e')
+#define DMUS_FOURCC_SIGNPOSTITEM_LIST mmioFOURCC('s','p','s','t')
+#define DMUS_FOURCC_SIGNPOST_LIST mmioFOURCC('s','p','s','q')
+/* Container */
+#define DMUS_FOURCC_CONTAINER_FORM mmioFOURCC('D','M','C','N')
+#define DMUS_FOURCC_CONTAINER_CHUNK mmioFOURCC('c','o','n','h')
+#define DMUS_FOURCC_CONTAINED_ALIAS_CHUNK mmioFOURCC('c','o','b','a')
+#define DMUS_FOURCC_CONTAINED_OBJECT_CHUNK mmioFOURCC('c','o','b','h')
+#define DMUS_FOURCC_CONTAINED_OBJECTS_LIST mmioFOURCC('c','o','s','l')
+#define DMUS_FOURCC_CONTAINED_OBJECT_LIST mmioFOURCC('c','o','b','l')
+/* DirectSound Buffer Configuration */
+#define DMUS_FOURCC_DSBC_FORM mmioFOURCC('D','S','B','C')
+#define DMUS_FOURCC_DSBD_CHUNK mmioFOURCC('d','s','b','d')
+#define DMUS_FOURCC_BSID_CHUNK mmioFOURCC('b','s','i','d')
+#define DMUS_FOURCC_DS3D_CHUNK mmioFOURCC('d','s','3','d')
+#define DMUS_FOURCC_DSBC_LIST mmioFOURCC('f','x','l','s')
+/* Effects */
+#define DMUS_FOURCC_DSFX_FORM mmioFOURCC('D','S','F','X')
+#define DMUS_FOURCC_DSFX_CHUNK mmioFOURCC('f','x','h','r')
+#define DMUS_FOURCC_DSFX_DATA mmioFOURCC('d','a','t','a')
+/* Reference */
+#define DMUS_FOURCC_REF_LIST mmioFOURCC('D','M','R','F')
+#define DMUS_FOURCC_REF_CHUNK mmioFOURCC('r','e','f','h')
+#define DMUS_FOURCC_DATE_CHUNK mmioFOURCC('d','a','t','e')
+#define DMUS_FOURCC_NAME_CHUNK mmioFOURCC('n','a','m','e')
+#define DMUS_FOURCC_FILE_CHUNK mmioFOURCC('f','i','l','e')
+/* Script */
+#define DMUS_FOURCC_SCRIPT_FORM mmioFOURCC('D','M','S','C')
+#define DMUS_FOURCC_SCRIPT_CHUNK mmioFOURCC('s','c','h','d')
+#define DMUS_FOURCC_SCRIPTVERSION_CHUNK mmioFOURCC('s','c','v','e')
+#define DMUS_FOURCC_SCRIPTLANGUAGE_CHUNK mmioFOURCC('s','c','l','a')
+#define DMUS_FOURCC_SCRIPTSOURCE_CHUNK mmioFOURCC('s','c','s','r')
+/* Segment */
+#define DMUS_FOURCC_SEGMENT_FORM mmioFOURCC('D','M','S','G')
+#define DMUS_FOURCC_SEGMENT_CHUNK mmioFOURCC('s','e','g','h')
+#define DMUS_FOURCC_TRACK_LIST mmioFOURCC('t','r','k','l')
+/* Style chunks */
+#define DMUS_FOURCC_STYLE_FORM mmioFOURCC('D','M','S','T')
+#define DMUS_FOURCC_STYLE_CHUNK mmioFOURCC('s','t','y','h')
+#define DMUS_FOURCC_PART_LIST mmioFOURCC('p','a','r','t')
+#define DMUS_FOURCC_PART_CHUNK mmioFOURCC('p','r','t','h')
+#define DMUS_FOURCC_NOTE_CHUNK mmioFOURCC('n','o','t','e')
+#define DMUS_FOURCC_CURVE_CHUNK mmioFOURCC('c','r','v','e')
+#define DMUS_FOURCC_MARKER_CHUNK mmioFOURCC('m','r','k','r')
+#define DMUS_FOURCC_RESOLUTION_CHUNK mmioFOURCC('r','s','l','n')
+#define DMUS_FOURCC_ANTICIPATION_CHUNK mmioFOURCC('a','n','p','n')
+#define DMUS_FOURCC_PATTERN_LIST mmioFOURCC('p','t','t','n')
+#define DMUS_FOURCC_PATTERN_CHUNK mmioFOURCC('p','t','n','h')
+#define DMUS_FOURCC_RHYTHM_CHUNK mmioFOURCC('r','h','t','m')
+#define DMUS_FOURCC_PARTREF_LIST mmioFOURCC('p','r','e','f')
+#define DMUS_FOURCC_PARTREF_CHUNK mmioFOURCC('p','r','f','c')
+#define DMUS_FOURCC_STYLE_PERS_REF_LIST mmioFOURCC('p','r','r','f')
+#define DMUS_FOURCC_MOTIFSETTINGS_CHUNK mmioFOURCC('m','t','f','s')
+/* Tool */
+#define DMUS_FOURCC_TOOL_FORM mmioFOURCC('D','M','T','L')
+#define DMUS_FOURCC_TOOL_CHUNK mmioFOURCC('t','o','l','h')
+/* ToolGraph */
+#define DMUS_FOURCC_TOOLGRAPH_FORM mmioFOURCC('D','M','T','G')
+#define DMUS_FOURCC_TOOL_LIST mmioFOURCC('t','o','l','l')
+/* Track */
+#define DMUS_FOURCC_TRACK_FORM mmioFOURCC('D','M','T','K')
+#define DMUS_FOURCC_TRACK_CHUNK mmioFOURCC('t','r','k','h')
+#define DMUS_FOURCC_TRACK_EXTRAS_CHUNK mmioFOURCC('t','r','k','x')
+/* Band Track */
+#define DMUS_FOURCC_BANDTRACK_FORM mmioFOURCC('D','M','B','T')
+#define DMUS_FOURCC_BANDTRACK_CHUNK mmioFOURCC('b','d','t','h')
+#define DMUS_FOURCC_BANDS_LIST mmioFOURCC('l','b','d','l')
+#define DMUS_FOURCC_BAND_LIST mmioFOURCC('l','b','n','d')
+#define DMUS_FOURCC_BANDITEM_CHUNK mmioFOURCC('b','d','i','h')
+#define DMUS_FOURCC_BANDITEM_CHUNK2 mmioFOURCC('b','d','2','h')
+/* Chord Track */
+#define DMUS_FOURCC_CHORDTRACK_LIST mmioFOURCC('c','o','r','d')
+#define DMUS_FOURCC_CHORDTRACKHEADER_CHUNK mmioFOURCC('c','r','d','h')
+#define DMUS_FOURCC_CHORDTRACKBODY_CHUNK mmioFOURCC('c','r','d','b')
+/* Chordmap Track */
+#define DMUS_FOURCC_PERS_TRACK_LIST mmioFOURCC('p','f','t','r')
+#define DMUS_FOURCC_PERS_REF_LIST mmioFOURCC('p','f','r','f')
+#define DMUS_FOURCC_TIME_STAMP_CHUNK mmioFOURCC('s','t','m','p')
+/* Command Track */
+#define DMUS_FOURCC_COMMANDTRACK_CHUNK mmioFOURCC('c','m','n','d')
+/* Lyrics Track */
+#define DMUS_FOURCC_LYRICSTRACK_LIST mmioFOURCC('l','y','r','t')
+#define DMUS_FOURCC_LYRICSTRACKEVENTS_LIST mmioFOURCC('l','y','r','l')
+#define DMUS_FOURCC_LYRICSTRACKEVENT_LIST mmioFOURCC('l','y','r','e')
+#define DMUS_FOURCC_LYRICSTRACKEVENTHEADER_CHUNK mmioFOURCC('l','y','r','h')
+#define DMUS_FOURCC_LYRICSTRACKEVENTTEXT_CHUNK mmioFOURCC('l','y','r','n')
+/* Marker Track */
+#define DMUS_FOURCC_MARKERTRACK_LIST mmioFOURCC('M','A','R','K')
+#define DMUS_FOURCC_VALIDSTART_CHUNK mmioFOURCC('v','a','l','s')
+#define DMUS_FOURCC_PLAYMARKER_CHUNK mmioFOURCC('p','l','a','y')
+/* Mute Track */
+#define DMUS_FOURCC_MUTE_CHUNK mmioFOURCC('m','u','t','e')
+/* Parameter Control Track */
+#define DMUS_FOURCC_PARAMCONTROLTRACK_TRACK_LIST mmioFOURCC('p','r','m','t')
+#define DMUS_FOURCC_PARAMCONTROLTRACK_OBJECT_LIST mmioFOURCC('p','r','o','l')
+#define DMUS_FOURCC_PARAMCONTROLTRACK_OBJECT_CHUNK mmioFOURCC('p','r','o','h')
+#define DMUS_FOURCC_PARAMCONTROLTRACK_PARAM_LIST mmioFOURCC('p','r','p','l')
+#define DMUS_FOURCC_PARAMCONTROLTRACK_PARAM_CHUNK mmioFOURCC('p','r','p','h')
+#define DMUS_FOURCC_PARAMCONTROLTRACK_CURVES_CHUNK mmioFOURCC('p','r','c','c')
+/* Pattern Track */
+#define DMUS_FOURCC_PATTERN_FORM mmioFOURCC('D','M','P','T')
+/* Script Track */
+#define DMUS_FOURCC_SCRIPTTRACK_LIST mmioFOURCC('s','c','r','t')
+#define DMUS_FOURCC_SCRIPTTRACKEVENTS_LIST mmioFOURCC('s','c','r','l')
+#define DMUS_FOURCC_SCRIPTTRACKEVENT_LIST mmioFOURCC('s','c','r','e')
+#define DMUS_FOURCC_SCRIPTTRACKEVENTHEADER_CHUNK mmioFOURCC('s','c','r','h')
+#define DMUS_FOURCC_SCRIPTTRACKEVENTNAME_CHUNK mmioFOURCC('s','c','r','n')
+/* Segment Trgigger Track */
+#define DMUS_FOURCC_SEGTRACK_LIST mmioFOURCC('s','e','g','t')
+#define DMUS_FOURCC_SEGTRACK_CHUNK mmioFOURCC('s','g','t','h')
+#define DMUS_FOURCC_SEGMENTS_LIST mmioFOURCC('l','s','g','l')
+#define DMUS_FOURCC_SEGMENT_LIST mmioFOURCC('l','s','e','g')
+#define DMUS_FOURCC_SEGMENTITEM_CHUNK mmioFOURCC('s','g','i','h')
+#define DMUS_FOURCC_SEGMENTITEMNAME_CHUNK mmioFOURCC('s','n','a','m')
+/* Sequence Track */
+#define DMUS_FOURCC_SEQ_TRACK mmioFOURCC('s','e','q','t')
+#define DMUS_FOURCC_SEQ_LIST mmioFOURCC('e','v','t','l')
+#define DMUS_FOURCC_CURVE_LIST mmioFOURCC('c','u','r','l')
+/* Signpost Track */
+#define DMUS_FOURCC_SIGNPOST_TRACK_CHUNK mmioFOURCC('s','g','n','p')
+/* Style Track */
+#define DMUS_FOURCC_STYLE_TRACK_LIST mmioFOURCC('s','t','t','r')
+#define DMUS_FOURCC_STYLE_REF_LIST mmioFOURCC('s','t','r','f')
+/* SysEx Track */
+#define DMUS_FOURCC_SYSEX_TRACK mmioFOURCC('s','y','e','x')
+/* Tempo Track */
+#define DMUS_FOURCC_TEMPO_TRACK mmioFOURCC('t','e','t','r')
+/* Time Signature Track */
+#define DMUS_FOURCC_TIMESIGNATURE_TRACK mmioFOURCC('t','i','m','s')
+#define DMUS_FOURCC_TIMESIGTRACK_LIST mmioFOURCC('T','I','M','S')
+#define DMUS_FOURCC_TIMESIG_CHUNK DMUS_FOURCC_TIMESIGNATURE_TRACK
+/* Wave Track */
+#define DMUS_FOURCC_WAVETRACK_LIST mmioFOURCC('w','a','v','t')
+#define DMUS_FOURCC_WAVETRACK_CHUNK mmioFOURCC('w','a','t','h')
+#define DMUS_FOURCC_WAVEPART_LIST mmioFOURCC('w','a','v','p')
+#define DMUS_FOURCC_WAVEPART_CHUNK mmioFOURCC('w','a','p','h')
+#define DMUS_FOURCC_WAVEITEM_LIST mmioFOURCC('w','a','v','i')
+#define DMUS_FOURCC_WAVE_LIST mmioFOURCC('w','a','v','e')
+#define DMUS_FOURCC_WAVEITEM_CHUNK mmioFOURCC('w','a','i','h')
+/* Wave Header */
+#define DMUS_FOURCC_WAVEHEADER_CHUNK mmioFOURCC('w','a','v','h')
-#define DMUS_FOURCC_STYLE_FORM mmioFOURCC('D','M','S','T')
-#define DMUS_FOURCC_STYLE_CHUNK mmioFOURCC('s','t','y','h')
-#define DMUS_FOURCC_PART_LIST mmioFOURCC('p','a','r','t')
-#define DMUS_FOURCC_PART_CHUNK mmioFOURCC('p','r','t','h')
-#define DMUS_FOURCC_NOTE_CHUNK mmioFOURCC('n','o','t','e')
-#define DMUS_FOURCC_CURVE_CHUNK mmioFOURCC('c','r','v','e')
-#define DMUS_FOURCC_MARKER_CHUNK mmioFOURCC('m','r','k','r')
-#define DMUS_FOURCC_RESOLUTION_CHUNK mmioFOURCC('r','s','l','n')
-#define DMUS_FOURCC_ANTICIPATION_CHUNK mmioFOURCC('a','n','p','n')
-#define DMUS_FOURCC_PATTERN_LIST mmioFOURCC('p','t','t','n')
-#define DMUS_FOURCC_PATTERN_CHUNK mmioFOURCC('p','t','n','h')
-#define DMUS_FOURCC_RHYTHM_CHUNK mmioFOURCC('r','h','t','m')
-#define DMUS_FOURCC_PARTREF_LIST mmioFOURCC('p','r','e','f')
-#define DMUS_FOURCC_PARTREF_CHUNK mmioFOURCC('p','r','f','c')
-#define DMUS_FOURCC_STYLE_PERS_REF_LIST mmioFOURCC('p','r','r','f')
-#define DMUS_FOURCC_MOTIFSETTINGS_CHUNK mmioFOURCC('m','t','f','s')
-
-#define DMUS_FOURCC_PATTERN_FORM mmioFOURCC('D','M','P','T')
-
-#define DMUS_FOURCC_CHORDTRACK_LIST mmioFOURCC('c','o','r','d')
-#define DMUS_FOURCC_CHORDTRACKHEADER_CHUNK mmioFOURCC('c','r','d','h')
-#define DMUS_FOURCC_CHORDTRACKBODY_CHUNK mmioFOURCC('c','r','d','b')
-
-#define DMUS_FOURCC_COMMANDTRACK_CHUNK mmioFOURCC('c','m','n','d')
-
-#define DMUS_FOURCC_TOOLGRAPH_FORM mmioFOURCC('D','M','T','G')
-#define DMUS_FOURCC_TOOL_LIST mmioFOURCC('t','o','l','l')
-#define DMUS_FOURCC_TOOL_FORM mmioFOURCC('D','M','T','L')
-#define DMUS_FOURCC_TOOL_CHUNK mmioFOURCC('t','o','l','h')
-
-#define DMUS_FOURCC_AUDIOPATH_FORM mmioFOURCC('D','M','A','P')
-
-#define DMUS_FOURCC_PORTCONFIGS_LIST mmioFOURCC('p','c','s','l')
-#define DMUS_FOURCC_PORTCONFIG_LIST mmioFOURCC('p','c','f','l')
-#define DMUS_FOURCC_PORTCONFIG_ITEM mmioFOURCC('p','c','f','h')
-#define DMUS_FOURCC_PORTPARAMS_ITEM mmioFOURCC('p','p','r','h')
-#define DMUS_FOURCC_DSBUFFER_LIST mmioFOURCC('d','b','f','l')
-#define DMUS_FOURCC_DSBUFFATTR_ITEM mmioFOURCC('d','d','a','h')
-#define DMUS_FOURCC_PCHANNELS_LIST mmioFOURCC('p','c','h','l')
-#define DMUS_FOURCC_PCHANNELS_ITEM mmioFOURCC('p','c','h','h')
-
-#define DMUS_FOURCC_BANDTRACK_FORM mmioFOURCC('D','M','B','T')
-#define DMUS_FOURCC_BANDTRACK_CHUNK mmioFOURCC('b','d','t','h')
-#define DMUS_FOURCC_BANDS_LIST mmioFOURCC('l','b','d','l')
-#define DMUS_FOURCC_BAND_LIST mmioFOURCC('l','b','n','d')
-#define DMUS_FOURCC_BANDITEM_CHUNK mmioFOURCC('b','d','i','h')
-#define DMUS_FOURCC_BANDITEM_CHUNK2 mmioFOURCC('b','d','2','h')
-
-#define DMUS_FOURCC_BAND_FORM mmioFOURCC('D','M','B','D')
-#define DMUS_FOURCC_INSTRUMENTS_LIST mmioFOURCC('l','b','i','l')
-#define DMUS_FOURCC_INSTRUMENT_LIST mmioFOURCC('l','b','i','n')
-#define DMUS_FOURCC_INSTRUMENT_CHUNK mmioFOURCC('b','i','n','s')
-
-#define DMUS_FOURCC_WAVEHEADER_CHUNK mmioFOURCC('w','a','v','h')
-
-#define DMUS_FOURCC_WAVETRACK_LIST mmioFOURCC('w','a','v','t')
-#define DMUS_FOURCC_WAVETRACK_CHUNK mmioFOURCC('w','a','t','h')
-#define DMUS_FOURCC_WAVEPART_LIST mmioFOURCC('w','a','v','p')
-#define DMUS_FOURCC_WAVEPART_CHUNK mmioFOURCC('w','a','p','h')
-#define DMUS_FOURCC_WAVEITEM_LIST mmioFOURCC('w','a','v','i')
-#define DMUS_FOURCC_WAVE_LIST mmioFOURCC('w','a','v','e')
-#define DMUS_FOURCC_WAVEITEM_CHUNK mmioFOURCC('w','a','i','h')
-
-#define DMUS_FOURCC_CONTAINER_FORM mmioFOURCC('D','M','C','N')
-#define DMUS_FOURCC_CONTAINER_CHUNK mmioFOURCC('c','o','n','h')
-#define DMUS_FOURCC_CONTAINED_ALIAS_CHUNK mmioFOURCC('c','o','b','a')
-#define DMUS_FOURCC_CONTAINED_OBJECT_CHUNK mmioFOURCC('c','o','b','h')
-#define DMUS_FOURCC_CONTAINED_OBJECTS_LIST mmioFOURCC('c','o','s','l')
-#define DMUS_FOURCC_CONTAINED_OBJECT_LIST mmioFOURCC('c','o','b','l')
-
-#define DMUS_FOURCC_SEGMENT_FORM mmioFOURCC('D','M','S','G')
-#define DMUS_FOURCC_SEGMENT_CHUNK mmioFOURCC('s','e','g','h')
-#define DMUS_FOURCC_TRACK_LIST mmioFOURCC('t','r','k','l')
-#define DMUS_FOURCC_TRACK_FORM mmioFOURCC('D','M','T','K')
-#define DMUS_FOURCC_TRACK_CHUNK mmioFOURCC('t','r','k','h')
-#define DMUS_FOURCC_TRACK_EXTRAS_CHUNK mmioFOURCC('t','r','k','x')
-
-#define DMUS_FOURCC_SONG_FORM mmioFOURCC('D','M','S','O')
-#define DMUS_FOURCC_SONG_CHUNK mmioFOURCC('s','n','g','h')
-#define DMUS_FOURCC_SONGSEGMENTS_LIST mmioFOURCC('s','e','g','l')
-#define DMUS_FOURCC_SONGSEGMENT_LIST mmioFOURCC('s','s','g','l')
-#define DMUS_FOURCC_TOOLGRAPHS_LIST mmioFOURCC('t','l','g','l')
-#define DMUS_FOURCC_SEGREFS_LIST mmioFOURCC('s','r','s','l')
-#define DMUS_FOURCC_SEGREF_LIST mmioFOURCC('s','g','r','l')
-#define DMUS_FOURCC_SEGREF_CHUNK mmioFOURCC('s','g','r','h')
-#define DMUS_FOURCC_SEGTRANS_CHUNK mmioFOURCC('s','t','r','h')
-#define DMUS_FOURCC_TRACKREFS_LIST mmioFOURCC('t','r','s','l')
-#define DMUS_FOURCC_TRACKREF_LIST mmioFOURCC('t','k','r','l')
-#define DMUS_FOURCC_TRACKREF_CHUNK mmioFOURCC('t','k','r','h')
-
-#define DMUS_FOURCC_REF_LIST mmioFOURCC('D','M','R','F')
-#define DMUS_FOURCC_REF_CHUNK mmioFOURCC('r','e','f','h')
-#define DMUS_FOURCC_DATE_CHUNK mmioFOURCC('d','a','t','e')
-#define DMUS_FOURCC_NAME_CHUNK mmioFOURCC('n','a','m','e')
-#define DMUS_FOURCC_FILE_CHUNK mmioFOURCC('f','i','l','e')
-
-#define DMUS_FOURCC_CHORDMAP_FORM mmioFOURCC('D','M','P','R')
-#define DMUS_FOURCC_IOCHORDMAP_CHUNK mmioFOURCC('p','e','r','h')
-#define DMUS_FOURCC_SUBCHORD_CHUNK mmioFOURCC('c','h','d','t')
-#define DMUS_FOURCC_CHORDENTRY_CHUNK mmioFOURCC('c','h','e','h')
-#define DMUS_FOURCC_SUBCHORDID_CHUNK mmioFOURCC('s','b','c','n')
-#define DMUS_FOURCC_IONEXTCHORD_CHUNK mmioFOURCC('n','c','r','d')
-#define DMUS_FOURCC_NEXTCHORDSEQ_CHUNK mmioFOURCC('n','c','s','q')
-#define DMUS_FOURCC_IOSIGNPOST_CHUNK mmioFOURCC('s','p','s','h')
-#define DMUS_FOURCC_CHORDNAME_CHUNK mmioFOURCC('I','N','A','M')
-
-#define DMUS_FOURCC_CHORDENTRY_LIST mmioFOURCC('c','h','o','e')
-#define DMUS_FOURCC_CHORDMAP_LIST mmioFOURCC('c','m','a','p')
-#define DMUS_FOURCC_CHORD_LIST mmioFOURCC('c','h','r','d')
-#define DMUS_FOURCC_CHORDPALETTE_LIST mmioFOURCC('c','h','p','l')
-#define DMUS_FOURCC_CADENCE_LIST mmioFOURCC('c','a','d','e')
-#define DMUS_FOURCC_SIGNPOSTITEM_LIST mmioFOURCC('s','p','s','t')
-
-#define DMUS_FOURCC_SIGNPOST_LIST mmioFOURCC('s','p','s','q')
-
-#define DMUS_FOURCC_SCRIPT_FORM mmioFOURCC('D','M','S','C')
-#define DMUS_FOURCC_SCRIPT_CHUNK mmioFOURCC('s','c','h','d')
-#define DMUS_FOURCC_SCRIPTVERSION_CHUNK mmioFOURCC('s','c','v','e')
-#define DMUS_FOURCC_SCRIPTLANGUAGE_CHUNK mmioFOURCC('s','c','l','a')
-#define DMUS_FOURCC_SCRIPTSOURCE_CHUNK mmioFOURCC('s','c','s','r')
-
-#define DMUS_FOURCC_SIGNPOST_TRACK_CHUNK mmioFOURCC('s','g','n','p')
-
-#define DMUS_FOURCC_MUTE_CHUNK mmioFOURCC('m','u','t','e')
-
-#define DMUS_FOURCC_TIME_STAMP_CHUNK mmioFOURCC('s','t','m','p')
-
-#define DMUS_FOURCC_STYLE_TRACK_LIST mmioFOURCC('s','t','t','r')
-#define DMUS_FOURCC_STYLE_REF_LIST mmioFOURCC('s','t','r','f')
-
-#define DMUS_FOURCC_PERS_TRACK_LIST mmioFOURCC('p','f','t','r')
-#define DMUS_FOURCC_PERS_REF_LIST mmioFOURCC('p','f','r','f')
-
-#define DMUS_FOURCC_TEMPO_TRACK mmioFOURCC('t','e','t','r')
-
-#define DMUS_FOURCC_SEQ_TRACK mmioFOURCC('s','e','q','t')
-#define DMUS_FOURCC_SEQ_LIST mmioFOURCC('e','v','t','l')
-#define DMUS_FOURCC_CURVE_LIST mmioFOURCC('c','u','r','l')
-
-#define DMUS_FOURCC_SYSEX_TRACK mmioFOURCC('s','y','e','x')
-
-#define DMUS_FOURCC_TIMESIGNATURE_TRACK mmioFOURCC('t','i','m','s')
-
-#define DMUS_FOURCC_TIMESIGTRACK_LIST mmioFOURCC('T','I','M','S')
-#define DMUS_FOURCC_TIMESIG_CHUNK DMUS_FOURCC_TIMESIGNATURE_TRACK
-
-#define DMUS_FOURCC_MARKERTRACK_LIST mmioFOURCC('M','A','R','K')
-#define DMUS_FOURCC_VALIDSTART_CHUNK mmioFOURCC('v','a','l','s')
-#define DMUS_FOURCC_PLAYMARKER_CHUNK mmioFOURCC('p','l','a','y')
-
-#define DMUS_FOURCC_SEGTRACK_LIST mmioFOURCC('s','e','g','t')
-#define DMUS_FOURCC_SEGTRACK_CHUNK mmioFOURCC('s','g','t','h')
-#define DMUS_FOURCC_SEGMENTS_LIST mmioFOURCC('l','s','g','l')
-#define DMUS_FOURCC_SEGMENT_LIST mmioFOURCC('l','s','e','g')
-#define DMUS_FOURCC_SEGMENTITEM_CHUNK mmioFOURCC('s','g','i','h')
-#define DMUS_FOURCC_SEGMENTITEMNAME_CHUNK mmioFOURCC('s','n','a','m')
-
-#define DMUS_FOURCC_SCRIPTTRACK_LIST mmioFOURCC('s','c','r','t')
-#define DMUS_FOURCC_SCRIPTTRACKEVENTS_LIST mmioFOURCC('s','c','r','l')
-#define DMUS_FOURCC_SCRIPTTRACKEVENT_LIST mmioFOURCC('s','c','r','e')
-#define DMUS_FOURCC_SCRIPTTRACKEVENTHEADER_CHUNK mmioFOURCC('s','c','r','h')
-#define DMUS_FOURCC_SCRIPTTRACKEVENTNAME_CHUNK mmioFOURCC('s','c','r','n')
-
-#define DMUS_FOURCC_LYRICSTRACK_LIST mmioFOURCC('l','y','r','t')
-#define DMUS_FOURCC_LYRICSTRACKEVENTS_LIST mmioFOURCC('l','y','r','l')
-#define DMUS_FOURCC_LYRICSTRACKEVENT_LIST mmioFOURCC('l','y','r','e')
-#define DMUS_FOURCC_LYRICSTRACKEVENTHEADER_CHUNK mmioFOURCC('l','y','r','h')
-#define DMUS_FOURCC_LYRICSTRACKEVENTTEXT_CHUNK mmioFOURCC('l','y','r','n')
-
-#define DMUS_FOURCC_PARAMCONTROLTRACK_TRACK_LIST mmioFOURCC('p','r','m','t')
-#define DMUS_FOURCC_PARAMCONTROLTRACK_OBJECT_LIST mmioFOURCC('p','r','o','l')
-#define DMUS_FOURCC_PARAMCONTROLTRACK_OBJECT_CHUNK mmioFOURCC('p','r','o','h')
-#define DMUS_FOURCC_PARAMCONTROLTRACK_PARAM_LIST mmioFOURCC('p','r','p','l')
-#define DMUS_FOURCC_PARAMCONTROLTRACK_PARAM_CHUNK mmioFOURCC('p','r','p','h')
-#define DMUS_FOURCC_PARAMCONTROLTRACK_CURVES_CHUNK mmioFOURCC('p','r','c','c')
-
-#define DMUS_FOURCC_MELODYFORM_TRACK_LIST mmioFOURCC('m','f','r','m')
-#define DMUS_FOURCC_MELODYFORM_HEADER_CHUNK mmioFOURCC('m','l','f','h')
-#define DMUS_FOURCC_MELODYFORM_BODY_CHUNK mmioFOURCC('m','l','f','b')
-
-#define DMUS_FOURCC_DSBC_FORM mmioFOURCC('D','S','B','C')
-#define DMUS_FOURCC_DSBD_CHUNK mmioFOURCC('d','s','b','d')
-#define DMUS_FOURCC_BSID_CHUNK mmioFOURCC('b','s','i','d')
-#define DMUS_FOURCC_DS3D_CHUNK mmioFOURCC('d','s','3','d')
-#define DMUS_FOURCC_DSBC_LIST mmioFOURCC('f','x','l','s')
-#define DMUS_FOURCC_DSFX_FORM mmioFOURCC('D','S','F','X')
-#define DMUS_FOURCC_DSFX_CHUNK mmioFOURCC('f','x','h','r')
-#define DMUS_FOURCC_DSFX_DATA mmioFOURCC('d','a','t','a')
/*****************************************************************************
- * Definitons
+ * Flags
*/
-#define DMUS_VARIATIONF_MAJOR 0x0000007F
-#define DMUS_VARIATIONF_MINOR 0x00003F80
-#define DMUS_VARIATIONF_OTHER 0x001FC000
-#define DMUS_VARIATIONF_ROOT_SCALE 0x00200000
-#define DMUS_VARIATIONF_ROOT_FLAT 0x00400000
-#define DMUS_VARIATIONF_ROOT_SHARP 0x00800000
-#define DMUS_VARIATIONF_TYPE_TRIAD 0x01000000
-#define DMUS_VARIATIONF_TYPE_6AND7 0x02000000
-#define DMUS_VARIATIONF_TYPE_COMPLEX 0x04000000
-#define DMUS_VARIATIONF_DEST_TO1 0x08000000
-#define DMUS_VARIATIONF_DEST_TO5 0x10000000
-#define DMUS_VARIATIONF_DEST_OTHER 0x40000000
-#define DMUS_VARIATIONF_MODES 0xE0000000
-#define DMUS_VARIATIONF_MODES_EX (0x20000000 | 0x80000000)
-#define DMUS_VARIATIONF_IMA25_MODE 0x00000000
-#define DMUS_VARIATIONF_DMUS_MODE 0x20000000
+#define DMUS_BUFFERF_SHARED 0x1
+#define DMUS_BUFFERF_DEFINED 0x2
+#define DMUS_BUFFERF_MIXIN 0x8
-#define DMUS_PARTF_USE_MARKERS 0x1
-#define DMUS_PARTF_ALIGN_CHORDS 0x2
-#define DMUS_MARKERF_START 0x1
-#define DMUS_MARKERF_STOP 0x2
-#define DMUS_MARKERF_CHORD_ALIGN 0x4
-#define DMUS_PATTERNF_PERSIST_CONTROL 0x1
+#define DMUS_CHORDMAPF_VERSION8 0x1
-#define DMUS_PORTCONFIGF_DRUMSON10 1
-#define DMUS_PORTCONFIGF_USEDEFAULT 2
+#define DMUS_CONTAINED_OBJF_KEEP 0x1
-#define DMUS_BUFFERF_SHARED 1
-#define DMUS_BUFFERF_DEFINED 2
-#define DMUS_BUFFERF_MIXIN 8
+#define DMUS_CONTAINER_NOLOADS 0x2
-#define DMUS_IO_INST_PATCH 1
-#define DMUS_IO_INST_BANKSELECT 2
-#define DMUS_IO_INST_ASSIGN_PATCH 8
-#define DMUS_IO_INST_NOTERANGES 16
-#define DMUS_IO_INST_PAN 32
-#define DMUS_IO_INST_VOLUME 64
-#define DMUS_IO_INST_TRANSPOSE 128
-#define DMUS_IO_INST_GM 256
-#define DMUS_IO_INST_GS 512
-#define DMUS_IO_INST_XG 1024
-#define DMUS_IO_INST_CHANNEL_PRIORITY 2048
-#define DMUS_IO_INST_USE_DEFAULT_GM_SET 4096
-#define DMUS_IO_INST_PITCHBENDRANGE 8192
+#define DMUS_IO_INST_PATCH 0x0001
+#define DMUS_IO_INST_BANKSELECT 0x0002
+#define DMUS_IO_INST_ASSIGN_PATCH 0x0008
+#define DMUS_IO_INST_NOTERANGES 0x0010
+#define DMUS_IO_INST_PAN 0x0020
+#define DMUS_IO_INST_VOLUME 0x0040
+#define DMUS_IO_INST_TRANSPOSE 0x0080
+#define DMUS_IO_INST_GM 0x0100
+#define DMUS_IO_INST_GS 0x0200
+#define DMUS_IO_INST_XG 0x0400
+#define DMUS_IO_INST_CHANNEL_PRIORITY 0x0800
+#define DMUS_IO_INST_USE_DEFAULT_GM_SET 0x1000
+#define DMUS_IO_INST_PITCHBENDRANGE 0x2000
-#define DMUS_WAVETRACKF_SYNC_VAR 0x1
-#define DMUS_WAVETRACKF_PERSIST_CONTROL 0x2
+#define DMUS_IO_SCRIPTTRACKF_PREPARE 0x1
+#define DMUS_IO_SCRIPTTRACKF_QUEUE 0x2
+#define DMUS_IO_SCRIPTTRACKF_ATTIME 0x4
-#define DMUS_CONTAINED_OBJF_KEEP 1
-#define DMUS_CONTAINER_NOLOADS 2
+#define DMUS_MARKERF_START 0x1
+#define DMUS_MARKERF_STOP 0x2
+#define DMUS_MARKERF_CHORD_ALIGN 0x4
-#define DMUS_SEGIOF_REFLENGTH 1
+#define DMUS_PATTERNF_PERSIST_CONTROL 0x1
-#define DMUS_SONG_MAXSEGID 0x7FFFFFFF
-#define DMUS_SONG_ANYSEG 0x80000000
-#define DMUS_SONG_NOSEG 0xFFFFFFFF
-#define DMUS_SONG_NOFROMSEG 0x80000001
+#define DMUS_PARTF_USE_MARKERS 0x1
+#define DMUS_PARTF_ALIGN_CHORDS 0x2
-#define DMUS_SIGNPOSTF_A 1
-#define DMUS_SIGNPOSTF_B 2
-#define DMUS_SIGNPOSTF_C 4
-#define DMUS_SIGNPOSTF_D 8
-#define DMUS_SIGNPOSTF_E 0x10
-#define DMUS_SIGNPOSTF_F 0x20
-#define DMUS_SIGNPOSTF_LETTER (DMUS_SIGNPOSTF_A | DMUS_SIGNPOSTF_B | DMUS_SIGNPOSTF_C | DMUS_SIGNPOSTF_D | DMUS_SIGNPOSTF_E | DMUS_SIGNPOSTF_F)
-#define DMUS_SIGNPOSTF_1 0x100
-#define DMUS_SIGNPOSTF_2 0x200
-#define DMUS_SIGNPOSTF_3 0x400
-#define DMUS_SIGNPOSTF_4 0x800
-#define DMUS_SIGNPOSTF_5 0x1000
-#define DMUS_SIGNPOSTF_6 0x2000
-#define DMUS_SIGNPOSTF_7 0x4000
-#define DMUS_SIGNPOSTF_ROOT (DMUS_SIGNPOSTF_1 | DMUS_SIGNPOSTF_2 | DMUS_SIGNPOSTF_3 | DMUS_SIGNPOSTF_4 | DMUS_SIGNPOSTF_5 | DMUS_SIGNPOSTF_6 | DMUS_SIGNPOSTF_7)
-#define DMUS_SIGNPOSTF_CADENCE 0x8000
+#define DMUS_PORTCONFIGF_DRUMSON10 0x1
+#define DMUS_PORTCONFIGF_USEDEFAULT 0x2
-#define DMUS_CHORDMAPF_VERSION8 1
+#define DMUS_SCRIPTIOF_LOAD_ALL_CONTENT 0x1
+#define DMUS_SCRIPTIOF_DOWNLOAD_ALL_SEGMENTS 0x2
-#define DMUS_SPOSTCADENCEF_1 2
-#define DMUS_SPOSTCADENCEF_2 4
+#define DMUS_SEGIOF_REFLENGTH 0x1
+#define DMUS_SEGIOF_CLOCKTIME 0x2
+
+#define DMUS_SEGMENTTRACKF_MOTIF 0x1
+
+/* Song flags; MS doesn't support this in DX 9.0 anymore */
+#define DMUS_SONG_MAXSEGID 0x7FFFFFFF
+#define DMUS_SONG_ANYSEG 0x80000000
+#define DMUS_SONG_NOSEG 0xFFFFFFFF
+#define DMUS_SONG_NOFROMSEG 0x80000001
+
+#define DMUS_SIGNPOSTF_A 0x0001
+#define DMUS_SIGNPOSTF_B 0x0002
+#define DMUS_SIGNPOSTF_C 0x0004
+#define DMUS_SIGNPOSTF_D 0x0008
+#define DMUS_SIGNPOSTF_E 0x0010
+#define DMUS_SIGNPOSTF_F 0x0020
+#define DMUS_SIGNPOSTF_1 0x0100
+#define DMUS_SIGNPOSTF_2 0x0200
+#define DMUS_SIGNPOSTF_3 0x0400
+#define DMUS_SIGNPOSTF_4 0x0800
+#define DMUS_SIGNPOSTF_5 0x1000
+#define DMUS_SIGNPOSTF_6 0x2000
+#define DMUS_SIGNPOSTF_7 0x4000
+#define DMUS_SIGNPOSTF_CADENCE 0x8000
+#define DMUS_SIGNPOSTF_LETTER (DMUS_SIGNPOSTF_A | DMUS_SIGNPOSTF_B | DMUS_SIGNPOSTF_C | DMUS_SIGNPOSTF_D | DMUS_SIGNPOSTF_E | DMUS_SIGNPOSTF_F)
+#define DMUS_SIGNPOSTF_ROOT (DMUS_SIGNPOSTF_1 | DMUS_SIGNPOSTF_2 | DMUS_SIGNPOSTF_3 | DMUS_SIGNPOSTF_4 | DMUS_SIGNPOSTF_5 | DMUS_SIGNPOSTF_6 | DMUS_SIGNPOSTF_7)
+
+#define DMUS_SPOSTCADENCEF_1 0x2
+#define DMUS_SPOSTCADENCEF_2 0x4
+
+#define DMUS_VARIATIONF_MAJOR 0x0000007F
+#define DMUS_VARIATIONF_MINOR 0x00003F80
+#define DMUS_VARIATIONF_OTHER 0x001FC000
+#define DMUS_VARIATIONF_ROOT_SCALE 0x00200000
+#define DMUS_VARIATIONF_ROOT_FLAT 0x00400000
+#define DMUS_VARIATIONF_ROOT_SHARP 0x00800000
+#define DMUS_VARIATIONF_TYPE_TRIAD 0x01000000
+#define DMUS_VARIATIONF_TYPE_6AND7 0x02000000
+#define DMUS_VARIATIONF_TYPE_COMPLEX 0x04000000
+#define DMUS_VARIATIONF_DEST_TO1 0x08000000
+#define DMUS_VARIATIONF_DEST_TO5 0x10000000
+#define DMUS_VARIATIONF_DEST_OTHER 0x40000000
+#define DMUS_VARIATIONF_MODES 0xE0000000
+#define DMUS_VARIATIONF_MODES_EX (0x20000000 | 0x80000000)
+#define DMUS_VARIATIONF_IMA25_MODE 0x00000000
+#define DMUS_VARIATIONF_DMUS_MODE 0x20000000
+
+#define DMUS_WAVETRACKF_SYNC_VAR 0x1
+#define DMUS_WAVETRACKF_PERSIST_CONTROL 0x2
-#define DMUS_SCRIPTIOF_LOAD_ALL_CONTENT 1
-#define DMUS_SCRIPTIOF_DOWNLOAD_ALL_SEGMENTS 2
+/*****************************************************************************
+ * Enumerations
+ */
+/* typedef definitions */
+typedef enum enumDMUS_VARIATIONT_TYPES DMUS_VARIATIONT_TYPES;
+typedef enum enumDMUS_EMBELLISHT_TYPES DMUS_EMBELLISHT_TYPES;
+typedef enum enumDMUS_PATTERNT_TYPES DMUS_PATTERNT_TYPES;
-#define DMUS_SEGMENTTRACKF_MOTIF 1
+/* actual enumerations */
+enum enumDMUS_VARIATIONT_TYPES {
+ DMUS_VARIATIONT_SEQUENTIAL = 0x0,
+ DMUS_VARIATIONT_RANDOM = 0x1,
+ DMUS_VARIATIONT_RANDOM_START = 0x2,
+ DMUS_VARIATIONT_NO_REPEAT = 0x3,
+ DMUS_VARIATIONT_RANDOM_ROW = 0x4
+};
-#define DMUS_IO_SCRIPTTRACKF_PREPARE 1
-#define DMUS_IO_SCRIPTTRACKF_QUEUE 2
-#define DMUS_IO_SCRIPTTRACKF_ATTIME 4
+enum enumDMUS_EMBELLISHT_TYPES {
+ DMUS_EMBELLISHT_NORMAL = 0x0000,
+ DMUS_EMBELLISHT_FILL = 0x0001,
+ DMUS_EMBELLISHT_BREAK = 0x0002,
+ DMUS_EMBELLISHT_INTRO = 0x0004,
+ DMUS_EMBELLISHT_END = 0x0008,
+ DMUS_EMBELLISHT_MOTIF = 0x0010,
+ DMUS_EMBELLISHT_ALL = 0xFFFF
+};
+
+enum enumDMUS_PATTERNT_TYPES {
+ DMUS_PATTERNT_RANDOM = 0x0,
+ DMUS_PATTERNT_REPEAT = 0x1,
+ DMUS_PATTERNT_SEQUENTIAL = 0x2,
+ DMUS_PATTERNT_RANDOM_START = 0x3,
+ DMUS_PATTERNT_NO_REPEAT = 0x4,
+ DMUS_PATTERNT_RANDOM_ROW = 0x5
+};
+
/*****************************************************************************
* Structures
*/
-typedef struct _DMUS_IO_SEQ_ITEM
-{
- MUSIC_TIME mtTime;
- MUSIC_TIME mtDuration;
- DWORD dwPChannel;
- short nOffset;
- BYTE bStatus;
- BYTE bByte1;
- BYTE bByte2;
-} DMUS_IO_SEQ_ITEM;
+/* typedef definitions */
+typedef struct _DMUS_IO_SEQ_ITEM DMUS_IO_SEQ_ITEM, *LPDMUS_IO_SEQ_ITEM;
+typedef struct _DMUS_IO_CURVE_ITEM DMUS_IO_CURVE_ITEM, *LPDMUS_IO_CURVE_ITEM;
+typedef struct _DMUS_IO_TEMPO_ITEM DMUS_IO_TEMPO_ITEM, *LPDMUS_IO_TEMPO_ITEM;
+typedef struct _DMUS_IO_SYSEX_ITEM DMUS_IO_SYSEX_ITEM, *LPDMUS_IO_SYSEX_ITEM;
+typedef struct DMUS_CHORD_KEY DMUS_CHORD_PARAM, *LPDMUS_CHORD_PARAM; /* in dmusici.h */
+typedef struct _DMUS_RHYTHM_PARAM DMUS_RHYTHM_PARAM, *LPDMUS_RHYTHM_PARAM;
+typedef struct _DMUS_TEMPO_PARAM DMUS_TEMPO_PARAM, *LPDMUS_TEMPO_PARAM;
+typedef struct _DMUS_MUTE_PARAM DMUS_MUTE_PARAM, *LPDMUS_MUTE_PARAM;
+typedef struct _DMUS_IO_TIMESIG DMUS_IO_TIMESIG, *LPDMUS_IO_TIMESIG;
+typedef struct _DMUS_IO_STYLE DMUS_IO_STYLE, *LPDMUS_IO_STYLE;
+typedef struct _DMUS_IO_VERSION DMUS_IO_VERSION, *LPDMUS_IO_VERSION;
+typedef struct _DMUS_IO_PATTERN DMUS_IO_PATTERN, *LPDMUS_IO_PATTERN;
+typedef struct _DMUS_IO_STYLEPART DMUS_IO_STYLEPART, *LPDMUS_IO_STYLEPART;
+typedef struct _DMUS_IO_PARTREF DMUS_IO_PARTREF, *LPDMUS_IO_PARTREF;
+typedef struct _DMUS_IO_STYLENOTE DMUS_IO_STYLENOTE, *LPDMUS_IO_STYLENOTE;
+typedef struct _DMUS_IO_STYLECURVE DMUS_IO_STYLECURVE, *LPDMUS_IO_STYLECURVE;
+typedef struct _DMUS_IO_STYLEMARKER DMUS_IO_STYLEMARKER, *LPDMUS_IO_STYLEMARKER;
+typedef struct _DMUS_IO_STYLERESOLUTION DMUS_IO_STYLERESOLUTION, *LPDMUS_IO_STYLERESOLUTION;
+typedef struct _DMUS_IO_STYLE_ANTICIPATION DMUS_IO_STYLE_ANTICIPATION, *LPDMUS_IO_STYLE_ANTICIPATION;
+typedef struct _DMUS_IO_MOTIFSETTINGS DMUS_IO_MOTIFSETTINGS, *LPDMUS_IO_MOTIFSETTINGS;
+typedef struct _DMUS_IO_CHORD DMUS_IO_CHORD, *LPDMUS_IO_CHORD;
+typedef struct _DMUS_IO_SUBCHORD DMUS_IO_SUBCHORD, *LPDMUS_IO_SUBCHORD;
+typedef struct _DMUS_IO_COMMAND DMUS_IO_COMMAND, *LPDMUS_IO_COMMAND;
+typedef struct _DMUS_IO_TOOL_HEADER DMUS_IO_TOOL_HEADER, *LPDMUS_IO_TOOL_HEADER;
+typedef struct _DMUS_IO_PORTCONFIG_HEADER DMUS_IO_PORTCONFIG_HEADER, *LPDMUS_IO_PORTCONFIG_HEADER;
+typedef struct _DMUS_IO_PCHANNELTOBUFFER_HEADER DMUS_IO_PCHANNELTOBUFFER_HEADER, *LPDMUS_IO_PCHANNELTOBUFFER_HEADER;
+typedef struct _DMUS_IO_BUFFER_ATTRIBUTES_HEADER DMUS_IO_BUFFER_ATTRIBUTES_HEADER, *LPDMUS_IO_BUFFER_ATTRIBUTES_HEADER;
+typedef struct _DMUS_IO_BAND_TRACK_HEADER DMUS_IO_BAND_TRACK_HEADER, *LPDMUS_IO_BAND_TRACK_HEADER;
+typedef struct _DMUS_IO_BAND_ITEM_HEADER DMUS_IO_BAND_ITEM_HEADER, *LPDMUS_IO_BAND_ITEM_HEADER;
+typedef struct _DMUS_IO_BAND_ITEM_HEADER2 DMUS_IO_BAND_ITEM_HEADER2, *LPDMUS_IO_BAND_ITEM_HEADER2;
+typedef struct _DMUS_IO_INSTRUMENT DMUS_IO_INSTRUMENT, *LPDMUS_IO_INSTRUMENT;
+typedef struct _DMUS_IO_WAVE_HEADER DMUS_IO_WAVE_HEADER, *LPDMUS_IO_WAVE_HEADER;
+typedef struct _DMUS_IO_WAVE_TRACK_HEADER DMUS_IO_WAVE_TRACK_HEADER, *LPDMUS_IO_WAVE_TRACK_HEADER;
+typedef struct _DMUS_IO_WAVE_PART_HEADER DMUS_IO_WAVE_PART_HEADER, *LPDMUS_IO_WAVE_PART_HEADER;
+typedef struct _DMUS_IO_WAVE_ITEM_HEADER DMUS_IO_WAVE_ITEM_HEADER, *LPDMUS_IO_WAVE_ITEM_HEADER;
+typedef struct _DMUS_IO_CONTAINER_HEADER DMUS_IO_CONTAINER_HEADER, *LPDMUS_IO_CONTAINER_HEADER;
+typedef struct _DMUS_IO_CONTAINED_OBJECT_HEADER DMUS_IO_CONTAINED_OBJECT_HEADER, *LPDMUS_IO_CONTAINED_OBJECT_HEADER;
+typedef struct _DMUS_IO_SEGMENT_HEADER DMUS_IO_SEGMENT_HEADER, *LPDMUS_IO_SEGMENT_HEADER;
+typedef struct _DMUS_IO_TRACK_HEADER DMUS_IO_TRACK_HEADER, *LPDMUS_IO_TRACK_HEADER;
+typedef struct _DMUS_IO_TRACK_EXTRAS_HEADER DMUS_IO_TRACK_EXTRAS_HEADER, *LPDMUS_IO_TRACK_EXTRAS_HEADER;
+typedef struct _DMUS_IO_REFERENCE DMUS_IO_REFERENCE, *LPDMUS_IO_REFERENCE;
+typedef struct _DMUS_IO_CHORDMAP DMUS_IO_CHORDMAP, *LPDMUS_IO_CHORDMAP;
+typedef struct _DMUS_IO_CHORDMAP_SUBCHORD DMUS_IO_CHORDMAP_SUBCHORD, *LPDMUS_IO_CHORDMAP_SUBCHORD;
+typedef struct _DMUS_IO_CHORDMAP_SUBCHORD DMUS_IO_PERS_SUBCHORD, *LPDMUS_IO_PERS_SUBCHORD;
+typedef struct _DMUS_IO_CHORDENTRY DMUS_IO_CHORDENTRY, *LPDMUS_IO_CHORDENTRY;
+typedef struct _DMUS_IO_NEXTCHORD DMUS_IO_NEXTCHORD, *LPDMUS_IO_NEXTCHORD;
+typedef struct _DMUS_IO_CHORDMAP_SIGNPOST DMUS_IO_CHORDMAP_SIGNPOST, *LPDMUS_IO_CHORDMAP_SIGNPOST;
+typedef struct _DMUS_IO_CHORDMAP_SIGNPOST DMUS_IO_PERS_SIGNPOST, *LPDMUS_IO_PERS_SIGNPOST;
+typedef struct _DMUS_IO_SCRIPT_HEADER DMUS_IO_SCRIPT_HEADER, *LPDMUS_IO_SCRIPT_HEADER;
+typedef struct _DMUS_IO_SIGNPOST DMUS_IO_SIGNPOST, *LPDMUS_IO_SIGNPOST;
+typedef struct _DMUS_IO_MUTE DMUS_IO_MUTE, *LPDMUS_IO_MUTE;
+typedef struct _DMUS_IO_TIMESIGNATURE_ITEM DMUS_IO_TIMESIGNATURE_ITEM, *LPDMUS_IO_TIMESIGNATURE_ITEM;
+typedef struct _DMUS_IO_VALID_START DMUS_IO_VALID_START, *LPDMUS_IO_VALID_START;
+typedef struct _DMUS_IO_PLAY_MARKER DMUS_IO_PLAY_MARKER, *LPDMUS_IO_PLAY_MARKER;
+typedef struct _DMUS_IO_SEGMENT_TRACK_HEADER DMUS_IO_SEGMENT_TRACK_HEADER, *LPDMUS_IO_SEGMENT_TRACK_HEADER;
+typedef struct _DMUS_IO_SEGMENT_ITEM_HEADER DMUS_IO_SEGMENT_ITEM_HEADER, *LPDMUS_IO_SEGMENT_ITEM_HEADER;
+typedef struct _DMUS_IO_SCRIPTTRACK_EVENTHEADER DMUS_IO_SCRIPTTRACK_EVENTHEADER, *LPDMUS_IO_SCRIPTTRACK_EVENTHEADER;
+typedef struct _DMUS_IO_LYRICSTRACK_EVENTHEADER DMUS_IO_LYRICSTRACK_EVENTHEADER, *LPDMUS_IO_LYRICSTRACK_EVENTHEADER;
+typedef struct _DMUS_IO_PARAMCONTROLTRACK_OBJECTHEADER DMUS_IO_PARAMCONTROLTRACK_OBJECTHEADER, *LPDMUS_IO_PARAMCONTROLTRACK_OBJECTHEADER;
+typedef struct _DMUS_IO_PARAMCONTROLTRACK_PARAMHEADER DMUS_IO_PARAMCONTROLTRACK_PARAMHEADER, *LPDMUS_IO_PARAMCONTROLTRACK_PARAMHEADER;
+typedef struct _DMUS_IO_PARAMCONTROLTRACK_CURVEINFO DMUS_IO_PARAMCONTROLTRACK_CURVEINFO, *LPDMUS_IO_PARAMCONTROLTRACK_CURVEINFO;
+typedef struct _DSOUND_IO_DSBUFFERDESC DSOUND_IO_DSBUFFERDESC, *LPDSOUND_IO_DSBUFFERDESC;
+typedef struct _DSOUND_IO_DSBUSID DSOUND_IO_DSBUSID, *LPDSOUND_IO_DSBUSID;
+typedef struct _DSOUND_IO_3D DSOUND_IO_3D, *LPDSOUND_IO_3D;
+typedef struct _DSOUND_IO_DXDMO_HEADER DSOUND_IO_DXDMO_HEADER, *LPDSOUND_IO_DXDMO_HEADER;
+typedef struct _DSOUND_IO_DXDMO_DATA DSOUND_IO_DXDMO_DATA, *LPDSOUND_IO_DXDMO_DATA;
-typedef struct _DMUS_IO_CURVE_ITEM
-{
- MUSIC_TIME mtStart;
- MUSIC_TIME mtDuration;
- MUSIC_TIME mtResetDuration;
- DWORD dwPChannel;
- short nOffset;
- short nStartValue;
- short nEndValue;
- short nResetValue;
- BYTE bType;
- BYTE bCurveShape;
- BYTE bCCData;
- BYTE bFlags;
- WORD wParamType;
- WORD wMergeIndex;
-} DMUS_IO_CURVE_ITEM;
+/* actual structures */
+struct _DMUS_IO_SEQ_ITEM {
+ MUSIC_TIME mtTime;
+ MUSIC_TIME mtDuration;
+ DWORD dwPChannel;
+ short nOffset;
+ BYTE bStatus;
+ BYTE bByte1;
+ BYTE bByte2;
+};
-typedef struct _DMUS_IO_TEMPO_ITEM
-{
- MUSIC_TIME lTime;
- double dblTempo;
-} DMUS_IO_TEMPO_ITEM;
+struct _DMUS_IO_CURVE_ITEM {
+ MUSIC_TIME mtStart;
+ MUSIC_TIME mtDuration;
+ MUSIC_TIME mtResetDuration;
+ DWORD dwPChannel;
+ short nOffset;
+ short nStartValue;
+ short nEndValue;
+ short nResetValue;
+ BYTE bType;
+ BYTE bCurveShape;
+ BYTE bCCData;
+ BYTE bFlags;
+ /* DX8 */
+ WORD wParamType;
+ WORD wMergeIndex;
+};
-typedef struct _DMUS_IO_SYSEX_ITEM
-{
- MUSIC_TIME mtTime;
- DWORD dwPChannel;
- DWORD dwSysExLength;
-} DMUS_IO_SYSEX_ITEM;
+struct _DMUS_IO_TEMPO_ITEM {
+ MUSIC_TIME lTime;
+ double dblTempo;
+};
-typedef DMUS_CHORD_KEY DMUS_CHORD_PARAM;
+struct _DMUS_IO_SYSEX_ITEM {
+ MUSIC_TIME mtTime;
+ DWORD dwPChannel;
+ DWORD dwSysExLength;
+};
-typedef struct _DMUS_RHYTHM_PARAM
-{
- DMUS_TIMESIGNATURE TimeSig;
- DWORD dwRhythmPattern;
-} DMUS_RHYTHM_PARAM;
+struct _DMUS_RHYTHM_PARAM {
+ DMUS_TIMESIGNATURE TimeSig;
+ DWORD dwRhythmPattern;
+};
-typedef struct _DMUS_TEMPO_PARAM
-{
- MUSIC_TIME mtTime;
- double dblTempo;
-} DMUS_TEMPO_PARAM;
+struct _DMUS_TEMPO_PARAM {
+ MUSIC_TIME mtTime;
+ double dblTempo;
+};
-typedef struct _DMUS_MUTE_PARAM
-{
- DWORD dwPChannel;
- DWORD dwPChannelMap;
- BOOL fMute;
-} DMUS_MUTE_PARAM;
+struct _DMUS_MUTE_PARAM {
+ DWORD dwPChannel;
+ DWORD dwPChannelMap;
+ BOOL fMute;
+};
+#pragma pack(2)
+struct _DMUS_IO_TIMESIG {
+ BYTE bBeatsPerMeasure;
+ BYTE bBeat;
+ WORD wGridsPerBeat;
+};
-typedef enum enumDMUS_VARIATIONT_TYPES
-{
- DMUS_VARIATIONT_SEQUENTIAL = 0,
- DMUS_VARIATIONT_RANDOM = 1,
- DMUS_VARIATIONT_RANDOM_START = 2,
- DMUS_VARIATIONT_NO_REPEAT = 3,
- DMUS_VARIATIONT_RANDOM_ROW = 4
-} DMUS_VARIATIONT_TYPES;
+struct _DMUS_IO_STYLE {
+ DMUS_IO_TIMESIG timeSig;
+ double dblTempo;
+};
-typedef struct _DMUS_IO_TIMESIG
-{
- BYTE bBeatsPerMeasure;
- BYTE bBeat;
- WORD wGridsPerBeat;
-} DMUS_IO_TIMESIG;
+struct _DMUS_IO_VERSION {
+ DWORD dwVersionMS;
+ DWORD dwVersionLS;
+};
-typedef struct _DMUS_IO_STYLE
-{
- DMUS_IO_TIMESIG timeSig;
- double dblTempo;
-} DMUS_IO_STYLE;
+struct _DMUS_IO_PATTERN {
+ DMUS_IO_TIMESIG timeSig;
+ BYTE bGrooveBottom;
+ BYTE bGrooveTop;
+ WORD wEmbellishment;
+ WORD wNbrMeasures;
+ BYTE bDestGrooveBottom;
+ BYTE bDestGrooveTop;
+ DWORD dwFlags;
+};
-typedef struct _DMUS_IO_VERSION
-{
- DWORD dwVersionMS;
- DWORD dwVersionLS;
-} DMUS_IO_VERSION;
+struct _DMUS_IO_STYLEPART {
+ DMUS_IO_TIMESIG timeSig;
+ DWORD dwVariationChoices[32];
+ GUID guidPartID;
+ WORD wNbrMeasures;
+ BYTE bPlayModeFlags;
+ BYTE bInvertUpper;
+ BYTE bInvertLower;
+ BYTE bPad[3];
+ DWORD dwFlags;
+};
-typedef struct _DMUS_IO_PATTERN
-{
- DMUS_IO_TIMESIG timeSig;
- BYTE bGrooveBottom;
- BYTE bGrooveTop;
- WORD wEmbellishment;
- WORD wNbrMeasures;
- BYTE bDestGrooveBottom;
- BYTE bDestGrooveTop;
- DWORD dwFlags;
-} DMUS_IO_PATTERN;
+struct _DMUS_IO_PARTREF {
+ GUID guidPartID;
+ WORD wLogicalPartID;
+ BYTE bVariationLockID;
+ BYTE bSubChordLevel;
+ BYTE bPriority;
+ BYTE bRandomVariation;
+ WORD wPad;
+ DWORD dwPChannel;
+};
-typedef struct _DMUS_IO_STYLEPART
-{
- DMUS_IO_TIMESIG timeSig;
- DWORD dwVariationChoices[32];
- GUID guidPartID;
- WORD wNbrMeasures;
- BYTE bPlayModeFlags;
- BYTE bInvertUpper;
- BYTE bInvertLower;
- BYTE bPad[3];
- DWORD dwFlags;
-} DMUS_IO_STYLEPART;
-typedef struct _DMUS_IO_PARTREF
-{
- GUID guidPartID;
- WORD wLogicalPartID;
- BYTE bVariationLockID;
- BYTE bSubChordLevel;
- BYTE bPriority;
- BYTE bRandomVariation;
- WORD wPad;
- DWORD dwPChannel;
-} DMUS_IO_PARTREF;
+struct _DMUS_IO_STYLENOTE {
+ MUSIC_TIME mtGridStart;
+ DWORD dwVariation;
+ MUSIC_TIME mtDuration;
+ short nTimeOffset;
+ WORD wMusicValue;
+ BYTE bVelocity;
+ BYTE bTimeRange;
+ BYTE bDurRange;
+ BYTE bVelRange;
+ BYTE bInversionID;
+ BYTE bPlayModeFlags;
+ /* DX8 */
+ BYTE bNoteFlags;
+};
-typedef struct _DMUS_IO_STYLENOTE
-{
- MUSIC_TIME mtGridStart;
- DWORD dwVariation;
- MUSIC_TIME mtDuration;
- short nTimeOffset;
- WORD wMusicValue;
- BYTE bVelocity;
- BYTE bTimeRange;
- BYTE bDurRange;
- BYTE bVelRange;
- BYTE bInversionID;
- BYTE bPlayModeFlags;
- BYTE bNoteFlags;
-} DMUS_IO_STYLENOTE;
+struct _DMUS_IO_STYLECURVE {
+ MUSIC_TIME mtGridStart;
+ DWORD dwVariation;
+ MUSIC_TIME mtDuration;
+ MUSIC_TIME mtResetDuration;
+ short nTimeOffset;
+ short nStartValue;
+ short nEndValue;
+ short nResetValue;
+ BYTE bEventType;
+ BYTE bCurveShape;
+ BYTE bCCData;
+ BYTE bFlags;
+ /* DX8 */
+ WORD wParamType;
+ WORD wMergeIndex;
+};
-typedef struct _DMUS_IO_STYLECURVE
-{
- MUSIC_TIME mtGridStart;
- DWORD dwVariation;
- MUSIC_TIME mtDuration;
- MUSIC_TIME mtResetDuration;
- short nTimeOffset;
- short nStartValue;
- short nEndValue;
- short nResetValue;
- BYTE bEventType;
- BYTE bCurveShape;
- BYTE bCCData;
- BYTE bFlags;
- WORD wParamType;
- WORD wMergeIndex;
-} DMUS_IO_STYLECURVE;
+struct _DMUS_IO_STYLEMARKER {
+ MUSIC_TIME mtGridStart;
+ DWORD dwVariation;
+ WORD wMarkerFlags;
+};
-typedef struct _DMUS_IO_STYLEMARKER
-{
- MUSIC_TIME mtGridStart;
- DWORD dwVariation;
- WORD wMarkerFlags;
-} DMUS_IO_STYLEMARKER;
+struct _DMUS_IO_STYLERESOLUTION {
+ DWORD dwVariation;
+ WORD wMusicValue;
+ BYTE bInversionID;
+ BYTE bPlayModeFlags;
+};
-typedef struct _DMUS_IO_STYLERESOLUTION
-{
- DWORD dwVariation;
- WORD wMusicValue;
- BYTE bInversionID;
- BYTE bPlayModeFlags;
-} DMUS_IO_STYLERESOLUTION;
+struct _DMUS_IO_STYLE_ANTICIPATION {
+ MUSIC_TIME mtGridStart;
+ DWORD dwVariation;
+ short nTimeOffset;
+ BYTE bTimeRange;
+};
-typedef struct _DMUS_IO_STYLE_ANTICIPATION
-{
- MUSIC_TIME mtGridStart;
- DWORD dwVariation;
- short nTimeOffset;
- BYTE bTimeRange;
-} DMUS_IO_STYLE_ANTICIPATION;
+struct _DMUS_IO_MOTIFSETTINGS {
+ DWORD dwRepeats;
+ MUSIC_TIME mtPlayStart;
+ MUSIC_TIME mtLoopStart;
+ MUSIC_TIME mtLoopEnd;
+ DWORD dwResolution;
+};
+#pragma pack()
-typedef struct _DMUS_IO_MOTIFSETTINGS
-{
- DWORD dwRepeats;
- MUSIC_TIME mtPlayStart;
- MUSIC_TIME mtLoopStart;
- MUSIC_TIME mtLoopEnd;
- DWORD dwResolution;
-} DMUS_IO_MOTIFSETTINGS;
+struct _DMUS_IO_CHORD {
+ WCHAR wszName[16];
+ MUSIC_TIME mtTime;
+ WORD wMeasure;
+ BYTE bBeat;
+ BYTE bFlags;
+};
-
-typedef enum enumDMUS_PATTERNT_TYPES
-{
- DMUS_PATTERNT_RANDOM = 0,
- DMUS_PATTERNT_REPEAT = 1,
- DMUS_PATTERNT_SEQUENTIAL = 2,
- DMUS_PATTERNT_RANDOM_START = 3,
- DMUS_PATTERNT_NO_REPEAT = 4,
- DMUS_PATTERNT_RANDOM_ROW = 5
-} DMUS_PATTERNT_TYPES;
-
-typedef struct _DMUS_IO_CHORD
-{
- WCHAR wszName[16];
- MUSIC_TIME mtTime;
- WORD wMeasure;
- BYTE bBeat;
- BYTE bFlags;
-} DMUS_IO_CHORD;
-
-typedef struct _DMUS_IO_SUBCHORD
-{
- DWORD dwChordPattern;
- DWORD dwScalePattern;
- DWORD dwInversionPoints;
- DWORD dwLevels;
- BYTE bChordRoot;
- BYTE bScaleRoot;
-} DMUS_IO_SUBCHORD;
-
-typedef struct _DMUS_IO_COMMAND
-{
- MUSIC_TIME mtTime;
- WORD wMeasure;
- BYTE bBeat;
- BYTE bCommand;
- BYTE bGrooveLevel;
- BYTE bGrooveRange;
- BYTE bRepeatMode;
-} DMUS_IO_COMMAND;
-
-
-typedef struct _DMUS_IO_TOOL_HEADER
-{
- GUID guidClassID;
- long lIndex;
- DWORD cPChannels;
- FOURCC ckid;
- FOURCC fccType;
- DWORD dwPChannels[1];
-} DMUS_IO_TOOL_HEADER;
-
-
-typedef struct _DMUS_IO_PORTCONFIG_HEADER
-{
- GUID guidPort;
- DWORD dwPChannelBase;
- DWORD dwPChannelCount;
- DWORD dwFlags;
-} DMUS_IO_PORTCONFIG_HEADER;
-
-typedef struct _DMUS_IO_PCHANNELTOBUFFER_HEADER
-{
- DWORD dwPChannelBase;
- DWORD dwPChannelCount;
- DWORD dwBufferCount;
- DWORD dwFlags;
-} DMUS_IO_PCHANNELTOBUFFER_HEADER;
-
-typedef struct _DMUS_IO_BUFFER_ATTRIBUTES_HEADER
-{
- GUID guidBufferID;
- DWORD dwFlags;
-} DMUS_IO_BUFFER_ATTRIBUTES_HEADER;
-
-
-typedef struct _DMUS_IO_BAND_TRACK_HEADER
-{
- BOOL bAutoDownload;
-} DMUS_IO_BAND_TRACK_HEADER;
-
-typedef struct _DMUS_IO_BAND_ITEM_HEADER
-{
- MUSIC_TIME lBandTime;
-} DMUS_IO_BAND_ITEM_HEADER;
-
-typedef struct _DMUS_IO_BAND_ITEM_HEADER2
-{
- MUSIC_TIME lBandTimeLogical;
- MUSIC_TIME lBandTimePhysical;
-} DMUS_IO_BAND_ITEM_HEADER2;
-
-
-typedef struct _DMUS_IO_INSTRUMENT
-{
- DWORD dwPatch;
- DWORD dwAssignPatch;
- DWORD dwNoteRanges[4];
- DWORD dwPChannel;
- DWORD dwFlags;
- BYTE bPan;
- BYTE bVolume;
- short nTranspose;
- DWORD dwChannelPriority;
- short nPitchBendRange;
-} DMUS_IO_INSTRUMENT;
-
-
-typedef struct _DMUS_IO_WAVE_HEADER
-{
- REFERENCE_TIME rtReadAhead;
- DWORD dwFlags;
-} DMUS_IO_WAVE_HEADER;
-
-
-typedef struct _DMUS_IO_WAVE_TRACK_HEADER
-{
- long lVolume;
- DWORD dwFlags;
-} DMUS_IO_WAVE_TRACK_HEADER;
-
-typedef struct _DMUS_IO_WAVE_PART_HEADER
-{
- long lVolume;
- DWORD dwVariations;
- DWORD dwPChannel;
- DWORD dwLockToPart;
- DWORD dwFlags;
- DWORD dwIndex;
-} DMUS_IO_WAVE_PART_HEADER;
-
-typedef struct _DMUS_IO_WAVE_ITEM_HEADER
-{
- long lVolume;
- long lPitch;
- DWORD dwVariations;
- REFERENCE_TIME rtTime;
- REFERENCE_TIME rtStartOffset;
- REFERENCE_TIME rtReserved;
- REFERENCE_TIME rtDuration;
- MUSIC_TIME mtLogicalTime;
- DWORD dwLoopStart;
- DWORD dwLoopEnd;
- DWORD dwFlags;
-} DMUS_IO_WAVE_ITEM_HEADER;
-
-
-typedef struct _DMUS_IO_CONTAINER_HEADER
-{
- DWORD dwFlags;
-} DMUS_IO_CONTAINER_HEADER;
-
-typedef struct _DMUS_IO_CONTAINED_OBJECT_HEADER
-{
- GUID guidClassID;
- DWORD dwFlags;
- FOURCC ckid;
- FOURCC fccType;
-} DMUS_IO_CONTAINED_OBJECT_HEADER;
-
-
-typedef struct _DMUS_IO_SEGMENT_HEADER
-{
- DWORD dwRepeats;
- MUSIC_TIME mtLength;
- MUSIC_TIME mtPlayStart;
- MUSIC_TIME mtLoopStart;
- MUSIC_TIME mtLoopEnd;
- DWORD dwResolution;
- REFERENCE_TIME rtLength;
- DWORD dwFlags;
- DWORD dwReserved;
-} DMUS_IO_SEGMENT_HEADER;
-
-
-typedef struct _DMUS_IO_TRACK_HEADER
-{
- GUID guidClassID;
- DWORD dwPosition;
- DWORD dwGroup;
- FOURCC ckid;
- FOURCC fccType;
-} DMUS_IO_TRACK_HEADER;
-
-typedef struct _DMUS_IO_TRACK_EXTRAS_HEADER
-{
- DWORD dwFlags;
- DWORD dwPriority;
-} DMUS_IO_TRACK_EXTRAS_HEADER;
-
-
-typedef struct _DMUS_IO_SONG_HEADER
-{
- DWORD dwFlags;
- DWORD dwStartSegID;
-} DMUS_IO_SONG_HEADER;
-
-typedef struct _DMUS_IO_SEGREF_HEADER
-{
- DWORD dwID;
- DWORD dwSegmentID;
- DWORD dwToolGraphID;
- DWORD dwFlags;
- DWORD dwNextPlayID;
-} DMUS_IO_SEGREF_HEADER;
-
-
-typedef struct _DMUS_IO_TRACKREF_HEADER
-{
- DWORD dwSegmentID;
- DWORD dwFlags;
-} DMUS_IO_TRACKREF_HEADER;
-
-
-typedef struct _DMUS_IO_TRANSITION_DEF
-{
- DWORD dwSegmentID;
- DWORD dwTransitionID;
- DWORD dwPlayFlags;
-} DMUS_IO_TRANSITION_DEF;
-
-
-typedef struct _DMUS_IO_REFERENCE
-{
- GUID guidClassID;
- DWORD dwValidData;
-} DMUS_IO_REFERENCE;
-
-
-typedef struct _DMUS_IO_CHORDMAP
-{
- WCHAR wszLoadName[20];
- DWORD dwScalePattern;
- DWORD dwFlags;
-} DMUS_IO_CHORDMAP;
-
-typedef struct _DMUS_IO_CHORDMAP_SUBCHORD
-{
- DWORD dwChordPattern;
- DWORD dwScalePattern;
- DWORD dwInvertPattern;
- BYTE bChordRoot;
- BYTE bScaleRoot;
- WORD wCFlags;
- DWORD dwLevels;
-} DMUS_IO_CHORDMAP_SUBCHORD, DMUS_IO_PERS_SUBCHORD;
-
-typedef struct _DMUS_IO_CHORDENTRY
-{
- DWORD dwFlags;
- WORD wConnectionID;
-} DMUS_IO_CHORDENTRY;
-
-typedef struct _DMUS_IO_NEXTCHORD
-{
- DWORD dwFlags;
- WORD nWeight;
- WORD wMinBeats;
- WORD wMaxBeats;
- WORD wConnectionID;
-} DMUS_IO_NEXTCHORD;
-
-typedef struct _DMUS_IO_CHORDMAP_SIGNPOST
-{
- DWORD dwChords;
- DWORD dwFlags;
-} DMUS_IO_CHORDMAP_SIGNPOST, DMUS_IO_PERS_SIGNPOST;
-
-
-typedef struct _DMUS_IO_SCRIPT_HEADER
-{
- DWORD dwFlags;
-} DMUS_IO_SCRIPT_HEADER;
-
-
-typedef struct _DMUS_IO_SIGNPOST
-{
- MUSIC_TIME mtTime;
- DWORD dwChords;
- WORD wMeasure;
-} DMUS_IO_SIGNPOST;
-
-
-typedef struct _DMUS_IO_MUTE
-{
- MUSIC_TIME mtTime;
- DWORD dwPChannel;
- DWORD dwPChannelMap;
-} DMUS_IO_MUTE;
-
-
-typedef struct _DMUS_IO_TIMESIGNATURE_ITEM
-{
- MUSIC_TIME lTime;
- BYTE bBeatsPerMeasure;
- BYTE bBeat;
- WORD wGridsPerBeat;
-} DMUS_IO_TIMESIGNATURE_ITEM;
+struct _DMUS_IO_SUBCHORD {
+ DWORD dwChordPattern;
+ DWORD dwScalePattern;
+ DWORD dwInversionPoints;
+ DWORD dwLevels;
+ BYTE bChordRoot;
+ BYTE bScaleRoot;
+};
+struct _DMUS_IO_COMMAND {
+ MUSIC_TIME mtTime;
+ WORD wMeasure;
+ BYTE bBeat;
+ BYTE bCommand;
+ BYTE bGrooveLevel;
+ BYTE bGrooveRange;
+ BYTE bRepeatMode;
+};
-typedef struct _DMUS_IO_VALID_START
-{
- MUSIC_TIME mtTime;
-} DMUS_IO_VALID_START;
+struct _DMUS_IO_TOOL_HEADER {
+ GUID guidClassID;
+ long lIndex;
+ DWORD cPChannels;
+ FOURCC ckid;
+ FOURCC fccType;
+ DWORD dwPChannels[1];
+};
-typedef struct _DMUS_IO_PLAY_MARKER
-{
- MUSIC_TIME mtTime;
-} DMUS_IO_PLAY_MARKER;
+struct _DMUS_IO_PORTCONFIG_HEADER {
+ GUID guidPort;
+ DWORD dwPChannelBase;
+ DWORD dwPChannelCount;
+ DWORD dwFlags;
+};
+struct _DMUS_IO_PCHANNELTOBUFFER_HEADER {
+ DWORD dwPChannelBase;
+ DWORD dwPChannelCount;
+ DWORD dwBufferCount;
+ DWORD dwFlags;
+};
-typedef struct _DMUS_IO_SEGMENT_TRACK_HEADER
-{
- DWORD dwFlags;
-} DMUS_IO_SEGMENT_TRACK_HEADER;
+struct _DMUS_IO_BUFFER_ATTRIBUTES_HEADER {
+ GUID guidBufferID;
+ DWORD dwFlags;
+};
-typedef struct _DMUS_IO_SEGMENT_ITEM_HEADER
-{
- MUSIC_TIME lTimeLogical;
- MUSIC_TIME lTimePhysical;
- DWORD dwPlayFlags;
- DWORD dwFlags;
-} DMUS_IO_SEGMENT_ITEM_HEADER;
+struct _DMUS_IO_BAND_TRACK_HEADER {
+ BOOL bAutoDownload;
+};
+struct _DMUS_IO_BAND_ITEM_HEADER {
+ MUSIC_TIME lBandTime;
+};
-typedef struct _DMUS_IO_SCRIPTTRACK_EVENTHEADER
-{
- DWORD dwFlags;
- MUSIC_TIME lTimeLogical;
- MUSIC_TIME lTimePhysical;
-} DMUS_IO_SCRIPTTRACK_EVENTHEADER;
+struct _DMUS_IO_BAND_ITEM_HEADER2 {
+ MUSIC_TIME lBandTimeLogical;
+ MUSIC_TIME lBandTimePhysical;
+};
+struct _DMUS_IO_INSTRUMENT {
+ DWORD dwPatch;
+ DWORD dwAssignPatch;
+ DWORD dwNoteRanges[4];
+ DWORD dwPChannel;
+ DWORD dwFlags;
+ BYTE bPan;
+ BYTE bVolume;
+ short nTranspose;
+ DWORD dwChannelPriority;
+ short nPitchBendRange;
+};
-typedef struct _DMUS_IO_LYRICSTRACK_EVENTHEADER
-{
- DWORD dwFlags;
- DWORD dwTimingFlags;
- MUSIC_TIME lTimeLogical;
- MUSIC_TIME lTimePhysical;
-} DMUS_IO_LYRICSTRACK_EVENTHEADER;
+struct _DMUS_IO_WAVE_HEADER {
+ REFERENCE_TIME rtReadAhead;
+ DWORD dwFlags;
+};
+struct _DMUS_IO_WAVE_TRACK_HEADER {
+ long lVolume;
+ DWORD dwFlags;
+};
-typedef struct _DMUS_IO_PARAMCONTROLTRACK_OBJECTHEADER
-{
- DWORD dwFlags;
- GUID guidTimeFormat;
+struct _DMUS_IO_WAVE_PART_HEADER {
+ long lVolume;
+ DWORD dwVariations;
DWORD dwPChannel;
- DWORD dwStage;
- DWORD dwBuffer;
- GUID guidObject;
- DWORD dwIndex;
-} DMUS_IO_PARAMCONTROLTRACK_OBJECTHEADER;
-
-typedef struct _DMUS_IO_PARAMCONTROLTRACK_PARAMHEADER
-{
+ DWORD dwLockToPart;
DWORD dwFlags;
DWORD dwIndex;
-} DMUS_IO_PARAMCONTROLTRACK_PARAMHEADER;
+};
-typedef struct _DMUS_IO_PARAMCONTROLTRACK_CURVEINFO
-{
- MUSIC_TIME mtStartTime;
- MUSIC_TIME mtEndTime;
- float fltStartValue;
- float fltEndValue;
- DWORD dwCurveType;
- DWORD dwFlags;
-} DMUS_IO_PARAMCONTROLTRACK_CURVEINFO;
+struct _DMUS_IO_WAVE_ITEM_HEADER {
+ long lVolume;
+ long lPitch;
+ DWORD dwVariations;
+ REFERENCE_TIME rtTime;
+ REFERENCE_TIME rtStartOffset;
+ REFERENCE_TIME rtReserved;
+ REFERENCE_TIME rtDuration;
+ MUSIC_TIME mtLogicalTime;
+ DWORD dwLoopStart;
+ DWORD dwLoopEnd;
+ DWORD dwFlags;
+ WORD wVolumeRange;
+ WORD wPitchRange;
+};
+struct _DMUS_IO_CONTAINER_HEADER {
+ DWORD dwFlags;
+};
-typedef DMUS_CONNECTION_RULE DMUS_IO_CONNECTION_RULE;
+struct _DMUS_IO_CONTAINED_OBJECT_HEADER {
+ GUID guidClassID;
+ DWORD dwFlags;
+ FOURCC ckid;
+ FOURCC fccType;
+};
-typedef DMUS_MELODY_FRAGMENT DMUS_IO_MELODY_FRAGMENT;
+struct _DMUS_IO_SEGMENT_HEADER {
+ DWORD dwRepeats;
+ MUSIC_TIME mtLength;
+ MUSIC_TIME mtPlayStart;
+ MUSIC_TIME mtLoopStart;
+ MUSIC_TIME mtLoopEnd;
+ DWORD dwResolution;
+ /* DX8 */
+ REFERENCE_TIME rtLength;
+ DWORD dwFlags;
+ DWORD dwReserved;
+ /* DX9 */
+ REFERENCE_TIME rtLoopStart;
+ REFERENCE_TIME rtLoopEnd;
+ REFERENCE_TIME rtPlayStart;
+};
-typedef struct _DMUS_IO_MELFORM
-{
- DWORD dwPlaymode;
-} DMUS_IO_MELFORM;
+struct _DMUS_IO_TRACK_HEADER {
+ GUID guidClassID;
+ DWORD dwPosition;
+ DWORD dwGroup;
+ FOURCC ckid;
+ FOURCC fccType;
+};
+struct _DMUS_IO_TRACK_EXTRAS_HEADER {
+ DWORD dwFlags;
+ DWORD dwPriority;
+};
-typedef struct _DSOUND_IO_DSBUFFERDESC
-{
- DWORD dwFlags;
- WORD nChannels;
- LONG lVolume;
- LONG lPan;
- DWORD dwReserved;
-} DSOUND_IO_DSBUFFERDESC;
+struct _DMUS_IO_REFERENCE {
+ GUID guidClassID;
+ DWORD dwValidData;
+};
-typedef struct _DSOUND_IO_DSBUSID
-{
- DWORD busid[1];
-} DSOUND_IO_DSBUSID;
+struct _DMUS_IO_CHORDMAP {
+ WCHAR wszLoadName[20];
+ DWORD dwScalePattern;
+ DWORD dwFlags;
+};
-typedef struct _DSOUND_IO_3D
-{
- GUID guid3DAlgorithm;
- DS3DBUFFER ds3d;
-} DSOUND_IO_3D;
+struct _DMUS_IO_CHORDMAP_SUBCHORD {
+ DWORD dwChordPattern;
+ DWORD dwScalePattern;
+ DWORD dwInvertPattern;
+ BYTE bChordRoot;
+ BYTE bScaleRoot;
+ WORD wCFlags;
+ DWORD dwLevels;
+};
-typedef struct _DSOUND_IO_DXDMO_HEADER
-{
- DWORD dwEffectFlags;
- GUID guidDSFXClass;
- GUID guidReserved;
- GUID guidSendBuffer;
- DWORD dwReserved;
-} DSOUND_IO_DXDMO_HEADER;
+struct _DMUS_IO_CHORDENTRY {
+ DWORD dwFlags;
+ WORD wConnectionID;
+};
-typedef struct _DSOUND_IO_DXDMO_DATA
-{
- DWORD data[1];
-} DSOUND_IO_DXDMO_DATA;
+struct _DMUS_IO_NEXTCHORD {
+ DWORD dwFlags;
+ WORD nWeight;
+ WORD wMinBeats;
+ WORD wMaxBeats;
+ WORD wConnectionID;
+};
+
+struct _DMUS_IO_CHORDMAP_SIGNPOST {
+ DWORD dwChords;
+ DWORD dwFlags;
+};
+
+struct _DMUS_IO_SCRIPT_HEADER {
+ DWORD dwFlags;
+};
+
+struct _DMUS_IO_SIGNPOST {
+ MUSIC_TIME mtTime;
+ DWORD dwChords;
+ WORD wMeasure;
+};
+
+struct _DMUS_IO_MUTE {
+ MUSIC_TIME mtTime;
+ DWORD dwPChannel;
+ DWORD dwPChannelMap;
+};
+
+struct _DMUS_IO_TIMESIGNATURE_ITEM {
+ MUSIC_TIME lTime;
+ BYTE bBeatsPerMeasure;
+ BYTE bBeat;
+ WORD wGridsPerBeat;
+};
+
+struct _DMUS_IO_VALID_START {
+ MUSIC_TIME mtTime;
+};
+
+struct _DMUS_IO_PLAY_MARKER {
+ MUSIC_TIME mtTime;
+};
+
+struct _DMUS_IO_SEGMENT_TRACK_HEADER {
+ DWORD dwFlags;
+};
+
+struct _DMUS_IO_SEGMENT_ITEM_HEADER {
+ MUSIC_TIME llTimeLogical;
+ MUSIC_TIME lTimePhysical;
+ DWORD dwPlayFlags;
+ DWORD dwFlags;
+};
+
+struct _DMUS_IO_SCRIPTTRACK_EVENTHEADER {
+ DWORD dwFlags;
+ MUSIC_TIME lTimeLogical;
+ MUSIC_TIME lTimePhysical;
+};
+
+struct _DMUS_IO_LYRICSTRACK_EVENTHEADER {
+ DWORD dwFlags;
+ DWORD dwTimingFlags;
+ MUSIC_TIME lTimeLogical;
+ MUSIC_TIME lTimePhysical;
+};
+
+struct _DMUS_IO_PARAMCONTROLTRACK_OBJECTHEADER {
+ DWORD dwFlags;
+ GUID guidTimeFormat;
+ DWORD dwPChannel;
+ DWORD dwStage;
+ DWORD dwBuffer;
+ GUID guidObject;
+ DWORD dwIndex;
+};
+
+struct _DMUS_IO_PARAMCONTROLTRACK_PARAMHEADER {
+ DWORD dwFlags;
+ DWORD dwIndex;
+};
+
+struct _DMUS_IO_PARAMCONTROLTRACK_CURVEINFO {
+ MUSIC_TIME mtStartTime;
+ MUSIC_TIME mtEndTime;
+ float fltStartValue;
+ float fltEndValue;
+ DWORD dwCurveType;
+ DWORD dwFlags;
+};
+
+struct _DSOUND_IO_DSBUFFERDESC {
+ DWORD dwFlags;
+ WORD nChannels;
+ LONG lVolume;
+ LONG lPan;
+ DWORD dwReserved;
+};
+
+struct _DSOUND_IO_DSBUSID {
+ DWORD busid[1];
+};
+
+struct _DSOUND_IO_3D {
+ GUID guid3DAlgorithm;
+ DS3DBUFFER ds3d;
+};
+
+struct _DSOUND_IO_DXDMO_HEADER {
+ DWORD dwEffectFlags;
+ GUID guidDSFXClass;
+ GUID guidReserved;
+ GUID guidSendBuffer;
+ DWORD dwReserved;
+};
+
+struct _DSOUND_IO_DXDMO_DATA {
+ DWORD data[1];
+};
#ifdef __cplusplus
}
#endif
+#include <poppack.h>
+
#endif /* __WINE_DMUSIC_FILEFORMATS_H */
diff --git a/include/dmusici.h b/include/dmusici.h
index 12a22b1..09e9497 100644
--- a/include/dmusici.h
+++ b/include/dmusici.h
@@ -1,7 +1,7 @@
/*
* DirectMusic Performance API
*
- * 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,258 +21,279 @@
#ifndef __WINE_DMUSIC_PERFORMANCE_H
#define __WINE_DMUSIC_PERFORMANCE_H
+#ifndef __WINESRC__
+#include <windows.h>
+#else
+#include <oleauto.h> /* VARIANT */
+#endif /* __WINESRC__ */
+
#include <objbase.h>
#include <mmsystem.h>
-
-#include <oleauto.h>
+#include <dmusicc.h>
+#include <dmplugin.h>
+#include <pshpack8.h>
#ifdef __cplusplus
extern "C" {
#endif
-
-/*****************************************************************************
- * Types
- */
-typedef WORD TRANSITION_TYPE;
-/* Already defined somewhere? */
-/* typedef __int64 REFERENCE_TIME; */
-typedef long MUSIC_TIME;
-
/*****************************************************************************
* Predeclare the interfaces
*/
/* CLSIDs */
-DEFINE_GUID(CLSID_DirectMusicPerformance, 0xd2ac2881,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(CLSID_DirectMusicSegment, 0xd2ac2882,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(CLSID_DirectMusicSegmentState, 0xd2ac2883,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(CLSID_DirectMusicGraph, 0xd2ac2884,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(CLSID_DirectMusicStyle, 0xd2ac288a,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(CLSID_DirectMusicChordMap, 0xd2ac288f,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(CLSID_DirectMusicComposer, 0xd2ac2890,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(CLSID_DirectMusicLoader, 0xd2ac2892,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(CLSID_DirectMusicBand, 0x79ba9e00,0xb6ee,0x11d1,0x86,0xbe,0x0,0xc0,0x4f,0xbf,0x8f,0xef);
-DEFINE_GUID(CLSID_DirectMusicPatternTrack, 0xd2ac2897,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(CLSID_DirectMusicScript, 0x810b5013,0xe88d,0x11d2,0x8b,0xc1,0x0,0x60,0x8,0x93,0xb1,0xb6);
-DEFINE_GUID(CLSID_DirectMusicContainer, 0x9301e380,0x1f22,0x11d3,0x82,0x26,0xd2,0xfa,0x76,0x25,0x5d,0x47);
-DEFINE_GUID(CLSID_DirectSoundWave, 0x8a667154,0xf9cb,0x11d2,0xad,0x8a,0x0,0x60,0xb0,0x57,0x5a,0xbc);
-DEFINE_GUID(CLSID_DirectMusicSong, 0xaed5f0a5,0xd972,0x483d,0xa3,0x84,0x64,0x9d,0xfe,0xb9,0xc1,0x81);
-DEFINE_GUID(CLSID_DirectMusicAudioPathConfig, 0xee0b9ca0,0xa81e,0x11d3,0x9b,0xd1,0x0,0x80,0xc7,0x15,0xa,0x74);
-/* these CLSIDs aren't officially declared in any dmusic header, but are used by regsvr implementations*/
-DEFINE_GUID(CLSID_DirectMusicSynthSink, 0xaec17ce3,0xa514,0x11d1,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
-DEFINE_GUID(CLSID_DirectMusicSection, 0x3f037241,0x414e,0x11d1,0xa7,0xce,0x00,0xa0,0xc9,0x13,0xf7,0x3c);
-DEFINE_GUID(CLSID_DirectMusicAuditionTrack, 0xd2ac2897,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
-DEFINE_GUID(CLSID_DirectMusicSegTriggerTrack, 0xbae4d665,0x4ea1,0x11d3,0x8b,0xda,0x00,0x60,0x08,0x93,0xb1,0xb6);
-DEFINE_GUID(CLSID_DirectMusicAudioPath, 0xee0b9ca0,0xa81e,0x11d3,0x9b,0xd1,0x00,0x80,0xc7,0x15,0x0a,0x74);
-DEFINE_GUID(CLSID_DirectMusicTemplate, 0xd30bcc65,0x60e8,0x11d1,0xa7,0xce,0x00,0xa0,0xc9,0x13,0xf7,0x3c);
-DEFINE_GUID(CLSID_DirectMusicScriptAutoImpSegment, 0x4062c116,0x0270,0x11d3,0x8b,0xcb,0x00,0x60,0x08,0x93,0xb1,0xb6);
-DEFINE_GUID(CLSID_AudioVBScript, 0x4ee17959,0x931e,0x49e4,0xa2,0xc6,0x97,0x7e,0xcf,0x36,0x28,0xf3);
-DEFINE_GUID(CLSID_DirectMusicScriptAutoImpPerformance, 0xa861c6e2,0xfcfc,0x11d2,0x8b,0xc9,0x00,0x60,0x08,0x93,0xb1,0xb6);
-DEFINE_GUID(CLSID_DirectMusicScripSourceCodeLoader, 0xc70eb77f,0xefd4,0x4678,0xa2,0x7b,0xbf,0x16,0x48,0xf3,0x0d,0x04); /* [sic] */
-DEFINE_GUID(CLSID_DirectMusicScriptAutoImpSegmentState, 0xebf2320a,0x2502,0x11d3,0x8b,0xd1,0x00,0x60,0x08,0x93,0xb1,0xb6);
-DEFINE_GUID(CLSID_DirectMusicScriptAutoImpAudioPathConfig, 0x1cebde3e,0x6b91,0x484a,0xaf,0x48,0x5e,0x4f,0x4e,0xd6,0xb1,0xe1);
-DEFINE_GUID(CLSID_DirectMusicScriptAutoImpAudioPath, 0x2c5f9b72,0x7148,0x4d97,0xbf,0xc9,0x68,0xa0,0xe0,0x76,0xbe,0xbd);
-DEFINE_GUID(CLSID_DirectMusicScriptAutoImpSong, 0xa16f1761,0xb6d8,0x42eb,0x8d,0x57,0x4a,0x44,0xfe,0xdd,0x3b,0xd2);
+DEFINE_GUID(CLSID_DirectMusicAudioPathConfig, 0xee0b9ca0,0xa81e,0x11d3,0x9b,0xd1,0x00,0x80,0xc7,0x15,0x0a,0x74);
+DEFINE_GUID(CLSID_DirectMusicBand, 0x79ba9e00,0xb6ee,0x11d1,0x86,0xbe,0x00,0xc0,0x4f,0xbf,0x8f,0xef);
+DEFINE_GUID(CLSID_DirectMusicChordMap, 0xd2ac288f,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicComposer, 0xd2ac2890,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicContainer, 0x9301e380,0x1f22,0x11d3,0x82,0x26,0xd2,0xfa,0x76,0x25,0x5d,0x47);
+DEFINE_GUID(CLSID_DirectMusicGraph, 0xd2ac2884,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicLoader, 0xd2ac2892,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicPatternTrack, 0xd2ac2897,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicPerformance, 0xd2ac2881,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicScript, 0x810b5013,0xe88d,0x11d2,0x8b,0xc1,0x00,0x60,0x08,0x93,0xb1,0xb6);
+DEFINE_GUID(CLSID_DirectMusicSegment, 0xd2ac2882,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicSegmentState, 0xd2ac2883,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicStyle, 0xd2ac288a,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectSoundWave, 0x8a667154,0xf9cb,0x11d2,0xad,0x8a,0x00,0x60,0xb0,0x57,0x5a,0xbc);
+/* MS doesn't support this in DX 9.0 and newer... but there's no harm in keeping it around */
+DEFINE_GUID(CLSID_DirectMusicSong, 0xaed5f0a5,0xd972,0x483d,0xa3,0x84,0x64,0x9d,0xfe,0xb9,0xc1,0x81);
+/* these CLSIDs aren't officially declared in any dmusic header, but are used by wine's regsvr implementations*/
+DEFINE_GUID(CLSID_DirectMusicSynthSink, 0xaec17ce3,0xa514,0x11d1,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
+DEFINE_GUID(CLSID_DirectMusicSection, 0x3f037241,0x414e,0x11d1,0xa7,0xce,0x00,0xa0,0xc9,0x13,0xf7,0x3c);
+DEFINE_GUID(CLSID_DirectMusicAuditionTrack, 0xd2ac2897,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(CLSID_DirectMusicSegTriggerTrack, 0xbae4d665,0x4ea1,0x11d3,0x8b,0xda,0x00,0x60,0x08,0x93,0xb1,0xb6);
+DEFINE_GUID(CLSID_DirectMusicAudioPath, 0xee0b9ca0,0xa81e,0x11d3,0x9b,0xd1,0x00,0x80,0xc7,0x15,0x0a,0x74);
+DEFINE_GUID(CLSID_DirectMusicTemplate, 0xd30bcc65,0x60e8,0x11d1,0xa7,0xce,0x00,0xa0,0xc9,0x13,0xf7,0x3c);
+DEFINE_GUID(CLSID_DirectMusicScriptAutoImpSegment, 0x4062c116,0x0270,0x11d3,0x8b,0xcb,0x00,0x60,0x08,0x93,0xb1,0xb6);
+DEFINE_GUID(CLSID_AudioVBScript, 0x4ee17959,0x931e,0x49e4,0xa2,0xc6,0x97,0x7e,0xcf,0x36,0x28,0xf3);
+DEFINE_GUID(CLSID_DirectMusicScriptAutoImpPerformance, 0xa861c6e2,0xfcfc,0x11d2,0x8b,0xc9,0x00,0x60,0x08,0x93,0xb1,0xb6);
+DEFINE_GUID(CLSID_DirectMusicScripSourceCodeLoader, 0xc70eb77f,0xefd4,0x4678,0xa2,0x7b,0xbf,0x16,0x48,0xf3,0x0d,0x04);
+DEFINE_GUID(CLSID_DirectMusicScriptAutoImpSegmentState, 0xebf2320a,0x2502,0x11d3,0x8b,0xd1,0x00,0x60,0x08,0x93,0xb1,0xb6);
+DEFINE_GUID(CLSID_DirectMusicScriptAutoImpAudioPathConfig, 0x1cebde3e,0x6b91,0x484a,0xaf,0x48,0x5e,0x4f,0x4e,0xd6,0xb1,0xe1);
+DEFINE_GUID(CLSID_DirectMusicScriptAutoImpAudioPath, 0x2c5f9b72,0x7148,0x4d97,0xbf,0xc9,0x68,0xa0,0xe0,0x76,0xbe,0xbd);
+DEFINE_GUID(CLSID_DirectMusicScriptAutoImpSong, 0xa16f1761,0xb6d8,0x42eb,0x8d,0x57,0x4a,0x44,0xfe,0xdd,0x3b,0xd2);
/* IIDs */
-DEFINE_GUID(IID_IDirectMusicAudioPath, 0xc87631f5,0x23be,0x4986,0x88,0x36,0x5,0x83,0x2f,0xcc,0x48,0xf9);
-DEFINE_GUID(IID_IDirectMusicBand, 0xd2ac28c0,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(IID_IDirectMusicChordMap, 0xd2ac28be,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(IID_IDirectMusicComposer, 0xd2ac28bf,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(IID_IDirectMusicContainer, 0x9301e386,0x1f22,0x11d3,0x82,0x26,0xd2,0xfa,0x76,0x25,0x5d,0x47);
-DEFINE_GUID(IID_IDirectMusicGetLoader, 0x68a04844,0xd13d,0x11d1,0xaf,0xa6,0x0,0xaa,0x0,0x24,0xd8,0xb6);
-DEFINE_GUID(IID_IDirectMusicGraph, 0x2befc277,0x5497,0x11d2,0xbc,0xcb,0x0,0xa0,0xc9,0x22,0xe6,0xeb);
-DEFINE_GUID(IID_IDirectMusicLoader, 0x2ffaaca2,0x5dca,0x11d2,0xaf,0xa6,0x0,0xaa,0x0,0x24,0xd8,0xb6);
-DEFINE_GUID(IID_IDirectMusicLoader8, 0x19e7c08c,0xa44,0x4e6a,0xa1,0x16,0x59,0x5a,0x7c,0xd5,0xde,0x8c);
-DEFINE_GUID(IID_IDirectMusicObject, 0xd2ac28b5,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(IID_IDirectMusicPatternTrack, 0x51c22e10,0xb49f,0x46fc,0xbe,0xc2,0xe6,0x28,0x8f,0xb9,0xed,0xe6);
-DEFINE_GUID(IID_IDirectMusicPerformance, 0x7d43d03,0x6523,0x11d2,0x87,0x1d,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(IID_IDirectMusicPerformance2, 0x6fc2cae0,0xbc78,0x11d2,0xaf,0xa6,0x0,0xaa,0x0,0x24,0xd8,0xb6);
-DEFINE_GUID(IID_IDirectMusicPerformance8, 0x679c4137,0xc62e,0x4147,0xb2,0xb4,0x9d,0x56,0x9a,0xcb,0x25,0x4c);
-DEFINE_GUID(IID_IDirectMusicScript, 0x2252373a,0x5814,0x489b,0x82,0x9,0x31,0xfe,0xde,0xba,0xf1,0x37);
-DEFINE_GUID(IID_IDirectMusicSegment, 0xf96029a2,0x4282,0x11d2,0x87,0x17,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(IID_IDirectMusicSegment2, 0xd38894d1,0xc052,0x11d2,0x87,0x2f,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(IID_IDirectMusicSegment8, 0xc6784488,0x41a3,0x418f,0xaa,0x15,0xb3,0x50,0x93,0xba,0x42,0xd4);
-DEFINE_GUID(IID_IDirectMusicSegmentState, 0xa3afdcc7,0xd3ee,0x11d1,0xbc,0x8d,0x0,0xa0,0xc9,0x22,0xe6,0xeb);
-DEFINE_GUID(IID_IDirectMusicSegmentState8, 0xa50e4730,0xae4,0x48a7,0x98,0x39,0xbc,0x4,0xbf,0xe0,0x77,0x72);
-DEFINE_GUID(IID_IDirectMusicSong, 0xa862b2ec,0x3676,0x4982,0x85,0xa,0x78,0x42,0x77,0x5e,0x1d,0x86);
-DEFINE_GUID(IID_IDirectMusicStyle, 0xd2ac28bd,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(IID_IDirectMusicStyle8, 0xfd24ad8a,0xa260,0x453d,0xbf,0x50,0x6f,0x93,0x84,0xf7,0x9,0x85);
+DEFINE_GUID(IID_IDirectMusicAudioPath, 0xc87631f5,0x23be,0x4986,0x88,0x36,0x05,0x83,0x2f,0xcc,0x48,0xf9);
+DEFINE_GUID(IID_IDirectMusicBand, 0xd2ac28c0,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicChordMap, 0xd2ac28be,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicComposer, 0xd2ac28bf,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicContainer, 0x9301e386,0x1f22,0x11d3,0x82,0x26,0xd2,0xfa,0x76,0x25,0x5d,0x47);
+DEFINE_GUID(IID_IDirectMusicGetLoader, 0x68a04844,0xd13d,0x11d1,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
+DEFINE_GUID(IID_IDirectMusicGraph, 0x2befc277,0x5497,0x11d2,0xbc,0xcb,0x00,0xa0,0xc9,0x22,0xe6,0xeb);
+DEFINE_GUID(IID_IDirectMusicLoader, 0x2ffaaca2,0x5dca,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
+DEFINE_GUID(IID_IDirectMusicLoader8, 0x19e7c08c,0x0a44,0x4e6a,0xa1,0x16,0x59,0x5a,0x7c,0xd5,0xde,0x8c);
+DEFINE_GUID(IID_IDirectMusicObject, 0xd2ac28b5,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicPatternTrack, 0x51c22e10,0xb49f,0x46fc,0xbe,0xc2,0xe6,0x28,0x8f,0xb9,0xed,0xe6);
+DEFINE_GUID(IID_IDirectMusicPerformance, 0x07d43d03,0x6523,0x11d2,0x87,0x1d,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicPerformance2, 0x6fc2cae0,0xbc78,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
+DEFINE_GUID(IID_IDirectMusicPerformance8, 0x679c4137,0xc62e,0x4147,0xb2,0xb4,0x9d,0x56,0x9a,0xcb,0x25,0x4c);
+DEFINE_GUID(IID_IDirectMusicScript, 0x2252373a,0x5814,0x489b,0x82,0x09,0x31,0xfe,0xde,0xba,0xf1,0x37);
+DEFINE_GUID(IID_IDirectMusicSegment, 0xf96029a2,0x4282,0x11d2,0x87,0x17,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicSegment2, 0xd38894d1,0xc052,0x11d2,0x87,0x2f,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicSegment8, 0xc6784488,0x41a3,0x418f,0xaa,0x15,0xb3,0x50,0x93,0xba,0x42,0xd4);
+DEFINE_GUID(IID_IDirectMusicSegmentState, 0xa3afdcc7,0xd3ee,0x11d1,0xbc,0x8d,0x00,0xa0,0xc9,0x22,0xe6,0xeb);
+DEFINE_GUID(IID_IDirectMusicSegmentState8, 0xa50e4730,0x0ae4,0x48a7,0x98,0x39,0xbc,0x04,0xbf,0xe0,0x77,0x72);
+DEFINE_GUID(IID_IDirectMusicStyle, 0xd2ac28bd,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(IID_IDirectMusicStyle8, 0xfd24ad8a,0xa260,0x453d,0xbf,0x50,0x6f,0x93,0x84,0xf7,0x09,0x85);
/* IIDs of unchanged interfaces */
-#define IID_IDirectMusicAudioPath8 IID_IDirectMusicAudioPath
-#define IID_IDirectMusicBand8 IID_IDirectMusicBand
-#define IID_IDirectMusicChordMap8 IID_IDirectMusicChordMap
-#define IID_IDirectMusicComposer8 IID_IDirectMusicComposer
-#define IID_IDirectMusicContainer8 IID_IDirectMusicContainer
-#define IID_IDirectMusicGetLoader8 IID_IDirectMusicGetLoader
-#define IID_IDirectMusicGraph8 IID_IDirectMusicGraph
-#define IID_IDirectMusicObject8 IID_IDirectMusicObject
+#define IID_IDirectMusicAudioPath8 IID_IDirectMusicAudioPath
+#define IID_IDirectMusicBand8 IID_IDirectMusicBand
+#define IID_IDirectMusicChordMap8 IID_IDirectMusicChordMap
+#define IID_IDirectMusicComposer8 IID_IDirectMusicComposer
+#define IID_IDirectMusicContainer8 IID_IDirectMusicContainer
+#define IID_IDirectMusicGetLoader8 IID_IDirectMusicGetLoader
+#define IID_IDirectMusicGraph8 IID_IDirectMusicGraph
+#define IID_IDirectMusicObject8 IID_IDirectMusicObject
#define IID_IDirectMusicPatternTrack8 IID_IDirectMusicPatternTrack
-#define IID_IDirectMusicScript8 IID_IDirectMusicScript
-#define IID_IDirectMusicSong8 IID_IDirectMusicSong
+#define IID_IDirectMusicScript8 IID_IDirectMusicScript
/* typedef definitions */
-typedef struct IDirectMusicAudioPath IDirectMusicAudioPath, *LPDIRECTMUSICAUDIOPATH, IDirectMusicAudioPath8, *LPDIRECTMUSICAUDIOPATH8;
-typedef struct IDirectMusicBand IDirectMusicBand, *LPDIRECTMUSICBAND, IDirectMusicBand8, *LPDIRECTMUSICBAND8, *LPDMUS_BAND;
-typedef struct IDirectMusicChordMap IDirectMusicChordMap, *LPDIRECTMUSICCHORDMAP, IDirectMusicChordMap8, *LPDIRECTMUSICCHORDMAP8;
-typedef struct IDirectMusicComposer IDirectMusicComposer, *LPDIRECTMUSICCOMPOSER;
-typedef struct IDirectMusicContainer IDirectMusicContainer, *LPDIRECTMUSICCONTAINER, IDirectMusicContainer8, *LPDIRECTMUSICCONTAINER8;
-typedef struct IDirectMusicGetLoader IDirectMusicGetLoader, *LPDIRECTMUSICGETLOADER, IDirectMusicGetLoader8, *LPDIRECTMUSICGETLOADER8;
-typedef struct IDirectMusicGraph IDirectMusicGraph, *LPDIRECTMUSICGRAPH, IDirectMusicGraph8, *LPDIRECTMUSICGRAPH8;
-typedef struct IDirectMusicLoader IDirectMusicLoader, *LPDIRECTMUSICLOADER, *LPDMUS_LOADER;
-typedef struct IDirectMusicLoader8 IDirectMusicLoader8, *LPDIRECTMUSICLOADER8;
-typedef struct IDirectMusicObject IDirectMusicObject, *LPDIRECTMUSICOBJECT, IDirectMusicObject8, *LPDIRECTMUSICOBJECT8, *LPDMUS_OBJECT;
-typedef struct IDirectMusicPatternTrack IDirectMusicPatternTrack, *LPDIRECTMUSICPATTERNTRACK, IDirectMusicPatternTrack8, *LPDIRECTMUSICPATTERNTRACK8;
-typedef struct IDirectMusicPerformance IDirectMusicPerformance, *LPDIRECTMUSICPERFORMANCE;
-typedef struct IDirectMusicPerformance2 IDirectMusicPerformance2, *LPDIRECTMUSICPERFORMANCE2;
-typedef struct IDirectMusicPerformance8 IDirectMusicPerformance8, *LPDIRECTMUSICPERFORMANCE8;
-typedef struct IDirectMusicScript IDirectMusicScript, *LPDIRECTMUSICSCRIPT, IDirectMusicScript8, *LPDIRECTMUSICSCRIPT8;
-typedef struct IDirectMusicSegment IDirectMusicSegment, *LPDIRECTMUSICSEGMENT;
-typedef struct IDirectMusicSegment2 IDirectMusicSegment2, *LPDIRECTMUSICSEGMENT2;
-typedef struct IDirectMusicSegment8 IDirectMusicSegment8, *LPDIRECTMUSICSEGMENT8;
-typedef struct IDirectMusicSegmentState IDirectMusicSegmentState, *LPDIRECTMUSICSEGMENTSTATE;
-typedef struct IDirectMusicSegmentState8 IDirectMusicSegmentState8, *LPDIRECTMUSICSEGMENTSTATE8;
-typedef struct IDirectMusicSong IDirectMusicSong, *LPDIRECTMUSICSONG, IDirectMusicSong8, *LPDIRECTMUSICSONG8;
-typedef struct IDirectMusicStyle IDirectMusicStyle, *LPDIRECTMUSICSTYLE;
-typedef struct IDirectMusicStyle8 IDirectMusicStyle8, *LPDIRECTMUSICSTYLE8;
-/* Imported from dmplugin.h */
-typedef struct IDirectMusicTool IDirectMusicTool, *LPDIRECTMUSICTOOL;
-typedef struct IDirectMusicTool8 IDirectMusicTool8, *LPDIRECTMUSICTOOL8;
-typedef struct IDirectMusicTrack IDirectMusicTrack, *LPDIRECTMUSICTRACK;
-typedef struct IDirectMusicTrack8 IDirectMusicTrack8, *LPDIRECTMUSICTRACK8;
+typedef struct IDirectMusicBand IDirectMusicBand, *LPDIRECTMUSICBAND;
+typedef struct IDirectMusicBand IDirectMusicBand8, *LPDIRECTMUSICBAND8;
+typedef struct IDirectMusicObject IDirectMusicObject, *LPDIRECTMUSICOBJECT;
+typedef struct IDirectMusicObject IDirectMusicObject8, *LPDIRECTMUSICOBJECT8;
+typedef struct IDirectMusicLoader IDirectMusicLoader, *LPDIRECTMUSICLOADER;
+typedef struct IDirectMusicLoader IDirectMusicLoader8, *LPDIRECTMUSICLOADER8;
+typedef struct IDirectMusicGetLoader IDirectMusicGetLoader, *LPDIRECTMUSICGETLOADER;
+typedef struct IDirectMusicGetLoader IDirectMusicGetLoader8, *LPDIRECTMUSICGETLOADER8;
+typedef struct IDirectMusicAudioPath IDirectMusicAudioPath, *LPDIRECTMUSICAUDIOPATH;
+typedef struct IDirectMusicAudioPath IDirectMusicAudioPath8, *LPDIRECTMUSICAUDIOPATH8;
+typedef struct IDirectMusicStyle IDirectMusicStyle, *LPDIRECTMUSICSTYLE;
+typedef struct IDirectMusicStyle8 IDirectMusicStyle8, *LPDIRECTMUSICSTYLE8;
+typedef struct IDirectMusicChordMap IDirectMusicChordMap, *LPDIRECTMUSICCHORDMAP;
+typedef struct IDirectMusicChordMap IDirectMusicChordMap8, *LPDIRECTMUSICCHORDMAP8;
+typedef struct IDirectMusicComposer IDirectMusicComposer, *LPDIRECTMUSICCOMPOSER;
+typedef struct IDirectMusicComposer IDirectMusicComposer8, *LPDIRECTMUSICCOMPOSER8;
+typedef struct IDirectMusicPatternTrack IDirectMusicPatternTrack, *LPDIRECTMUSICPATTERNTRACK;
+typedef struct IDirectMusicPatternTrack IDirectMusicPatternTrack8, *LPDIRECTMUSICPATTERNTRACK8;
+typedef struct IDirectMusicScript IDirectMusicScript, *LPDIRECTMUSICSCRIPT;
+typedef struct IDirectMusicScript IDirectMusicScript8, *LPDIRECTMUSICSCRIPT8;
+typedef struct IDirectMusicContainer IDirectMusicContainer, *LPDIRECTMUSICCONTAINER;
+typedef struct IDirectMusicContainer IDirectMusicContainer8, *LPDIRECTMUSICCONTAINER8;
-DEFINE_GUID(GUID_DirectMusicAllTypes, 0xd2ac2893,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
+/* RPC declarations */
+typedef struct IDirectMusicBand __RPC_FAR *LPDMUS_BAND;
+typedef struct IDirectMusicLoader __RPC_FAR *LPDMUS_LOADER;
+typedef struct IDirectMusicObject __RPC_FAR *LPDMUS_OBJECT;
-DEFINE_GUID(GUID_NOTIFICATION_SEGMENT, 0xd2ac2899,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(GUID_NOTIFICATION_PERFORMANCE, 0x81f75bc5,0x4e5d,0x11d2,0xbc,0xc7,0x0,0xa0,0xc9,0x22,0xe6,0xeb);
-DEFINE_GUID(GUID_NOTIFICATION_MEASUREANDBEAT, 0xd2ac289a,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(GUID_NOTIFICATION_CHORD, 0xd2ac289b,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(GUID_NOTIFICATION_COMMAND, 0xd2ac289c,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(GUID_NOTIFICATION_RECOMPOSE, 0xd348372b,0x945b,0x45ae,0xa5,0x22,0x45,0xf,0x12,0x5b,0x84,0xa5);
-
-DEFINE_GUID(GUID_CommandParam, 0xd2ac289d,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(GUID_CommandParam2, 0x28f97ef7,0x9538,0x11d2,0x97,0xa9,0x0,0xc0,0x4f,0xa3,0x6e,0x58);
-DEFINE_GUID(GUID_CommandParamNext, 0x472afe7a,0x281b,0x11d3,0x81,0x7d,0x0,0xc0,0x4f,0xa3,0x6e,0x58);
-DEFINE_GUID(GUID_ChordParam, 0xd2ac289e,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(GUID_RhythmParam, 0xd2ac289f,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(GUID_IDirectMusicStyle, 0xd2ac28a1,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(GUID_TimeSignature, 0xd2ac28a4,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(GUID_TempoParam, 0xd2ac28a5,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(GUID_Valid_Start_Time, 0x7f6b1760,0x1fdb,0x11d3,0x82,0x26,0x44,0x45,0x53,0x54,0x0,0x0);
-DEFINE_GUID(GUID_Play_Marker, 0xd8761a41,0x801a,0x11d3,0x9b,0xd1,0xda,0xf7,0xe1,0xc3,0xd8,0x34);
-DEFINE_GUID(GUID_BandParam, 0x2bb1938,0xcb8b,0x11d2,0x8b,0xb9,0x0,0x60,0x8,0x93,0xb1,0xb6);
-DEFINE_GUID(GUID_IDirectMusicBand, 0xd2ac28ac,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(GUID_IDirectMusicChordMap, 0xd2ac28ad,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(GUID_MuteParam, 0xd2ac28af,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-
-DEFINE_GUID(GUID_Download, 0xd2ac28a7,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(GUID_Unload, 0xd2ac28a8,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(GUID_ConnectToDLSCollection, 0x1db1ae6b,0xe92e,0x11d1,0xa8,0xc5,0x0,0xc0,0x4f,0xa3,0x72,0x6e);
-DEFINE_GUID(GUID_Enable_Auto_Download, 0xd2ac28a9,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(GUID_Disable_Auto_Download, 0xd2ac28aa,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(GUID_Clear_All_Bands, 0xd2ac28ab,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(GUID_StandardMIDIFile, 0x6621075,0xe92e,0x11d1,0xa8,0xc5,0x0,0xc0,0x4f,0xa3,0x72,0x6e);
-#define GUID_IgnoreBankSelectForGM GUID_StandardMIDIFile
-
-DEFINE_GUID(GUID_DisableTimeSig, 0x45fc707b,0x1db4,0x11d2,0xbc,0xac,0x0,0xa0,0xc9,0x22,0xe6,0xeb);
-DEFINE_GUID(GUID_EnableTimeSig, 0x45fc707c,0x1db4,0x11d2,0xbc,0xac,0x0,0xa0,0xc9,0x22,0xe6,0xeb);
-DEFINE_GUID(GUID_DisableTempo, 0x45fc707d,0x1db4,0x11d2,0xbc,0xac,0x0,0xa0,0xc9,0x22,0xe6,0xeb);
-DEFINE_GUID(GUID_EnableTempo, 0x45fc707e,0x1db4,0x11d2,0xbc,0xac,0x0,0xa0,0xc9,0x22,0xe6,0xeb);
-
-DEFINE_GUID(GUID_SeedVariations, 0x65b76fa5,0xff37,0x11d2,0x81,0x4e,0x0,0xc0,0x4f,0xa3,0x6e,0x58);
-DEFINE_GUID(GUID_MelodyFragment, 0xb291c7f2,0xb616,0x11d2,0x97,0xfa,0x0,0xc0,0x4f,0xa3,0x6e,0x58);
-DEFINE_GUID(GUID_Clear_All_MelodyFragments, 0x8509fee6,0xb617,0x11d2,0x97,0xfa,0x0,0xc0,0x4f,0xa3,0x6e,0x58);
-DEFINE_GUID(GUID_Variations, 0x11f72cce,0x26e6,0x4ecd,0xaf,0x2e,0xd6,0x68,0xe6,0x67,0x7,0xd8);
-DEFINE_GUID(GUID_DownloadToAudioPath, 0x9f2c0341,0xc5c4,0x11d3,0x9b,0xd1,0x44,0x45,0x53,0x54,0x0,0x0);
-DEFINE_GUID(GUID_UnloadFromAudioPath, 0x9f2c0342,0xc5c4,0x11d3,0x9b,0xd1,0x44,0x45,0x53,0x54,0x0,0x0);
-
-DEFINE_GUID(GUID_PerfMasterTempo, 0xd2ac28b0,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(GUID_PerfMasterVolume, 0xd2ac28b1,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(GUID_PerfMasterGrooveLevel, 0xd2ac28b2,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd);
-DEFINE_GUID(GUID_PerfAutoDownload, 0xfb09565b,0x3631,0x11d2,0xbc,0xb8,0x0,0xa0,0xc9,0x22,0xe6,0xeb);
-
-DEFINE_GUID(GUID_DefaultGMCollection, 0xf17e8673,0xc3b4,0x11d1,0x87,0xb,0x0,0x60,0x8,0x93,0xb1,0xbd);
-
-DEFINE_GUID(GUID_Synth_Default, 0x26bb9432,0x45fe,0x48d3,0xa3,0x75,0x24,0x72,0xc5,0xe3,0xe7,0x86);
-
-DEFINE_GUID(GUID_Buffer_Reverb, 0x186cc541,0xdb29,0x11d3,0x9b,0xd1,0x0,0x80,0xc7,0x15,0xa,0x74);
-DEFINE_GUID(GUID_Buffer_EnvReverb, 0x186cc542,0xdb29,0x11d3,0x9b,0xd1,0x0,0x80,0xc7,0x15,0xa,0x74);
-DEFINE_GUID(GUID_Buffer_Stereo, 0x186cc545,0xdb29,0x11d3,0x9b,0xd1,0x0,0x80,0xc7,0x15,0xa,0x74);
-DEFINE_GUID(GUID_Buffer_3D_Dry, 0x186cc546,0xdb29,0x11d3,0x9b,0xd1,0x0,0x80,0xc7,0x15,0xa,0x74);
-DEFINE_GUID(GUID_Buffer_Mono, 0x186cc547,0xdb29,0x11d3,0x9b,0xd1,0x0,0x80,0xc7,0x15,0xa,0x74);
+/* GUIDs - all types loader */
+DEFINE_GUID(GUID_DirectMusicAllTypes, 0xd2ac2893,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+/* GUIDs - notification */
+DEFINE_GUID(GUID_NOTIFICATION_CHORD, 0xd2ac289b,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_NOTIFICATION_COMMAND, 0xd2ac289c,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_NOTIFICATION_MEASUREANDBEAT, 0xd2ac289a,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_NOTIFICATION_PERFORMANCE, 0x81f75bc5,0x4e5d,0x11d2,0xbc,0xc7,0x00,0xa0,0xc9,0x22,0xe6,0xeb);
+DEFINE_GUID(GUID_NOTIFICATION_RECOMPOSE, 0xd348372b,0x945b,0x45ae,0xa5,0x22,0x45,0x0f,0x12,0x5b,0x84,0xa5);
+DEFINE_GUID(GUID_NOTIFICATION_SEGMENT, 0xd2ac2899,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+/* GUIDs - param types */
+DEFINE_GUID(GUID_BandParam, 0x02bb1938,0xcb8b,0x11d2,0x8b,0xb9,0x00,0x60,0x08,0x93,0xb1,0xb6);
+DEFINE_GUID(GUID_ChordParam, 0xd2ac289e,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_CommandParam, 0xd2ac289d,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_CommandParam2, 0x28f97ef7,0x9538,0x11d2,0x97,0xa9,0x00,0xc0,0x4f,0xa3,0x6e,0x58);
+DEFINE_GUID(GUID_CommandParamNext, 0x472afe7a,0x281b,0x11d3,0x81,0x7d,0x00,0xc0,0x4f,0xa3,0x6e,0x58);
+DEFINE_GUID(GUID_IDirectMusicBand, 0xd2ac28ac,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_IDirectMusicChordMap, 0xd2ac28ad,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_IDirectMusicStyle, 0xd2ac28a1,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_MuteParam, 0xd2ac28af,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_Play_Marker, 0xd8761a41,0x801a,0x11d3,0x9b,0xd1,0xda,0xf7,0xe1,0xc3,0xd8,0x34);
+DEFINE_GUID(GUID_RhythmParam, 0xd2ac289f,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_TempoParam, 0xd2ac28a5,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_TimeSignature, 0xd2ac28a4,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_Valid_Start_Time, 0x7f6b1760,0x1fdb,0x11d3,0x82,0x26,0x44,0x45,0x53,0x54,0x00,0x00);
+/* GUIDs - param setting */
+DEFINE_GUID(GUID_Clear_All_Bands, 0xd2ac28ab,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_ConnectToDLSCollection, 0x1db1ae6b,0xe92e,0x11d1,0xa8,0xc5,0x00,0xc0,0x4f,0xa3,0x72,0x6e);
+DEFINE_GUID(GUID_Disable_Auto_Download, 0xd2ac28aa,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_DisableTempo, 0x45fc707d,0x1db4,0x11d2,0xbc,0xac,0x00,0xa0,0xc9,0x22,0xe6,0xeb);
+DEFINE_GUID(GUID_DisableTimeSig, 0x45fc707b,0x1db4,0x11d2,0xbc,0xac,0x00,0xa0,0xc9,0x22,0xe6,0xeb);
+DEFINE_GUID(GUID_Download, 0xd2ac28a7,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_DownloadToAudioPath, 0x9f2c0341,0xc5c4,0x11d3,0x9b,0xd1,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_Enable_Auto_Download, 0xd2ac28a9,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_EnableTempo, 0x45fc707e,0x1db4,0x11d2,0xbc,0xac,0x00,0xa0,0xc9,0x22,0xe6,0xeb);
+DEFINE_GUID(GUID_EnableTimeSig, 0x45fc707c,0x1db4,0x11d2,0xbc,0xac,0x00,0xa0,0xc9,0x22,0xe6,0xeb);
+#define GUID_IgnoreBankSelectForGM GUID_StandardMIDIFile
+DEFINE_GUID(GUID_SeedVariations, 0x65b76fa5,0xff37,0x11d2,0x81,0x4e,0x00,0xc0,0x4f,0xa3,0x6e,0x58);
+DEFINE_GUID(GUID_StandardMIDIFile, 0x06621075,0xe92e,0x11d1,0xa8,0xc5,0x00,0xc0,0x4f,0xa3,0x72,0x6e);
+DEFINE_GUID(GUID_Unload, 0xd2ac28a8,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_UnloadFromAudioPath, 0x9f2c0342,0xc5c4,0x11d3,0x9b,0xd1,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_Variations, 0x11f72cce,0x26e6,0x4ecd,0xaf,0x2e,0xd6,0x68,0xe6,0x67,0x07,0xd8);
+/* GUIDs - global data */
+DEFINE_GUID(GUID_PerfMasterTempo, 0xd2ac28b0,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_PerfMasterVolume, 0xd2ac28b1,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_PerfMasterGrooveLevel, 0xd2ac28b2,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
+DEFINE_GUID(GUID_PerfAutoDownload, 0xfb09565b,0x3631,0x11d2,0xbc,0xb8,0x00,0xa0,0xc9,0x22,0xe6,0xeb);
+/* GUID - default DLS collection */
+DEFINE_GUID(GUID_DefaultGMCollection, 0xf17e8673,0xc3b4,0x11d1,0x87,0x0b,0x00,0x60,0x08,0x93,0xb1,0xbd);
+/* GUID - default synthesizer */
+DEFINE_GUID(GUID_Synth_Default, 0x26bb9432,0x45fe,0x48d3,0xa3,0x75,0x24,0x72,0xc5,0xe3,0xe7,0x86);
+/* GUIDs - define default buffer configuration */
+DEFINE_GUID(GUID_Buffer_Reverb, 0x186cc541,0xdb29,0x11d3,0x9b,0xd1,0x00,0x80,0xc7,0x15,0x0a,0x74);
+DEFINE_GUID(GUID_Buffer_EnvReverb, 0x186cc542,0xdb29,0x11d3,0x9b,0xd1,0x00,0x80,0xc7,0x15,0x0a,0x74);
+DEFINE_GUID(GUID_Buffer_Stereo, 0x186cc545,0xdb29,0x11d3,0x9b,0xd1,0x00,0x80,0xc7,0x15,0x0a,0x74);
+DEFINE_GUID(GUID_Buffer_3D_Dry, 0x186cc546,0xdb29,0x11d3,0x9b,0xd1,0x00,0x80,0xc7,0x15,0x0a,0x74);
+DEFINE_GUID(GUID_Buffer_Mono, 0x186cc547,0xdb29,0x11d3,0x9b,0xd1,0x00,0x80,0xc7,0x15,0x0a,0x74);
/*****************************************************************************
- * Definitions
+ * Typedef definitions
*/
-#define MT_MIN 0x80000000
-#define MT_MAX 0x7FFFFFFF
+typedef WORD TRANSITION_TYPE, *LPTRANSITION_TYPE;
+/*
+ * typedef __int64 REFERENCE_TIME, *LPREFERENCE_TIME;
+ * typedef long MUSIC_TIME, *LPMUSIC_TIME;
+ */
-#define DMUS_PPQ 768
-#define DMUS_PMSG_PART \
- DWORD dwSize; \
- REFERENCE_TIME rtTime; \
- MUSIC_TIME mtTime; \
- DWORD dwFlags; \
- DWORD dwPChannel; \
- DWORD dwVirtualTrackID; \
- IDirectMusicTool* pTool; \
- IDirectMusicGraph* pGraph; \
- DWORD dwType; \
- DWORD dwVoiceID; \
- DWORD dwGroupID; \
- IUnknown* punkUser;
+/*****************************************************************************
+ * Flags
+ */
+#define DMUS_APATH_SHARED_STEREOPLUSREVERB 0x1
+#define DMUS_APATH_DYNAMIC_3D 0x6
+#define DMUS_APATH_DYNAMIC_MONO 0x7
+#define DMUS_APATH_DYNAMIC_STEREO 0x8
+
+#define DMUS_AUDIOF_3D 0x01
+#define DMUS_AUDIOF_ENVIRON 0x02
+#define DMUS_AUDIOF_EAX 0x04
+#define DMUS_AUDIOF_DMOS 0x08
+#define DMUS_AUDIOF_STREAMING 0x10
+#define DMUS_AUDIOF_BUFFERS 0x20
+#define DMUS_AUDIOF_ALL 0x3F
+
+#define DMUS_AUDIOPARAMS_FEATURES 0x1
+#define DMUS_AUDIOPARAMS_VOICES 0x2
+#define DMUS_AUDIOPARAMS_SAMPLERATE 0x4
+#define DMUS_AUDIOPARAMS_DEFAULTSYNTH 0x8
+
+#define DMUS_CURVET_PBCURVE 0x03
+#define DMUS_CURVET_CCCURVE 0x04
+#define DMUS_CURVET_MATCURVE 0x05
+#define DMUS_CURVET_PATCURVE 0x06
+#define DMUS_CURVET_RPNCURVE 0x07
+#define DMUS_CURVET_NRPNCURVE 0x08
+
+#define DMUS_MASTERTEMPO_MAX 100.0f
+#define DMUS_MASTERTEMPO_MIN 0.01f
+
+#define DMUS_MAX_NAME 0x40
+#define DMUS_MAX_CATEGORY 0x40
+#define DMUS_MAX_FILENAME MAX_PATH
+
+#define DMUS_MAXSUBCHORD 0x8
+
+#define DMUS_NOTIFICATION_SEGSTART 0x0
+#define DMUS_NOTIFICATION_SEGEND 0x1
+#define DMUS_NOTIFICATION_SEGALMOSTEND 0x2
+#define DMUS_NOTIFICATION_SEGLOOP 0x3
+#define DMUS_NOTIFICATION_SEGABORT 0x4
+#define DMUS_NOTIFICATION_MUSICSTARTED 0x0
+#define DMUS_NOTIFICATION_MUSICSTOPPED 0x1
+#define DMUS_NOTIFICATION_MUSICALMOSTEND 0x2
+#define DMUS_NOTIFICATION_MEASUREBEAT 0x0
+#define DMUS_NOTIFICATION_CHORD 0x0
+#define DMUS_NOTIFICATION_GROOVE 0x0
+#define DMUS_NOTIFICATION_EMBELLISHMENT 0x1
+#define DMUS_NOTIFICATION_RECOMPOSE 0x0
+
+#define DMUS_OBJ_OBJECT 0x001
+#define DMUS_OBJ_CLASS 0x002
+#define DMUS_OBJ_NAME 0x004
+#define DMUS_OBJ_CATEGORY 0x008
+#define DMUS_OBJ_FILENAME 0x010
+#define DMUS_OBJ_FULLPATH 0x020
+#define DMUS_OBJ_URL 0x040
+#define DMUS_OBJ_VERSION 0x080
+#define DMUS_OBJ_DATE 0x100
+#define DMUS_OBJ_LOADED 0x200
+#define DMUS_OBJ_MEMORY 0x400
+#define DMUS_OBJ_STREAM 0x800
+
+#define DMUS_PATH_SEGMENT 0x1000
+#define DMUS_PATH_SEGMENT_TRACK 0x1100
+#define DMUS_PATH_SEGMENT_GRAPH 0x1200
+#define DMUS_PATH_SEGMENT_TOOL 0x1300
+#define DMUS_PATH_AUDIOPATH 0x2000
+#define DMUS_PATH_AUDIOPATH_GRAPH 0x2200
+#define DMUS_PATH_AUDIOPATH_TOOL 0x2300
+#define DMUS_PATH_PERFORMANCE 0x3000
+#define DMUS_PATH_PERFORMANCE_GRAPH 0x3200
+#define DMUS_PATH_PERFORMANCE_TOOL 0x3300
+#define DMUS_PATH_PORT 0x4000
+#define DMUS_PATH_BUFFER 0x6000
+#define DMUS_PATH_BUFFER_DMO 0x6100
+#define DMUS_PATH_MIXIN_BUFFER 0x7000
+#define DMUS_PATH_MIXIN_BUFFER_DMO 0x7100
+#define DMUS_PATH_PRIMARY_BUFFER 0x8000
#define DMUS_PCHANNEL_BROADCAST_PERFORMANCE 0xFFFFFFFF
#define DMUS_PCHANNEL_BROADCAST_AUDIOPATH 0xFFFFFFFE
#define DMUS_PCHANNEL_BROADCAST_SEGMENT 0xFFFFFFFD
#define DMUS_PCHANNEL_BROADCAST_GROUPS 0xFFFFFFFC
-#define DMUS_PCHANNEL_ALL 0xFFFFFFFB
+#define DMUS_PCHANNEL_ALL 0xFFFFFFFB
-#define DMUS_PATH_SEGMENT 0x1000
-#define DMUS_PATH_SEGMENT_TRACK 0x1100
-#define DMUS_PATH_SEGMENT_GRAPH 0x1200
-#define DMUS_PATH_SEGMENT_TOOL 0x1300
-#define DMUS_PATH_AUDIOPATH 0x2000
-#define DMUS_PATH_AUDIOPATH_GRAPH 0x2200
-#define DMUS_PATH_AUDIOPATH_TOOL 0x2300
-#define DMUS_PATH_PERFORMANCE 0x3000
-#define DMUS_PATH_PERFORMANCE_GRAPH 0x3200
-#define DMUS_PATH_PERFORMANCE_TOOL 0x3300
-#define DMUS_PATH_PORT 0x4000
-#define DMUS_PATH_BUFFER 0x6000
-#define DMUS_PATH_BUFFER_DMO 0x6100
-#define DMUS_PATH_MIXIN_BUFFER 0x7000
-#define DMUS_PATH_MIXIN_BUFFER_DMO 0x7100
-#define DMUS_PATH_PRIMARY_BUFFER 0x8000
-
-#define DMUS_APATH_SHARED_STEREOPLUSREVERB 0x1
-#define DMUS_APATH_DYNAMIC_3D 0x6
-#define DMUS_APATH_DYNAMIC_MONO 0x7
-#define DMUS_APATH_DYNAMIC_STEREO 0x8
-
-#define DMUS_AUDIOF_3D 0x1
-#define DMUS_AUDIOF_ENVIRON 0x2
-#define DMUS_AUDIOF_EAX 0x4
-#define DMUS_AUDIOF_DMOS 0x8
-#define DMUS_AUDIOF_STREAMING 0x10
-#define DMUS_AUDIOF_BUFFERS 0x20
-#define DMUS_AUDIOF_ALL 0x3F
-
-#define DMUS_AUDIOPARAMS_FEATURES 0x00000001
-#define DMUS_AUDIOPARAMS_VOICES 0x00000002
-#define DMUS_AUDIOPARAMS_SAMPLERATE 0x00000004
-#define DMUS_AUDIOPARAMS_DEFAULTSYNTH 0x00000008
-
-#define DMUS_SEG_REPEAT_INFINITE 0xFFFFFFFF
-#define DMUS_SEG_ALLTRACKS 0x80000000
-#define DMUS_SEG_ANYTRACK 0x80000000
-
-#define DMUS_MAXSUBCHORD 8
-
-#define DMUS_PLAYMODE_FIXED 0
+#define DMUS_PLAYMODE_FIXED 0x0
#define DMUS_PLAYMODE_FIXEDTOKEY DMUS_PLAYMODE_KEY_ROOT
#define DMUS_PLAYMODE_FIXEDTOCHORD DMUS_PLAYMODE_CHORD_ROOT
#define DMUS_PLAYMODE_PEDALPOINT (DMUS_PLAYMODE_KEY_ROOT | DMUS_PLAYMODE_SCALE_INTERVALS)
@@ -285,531 +306,485 @@
#define DMUS_PLAYMODE_SCALE_ROOT DMUS_PLAYMODE_KEY_ROOT
#define DMUS_PLAYMODE_FIXEDTOSCALE DMUS_PLAYMODE_FIXEDTOKEY
-#define DMUS_TEMPO_MAX 1000
-#define DMUS_TEMPO_MIN 1
+#define DMUS_PPQ 768
-#define DMUS_MASTERTEMPO_MAX 100.0f
-#define DMUS_MASTERTEMPO_MIN 0.01f
+#define DMUS_SEG_REPEAT_INFINITE 0xFFFFFFFF
+#define DMUS_SEG_ALLTRACKS 0x80000000
+#define DMUS_SEG_ANYTRACK 0x80000000
-#define DMUS_CURVET_PBCURVE 0x03
-#define DMUS_CURVET_CCCURVE 0x04
-#define DMUS_CURVET_MATCURVE 0x05
-#define DMUS_CURVET_PATCURVE 0x06
-#define DMUS_CURVET_RPNCURVE 0x07
-#define DMUS_CURVET_NRPNCURVE 0x08
+#define DMUS_TEMPO_MAX 1000
+#define DMUS_TEMPO_MIN 1
-#define DMUS_NOTIFICATION_SEGSTART 0x0
-#define DMUS_NOTIFICATION_SEGEND 0x1
-#define DMUS_NOTIFICATION_SEGALMOSTEND 0x2
-#define DMUS_NOTIFICATION_SEGLOOP 0x3
-#define DMUS_NOTIFICATION_SEGABORT 0x4
+#define DMUS_TRACKCONFIG_OVERRIDE_ALL 0x00001
+#define DMUS_TRACKCONFIG_OVERRIDE_PRIMARY 0x00002
+#define DMUS_TRACKCONFIG_FALLBACK 0x00004
+#define DMUS_TRACKCONFIG_CONTROL_ENABLED 0x00008
+#define DMUS_TRACKCONFIG_PLAY_ENABLED 0x00010
+#define DMUS_TRACKCONFIG_NOTIFICATION_ENABLED 0x00020
+#define DMUS_TRACKCONFIG_PLAY_CLOCKTIME 0x00040
+#define DMUS_TRACKCONFIG_PLAY_COMPOSE 0x00080
+#define DMUS_TRACKCONFIG_LOOP_COMPOSE 0x00100
+#define DMUS_TRACKCONFIG_COMPOSING 0x00200
+#define DMUS_TRACKCONFIG_TRANS1_FROMSEGSTART 0x00400
+#define DMUS_TRACKCONFIG_TRANS1_FROMSEGCURRENT 0x00800
+#define DMUS_TRACKCONFIG_TRANS1_TOSEGSTART 0x01000
+#define DMUS_TRACKCONFIG_CONTROL_PLAY 0x10000
+#define DMUS_TRACKCONFIG_CONTROL_NOTIFICATION 0x20000
+#define DMUS_TRACKCONFIG_DEFAULT (DMUS_TRACKCONFIG_CONTROL_ENABLED | DMUS_TRACKCONFIG_PLAY_ENABLED | DMUS_TRACKCONFIG_NOTIFICATION_ENABLED)
-#define DMUS_NOTIFICATION_MUSICSTARTED 0x0
-#define DMUS_NOTIFICATION_MUSICSTOPPED 0x1
-#define DMUS_NOTIFICATION_MUSICALMOSTEND 0x2
+#define DMUS_WAVEF_OFF 0x01
+#define DMUS_WAVEF_STREAMING 0x02
+#define DMUS_WAVEF_NOINVALIDATE 0x04
+#define DMUS_WAVEF_NOPREROLL 0x08
+#define DMUS_WAVEF_IGNORELOOPS 0x20
-#define DMUS_NOTIFICATION_MEASUREBEAT 0x0
+#define DMUSB_LOADED 0x1
+#define DMUSB_DEFAULT 0x2
-#define DMUS_NOTIFICATION_CHORD 0x0
+#define MT_MIN 0x80000000
+#define MT_MAX 0x7FFFFFFF
-#define DMUS_NOTIFICATION_GROOVE 0x0
-#define DMUS_NOTIFICATION_EMBELLISHMENT 0x1
-#define DMUS_NOTIFICATION_RECOMPOSE 0x0
+/*****************************************************************************
+ * Definitions
+ */
+#define DMUS_PMSG_PART \
+ DWORD dwSize; \
+ REFERENCE_TIME rtTime; \
+ MUSIC_TIME mtTime; \
+ DWORD dwFlags; \
+ DWORD dwPChannel; \
+ DWORD dwVirtualTrackID; \
+ IDirectMusicTool* pTool; \
+ IDirectMusicGraph* pGraph; \
+ DWORD dwType; \
+ DWORD dwVoiceID; \
+ DWORD dwGroupID; \
+ IUnknown* punkUser;
-#define DMUS_WAVEF_OFF 0x1
-#define DMUS_WAVEF_STREAMING 0x2
-#define DMUS_WAVEF_NOINVALIDATE 0x4
-#define DMUS_WAVEF_NOPREROLL 0x8
-#define DMUS_MAX_NAME 0x40
-#define DMUS_MAX_CATEGORY 0x40
-#define DMUS_MAX_FILENAME MAX_PATH
+/*****************************************************************************
+ * Enumerations
+ */
+/* typedef definitions */
+typedef enum enumDMUS_STYLET_TYPES DMUS_STYLET_TYPES;
+typedef enum enumDMUS_COMMANDT_TYPES DMUS_COMMANDT_TYPES;
+typedef enum enumDMUS_SHAPET_TYPES DMUS_SHAPET_TYPES;
+typedef enum enumDMUS_COMPOSEF_FLAGS DMUS_COMPOSEF_FLAGS;
+typedef enum enumDMUS_PMSGF_FLAGS DMUS_PMSGF_FLAGS;
+typedef enum enumDMUS_PMSGT_TYPES DMUS_PMSGT_TYPES;
+typedef enum enumDMUS_SEGF_FLAGS DMUS_SEGF_FLAGS;
+typedef enum enumDMUS_TIME_RESOLVE_FLAGS DMUS_TIME_RESOLVE_FLAGS;
+typedef enum enumDMUS_CHORDKEYF_FLAGS DMUS_CHORDKEYF_FLAGS;
+typedef enum enumDMUS_NOTEF_FLAGS DMUS_NOTEF_FLAGS;
+typedef enum enumDMUS_PLAYMODE_FLAGS DMUS_PLAYMODE_FLAGS;
+typedef enum enumDMUS_CURVE_FLAGS DMUS_CURVE_FLAGS;
-#define DMUS_OBJ_OBJECT 0x001
-#define DMUS_OBJ_CLASS 0x002
-#define DMUS_OBJ_NAME 0x004
-#define DMUS_OBJ_CATEGORY 0x008
-#define DMUS_OBJ_FILENAME 0x010
-#define DMUS_OBJ_FULLPATH 0x020
-#define DMUS_OBJ_URL 0x040
-#define DMUS_OBJ_VERSION 0x080
-#define DMUS_OBJ_DATE 0x100
-#define DMUS_OBJ_LOADED 0x200
-#define DMUS_OBJ_MEMORY 0x400
-#define DMUS_OBJ_STREAM 0x800
-#define DMUS_TRACKCONFIG_OVERRIDE_ALL 0x00001
-#define DMUS_TRACKCONFIG_OVERRIDE_PRIMARY 0x00002
-#define DMUS_TRACKCONFIG_FALLBACK 0x00004
-#define DMUS_TRACKCONFIG_CONTROL_ENABLED 0x00008
-#define DMUS_TRACKCONFIG_PLAY_ENABLED 0x00010
-#define DMUS_TRACKCONFIG_NOTIFICATION_ENABLED 0x00020
-#define DMUS_TRACKCONFIG_PLAY_CLOCKTIME 0x00040
-#define DMUS_TRACKCONFIG_PLAY_COMPOSE 0x00080
-#define DMUS_TRACKCONFIG_LOOP_COMPOSE 0x00100
-#define DMUS_TRACKCONFIG_COMPOSING 0x00200
-#define DMUS_TRACKCONFIG_TRANS1_FROMSEGSTART 0x00400
-#define DMUS_TRACKCONFIG_TRANS1_FROMSEGCURRENT 0x00800
-#define DMUS_TRACKCONFIG_TRANS1_TOSEGSTART 0x01000
-#define DMUS_TRACKCONFIG_CONTROL_PLAY 0x10000
-#define DMUS_TRACKCONFIG_CONTROL_NOTIFICATION 0x20000
-#define DMUS_TRACKCONFIG_DEFAULT (DMUS_TRACKCONFIG_CONTROL_ENABLED | DMUS_TRACKCONFIG_PLAY_ENABLED | DMUS_TRACKCONFIG_NOTIFICATION_ENABLED)
-#define DMUS_MAX_FRAGMENTLABEL 20
+/* actual enumerations */
+enum enumDMUS_STYLET_TYPES {
+ DMUS_STYLET_PATTERN = 0x0,
+ DMUS_STYLET_MOTIF = 0x1,
+};
-#define DMUS_FRAGMENTF_USE_REPEAT 0x1
-#define DMUS_FRAGMENTF_REJECT_REPEAT 0x2
-#define DMUS_FRAGMENTF_USE_LABEL 0x4
+enum enumDMUS_COMMANDT_TYPES {
+ DMUS_COMMANDT_GROOVE = 0x0,
+ DMUS_COMMANDT_FILL = 0x1,
+ DMUS_COMMANDT_INTRO = 0x2,
+ DMUS_COMMANDT_BREAK = 0x3,
+ DMUS_COMMANDT_END = 0x4,
+ DMUS_COMMANDT_ENDANDINTRO = 0x5
+};
-#define DMUS_CONNECTIONF_INTERVALS 0x2
-#define DMUS_CONNECTIONF_OVERLAP 0x4
+enum enumDMUS_SHAPET_TYPES {
+ DMUS_SHAPET_FALLING = 0x0,
+ DMUS_SHAPET_LEVEL = 0x1,
+ DMUS_SHAPET_LOOPABLE = 0x2,
+ DMUS_SHAPET_LOUD = 0x3,
+ DMUS_SHAPET_QUIET = 0x4,
+ DMUS_SHAPET_PEAKING = 0x5,
+ DMUS_SHAPET_RANDOM = 0x6,
+ DMUS_SHAPET_RISING = 0x7,
+ DMUS_SHAPET_SONG = 0x8
+};
-#define DMUSB_LOADED 0x1
-#define DMUSB_DEFAULT 0x2
+enum enumDMUS_COMPOSEF_FLAGS {
+ DMUS_COMPOSEF_NONE = 0x000000,
+ DMUS_COMPOSEF_ALIGN = 0x000001,
+ DMUS_COMPOSEF_OVERLAP = 0x000002,
+ DMUS_COMPOSEF_IMMEDIATE = 0x000004,
+ DMUS_COMPOSEF_GRID = 0x000008,
+ DMUS_COMPOSEF_BEAT = 0x000010,
+ DMUS_COMPOSEF_MEASURE = 0x000020,
+ DMUS_COMPOSEF_AFTERPREPARETIME = 0x000040,
+ DMUS_COMPOSEF_VALID_START_BEAT = 0x000080,
+ DMUS_COMPOSEF_VALID_START_GRID = 0x000100,
+ DMUS_COMPOSEF_VALID_START_TICK = 0x000200,
+ DMUS_COMPOSEF_SEGMENTEND = 0x000400,
+ DMUS_COMPOSEF_MARKER = 0x000800,
+ DMUS_COMPOSEF_MODULATE = 0x001000,
+ DMUS_COMPOSEF_LONG = 0x002000,
+ DMUS_COMPOSEF_ENTIRE_TRANSITION = 0x004000,
+ DMUS_COMPOSEF_1BAR_TRANSITION = 0x008000,
+ DMUS_COMPOSEF_ENTIRE_ADDITION = 0x010000,
+ DMUS_COMPOSEF_1BAR_ADDITION = 0x020000,
+ DMUS_COMPOSEF_VALID_START_MEASURE = 0x040000,
+ DMUS_COMPOSEF_DEFAULT = 0x080000,
+ DMUS_COMPOSEF_NOINVALIDATE = 0x100000,
+ DMUS_COMPOSEF_USE_AUDIOPATH = 0x200000,
+ DMUS_COMPOSEF_INVALIDATE_PRI = 0x400000
+};
+
+enum enumDMUS_PMSGF_FLAGS {
+ DMUS_PMSGF_REFTIME = 1,
+ DMUS_PMSGF_MUSICTIME = 2,
+ DMUS_PMSGF_TOOL_IMMEDIATE = 4,
+ DMUS_PMSGF_TOOL_QUEUE = 8,
+ DMUS_PMSGF_TOOL_ATTIME = 0x10,
+ DMUS_PMSGF_TOOL_FLUSH = 0x20,
+ DMUS_PMSGF_LOCKTOREFTIME = 0x40,
+ DMUS_PMSGF_DX8 = 0x80
+};
+
+enum enumDMUS_PMSGT_TYPES {
+ DMUS_PMSGT_MIDI = 0x00,
+ DMUS_PMSGT_NOTE = 0x01,
+ DMUS_PMSGT_SYSEX = 0x02,
+ DMUS_PMSGT_NOTIFICATION = 0x03,
+ DMUS_PMSGT_TEMPO = 0x04,
+ DMUS_PMSGT_CURVE = 0x05,
+ DMUS_PMSGT_TIMESIG = 0x06,
+ DMUS_PMSGT_PATCH = 0x07,
+ DMUS_PMSGT_TRANSPOSE = 0x08,
+ DMUS_PMSGT_CHANNEL_PRIORITY = 0x09,
+ DMUS_PMSGT_STOP = 0x0A,
+ DMUS_PMSGT_DIRTY = 0x0B,
+ DMUS_PMSGT_WAVE = 0x0C,
+ DMUS_PMSGT_LYRIC = 0x0D,
+ DMUS_PMSGT_SCRIPTLYRIC = 0x0E,
+ DMUS_PMSGT_USER = 0xFF
+};
+
+enum enumDMUS_SEGF_FLAGS {
+ DMUS_SEGF_REFTIME = 0x000040,
+ DMUS_SEGF_SECONDARY = 0x000080,
+ DMUS_SEGF_QUEUE = 0x000100,
+ DMUS_SEGF_CONTROL = 0x000200,
+ DMUS_SEGF_AFTERPREPARETIME = 0x000400,
+ DMUS_SEGF_GRID = 0x000800,
+ DMUS_SEGF_BEAT = 0x001000,
+ DMUS_SEGF_MEASURE = 0x002000,
+ DMUS_SEGF_DEFAULT = 0x004000,
+ DMUS_SEGF_NOINVALIDATE = 0x008000,
+ DMUS_SEGF_ALIGN = 0x0010000,
+ DMUS_SEGF_VALID_START_BEAT = 0x0020000,
+ DMUS_SEGF_VALID_START_GRID = 0x0040000,
+ DMUS_SEGF_VALID_START_TICK = 0x0080000,
+ DMUS_SEGF_AUTOTRANSITION = 0x0100000,
+ DMUS_SEGF_AFTERQUEUETIME = 0x0200000,
+ DMUS_SEGF_AFTERLATENCYTIME = 0x0400000,
+ DMUS_SEGF_SEGMENTEND = 0x0800000,
+ DMUS_SEGF_MARKER = 0x01000000,
+ DMUS_SEGF_TIMESIG_ALWAYS = 0x02000000,
+ DMUS_SEGF_USE_AUDIOPATH = 0x04000000,
+ DMUS_SEGF_VALID_START_MEASURE = 0x08000000,
+ DMUS_SEGF_INVALIDATE_PRI = 0x10000000
+};
+
+enum enumDMUS_TIME_RESOLVE_FLAGS {
+ DMUS_TIME_RESOLVE_AFTERPREPARETIME = DMUS_SEGF_AFTERPREPARETIME,
+ DMUS_TIME_RESOLVE_AFTERQUEUETIME = DMUS_SEGF_AFTERQUEUETIME,
+ DMUS_TIME_RESOLVE_AFTERLATENCYTIME = DMUS_SEGF_AFTERLATENCYTIME,
+ DMUS_TIME_RESOLVE_GRID = DMUS_SEGF_GRID,
+ DMUS_TIME_RESOLVE_BEAT = DMUS_SEGF_BEAT,
+ DMUS_TIME_RESOLVE_MEASURE = DMUS_SEGF_MEASURE,
+ DMUS_TIME_RESOLVE_MARKER = DMUS_SEGF_MARKER,
+ DMUS_TIME_RESOLVE_SEGMENTEND = DMUS_SEGF_SEGMENTEND,
+};
+
+enum enumDMUS_CHORDKEYF_FLAGS {
+ DMUS_CHORDKEYF_SILENT = 0x1,
+};
+
+enum enumDMUS_NOTEF_FLAGS {
+ DMUS_NOTEF_NOTEON = 0x01,
+ /* DX8 */
+ DMUS_NOTEF_NOINVALIDATE = 0x02,
+ DMUS_NOTEF_NOINVALIDATE_INSCALE = 0x04,
+ DMUS_NOTEF_NOINVALIDATE_INCHORD = 0x08,
+ DMUS_NOTEF_REGENERATE = 0x10,
+};
+
+enum enumDMUS_PLAYMODE_FLAGS {
+ DMUS_PLAYMODE_KEY_ROOT = 0x01,
+ DMUS_PLAYMODE_CHORD_ROOT = 0x02,
+ DMUS_PLAYMODE_SCALE_INTERVALS = 0x04,
+ DMUS_PLAYMODE_CHORD_INTERVALS = 0x08,
+ DMUS_PLAYMODE_NONE = 0x10,
+};
+
+enum enumDMUS_CURVE_FLAGS {
+ DMUS_CURVE_RESET = 0x1,
+ DMUS_CURVE_START_FROM_CURRENT = 0x2
+};
+
+enum {
+ DMUS_CURVES_LINEAR = 0x0,
+ DMUS_CURVES_INSTANT = 0x1,
+ DMUS_CURVES_EXP = 0x2,
+ DMUS_CURVES_LOG = 0x3,
+ DMUS_CURVES_SINE = 0x4
+};
+
/*****************************************************************************
* Structures
*/
-typedef enum enumDMUS_STYLET_TYPES
-{
- DMUS_STYLET_PATTERN = 0,
- DMUS_STYLET_MOTIF = 1,
- DMUS_STYLET_FRAGMENT = 2,
-} DMUS_STYLET_TYPES;
+/* typedef definitions */
+/*typedef struct _DMUS_PMSG DMUS_PMSG, *LPDMUS_PMSG; */
+typedef struct _DMUS_AUDIOPARAMS DMUS_AUDIOPARAMS, *LPDMUS_AUDIOPARAMS;
+typedef struct _DMUS_SUBCHORD DMUS_SUBCHORD, *LPDMUS_SUBCHORD;
+typedef struct _DMUS_CHORD_KEY DMUS_CHORD_KEY, *LPDMUS_CHORD_KEY;
+typedef struct _DMUS_NOTE_PMSG DMUS_NOTE_PMSG, *LPDMUS_NOTE_PMSG;
+typedef struct _DMUS_MIDI_PMSG DMUS_MIDI_PMSG, *LPDMUS_MIDI_PMSG;
+typedef struct _DMUS_PATCH_PMSG DMUS_PATCH_PMSG, *LPDMUS_PATCH_PMSG;
+typedef struct _DMUS_TRANSPOSE_PMSG DMUS_TRANSPOSE_PMSG, *LPDMUS_TRANSPOSE_PMSG;
+typedef struct _DMUS_CHANNEL_PRIORITY_PMSG DMUS_CHANNEL_PRIORITY_PMSG, *LPDMUS_CHANNEL_PRIORITY_PMSG;
+typedef struct _DMUS_TEMPO_PMSG DMUS_TEMPO_PMSG, *LPDMUS_TEMPO_PMSG;
+typedef struct _DMUS_SYSEX_PMSG DMUS_SYSEX_PMSG, *LPDMUS_SYSEX_PMSG;
+typedef struct _DMUS_CURVE_PMSG DMUS_CURVE_PMSG, *LPDMUS_CURVE_PMSG;
+typedef struct _DMUS_TIMESIG_PMSG DMUS_TIMESIG_PMSG, *LPDMUS_TIMESIG_PMSG;
+typedef struct _DMUS_NOTIFICATION_PMSG DMUS_NOTIFICATION_PMSG, *LPDMUS_NOTIFICATION_PMSG;
+typedef struct _DMUS_WAVE_PMSG DMUS_WAVE_PMSG, *LPDMUS_WAVE_PMSG;
+typedef struct _DMUS_LYRIC_PMSG DMUS_LYRIC_PMSG, *LPDMUS_LYRIC_PMSG;
+typedef struct _DMUS_VERSION DMUS_VERSION, *LPDMUS_VERSION;
+typedef struct _DMUS_TIMESIGNATURE DMUS_TIMESIGNATURE, *LPDMUS_TIMESIGNATURE;
+typedef struct _DMUS_VALID_START_PARAM DMUS_VALID_START_PARAM, *LPDMUS_VALID_START_PARAM;
+typedef struct _DMUS_PLAY_MARKER_PARAM DMUS_PLAY_MARKER_PARAM, *LPDMUS_PLAY_MARKER_PARAM;
+typedef struct _DMUS_OBJECTDESC DMUS_OBJECTDESC, *LPDMUS_OBJECTDESC;
+typedef struct _DMUS_SCRIPT_ERRORINFO DMUS_SCRIPT_ERRORINFO, *LPDMUS_SCRIPT_ERRORINFO;
+typedef struct _DMUS_COMMAND_PARAM DMUS_COMMAND_PARAM, *LPDMUS_COMMAND_PARAM;
+typedef struct _DMUS_COMMAND_PARAM_2 DMUS_COMMAND_PARAM_2, *LPDMUS_COMMAND_PARAM_2;
+typedef struct _DMUS_BAND_PARAM DMUS_BAND_PARAM, *LPDMUS_BAND_PARAM;
+typedef struct _DMUS_VARIATIONS_PARAM DMUS_VARIATIONS_PARAM, *LPDMUS_VARIATIONS_PARAM;
-typedef enum enumDMUS_COMMANDT_TYPES
-{
- DMUS_COMMANDT_GROOVE = 0,
- DMUS_COMMANDT_FILL = 1,
- DMUS_COMMANDT_INTRO = 2,
- DMUS_COMMANDT_BREAK = 3,
- DMUS_COMMANDT_END = 4,
- DMUS_COMMANDT_ENDANDINTRO = 5
-} DMUS_COMMANDT_TYPES;
-
-typedef enum enumDMUS_SHAPET_TYPES
-{
- DMUS_SHAPET_FALLING = 0,
- DMUS_SHAPET_LEVEL = 1,
- DMUS_SHAPET_LOOPABLE = 2,
- DMUS_SHAPET_LOUD = 3,
- DMUS_SHAPET_QUIET = 4,
- DMUS_SHAPET_PEAKING = 5,
- DMUS_SHAPET_RANDOM = 6,
- DMUS_SHAPET_RISING = 7,
- DMUS_SHAPET_SONG = 8
-} DMUS_SHAPET_TYPES;
-
-typedef enum enumDMUS_COMPOSEF_FLAGS
-{
- DMUS_COMPOSEF_NONE = 0x00000,
- DMUS_COMPOSEF_ALIGN = 0x00001,
- DMUS_COMPOSEF_OVERLAP = 0x00002,
- DMUS_COMPOSEF_IMMEDIATE = 0x00004,
- DMUS_COMPOSEF_GRID = 0x00008,
- DMUS_COMPOSEF_BEAT = 0x00010,
- DMUS_COMPOSEF_MEASURE = 0x00020,
- DMUS_COMPOSEF_AFTERPREPARETIME = 0x00040,
- DMUS_COMPOSEF_VALID_START_BEAT = 0x00080,
- DMUS_COMPOSEF_VALID_START_GRID = 0x00100,
- DMUS_COMPOSEF_VALID_START_TICK = 0x00200,
- DMUS_COMPOSEF_SEGMENTEND = 0x00400,
- DMUS_COMPOSEF_MARKER = 0x00800,
- DMUS_COMPOSEF_MODULATE = 0x01000,
- DMUS_COMPOSEF_LONG = 0x02000,
- DMUS_COMPOSEF_ENTIRE_TRANSITION = 0x04000,
- DMUS_COMPOSEF_1BAR_TRANSITION = 0x08000,
- DMUS_COMPOSEF_ENTIRE_ADDITION = 0x10000,
- DMUS_COMPOSEF_1BAR_ADDITION = 0x20000,
- DMUS_COMPOSEF_VALID_START_MEASURE = 0x40000,
- DMUS_COMPOSEF_DEFAULT = 0x80000,
- DMUS_COMPOSEF_NOINVALIDATE = 0x100000,
- DMUS_COMPOSEF_USE_AUDIOPATH = 0x200000,
- DMUS_COMPOSEF_INVALIDATE_PRI = 0x400000
-} DMUS_COMPOSEF_FLAGS;
-
-typedef struct _DMUS_PMSG
-{
+/* actual structures */
+struct _DMUS_PMSG {
DMUS_PMSG_PART
-} DMUS_PMSG;
-
-typedef struct _DMUS_AUDIOPARAMS
-{
- DWORD dwSize;
- BOOL fInitNow;
- DWORD dwValidData;
- DWORD dwFeatures;
- DWORD dwVoices;
- DWORD dwSampleRate;
- CLSID clsidDefaultSynth;
-} DMUS_AUDIOPARAMS;
-
-typedef enum enumDMUS_PMSGF_FLAGS
-{
- DMUS_PMSGF_REFTIME = 0x01,
- DMUS_PMSGF_MUSICTIME = 0x02,
- DMUS_PMSGF_TOOL_IMMEDIATE = 0x04,
- DMUS_PMSGF_TOOL_QUEUE = 0x08,
- DMUS_PMSGF_TOOL_ATTIME = 0x10,
- DMUS_PMSGF_TOOL_FLUSH = 0x20,
- DMUS_PMSGF_LOCKTOREFTIME = 0x40,
- DMUS_PMSGF_DX8 = 0x80
-} DMUS_PMSGF_FLAGS;
-
-typedef enum enumDMUS_PMSGT_TYPES
-{
- DMUS_PMSGT_MIDI = 0,
- DMUS_PMSGT_NOTE = 1,
- DMUS_PMSGT_SYSEX = 2,
- DMUS_PMSGT_NOTIFICATION = 3,
- DMUS_PMSGT_TEMPO = 4,
- DMUS_PMSGT_CURVE = 5,
- DMUS_PMSGT_TIMESIG = 6,
- DMUS_PMSGT_PATCH = 7,
- DMUS_PMSGT_TRANSPOSE = 8,
- DMUS_PMSGT_CHANNEL_PRIORITY = 9,
- DMUS_PMSGT_STOP = 10,
- DMUS_PMSGT_DIRTY = 11,
- DMUS_PMSGT_WAVE = 12,
- DMUS_PMSGT_LYRIC = 13,
- DMUS_PMSGT_SCRIPTLYRIC = 14,
- DMUS_PMSGT_USER = 255
-} DMUS_PMSGT_TYPES;
-
-typedef enum enumDMUS_SEGF_FLAGS
-{
- DMUS_SEGF_REFTIME = 0x00000040,
- DMUS_SEGF_SECONDARY = 0x00000080,
- DMUS_SEGF_QUEUE = 0x00000100,
- DMUS_SEGF_CONTROL = 0x00000200,
- DMUS_SEGF_AFTERPREPARETIME = 0x00000400,
- DMUS_SEGF_GRID = 0x00000800,
- DMUS_SEGF_BEAT = 0x00001000,
- DMUS_SEGF_MEASURE = 0x00002000,
- DMUS_SEGF_DEFAULT = 0x00004000,
- DMUS_SEGF_NOINVALIDATE = 0x00008000,
- DMUS_SEGF_ALIGN = 0x00010000,
- DMUS_SEGF_VALID_START_BEAT = 0x00020000,
- DMUS_SEGF_VALID_START_GRID = 0x00040000,
- DMUS_SEGF_VALID_START_TICK = 0x00080000,
- DMUS_SEGF_AUTOTRANSITION = 0x00100000,
- DMUS_SEGF_AFTERQUEUETIME = 0x00200000,
- DMUS_SEGF_AFTERLATENCYTIME = 0x00400000,
- DMUS_SEGF_SEGMENTEND = 0x00800000,
- DMUS_SEGF_MARKER = 0x01000000,
- DMUS_SEGF_TIMESIG_ALWAYS = 0x02000000,
- DMUS_SEGF_USE_AUDIOPATH = 0x04000000,
- DMUS_SEGF_VALID_START_MEASURE = 0x08000000,
- DMUS_SEGF_INVALIDATE_PRI = 0x10000000
-} DMUS_SEGF_FLAGS;
-
-typedef enum enumDMUS_TIME_RESOLVE_FLAGS
-{
- DMUS_TIME_RESOLVE_AFTERPREPARETIME = DMUS_SEGF_AFTERPREPARETIME,
- DMUS_TIME_RESOLVE_AFTERQUEUETIME = DMUS_SEGF_AFTERQUEUETIME,
- DMUS_TIME_RESOLVE_AFTERLATENCYTIME = DMUS_SEGF_AFTERLATENCYTIME,
- DMUS_TIME_RESOLVE_GRID = DMUS_SEGF_GRID,
- DMUS_TIME_RESOLVE_BEAT = DMUS_SEGF_BEAT,
- DMUS_TIME_RESOLVE_MEASURE = DMUS_SEGF_MEASURE,
- DMUS_TIME_RESOLVE_MARKER = DMUS_SEGF_MARKER,
- DMUS_TIME_RESOLVE_SEGMENTEND = DMUS_SEGF_SEGMENTEND,
-} DMUS_TIME_RESOLVE_FLAGS;
-
-typedef enum enumDMUS_CHORDKEYF_FLAGS
-{
- DMUS_CHORDKEYF_SILENT = 1,
-} DMUS_CHORDKEYF_FLAGS;
-
-typedef struct _DMUS_SUBCHORD
-{
- DWORD dwChordPattern;
- DWORD dwScalePattern;
- DWORD dwInversionPoints;
- DWORD dwLevels;
- BYTE bChordRoot;
- BYTE bScaleRoot;
-} DMUS_SUBCHORD;
-
-typedef struct _DMUS_CHORD_KEY
-{
- WCHAR wszName[16];
- WORD wMeasure;
- BYTE bBeat;
- BYTE bSubChordCount;
- DMUS_SUBCHORD SubChordList[DMUS_MAXSUBCHORD];
- DWORD dwScale;
- BYTE bKey;
- BYTE bFlags;
-} DMUS_CHORD_KEY;
-
-typedef struct _DMUS_NOTE_PMSG
-{
- DMUS_PMSG_PART
-
- MUSIC_TIME mtDuration;
- WORD wMusicValue;
- WORD wMeasure;
- short nOffset;
- BYTE bBeat;
- BYTE bGrid;
- BYTE bVelocity;
- BYTE bFlags;
- BYTE bTimeRange;
- BYTE bDurRange;
- BYTE bVelRange;
- BYTE bPlayModeFlags;
- BYTE bSubChordLevel;
- BYTE bMidiValue;
- char cTranspose;
-} DMUS_NOTE_PMSG;
-
-typedef enum enumDMUS_NOTEF_FLAGS
-{
- DMUS_NOTEF_NOTEON = 0x01,
- DMUS_NOTEF_NOINVALIDATE = 0x02,
- DMUS_NOTEF_NOINVALIDATE_INSCALE = 0x04,
- DMUS_NOTEF_NOINVALIDATE_INCHORD = 0x08,
- DMUS_NOTEF_REGENERATE = 0x10,
-} DMUS_NOTEF_FLAGS;
-
-typedef enum enumDMUS_PLAYMODE_FLAGS
-{
- DMUS_PLAYMODE_KEY_ROOT = 0x01,
- DMUS_PLAYMODE_CHORD_ROOT = 0x02,
- DMUS_PLAYMODE_SCALE_INTERVALS = 0x04,
- DMUS_PLAYMODE_CHORD_INTERVALS = 0x08,
- DMUS_PLAYMODE_NONE = 0x10,
-} DMUS_PLAYMODE_FLAGS;
-
-typedef struct _DMUS_MIDI_PMSG
-{
- DMUS_PMSG_PART
-
- BYTE bStatus;
- BYTE bByte1;
- BYTE bByte2;
- BYTE bPad[1];
-} DMUS_MIDI_PMSG;
-
-typedef struct _DMUS_PATCH_PMSG
-{
- DMUS_PMSG_PART
-
- BYTE byInstrument;
- BYTE byMSB;
- BYTE byLSB;
- BYTE byPad[1];
-} DMUS_PATCH_PMSG;
-
-typedef struct _DMUS_TRANSPOSE_PMSG
-{
- DMUS_PMSG_PART
-
- short nTranspose;
- WORD wMergeIndex;
-} DMUS_TRANSPOSE_PMSG;
-
-typedef struct _DMUS_CHANNEL_PRIORITY_PMSG
-{
- DMUS_PMSG_PART
-
- DWORD dwChannelPriority;
-} DMUS_CHANNEL_PRIORITY_PMSG;
-
-typedef struct _DMUS_TEMPO_PMSG
-{
- DMUS_PMSG_PART
-
- double dblTempo;
-} DMUS_TEMPO_PMSG;
-
-typedef struct _DMUS_SYSEX_PMSG
-{
- DMUS_PMSG_PART
-
- DWORD dwLen;
- BYTE abData[1];
-} DMUS_SYSEX_PMSG;
-
-typedef struct _DMUS_CURVE_PMSG
-{
- DMUS_PMSG_PART
-
- MUSIC_TIME mtDuration;
- MUSIC_TIME mtOriginalStart;
- MUSIC_TIME mtResetDuration;
- short nStartValue;
- short nEndValue;
- short nResetValue;
- WORD wMeasure;
- short nOffset;
- BYTE bBeat;
- BYTE bGrid;
- BYTE bType;
- BYTE bCurveShape;
- BYTE bCCData;
- BYTE bFlags;
- WORD wParamType;
- WORD wMergeIndex;
-} DMUS_CURVE_PMSG;
-
-typedef enum enumDMUS_CURVE_FLAGS
-{
- DMUS_CURVE_RESET = 1,
- DMUS_CURVE_START_FROM_CURRENT = 2
-} DMUS_CURVE_FLAGS;
-
-#define DMUS_CURVE_RESET 0x01
-
-enum
-{
- DMUS_CURVES_LINEAR = 0x0,
- DMUS_CURVES_INSTANT = 0x1,
- DMUS_CURVES_EXP = 0x2,
- DMUS_CURVES_LOG = 0x3,
- DMUS_CURVES_SINE = 0x4
};
-typedef struct _DMUS_TIMESIG_PMSG
-{
- DMUS_PMSG_PART
+struct _DMUS_AUDIOPARAMS {
+ DWORD dwSize;
+ BOOL fInitNow;
+ DWORD dwValidData;
+ DWORD dwFeatures;
+ DWORD dwVoices;
+ DWORD dwSampleRate;
+ CLSID clsidDefaultSynth;
+};
- BYTE bBeatsPerMeasure;
- BYTE bBeat;
- WORD wGridsPerBeat;
-} DMUS_TIMESIG_PMSG;
+struct _DMUS_SUBCHORD {
+ DWORD dwChordPattern;
+ DWORD dwScalePattern;
+ DWORD dwInversionPoints;
+ DWORD dwLevels;
+ BYTE bChordRoot;
+ BYTE bScaleRoot;
+};
-typedef struct _DMUS_NOTIFICATION_PMSG
-{
- DMUS_PMSG_PART
+struct _DMUS_CHORD_KEY {
+ WCHAR wszName[16];
+ WORD wMeasure;
+ BYTE bBeat;
+ BYTE bSubChordCount;
+ DMUS_SUBCHORD SubChordList[DMUS_MAXSUBCHORD];
+ DWORD dwScale;
+ BYTE bKey;
+ BYTE bFlags;
+};
- GUID guidNotificationType;
- DWORD dwNotificationOption;
- DWORD dwField1;
- DWORD dwField2;
-} DMUS_NOTIFICATION_PMSG;
+struct _DMUS_NOTE_PMSG {
+ DMUS_PMSG_PART
+ MUSIC_TIME mtDuration;
+ WORD wMusicValue;
+ WORD wMeasure;
+ short nOffset;
+ BYTE bBeat;
+ BYTE bGrid;
+ BYTE bVelocity;
+ BYTE bFlags;
+ BYTE bTimeRange;
+ BYTE bDurRange;
+ BYTE bVelRange;
+ BYTE bPlayModeFlags;
+ BYTE bSubChordLevel;
+ BYTE bMidiValue;
+ char cTranspose;
+};
-typedef struct _DMUS_WAVE_PMSG
-{
- DMUS_PMSG_PART
+struct _DMUS_MIDI_PMSG {
+ DMUS_PMSG_PART
+ BYTE bStatus;
+ BYTE bByte1;
+ BYTE bByte2;
+ BYTE bPad[1];
+};
- REFERENCE_TIME rtStartOffset;
- REFERENCE_TIME rtDuration;
- long lOffset;
- long lVolume;
- long lPitch;
- BYTE bFlags;
-} DMUS_WAVE_PMSG;
+struct _DMUS_PATCH_PMSG {
+ DMUS_PMSG_PART
+ BYTE byInstrument;
+ BYTE byMSB;
+ BYTE byLSB;
+ BYTE byPad[1];
+};
-typedef struct _DMUS_LYRIC_PMSG
-{
- DMUS_PMSG_PART
+struct _DMUS_TRANSPOSE_PMSG {
+ DMUS_PMSG_PART
+ short nTranspose;
+ /* DX8 */
+ WORD wMergeIndex;
+};
- WCHAR wszString[1];
-} DMUS_LYRIC_PMSG;
+struct _DMUS_CHANNEL_PRIORITY_PMSG {
+ DMUS_PMSG_PART
+ DWORD dwChannelPriority;
+};
-typedef struct _DMUS_VERSION {
- DWORD dwVersionMS;
- DWORD dwVersionLS;
-} DMUS_VERSION, *LPDMUS_VERSION;
+struct _DMUS_TEMPO_PMSG {
+ DMUS_PMSG_PART
+ double dblTempo;
+};
-typedef struct _DMUS_TIMESIGNATURE
-{
- MUSIC_TIME mtTime;
- BYTE bBeatsPerMeasure;
- BYTE bBeat;
- WORD wGridsPerBeat;
-} DMUS_TIMESIGNATURE;
+struct _DMUS_SYSEX_PMSG {
+ DMUS_PMSG_PART
+ DWORD dwLen;
+ BYTE abData[1];
+};
-typedef struct _DMUS_VALID_START_PARAM
-{
- MUSIC_TIME mtTime;
-} DMUS_VALID_START_PARAM;
+struct _DMUS_CURVE_PMSG {
+ DMUS_PMSG_PART
+ MUSIC_TIME mtDuration;
+ MUSIC_TIME mtOriginalStart;
+ MUSIC_TIME mtResetDuration;
+ short nStartValue;
+ short nEndValue;
+ short nResetValue;
+ WORD wMeasure;
+ short nOffset;
+ BYTE bBeat;
+ BYTE bGrid;
+ BYTE bType;
+ BYTE bCurveShape;
+ BYTE bCCData;
+ BYTE bFlags;
+ /* DX8 */
+ WORD wParamType;
+ WORD wMergeIndex;
+};
-typedef struct _DMUS_PLAY_MARKER_PARAM
-{
- MUSIC_TIME mtTime;
-} DMUS_PLAY_MARKER_PARAM;
+struct _DMUS_TIMESIG_PMSG {
+ DMUS_PMSG_PART
+ BYTE bBeatsPerMeasure;
+ BYTE bBeat;
+ WORD wGridsPerBeat;
+};
-typedef struct _DMUS_OBJECTDESC
-{
- DWORD dwSize;
- DWORD dwValidData;
- GUID guidObject;
- GUID guidClass;
- FILETIME ftDate;
- DMUS_VERSION vVersion;
- WCHAR wszName[DMUS_MAX_NAME];
- WCHAR wszCategory[DMUS_MAX_CATEGORY];
- WCHAR wszFileName[DMUS_MAX_FILENAME];
- LONGLONG llMemLength;
- LPBYTE pbMemData;
- IStream * pStream;
-} DMUS_OBJECTDESC, *LPDMUS_OBJECTDESC;
+struct _DMUS_NOTIFICATION_PMSG {
+ DMUS_PMSG_PART
+ GUID guidNotificationType;
+ DWORD dwNotificationOption;
+ DWORD dwField1;
+ DWORD dwField2;
+};
-typedef struct _DMUS_SCRIPT_ERRORINFO
-{
- DWORD dwSize;
- HRESULT hr;
- ULONG ulLineNumber;
- LONG ichCharPosition;
- WCHAR wszSourceFile[DMUS_MAX_FILENAME];
- WCHAR wszSourceComponent[DMUS_MAX_FILENAME];
- WCHAR wszDescription[DMUS_MAX_FILENAME];
- WCHAR wszSourceLineText[DMUS_MAX_FILENAME];
-} DMUS_SCRIPT_ERRORINFO;
+struct _DMUS_WAVE_PMSG {
+ DMUS_PMSG_PART
+ REFERENCE_TIME rtStartOffset;
+ REFERENCE_TIME rtDuration;
+ long lOffset;
+ long lVolume;
+ long lPitch;
+ BYTE bFlags;
+};
-typedef struct _DMUS_COMMAND_PARAM
-{
- BYTE bCommand;
- BYTE bGrooveLevel;
- BYTE bGrooveRange;
- BYTE bRepeatMode;
-} DMUS_COMMAND_PARAM;
+struct _DMUS_LYRIC_PMSG {
+ DMUS_PMSG_PART
+ WCHAR wszString[1];
+};
-typedef struct _DMUS_COMMAND_PARAM_2
-{
+struct _DMUS_VERSION {
+ DWORD dwVersionMS;
+ DWORD dwVersionLS;
+};
+
+struct _DMUS_TIMESIGNATURE {
MUSIC_TIME mtTime;
- BYTE bCommand;
- BYTE bGrooveLevel;
- BYTE bGrooveRange;
- BYTE bRepeatMode;
-} DMUS_COMMAND_PARAM_2;
+ BYTE bBeatsPerMeasure;
+ BYTE bBeat;
+ WORD wGridsPerBeat;
+};
-typedef struct _DMUS_CONNECTION_RULE
-{
- DWORD dwFlags;
- DWORD dwIntervals;
-} DMUS_CONNECTION_RULE;
+struct _DMUS_VALID_START_PARAM {
+ MUSIC_TIME mtTime;
+};
-typedef struct _DMUS_MELODY_FRAGMENT
-{
- MUSIC_TIME mtTime;
- DWORD dwID;
- WCHAR wszVariationLabel[DMUS_MAX_FRAGMENTLABEL];
- DWORD dwVariationFlags;
- DWORD dwRepeatFragmentID;
- DWORD dwFragmentFlags;
- DWORD dwPlayModeFlags;
- DWORD dwTransposeIntervals;
- DMUS_COMMAND_PARAM Command;
- DMUS_CONNECTION_RULE ConnectionArc;
-} DMUS_MELODY_FRAGMENT;
+struct _DMUS_PLAY_MARKER_PARAM {
+ MUSIC_TIME mtTime;
+};
-typedef struct _DMUS_BAND_PARAM
-{
- MUSIC_TIME mtTimePhysical;
- IDirectMusicBand *pBand;
-} DMUS_BAND_PARAM;
+struct _DMUS_OBJECTDESC {
+ DWORD dwSize;
+ DWORD dwValidData;
+ GUID guidObject;
+ GUID guidClass;
+ FILETIME ftDate;
+ DMUS_VERSION vVersion;
+ WCHAR wszName[DMUS_MAX_NAME];
+ WCHAR wszCategory[DMUS_MAX_CATEGORY];
+ WCHAR wszFileName[DMUS_MAX_FILENAME];
+ LONGLONG llMemLength;
+ LPBYTE pbMemData;
+ IStream* pStream;
+};
+struct _DMUS_SCRIPT_ERRORINFO {
+ DWORD dwSize;
+ HRESULT hr;
+ ULONG ulLineNumber;
+ LONG ichCharPosition;
+ WCHAR wszSourceFile[DMUS_MAX_FILENAME];
+ WCHAR wszSourceComponent[DMUS_MAX_FILENAME];
+ WCHAR wszDescription[DMUS_MAX_FILENAME];
+ WCHAR wszSourceLineText[DMUS_MAX_FILENAME];
+};
-typedef struct _DMUS_VARIATIONS_PARAM
-{
- DWORD dwPChannelsUsed;
- DWORD* padwPChannels;
- DWORD* padwVariations;
-} DMUS_VARIATIONS_PARAM;
+struct _DMUS_COMMAND_PARAM {
+ BYTE bCommand;
+ BYTE bGrooveLevel;
+ BYTE bGrooveRange;
+ BYTE bRepeatMode;
+};
+
+struct _DMUS_COMMAND_PARAM_2 {
+ MUSIC_TIME mtTime;
+ BYTE bCommand;
+ BYTE bGrooveLevel;
+ BYTE bGrooveRange;
+ BYTE bRepeatMode;
+};
+
+struct _DMUS_BAND_PARAM {
+ MUSIC_TIME mtTimePhysical;
+ IDirectMusicBand *pBand;
+};
+
+struct _DMUS_VARIATIONS_PARAM {
+ DWORD dwPChannelsUsed;
+ DWORD* padwPChannels;
+ DWORD* padwVariations;
+};
+
/*****************************************************************************
* IDirectMusicBand interface
@@ -826,13 +801,13 @@
#ifdef COBJMACROS
/*** IUnknown methods ***/
-#define IDirectMusicBand_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectMusicBand_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectMusicBand_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectMusicBand_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicBand_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectMusicBand_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectMusicBand methods ***/
-#define IDirectMusicBand_CreateSegment(p,a) (p)->lpVtbl->CreateSegment(p,a)
-#define IDirectMusicBand_Download(p,a) (p)->lpVtbl->Download(p,a)
-#define IDirectMusicBand_Unload(p,a) (p)->lpVtbl->Unload(p,a)
+#define IDirectMusicBand_CreateSegment(p,a) (p)->lpVtbl->CreateSegment(p,a)
+#define IDirectMusicBand_Download(p,a) (p)->lpVtbl->Download(p,a)
+#define IDirectMusicBand_Unload(p,a) (p)->lpVtbl->Unload(p,a)
#endif
@@ -851,13 +826,13 @@
#ifdef COBJMACROS
/*** IUnknown methods ***/
-#define IDirectMusicObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectMusicObject_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectMusicObject_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectMusicObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicObject_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectMusicObject_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectMusicObject methods ***/
-#define IDirectMusicObject_GetDescriptor(p,a) (p)->lpVtbl->GetDescriptor(p,a)
-#define IDirectMusicObject_SetDescriptor(p,a) (p)->lpVtbl->SetDescriptor(p,a)
-#define IDirectMusicObject_ParseDescriptor(p,a,b) (p)->lpVtbl->ParseDescriptor(p,a,b)
+#define IDirectMusicObject_GetDescriptor(p,a) (p)->lpVtbl->GetDescriptor(p,a)
+#define IDirectMusicObject_SetDescriptor(p,a) (p)->lpVtbl->SetDescriptor(p,a)
+#define IDirectMusicObject_ParseDescriptor(p,a,b) (p)->lpVtbl->ParseDescriptor(p,a,b)
#endif
@@ -1089,15 +1064,15 @@
#ifdef COBJMACROS
/*** IUnknown methods ***/
-#define IDirectMusicSegmentState_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectMusicSegmentState_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectMusicSegmentState_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectMusicSegmentState_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicSegmentState_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectMusicSegmentState_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectMusicSegmentState methods ***/
-#define IDirectMusicSegmentState_GetRepeats(p,a) (p)->lpVtbl->GetRepeats(p,a)
-#define IDirectMusicSegmentState_GetSegment(p,a) (p)->lpVtbl->GetSegment(p,a)
-#define IDirectMusicSegmentState_GetStartTime(p,a) (p)->lpVtbl->GetStartTime(p,a)
-#define IDirectMusicSegmentState_GetSeek(p,a) (p)->lpVtbl->GetSeek(p,a)
-#define IDirectMusicSegmentState_GetStartPoint(p,a) (p)->lpVtbl->GetStartPoint(p,a)
+#define IDirectMusicSegmentState_GetRepeats(p,a) (p)->lpVtbl->GetRepeats(p,a)
+#define IDirectMusicSegmentState_GetSegment(p,a) (p)->lpVtbl->GetSegment(p,a)
+#define IDirectMusicSegmentState_GetStartTime(p,a) (p)->lpVtbl->GetStartTime(p,a)
+#define IDirectMusicSegmentState_GetSeek(p,a) (p)->lpVtbl->GetSeek(p,a)
+#define IDirectMusicSegmentState_GetStartPoint(p,a) (p)->lpVtbl->GetStartPoint(p,a)
#endif
@@ -1146,14 +1121,14 @@
#ifdef COBJMACROS
/*** IUnknown methods ***/
-#define IDirectMusicAudioPath_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectMusicAudioPath_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectMusicAudioPath_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectMusicAudioPath_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicAudioPath_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectMusicAudioPath_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectMusicAudioPath methods ***/
-#define IDirectMusicAudioPath_GetObjectInPath(p,a,b,c,d,e,f,g) (p)->lpVtbl->GetObjectInPath(p,a,b,c,d,e,f,g)
-#define IDirectMusicAudioPath_Activate(p,a) (p)->lpVtbl->Activate(p,a)
-#define IDirectMusicAudioPath_SetVolume(p,a,b) (p)->lpVtbl->SetVolume(p,a,b)
-#define IDirectMusicAudioPath_ConvertPChannel(p,a,b) (p)->lpVtbl->ConvertPChannel(p,a,b)
+#define IDirectMusicAudioPath_GetObjectInPath(p,a,b,c,d,e,f,g) (p)->lpVtbl->GetObjectInPath(p,a,b,c,d,e,f,g)
+#define IDirectMusicAudioPath_Activate(p,a) (p)->lpVtbl->Activate(p,a)
+#define IDirectMusicAudioPath_SetVolume(p,a,b) (p)->lpVtbl->SetVolume(p,a,b)
+#define IDirectMusicAudioPath_ConvertPChannel(p,a,b) (p)->lpVtbl->ConvertPChannel(p,a,b)
#endif
@@ -1210,51 +1185,51 @@
#ifdef COBJMACROS
/*** IUnknown methods ***/
-#define IDirectMusicPerformance_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectMusicPerformance_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectMusicPerformance_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectMusicPerformance_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicPerformance_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectMusicPerformance_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectMusicPerformance methods ***/
-#define IDirectMusicPerformance_Init(p,a,b,c) (p)->lpVtbl->Init(p,a,b,c)
-#define IDirectMusicPerformance_PlaySegment(p,a,b,c,d) (p)->lpVtbl->PlaySegment(p,a,b,c,d)
-#define IDirectMusicPerformance_Stop(p,a,b,c,d) (p)->lpVtbl->Stop(p,a,b,c,d)
-#define IDirectMusicPerformance_GetSegmentState(p,a,b) (p)->lpVtbl->GetSegmentState(p,a,b)
-#define IDirectMusicPerformance_SetPrepareTime(p,a) (p)->lpVtbl->SetPrepareTime(p,a)
-#define IDirectMusicPerformance_GetPrepareTime(p,a) (p)->lpVtbl->GetPrepareTime(p,a)
-#define IDirectMusicPerformance_SetBumperLength(p,a) (p)->lpVtbl->SetBumperLength(p,a)
-#define IDirectMusicPerformance_GetBumperLength(p,a) (p)->lpVtbl->GetBumperLength(p,a)
-#define IDirectMusicPerformance_SendPMsg(p,a) (p)->lpVtbl->SendPMsg(p,a)
-#define IDirectMusicPerformance_MusicToReferenceTime(p,a,b) (p)->lpVtbl->MusicToReferenceTime(p,a,b)
-#define IDirectMusicPerformance_ReferenceToMusicTime(p,a,b) (p)->lpVtbl->ReferenceToMusicTime(p,a,b)
-#define IDirectMusicPerformance_IsPlaying(p,a,b) (p)->lpVtbl->IsPlaying(p,a,b)
-#define IDirectMusicPerformance_GetTime(p,a,b) (p)->lpVtbl->GetTime(p,a,b)
-#define IDirectMusicPerformance_AllocPMsg(p,a,b) (p)->lpVtbl->AllocPMsg(p,a,b)
-#define IDirectMusicPerformance_FreePMsg(p,a) (p)->lpVtbl->FreePMsg(p,a)
-#define IDirectMusicPerformance_GetGraph(p,a) (p)->lpVtbl->GetGraph(p,a)
-#define IDirectMusicPerformance_SetGraph(p,a) (p)->lpVtbl->SetGraph(p,a)
-#define IDirectMusicPerformance_SetNotificationHandle(p,a,b) (p)->lpVtbl->SetNotificationHandle(p,a,b)
-#define IDirectMusicPerformance_GetNotificationPMsg(p,a) (p)->lpVtbl->GetNotificationPMsg(p,a)
-#define IDirectMusicPerformance_AddNotificationType(p,a) (p)->lpVtbl->AddNotificationType(p,a)
-#define IDirectMusicPerformance_RemoveNotificationType(p,a) (p)->lpVtbl->RemoveNotificationType(p,a)
-#define IDirectMusicPerformance_AddPort(p,a) (p)->lpVtbl->AddPort(p,a)
-#define IDirectMusicPerformance_RemovePort(p,a) (p)->lpVtbl->RemovePort(p,a)
-#define IDirectMusicPerformance_AssignPChannelBlock(p,a,b,c) (p)->lpVtbl->AssignPChannelBlock(p,a,b,c)
-#define IDirectMusicPerformance_AssignPChannel(p,a,b,c,d) (p)->lpVtbl->AssignPChannel(p,a,b,c,d)
-#define IDirectMusicPerformance_PChannelInfo(p,a,b,c,d) (p)->lpVtbl->PChannelInfo(p,a,b,c,d)
-#define IDirectMusicPerformance_DownloadInstrument(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->DownloadInstrument(p,a,b,c,d,e,f,g,h)
-#define IDirectMusicPerformance_Invalidate(p,a,b) (p)->lpVtbl->Invalidate(p,a,b)
-#define IDirectMusicPerformance_GetParam(p,a,b,c,d,e,f) (p)->lpVtbl->GetParam(p,a,b,c,d,e,f)
-#define IDirectMusicPerformance_SetParam(p,a,b,c,d,e) (p)->lpVtbl->SetParam(p,a,b,c,d,e)
-#define IDirectMusicPerformance_GetGlobalParam(p,a,b,c) (p)->lpVtbl->GetGlobalParam(p,a,b,c)
-#define IDirectMusicPerformance_SetGlobalParam(p,a,b,c) (p)->lpVtbl->SetGlobalParam(p,a,b,c)
-#define IDirectMusicPerformance_GetLatencyTime(p,a) (p)->lpVtbl->GetLatencyTime(p,a)
-#define IDirectMusicPerformance_GetQueueTime(p,a) (p)->lpVtbl->GetQueueTime(p,a)
-#define IDirectMusicPerformance_AdjustTime(p,a) (p)->lpVtbl->AdjustTime(p,a)
-#define IDirectMusicPerformance_CloseDown(p) (p)->lpVtbl->CloseDown(p)
-#define IDirectMusicPerformance_GetResolvedTime(p,a,b,c) (p)->lpVtbl->GetResolvedTime(p,a,b,c)
-#define IDirectMusicPerformance_MIDIToMusic(p,a,b,c,d,e) (p)->lpVtbl->MIDIToMusic(p,a,b,c,d,e)
-#define IDirectMusicPerformance_MusicToMIDI(p,a,b,c,d,e) (p)->lpVtbl->MusicToMIDI(p,a,b,c,d,e)
-#define IDirectMusicPerformance_TimeToRhythm(p,a,b,c,d,e,f) (p)->lpVtbl->TimeToRhythm(p,a,b,c,d,e,f)
-#define IDirectMusicPerformance_RhythmToTime(p,a,b,c,d,e,f) (p)->lpVtbl->RhythmToTime(p,a,b,c,d,e,f)
+#define IDirectMusicPerformance_Init(p,a,b,c) (p)->lpVtbl->Init(p,a,b,c)
+#define IDirectMusicPerformance_PlaySegment(p,a,b,c,d) (p)->lpVtbl->PlaySegment(p,a,b,c,d)
+#define IDirectMusicPerformance_Stop(p,a,b,c,d) (p)->lpVtbl->Stop(p,a,b,c,d)
+#define IDirectMusicPerformance_GetSegmentState(p,a,b) (p)->lpVtbl->GetSegmentState(p,a,b)
+#define IDirectMusicPerformance_SetPrepareTime(p,a) (p)->lpVtbl->SetPrepareTime(p,a)
+#define IDirectMusicPerformance_GetPrepareTime(p,a) (p)->lpVtbl->GetPrepareTime(p,a)
+#define IDirectMusicPerformance_SetBumperLength(p,a) (p)->lpVtbl->SetBumperLength(p,a)
+#define IDirectMusicPerformance_GetBumperLength(p,a) (p)->lpVtbl->GetBumperLength(p,a)
+#define IDirectMusicPerformance_SendPMsg(p,a) (p)->lpVtbl->SendPMsg(p,a)
+#define IDirectMusicPerformance_MusicToReferenceTime(p,a,b) (p)->lpVtbl->MusicToReferenceTime(p,a,b)
+#define IDirectMusicPerformance_ReferenceToMusicTime(p,a,b) (p)->lpVtbl->ReferenceToMusicTime(p,a,b)
+#define IDirectMusicPerformance_IsPlaying(p,a,b) (p)->lpVtbl->IsPlaying(p,a,b)
+#define IDirectMusicPerformance_GetTime(p,a,b) (p)->lpVtbl->GetTime(p,a,b)
+#define IDirectMusicPerformance_AllocPMsg(p,a,b) (p)->lpVtbl->AllocPMsg(p,a,b)
+#define IDirectMusicPerformance_FreePMsg(p,a) (p)->lpVtbl->FreePMsg(p,a)
+#define IDirectMusicPerformance_GetGraph(p,a) (p)->lpVtbl->GetGraph(p,a)
+#define IDirectMusicPerformance_SetGraph(p,a) (p)->lpVtbl->SetGraph(p,a)
+#define IDirectMusicPerformance_SetNotificationHandle(p,a,b) (p)->lpVtbl->SetNotificationHandle(p,a,b)
+#define IDirectMusicPerformance_GetNotificationPMsg(p,a) (p)->lpVtbl->GetNotificationPMsg(p,a)
+#define IDirectMusicPerformance_AddNotificationType(p,a) (p)->lpVtbl->AddNotificationType(p,a)
+#define IDirectMusicPerformance_RemoveNotificationType(p,a) (p)->lpVtbl->RemoveNotificationType(p,a)
+#define IDirectMusicPerformance_AddPort(p,a) (p)->lpVtbl->AddPort(p,a)
+#define IDirectMusicPerformance_RemovePort(p,a) (p)->lpVtbl->RemovePort(p,a)
+#define IDirectMusicPerformance_AssignPChannelBlock(p,a,b,c) (p)->lpVtbl->AssignPChannelBlock(p,a,b,c)
+#define IDirectMusicPerformance_AssignPChannel(p,a,b,c,d) (p)->lpVtbl->AssignPChannel(p,a,b,c,d)
+#define IDirectMusicPerformance_PChannelInfo(p,a,b,c,d) (p)->lpVtbl->PChannelInfo(p,a,b,c,d)
+#define IDirectMusicPerformance_DownloadInstrument(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->DownloadInstrument(p,a,b,c,d,e,f,g,h)
+#define IDirectMusicPerformance_Invalidate(p,a,b) (p)->lpVtbl->Invalidate(p,a,b)
+#define IDirectMusicPerformance_GetParam(p,a,b,c,d,e,f) (p)->lpVtbl->GetParam(p,a,b,c,d,e,f)
+#define IDirectMusicPerformance_SetParam(p,a,b,c,d,e) (p)->lpVtbl->SetParam(p,a,b,c,d,e)
+#define IDirectMusicPerformance_GetGlobalParam(p,a,b,c) (p)->lpVtbl->GetGlobalParam(p,a,b,c)
+#define IDirectMusicPerformance_SetGlobalParam(p,a,b,c) (p)->lpVtbl->SetGlobalParam(p,a,b,c)
+#define IDirectMusicPerformance_GetLatencyTime(p,a) (p)->lpVtbl->GetLatencyTime(p,a)
+#define IDirectMusicPerformance_GetQueueTime(p,a) (p)->lpVtbl->GetQueueTime(p,a)
+#define IDirectMusicPerformance_AdjustTime(p,a) (p)->lpVtbl->AdjustTime(p,a)
+#define IDirectMusicPerformance_CloseDown(p) (p)->lpVtbl->CloseDown(p)
+#define IDirectMusicPerformance_GetResolvedTime(p,a,b,c) (p)->lpVtbl->GetResolvedTime(p,a,b,c)
+#define IDirectMusicPerformance_MIDIToMusic(p,a,b,c,d,e) (p)->lpVtbl->MIDIToMusic(p,a,b,c,d,e)
+#define IDirectMusicPerformance_MusicToMIDI(p,a,b,c,d,e) (p)->lpVtbl->MusicToMIDI(p,a,b,c,d,e)
+#define IDirectMusicPerformance_TimeToRhythm(p,a,b,c,d,e,f) (p)->lpVtbl->TimeToRhythm(p,a,b,c,d,e,f)
+#define IDirectMusicPerformance_RhythmToTime(p,a,b,c,d,e,f) (p)->lpVtbl->RhythmToTime(p,a,b,c,d,e,f)
#endif
@@ -1279,61 +1254,61 @@
#ifdef COBJMACROS
/*** IUnknown methods ***/
-#define IDirectMusicPerformance8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectMusicPerformance8_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectMusicPerformance8_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectMusicPerformance8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicPerformance8_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectMusicPerformance8_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectMusicPerformance methods ***/
-#define IDirectMusicPerformance8_Init(p,a,b,c) (p)->lpVtbl->Init(p,a,b,c)
-#define IDirectMusicPerformance8_PlaySegment(p,a,b,c,d) (p)->lpVtbl->PlaySegment(p,a,b,c,d)
-#define IDirectMusicPerformance8_Stop(p,a,b,c,d) (p)->lpVtbl->Stop(p,a,b,c,d)
-#define IDirectMusicPerformance8_GetSegmentState(p,a,b) (p)->lpVtbl->GetSegmentState(p,a,b)
-#define IDirectMusicPerformance8_SetPrepareTime(p,a) (p)->lpVtbl->SetPrepareTime(p,a)
-#define IDirectMusicPerformance8_GetPrepareTime(p,a) (p)->lpVtbl->GetPrepareTime(p,a)
-#define IDirectMusicPerformance8_SetBumperLength(p,a) (p)->lpVtbl->SetBumperLength(p,a)
-#define IDirectMusicPerformance8_GetBumperLength(p,a) (p)->lpVtbl->GetBumperLength(p,a)
-#define IDirectMusicPerformance8_SendPMsg(p,a) (p)->lpVtbl->SendPMsg(p,a)
-#define IDirectMusicPerformance8_MusicToReferenceTime(p,a,b) (p)->lpVtbl->MusicToReferenceTime(p,a,b)
-#define IDirectMusicPerformance8_ReferenceToMusicTime(p,a,b) (p)->lpVtbl->ReferenceToMusicTime(p,a,b)
-#define IDirectMusicPerformance8_IsPlaying(p,a,b) (p)->lpVtbl->IsPlaying(p,a,b)
-#define IDirectMusicPerformance8_GetTime(p,a,b) (p)->lpVtbl->GetTime(p,a,b)
-#define IDirectMusicPerformance8_AllocPMsg(p,a,b) (p)->lpVtbl->AllocPMsg(p,a,b)
-#define IDirectMusicPerformance8_FreePMsg(p,a) (p)->lpVtbl->FreePMsg(p,a)
-#define IDirectMusicPerformance8_GetGraph(p,a) (p)->lpVtbl->GetGraph(p,a)
-#define IDirectMusicPerformance8_SetGraph(p,a) (p)->lpVtbl->SetGraph(p,a)
-#define IDirectMusicPerformance8_SetNotificationHandle(p,a,b) (p)->lpVtbl->SetNotificationHandle(p,a,b)
-#define IDirectMusicPerformance8_GetNotificationPMsg(p,a) (p)->lpVtbl->GetNotificationPMsg(p,a)
-#define IDirectMusicPerformance8_AddNotificationType(p,a) (p)->lpVtbl->AddNotificationType(p,a)
-#define IDirectMusicPerformance8_RemoveNotificationType(p,a) (p)->lpVtbl->RemoveNotificationType(p,a)
-#define IDirectMusicPerformance8_AddPort(p,a) (p)->lpVtbl->AddPort(p,a)
-#define IDirectMusicPerformance8_RemovePort(p,a) (p)->lpVtbl->RemovePort(p,a)
-#define IDirectMusicPerformance8_AssignPChannelBlock(p,a,b,c) (p)->lpVtbl->AssignPChannelBlock(p,a,b,c)
-#define IDirectMusicPerformance8_AssignPChannel(p,a,b,c,d) (p)->lpVtbl->AssignPChannel(p,a,b,c,d)
-#define IDirectMusicPerformance8_PChannelInfo(p,a,b,c,d) (p)->lpVtbl->PChannelInfo(p,a,b,c,d)
-#define IDirectMusicPerformance8_DownloadInstrument(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->DownloadInstrument(p,a,b,c,d,e,f,g,h)
-#define IDirectMusicPerformance8_Invalidate(p,a,b) (p)->lpVtbl->Invalidate(p,a,b)
-#define IDirectMusicPerformance8_GetParam(p,a,b,c,d,e,f) (p)->lpVtbl->GetParam(p,a,b,c,d,e,f)
-#define IDirectMusicPerformance8_SetParam(p,a,b,c,d,e) (p)->lpVtbl->SetParam(p,a,b,c,d,e)
-#define IDirectMusicPerformance8_GetGlobalParam(p,a,b,c) (p)->lpVtbl->GetGlobalParam(p,a,b,c)
-#define IDirectMusicPerformance8_SetGlobalParam(p,a,b,c) (p)->lpVtbl->SetGlobalParam(p,a,b,c)
-#define IDirectMusicPerformance8_GetLatencyTime(p,a) (p)->lpVtbl->GetLatencyTime(p,a)
-#define IDirectMusicPerformance8_GetQueueTime(p,a) (p)->lpVtbl->GetQueueTime(p,a)
-#define IDirectMusicPerformance8_AdjustTime(p,a) (p)->lpVtbl->AdjustTime(p,a)
-#define IDirectMusicPerformance8_CloseDown(p) (p)->lpVtbl->CloseDown(p)
-#define IDirectMusicPerformance8_GetResolvedTime(p,a,b,c) (p)->lpVtbl->GetResolvedTime(p,a,b,c)
-#define IDirectMusicPerformance8_MIDIToMusic(p,a,b,c,d,e) (p)->lpVtbl->MIDIToMusic(p,a,b,c,d,e)
-#define IDirectMusicPerformance8_MusicToMIDI(p,a,b,c,d,e) (p)->lpVtbl->MusicToMIDI(p,a,b,c,d,e)
-#define IDirectMusicPerformance8_TimeToRhythm(p,a,b,c,d,e,f) (p)->lpVtbl->TimeToRhythm(p,a,b,c,d,e,f)
-#define IDirectMusicPerformance8_RhythmToTime(p,a,b,c,d,e,f) (p)->lpVtbl->RhythmToTime(p,a,b,c,d,e,f)
+#define IDirectMusicPerformance8_Init(p,a,b,c) (p)->lpVtbl->Init(p,a,b,c)
+#define IDirectMusicPerformance8_PlaySegment(p,a,b,c,d) (p)->lpVtbl->PlaySegment(p,a,b,c,d)
+#define IDirectMusicPerformance8_Stop(p,a,b,c,d) (p)->lpVtbl->Stop(p,a,b,c,d)
+#define IDirectMusicPerformance8_GetSegmentState(p,a,b) (p)->lpVtbl->GetSegmentState(p,a,b)
+#define IDirectMusicPerformance8_SetPrepareTime(p,a) (p)->lpVtbl->SetPrepareTime(p,a)
+#define IDirectMusicPerformance8_GetPrepareTime(p,a) (p)->lpVtbl->GetPrepareTime(p,a)
+#define IDirectMusicPerformance8_SetBumperLength(p,a) (p)->lpVtbl->SetBumperLength(p,a)
+#define IDirectMusicPerformance8_GetBumperLength(p,a) (p)->lpVtbl->GetBumperLength(p,a)
+#define IDirectMusicPerformance8_SendPMsg(p,a) (p)->lpVtbl->SendPMsg(p,a)
+#define IDirectMusicPerformance8_MusicToReferenceTime(p,a,b) (p)->lpVtbl->MusicToReferenceTime(p,a,b)
+#define IDirectMusicPerformance8_ReferenceToMusicTime(p,a,b) (p)->lpVtbl->ReferenceToMusicTime(p,a,b)
+#define IDirectMusicPerformance8_IsPlaying(p,a,b) (p)->lpVtbl->IsPlaying(p,a,b)
+#define IDirectMusicPerformance8_GetTime(p,a,b) (p)->lpVtbl->GetTime(p,a,b)
+#define IDirectMusicPerformance8_AllocPMsg(p,a,b) (p)->lpVtbl->AllocPMsg(p,a,b)
+#define IDirectMusicPerformance8_FreePMsg(p,a) (p)->lpVtbl->FreePMsg(p,a)
+#define IDirectMusicPerformance8_GetGraph(p,a) (p)->lpVtbl->GetGraph(p,a)
+#define IDirectMusicPerformance8_SetGraph(p,a) (p)->lpVtbl->SetGraph(p,a)
+#define IDirectMusicPerformance8_SetNotificationHandle(p,a,b) (p)->lpVtbl->SetNotificationHandle(p,a,b)
+#define IDirectMusicPerformance8_GetNotificationPMsg(p,a) (p)->lpVtbl->GetNotificationPMsg(p,a)
+#define IDirectMusicPerformance8_AddNotificationType(p,a) (p)->lpVtbl->AddNotificationType(p,a)
+#define IDirectMusicPerformance8_RemoveNotificationType(p,a) (p)->lpVtbl->RemoveNotificationType(p,a)
+#define IDirectMusicPerformance8_AddPort(p,a) (p)->lpVtbl->AddPort(p,a)
+#define IDirectMusicPerformance8_RemovePort(p,a) (p)->lpVtbl->RemovePort(p,a)
+#define IDirectMusicPerformance8_AssignPChannelBlock(p,a,b,c) (p)->lpVtbl->AssignPChannelBlock(p,a,b,c)
+#define IDirectMusicPerformance8_AssignPChannel(p,a,b,c,d) (p)->lpVtbl->AssignPChannel(p,a,b,c,d)
+#define IDirectMusicPerformance8_PChannelInfo(p,a,b,c,d) (p)->lpVtbl->PChannelInfo(p,a,b,c,d)
+#define IDirectMusicPerformance8_DownloadInstrument(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->DownloadInstrument(p,a,b,c,d,e,f,g,h)
+#define IDirectMusicPerformance8_Invalidate(p,a,b) (p)->lpVtbl->Invalidate(p,a,b)
+#define IDirectMusicPerformance8_GetParam(p,a,b,c,d,e,f) (p)->lpVtbl->GetParam(p,a,b,c,d,e,f)
+#define IDirectMusicPerformance8_SetParam(p,a,b,c,d,e) (p)->lpVtbl->SetParam(p,a,b,c,d,e)
+#define IDirectMusicPerformance8_GetGlobalParam(p,a,b,c) (p)->lpVtbl->GetGlobalParam(p,a,b,c)
+#define IDirectMusicPerformance8_SetGlobalParam(p,a,b,c) (p)->lpVtbl->SetGlobalParam(p,a,b,c)
+#define IDirectMusicPerformance8_GetLatencyTime(p,a) (p)->lpVtbl->GetLatencyTime(p,a)
+#define IDirectMusicPerformance8_GetQueueTime(p,a) (p)->lpVtbl->GetQueueTime(p,a)
+#define IDirectMusicPerformance8_AdjustTime(p,a) (p)->lpVtbl->AdjustTime(p,a)
+#define IDirectMusicPerformance8_CloseDown(p) (p)->lpVtbl->CloseDown(p)
+#define IDirectMusicPerformance8_GetResolvedTime(p,a,b,c) (p)->lpVtbl->GetResolvedTime(p,a,b,c)
+#define IDirectMusicPerformance8_MIDIToMusic(p,a,b,c,d,e) (p)->lpVtbl->MIDIToMusic(p,a,b,c,d,e)
+#define IDirectMusicPerformance8_MusicToMIDI(p,a,b,c,d,e) (p)->lpVtbl->MusicToMIDI(p,a,b,c,d,e)
+#define IDirectMusicPerformance8_TimeToRhythm(p,a,b,c,d,e,f) (p)->lpVtbl->TimeToRhythm(p,a,b,c,d,e,f)
+#define IDirectMusicPerformance8_RhythmToTime(p,a,b,c,d,e,f) (p)->lpVtbl->RhythmToTime(p,a,b,c,d,e,f)
/* IDirectMusicPerformance8 methods*/
-#define IDirectMusicPerformance8_InitAudio(p,a,b,c,d,e,f,g) (p)->lpVtbl->InitAudio(p,a,b,c,d,e,f,g)
-#define IDirectMusicPerformance8_PlaySegmentEx(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->PlaySegmentEx(p,a,b,c,d,e,f,g,h)
-#define IDirectMusicPerformance8_StopEx(p,a,b,c) (p)->lpVtbl->StopEx(p,a,b,c)
-#define IDirectMusicPerformance8_ClonePMsg(p,a,b) (p)->lpVtbl->ClonePMsg(p,a,b)
-#define IDirectMusicPerformance8_CreateAudioPath(p,a,b,c) (p)->lpVtbl->CreateAudioPath(p,a,b,c)
-#define IDirectMusicPerformance8_CreateStandardAudioPath(p,a,b,c,d) (p)->lpVtbl->CreateStandardAudioPath(p,a,b,c,d)
-#define IDirectMusicPerformance8_SetDefaultAudioPath(p,a) (p)->lpVtbl->SetDefaultAudioPath(p,a)
-#define IDirectMusicPerformance8_GetDefaultAudioPath(p,a) (p)->lpVtbl->GetDefaultAudioPath(p,a)
-#define IDirectMusicPerformance8_GetParamEx(p,a,b,c,d,e,f,g) (p)->lpVtbl->GetParamEx(p,a,b,c,d,e,f,g)
+#define IDirectMusicPerformance8_InitAudio(p,a,b,c,d,e,f,g) (p)->lpVtbl->InitAudio(p,a,b,c,d,e,f,g)
+#define IDirectMusicPerformance8_PlaySegmentEx(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->PlaySegmentEx(p,a,b,c,d,e,f,g,h)
+#define IDirectMusicPerformance8_StopEx(p,a,b,c) (p)->lpVtbl->StopEx(p,a,b,c)
+#define IDirectMusicPerformance8_ClonePMsg(p,a,b) (p)->lpVtbl->ClonePMsg(p,a,b)
+#define IDirectMusicPerformance8_CreateAudioPath(p,a,b,c) (p)->lpVtbl->CreateAudioPath(p,a,b,c)
+#define IDirectMusicPerformance8_CreateStandardAudioPath(p,a,b,c,d) (p)->lpVtbl->CreateStandardAudioPath(p,a,b,c,d)
+#define IDirectMusicPerformance8_SetDefaultAudioPath(p,a) (p)->lpVtbl->SetDefaultAudioPath(p,a)
+#define IDirectMusicPerformance8_GetDefaultAudioPath(p,a) (p)->lpVtbl->GetDefaultAudioPath(p,a)
+#define IDirectMusicPerformance8_GetParamEx(p,a,b,c,d,e,f,g) (p)->lpVtbl->GetParamEx(p,a,b,c,d,e,f,g)
#endif
@@ -1387,21 +1362,21 @@
#ifdef COBJMACROS
/*** IUnknown methods ***/
-#define IDirectMusicStyle_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectMusicStyle_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectMusicStyle_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectMusicStyle_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicStyle_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectMusicStyle_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectMusicStyle methods ***/
-#define IDirectMusicStyle_GetBand(p,a,b) (p)->lpVtbl->GetBand(p,a,b)
-#define IDirectMusicStyle_EnumBand(p,a,b) (p)->lpVtbl->EnumBand(p,a,b)
-#define IDirectMusicStyle_GetDefaultBand(p,a) (p)->lpVtbl->GetDefaultBand(p,a)
-#define IDirectMusicStyle_EnumMotif(p,a,b) (p)->lpVtbl->EnumMotif(p,a,b)
-#define IDirectMusicStyle_GetMotif(p,a,b) (p)->lpVtbl->GetMotif(p,a,b)
-#define IDirectMusicStyle_GetDefaultChordMap(p,a) (p)->lpVtbl->GetDefaultChordMap(p,a)
-#define IDirectMusicStyle_EnumChordMap(p,a,b) (p)->lpVtbl->EnumChordMap(p,a,b)
-#define IDirectMusicStyle_GetChordMap(p,a,b) (p)->lpVtbl->GetChordMap(p,a,b)
-#define IDirectMusicStyle_GetTimeSignature(p,a) (p)->lpVtbl->GetTimeSignature(p,a)
-#define IDirectMusicStyle_GetEmbellishmentLength(p,a,b,c,d) (p)->lpVtbl->GetEmbellishmentLength(p,a,b,c,d)
-#define IDirectMusicStyle_GetTempo(p,a) (p)->lpVtbl->GetTempo(p,a)
+#define IDirectMusicStyle_GetBand(p,a,b) (p)->lpVtbl->GetBand(p,a,b)
+#define IDirectMusicStyle_EnumBand(p,a,b) (p)->lpVtbl->EnumBand(p,a,b)
+#define IDirectMusicStyle_GetDefaultBand(p,a) (p)->lpVtbl->GetDefaultBand(p,a)
+#define IDirectMusicStyle_EnumMotif(p,a,b) (p)->lpVtbl->EnumMotif(p,a,b)
+#define IDirectMusicStyle_GetMotif(p,a,b) (p)->lpVtbl->GetMotif(p,a,b)
+#define IDirectMusicStyle_GetDefaultChordMap(p,a) (p)->lpVtbl->GetDefaultChordMap(p,a)
+#define IDirectMusicStyle_EnumChordMap(p,a,b) (p)->lpVtbl->EnumChordMap(p,a,b)
+#define IDirectMusicStyle_GetChordMap(p,a,b) (p)->lpVtbl->GetChordMap(p,a,b)
+#define IDirectMusicStyle_GetTimeSignature(p,a) (p)->lpVtbl->GetTimeSignature(p,a)
+#define IDirectMusicStyle_GetEmbellishmentLength(p,a,b,c,d) (p)->lpVtbl->GetEmbellishmentLength(p,a,b,c,d)
+#define IDirectMusicStyle_GetTempo(p,a) (p)->lpVtbl->GetTempo(p,a)
#endif
@@ -1418,23 +1393,23 @@
#ifdef COBJMACROS
/*** IUnknown methods ***/
-#define IDirectMusicStyle8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectMusicStyle8_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectMusicStyle8_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectMusicStyle8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicStyle8_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectMusicStyle8_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectMusicStyle methods ***/
-#define IDirectMusicStyle8_GetBand(p,a,b) (p)->lpVtbl->GetBand(p,a,b)
-#define IDirectMusicStyle8_EnumBand(p,a,b) (p)->lpVtbl->EnumBand(p,a,b)
-#define IDirectMusicStyle8_GetDefaultBand(p,a) (p)->lpVtbl->GetDefaultBand(p,a)
-#define IDirectMusicStyle8_EnumMotif(p,a,b) (p)->lpVtbl->EnumMotif(p,a,b)
-#define IDirectMusicStyle8_GetMotif(p,a,b) (p)->lpVtbl->GetMotif(p,a,b)
-#define IDirectMusicStyle8_GetDefaultChordMap(p,a) (p)->lpVtbl->GetDefaultChordMap(p,a)
-#define IDirectMusicStyle8_EnumChordMap(p,a,b) (p)->lpVtbl->EnumChordMap(p,a,b)
-#define IDirectMusicStyle8_GetChordMap(p,a,b) (p)->lpVtbl->GetChordMap(p,a,b)
-#define IDirectMusicStyle8_GetTimeSignature(p,a) (p)->lpVtbl->GetTimeSignature(p,a)
-#define IDirectMusicStyle8_GetEmbellishmentLength(p,a,b,c,d) (p)->lpVtbl->GetEmbellishmentLength(p,a,b,c,d)
-#define IDirectMusicStyle8_GetTempo(p,a) (p)->lpVtbl->GetTempo(p,a)
+#define IDirectMusicStyle8_GetBand(p,a,b) (p)->lpVtbl->GetBand(p,a,b)
+#define IDirectMusicStyle8_EnumBand(p,a,b) (p)->lpVtbl->EnumBand(p,a,b)
+#define IDirectMusicStyle8_GetDefaultBand(p,a) (p)->lpVtbl->GetDefaultBand(p,a)
+#define IDirectMusicStyle8_EnumMotif(p,a,b) (p)->lpVtbl->EnumMotif(p,a,b)
+#define IDirectMusicStyle8_GetMotif(p,a,b) (p)->lpVtbl->GetMotif(p,a,b)
+#define IDirectMusicStyle8_GetDefaultChordMap(p,a) (p)->lpVtbl->GetDefaultChordMap(p,a)
+#define IDirectMusicStyle8_EnumChordMap(p,a,b) (p)->lpVtbl->EnumChordMap(p,a,b)
+#define IDirectMusicStyle8_GetChordMap(p,a,b) (p)->lpVtbl->GetChordMap(p,a,b)
+#define IDirectMusicStyle8_GetTimeSignature(p,a) (p)->lpVtbl->GetTimeSignature(p,a)
+#define IDirectMusicStyle8_GetEmbellishmentLength(p,a,b,c,d) (p)->lpVtbl->GetEmbellishmentLength(p,a,b,c,d)
+#define IDirectMusicStyle8_GetTempo(p,a) (p)->lpVtbl->GetTempo(p,a)
/*** IDirectMusicStyle8 methods ***/
-#define IDirectMusicStyle8_EnumPattern(p,a,b,c) (p)->lpVtbl->EnumPattern(p,a,b,c)
+#define IDirectMusicStyle8_EnumPattern(p,a,b,c) (p)->lpVtbl->EnumPattern(p,a,b,c)
#endif
@@ -1505,13 +1480,13 @@
#ifdef COBJMACROS
/*** IUnknown methods ***/
-#define IDirectMusicPatternTrack_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectMusicPatternTrack_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectMusicPatternTrack_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectMusicPatternTrack_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicPatternTrack_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectMusicPatternTrack_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectMusicPatternTrack methods ***/
-#define IDirectMusicPatternTrack_CreateSegment(p,a,b) (p)->lpVtbl->CreateSegment(p,a,b)
-#define IDirectMusicPatternTrack_SetVariation(p,a,b,c) (p)->lpVtbl->SetVariation(p,a,b,c)
-#define IDirectMusicPatternTrack_SetPatternByName(p,a,b,c,d,e) (p)->lpVtbl->SetPatternByName(p,a,b,c,d,e)
+#define IDirectMusicPatternTrack_CreateSegment(p,a,b) (p)->lpVtbl->CreateSegment(p,a,b)
+#define IDirectMusicPatternTrack_SetVariation(p,a,b,c) (p)->lpVtbl->SetVariation(p,a,b,c)
+#define IDirectMusicPatternTrack_SetPatternByName(p,a,b,c,d,e) (p)->lpVtbl->SetPatternByName(p,a,b,c,d,e)
#endif
@@ -1537,20 +1512,20 @@
#ifdef COBJMACROS
/*** IUnknown methods ***/
-#define IDirectMusicScript_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectMusicScript_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectMusicScript_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectMusicScript_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicScript_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectMusicScript_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectMusicScript methods ***/
-#define IDirectMusicPatternTrack_Init(p,a,b) (p)->lpVtbl->Init(p,a,b)
-#define IDirectMusicPatternTrack_CallRoutine(p,a,b) (p)->lpVtbl->CallRoutine(p,a,b)
-#define IDirectMusicPatternTrack_SetVariableVariant(p,a,b,c,d) (p)->lpVtbl->SetVariableVariant(p,a,b,c,d)
-#define IDirectMusicPatternTrack_GetVariableVariant(p,a,b,c) (p)->lpVtbl->GetVariableVariant(p,a,b,c)
-#define IDirectMusicPatternTrack_SetVariableNumber(p,a,b,c) (p)->lpVtbl->SetVariableNumber(p,a,b,c)
-#define IDirectMusicPatternTrack_GetVariableNumber(p,a,b,c) (p)->lpVtbl->GetVariableNumber(p,a,b,c)
-#define IDirectMusicPatternTrack_SetVariableObject(p,a,b,c) (p)->lpVtbl->SetVariableObject(p,a,b,c)
-#define IDirectMusicPatternTrack_GetVariableObject(p,a,b,c,d) (p)->lpVtbl->GetVariableObject(p,a,b,c,d)
-#define IDirectMusicPatternTrack_EnumRoutine(p,a,b) (p)->lpVtbl->EnumRoutine(p,a,b)
-#define IDirectMusicPatternTrack_EnumVariable(p,a,b) (p)->lpVtbl->EnumVariable(p,a,b)
+#define IDirectMusicPatternTrack_Init(p,a,b) (p)->lpVtbl->Init(p,a,b)
+#define IDirectMusicPatternTrack_CallRoutine(p,a,b) (p)->lpVtbl->CallRoutine(p,a,b)
+#define IDirectMusicPatternTrack_SetVariableVariant(p,a,b,c,d) (p)->lpVtbl->SetVariableVariant(p,a,b,c,d)
+#define IDirectMusicPatternTrack_GetVariableVariant(p,a,b,c) (p)->lpVtbl->GetVariableVariant(p,a,b,c)
+#define IDirectMusicPatternTrack_SetVariableNumber(p,a,b,c) (p)->lpVtbl->SetVariableNumber(p,a,b,c)
+#define IDirectMusicPatternTrack_GetVariableNumber(p,a,b,c) (p)->lpVtbl->GetVariableNumber(p,a,b,c)
+#define IDirectMusicPatternTrack_SetVariableObject(p,a,b,c) (p)->lpVtbl->SetVariableObject(p,a,b,c)
+#define IDirectMusicPatternTrack_GetVariableObject(p,a,b,c,d) (p)->lpVtbl->GetVariableObject(p,a,b,c,d)
+#define IDirectMusicPatternTrack_EnumRoutine(p,a,b) (p)->lpVtbl->EnumRoutine(p,a,b)
+#define IDirectMusicPatternTrack_EnumVariable(p,a,b) (p)->lpVtbl->EnumVariable(p,a,b)
#endif
@@ -1567,48 +1542,18 @@
#ifdef COBJMACROS
/*** IUnknown methods ***/
-#define IDirectMusicContainer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectMusicContainer_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectMusicContainer_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectMusicContainer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectMusicContainer_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectMusicContainer_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectMusicContainer methods ***/
-#define IDirectMusicContainer_EnumObject(p,a,b,c,d) (p)->lpVtbl->EnumObject(p,a,b,c,d)
+#define IDirectMusicContainer_EnumObject(p,a,b,c,d) (p)->lpVtbl->EnumObject(p,a,b,c,d)
#endif
-/*****************************************************************************
- * IDirectMusicSong interface
- */
-#undef INTERFACE
-#define INTERFACE IDirectMusicSong
-#define IDirectMusicSong_METHODS \
- IUnknown_METHODS \
- STDMETHOD(Compose)(THIS) PURE; \
- STDMETHOD(GetParam)(THIS_ REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME *pmtNext, void *pParam) PURE; \
- STDMETHOD(GetSegment)(THIS_ WCHAR *pwzName, IDirectMusicSegment **ppSegment) PURE; \
- STDMETHOD(GetAudioPathConfig)(THIS_ IUnknown **ppAudioPathConfig) PURE; \
- STDMETHOD(Download)(THIS_ IUnknown *pAudioPath) PURE; \
- STDMETHOD(Unload)(THIS_ IUnknown *pAudioPath) PURE; \
- STDMETHOD(EnumSegment)(THIS_ DWORD dwIndex, IDirectMusicSegment **ppSegment) PURE;
-ICOM_DEFINE(IDirectMusicSong,IUnknown)
-#undef INTERFACE
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define IDirectMusicSong_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectMusicSong_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectMusicSong_Release(p) (p)->lpVtbl->Release(p)
-/*** IDirectMusicSong methods ***/
-#define IDirectMusicSong_Compose(p) (p)->lpVtbl->Compose(p)
-#define IDirectMusicSong_GetParam(p,a,b,c,d,e,f) (p)->lpVtbl->GetParam(p,a,b,c,d,e,f)
-#define IDirectMusicSong_GetSegment(p,a,b) (p)->lpVtbl->GetSegment(p,a,b)
-#define IDirectMusicSong_GetAudioPathConfig(p,a) (p)->lpVtbl->GetAudioPathConfig(p,a)
-#define IDirectMusicSong_Download(p,a) (p)->lpVtbl->Download(p,a)
-#define IDirectMusicSong_Unload(p,a) (p)->lpVtbl->Unload(p,a)
-#define IDirectMusicSong_EnumSegment(p,a,b) (p)->lpVtbl->EnumSegment(p,a,b)
-#endif
-
#ifdef __cplusplus
}
#endif
+#include <poppack.h>
+
#endif /* __WINE_DMUSIC_PERFORMANCE_H */
diff --git a/include/dmusics.h b/include/dmusics.h
index c401029..457dee2 100644
--- a/include/dmusics.h
+++ b/include/dmusics.h
@@ -1,7 +1,7 @@
/*
* DirectMusic Software Synth Definitions
*
- * 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,28 +23,34 @@
#include <dmusicc.h>
-
/*****************************************************************************
- * Definitions
+ * Registry path
*/
-#define REGSTR_PATH_SOFTWARESYNTHS "Software\\Microsoft\\DirectMusic\\SoftwareSynths"
-#define REFRESH_F_LASTBUFFER 0x00000001
+#define REGSTR_PATH_SOFTWARESYNTHS "Software\\Microsoft\\DirectMusic\\SoftwareSynths"
/*****************************************************************************
* Predeclare the interfaces
*/
+/* IIDs */
+DEFINE_GUID(IID_IDirectMusicSynth, 0x09823661,0x5c85,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
+DEFINE_GUID(IID_IDirectMusicSynth8, 0x53cab625,0x2711,0x4c9f,0x9d,0xe7,0x1b,0x7f,0x92,0x5f,0x6f,0xc8);
+DEFINE_GUID(IID_IDirectMusicSynthSink, 0x09823663,0x5c85,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
-DEFINE_GUID(IID_IDirectMusicSynth, 0x9823661,0x5c85,0x11d2,0xaf,0xa6,0x0,0xaa,0x0,0x24,0xd8,0xb6);
-DEFINE_GUID(IID_IDirectMusicSynth8, 0x53cab625,0x2711,0x4c9f,0x9d,0xe7,0x1b,0x7f,0x92,0x5f,0x6f,0xc8);
-DEFINE_GUID(IID_IDirectMusicSynthSink, 0x9823663,0x5c85,0x11d2,0xaf,0xa6,0x0,0xaa, 0x0,0x24,0xd8,0xb6);
-
-typedef struct IDirectMusicSynth IDirectMusicSynth, *LPDIRECTMUSICSYNTH;
-typedef struct IDirectMusicSynth8 IDirectMusicSynth8, *LPDIRECTMUSICSYNTH8;
+/* typedef definitions */
+typedef struct IDirectMusicSynth IDirectMusicSynth, *LPDIRECTMUSICSYNTH;
+typedef struct IDirectMusicSynth8 IDirectMusicSynth8, *LPDIRECTMUSICSYNTH8;
typedef struct IDirectMusicSynthSink IDirectMusicSynthSink, *LPDIRECTMUSICSYNTHSINK;
-DEFINE_GUID(GUID_DMUS_PROP_SetSynthSink, 0x0a3a5ba5,0x37b6,0x11d2,0xb9,0xf9,0x00,0x00,0xf8,0x75,0xac,0x12);
-DEFINE_GUID(GUID_DMUS_PROP_SinkUsesDSound, 0xbe208857,0x8952,0x11d2,0xba,0x1c,0x00,0x00,0xf8,0x75,0xac,0x12);
+/* GUIDs - property set */
+DEFINE_GUID(GUID_DMUS_PROP_SetSynthSink, 0x0a3a5ba5,0x37b6,0x11d2,0xb9,0xf9,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(GUID_DMUS_PROP_SinkUsesDSound, 0xbe208857,0x8952,0x11d2,0xba,0x1c,0x00,0x00,0xf8,0x75,0xac,0x12);
+
+
+/*****************************************************************************
+ * Flags
+ */
+#define REFRESH_F_LASTBUFFER 0x1
/*****************************************************************************
@@ -53,12 +59,14 @@
#ifndef _DMUS_VOICE_STATE_DEFINED
#define _DMUS_VOICE_STATE_DEFINED
-typedef struct _DMUS_VOICE_STATE
-{
- BOOL bExists;
- SAMPLE_POSITION spPosition;
-} DMUS_VOICE_STATE;
+/* typedef definition */
+typedef struct _DMUS_VOICE_STATE DMUS_VOICE_STATE, *LPDMUS_VOICE_STATE;
+/* actual structure */
+struct _DMUS_VOICE_STATE {
+ BOOL bExists;
+ SAMPLE_POSITION spPosition;
+};
#endif /* _DMUS_VOICE_STATE_DEFINED */