- dls1.h, dmdls.h, dmusics.h: fix typos, add missing definitions

- import dmerror.h, dmplugin.h, dmusicc.h, dmusicf.h, dmusici.h from Wine

svn path=/trunk/; revision=41118
This commit is contained in:
Kamil Hornicek 2009-05-25 14:49:04 +00:00
parent 37ff8d0b06
commit 9f8bb1becc
8 changed files with 3943 additions and 11 deletions

View file

@ -92,6 +92,11 @@ typedef struct _DLSID
BYTE abData4[8];
} DLSID, FAR *LPDLSID;
typedef struct _MIDILOCALE {
ULONG ulBank;
ULONG ulInstrument;
} MIDILOCALE, *LPMIDILOCALE;
typedef struct _INSTHEADER
{
ULONG cRegions;

View file

@ -1,4 +1,4 @@
ifndef _DMDLS_
#ifndef _DMDLS_
#define _DMDLS_
#include "dls1.h"
@ -20,7 +20,7 @@ typedef long PERCENT;
typedef LONGLONG REFERENCE_TIME;
typedef REFERENCE_TIME *LPREFERENCE_TIME;
#ifndef MAKE_FOURCC
#ifndef MAKEFOURCC
#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

View file

@ -0,0 +1,164 @@
/* DirectMusic Error Codes
*
* 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 Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef __WINE_DMUSIC_ERROR_H
#define __WINE_DMUSIC_ERROR_H
/*****************************************************************************
* Error code handling
*/
#define FACILITY_DIRECTMUSIC 0x878
#define DMUS_ERRBASE 0x1000
#ifndef MAKE_HRESULT
#define MAKE_HRESULT(sev,fac,code) \
((HRESULT) (((ULONG)(sev)<<31) | ((ULONG)(fac)<<16) | ((ULONG)(code))) )
#endif
#define MAKE_DMHRESULTSUCCESS(code) MAKE_HRESULT(0, FACILITY_DIRECTMUSIC, (DMUS_ERRBASE + (code)))
#define MAKE_DMHRESULTERROR(code) MAKE_HRESULT(1, FACILITY_DIRECTMUSIC, (DMUS_ERRBASE + (code)))
/*****************************************************************************
* Error codes
*/
#define DMUS_S_PARTIALLOAD MAKE_DMHRESULTSUCCESS(0x091)
#define DMUS_S_PARTIALDOWNLOAD MAKE_DMHRESULTSUCCESS(0x092)
#define DMUS_S_REQUEUE MAKE_DMHRESULTSUCCESS(0x200)
#define DMUS_S_FREE MAKE_DMHRESULTSUCCESS(0x201)
#define DMUS_S_END MAKE_DMHRESULTSUCCESS(0x202)
#define DMUS_S_STRING_TRUNCATED MAKE_DMHRESULTSUCCESS(0x210)
#define DMUS_S_LAST_TOOL MAKE_DMHRESULTSUCCESS(0x211)
#define DMUS_S_OVER_CHORD MAKE_DMHRESULTSUCCESS(0x212)
#define DMUS_S_UP_OCTAVE MAKE_DMHRESULTSUCCESS(0x213)
#define DMUS_S_DOWN_OCTAVE MAKE_DMHRESULTSUCCESS(0x214)
#define DMUS_S_NOBUFFERCONTROL MAKE_DMHRESULTSUCCESS(0x215)
#define DMUS_S_GARBAGE_COLLECTED MAKE_DMHRESULTSUCCESS(0x216)
#define DMUS_E_DRIVER_FAILED MAKE_DMHRESULTERROR(0x0101)
#define DMUS_E_PORTS_OPEN MAKE_DMHRESULTERROR(0x0102)
#define DMUS_E_DEVICE_IN_USE MAKE_DMHRESULTERROR(0x0103)
#define DMUS_E_INSUFFICIENTBUFFER MAKE_DMHRESULTERROR(0x0104)
#define DMUS_E_BUFFERNOTSET MAKE_DMHRESULTERROR(0x0105)
#define DMUS_E_BUFFERNOTAVAILABLE MAKE_DMHRESULTERROR(0x0106)
#define DMUS_E_NOTADLSCOL MAKE_DMHRESULTERROR(0x0108)
#define DMUS_E_INVALIDOFFSET MAKE_DMHRESULTERROR(0x0109)
#define DMUS_E_ALREADY_LOADED MAKE_DMHRESULTERROR(0x0111)
#define DMUS_E_INVALIDPOS MAKE_DMHRESULTERROR(0x0113)
#define DMUS_E_INVALIDPATCH MAKE_DMHRESULTERROR(0x0114)
#define DMUS_E_CANNOTSEEK MAKE_DMHRESULTERROR(0x0115)
#define DMUS_E_CANNOTWRITE MAKE_DMHRESULTERROR(0x0116)
#define DMUS_E_CHUNKNOTFOUND MAKE_DMHRESULTERROR(0x0117)
#define DMUS_E_INVALID_DOWNLOADID MAKE_DMHRESULTERROR(0x0119)
#define DMUS_E_NOT_DOWNLOADED_TO_PORT MAKE_DMHRESULTERROR(0x0120)
#define DMUS_E_ALREADY_DOWNLOADED MAKE_DMHRESULTERROR(0x0121)
#define DMUS_E_UNKNOWN_PROPERTY MAKE_DMHRESULTERROR(0x0122)
#define DMUS_E_SET_UNSUPPORTED MAKE_DMHRESULTERROR(0x0123)
#define DMUS_E_GET_UNSUPPORTED MAKE_DMHRESULTERROR(0x0124)
#define DMUS_E_NOTMONO MAKE_DMHRESULTERROR(0x0125)
#define DMUS_E_BADARTICULATION MAKE_DMHRESULTERROR(0x0126)
#define DMUS_E_BADINSTRUMENT MAKE_DMHRESULTERROR(0x0127)
#define DMUS_E_BADWAVELINK MAKE_DMHRESULTERROR(0x0128)
#define DMUS_E_NOARTICULATION MAKE_DMHRESULTERROR(0x0129)
#define DMUS_E_NOTPCM MAKE_DMHRESULTERROR(0x012A)
#define DMUS_E_BADWAVE MAKE_DMHRESULTERROR(0x012B)
#define DMUS_E_BADOFFSETTABLE MAKE_DMHRESULTERROR(0x012C)
#define DMUS_E_UNKNOWNDOWNLOAD MAKE_DMHRESULTERROR(0x012D)
#define DMUS_E_NOSYNTHSINK MAKE_DMHRESULTERROR(0x012E)
#define DMUS_E_ALREADYOPEN MAKE_DMHRESULTERROR(0x012F)
#define DMUS_E_ALREADYCLOSED MAKE_DMHRESULTERROR(0x0130)
#define DMUS_E_SYNTHNOTCONFIGURED MAKE_DMHRESULTERROR(0x0131)
#define DMUS_E_SYNTHACTIVE MAKE_DMHRESULTERROR(0x0132)
#define DMUS_E_CANNOTREAD MAKE_DMHRESULTERROR(0x0133)
#define DMUS_E_DMUSIC_RELEASED MAKE_DMHRESULTERROR(0x0134)
#define DMUS_E_BUFFER_EMPTY MAKE_DMHRESULTERROR(0x0135)
#define DMUS_E_BUFFER_FULL MAKE_DMHRESULTERROR(0x0136)
#define DMUS_E_PORT_NOT_CAPTURE MAKE_DMHRESULTERROR(0x0137)
#define DMUS_E_PORT_NOT_RENDER MAKE_DMHRESULTERROR(0x0138)
#define DMUS_E_DSOUND_NOT_SET MAKE_DMHRESULTERROR(0x0139)
#define DMUS_E_ALREADY_ACTIVATED MAKE_DMHRESULTERROR(0x013A)
#define DMUS_E_INVALIDBUFFER MAKE_DMHRESULTERROR(0x013B)
#define DMUS_E_WAVEFORMATNOTSUPPORTED MAKE_DMHRESULTERROR(0x013C)
#define DMUS_E_SYNTHINACTIVE MAKE_DMHRESULTERROR(0x013D)
#define DMUS_E_DSOUND_ALREADY_SET MAKE_DMHRESULTERROR(0x013E)
#define DMUS_E_INVALID_EVENT MAKE_DMHRESULTERROR(0x013F)
#define DMUS_E_UNSUPPORTED_STREAM MAKE_DMHRESULTERROR(0x0150)
#define DMUS_E_ALREADY_INITED MAKE_DMHRESULTERROR(0x0151)
#define DMUS_E_INVALID_BAND MAKE_DMHRESULTERROR(0x0152)
#define DMUS_E_TRACK_HDR_NOT_FIRST_CK MAKE_DMHRESULTERROR(0x0155)
#define DMUS_E_TOOL_HDR_NOT_FIRST_CK MAKE_DMHRESULTERROR(0x0156)
#define DMUS_E_INVALID_TRACK_HDR MAKE_DMHRESULTERROR(0x0157)
#define DMUS_E_INVALID_TOOL_HDR MAKE_DMHRESULTERROR(0x0158)
#define DMUS_E_ALL_TOOLS_FAILED MAKE_DMHRESULTERROR(0x0159)
#define DMUS_E_ALL_TRACKS_FAILED MAKE_DMHRESULTERROR(0x0160)
#define DMUS_E_NOT_FOUND MAKE_DMHRESULTERROR(0x0161)
#define DMUS_E_NOT_INIT MAKE_DMHRESULTERROR(0x0162)
#define DMUS_E_TYPE_DISABLED MAKE_DMHRESULTERROR(0x0163)
#define DMUS_E_TYPE_UNSUPPORTED MAKE_DMHRESULTERROR(0x0164)
#define DMUS_E_TIME_PAST MAKE_DMHRESULTERROR(0x0165)
#define DMUS_E_TRACK_NOT_FOUND MAKE_DMHRESULTERROR(0x0166)
#define DMUS_E_TRACK_NO_CLOCKTIME_SUPPORT MAKE_DMHRESULTERROR(0x0167)
#define DMUS_E_NO_MASTER_CLOCK MAKE_DMHRESULTERROR(0x0170)
#define DMUS_E_LOADER_NOCLASSID MAKE_DMHRESULTERROR(0x0180)
#define DMUS_E_LOADER_BADPATH MAKE_DMHRESULTERROR(0x0181)
#define DMUS_E_LOADER_FAILEDOPEN MAKE_DMHRESULTERROR(0x0182)
#define DMUS_E_LOADER_FORMATNOTSUPPORTED MAKE_DMHRESULTERROR(0x0183)
#define DMUS_E_LOADER_FAILEDCREATE MAKE_DMHRESULTERROR(0x0184)
#define DMUS_E_LOADER_OBJECTNOTFOUND MAKE_DMHRESULTERROR(0x0185)
#define DMUS_E_LOADER_NOFILENAME MAKE_DMHRESULTERROR(0x0186)
#define DMUS_E_INVALIDFILE MAKE_DMHRESULTERROR(0x0200)
#define DMUS_E_ALREADY_EXISTS MAKE_DMHRESULTERROR(0x0201)
#define DMUS_E_OUT_OF_RANGE MAKE_DMHRESULTERROR(0x0202)
#define DMUS_E_SEGMENT_INIT_FAILED MAKE_DMHRESULTERROR(0x0203)
#define DMUS_E_ALREADY_SENT MAKE_DMHRESULTERROR(0x0204)
#define DMUS_E_CANNOT_FREE MAKE_DMHRESULTERROR(0x0205)
#define DMUS_E_CANNOT_OPEN_PORT MAKE_DMHRESULTERROR(0x0206)
#define DMUS_E_CANNOT_CONVERT MAKE_DMHRESULTERROR(0x0207)
#define DMUS_E_DESCEND_CHUNK_FAIL MAKE_DMHRESULTERROR(0x0210)
#define DMUS_E_NOT_LOADED MAKE_DMHRESULTERROR(0x0211)
#define DMUS_E_SCRIPT_LANGUAGE_INCOMPATIBLE MAKE_DMHRESULTERROR(0x0213)
#define DMUS_E_SCRIPT_UNSUPPORTED_VARTYPE MAKE_DMHRESULTERROR(0x0214)
#define DMUS_E_SCRIPT_ERROR_IN_SCRIPT MAKE_DMHRESULTERROR(0x0215)
#define DMUS_E_SCRIPT_CANTLOAD_OLEAUT32 MAKE_DMHRESULTERROR(0x0216)
#define DMUS_E_SCRIPT_LOADSCRIPT_ERROR MAKE_DMHRESULTERROR(0x0217)
#define DMUS_E_SCRIPT_INVALID_FILE MAKE_DMHRESULTERROR(0x0218)
#define DMUS_E_INVALID_SCRIPTTRACK MAKE_DMHRESULTERROR(0x0219)
#define DMUS_E_SCRIPT_VARIABLE_NOT_FOUND MAKE_DMHRESULTERROR(0x021A)
#define DMUS_E_SCRIPT_ROUTINE_NOT_FOUND MAKE_DMHRESULTERROR(0x021B)
#define DMUS_E_SCRIPT_CONTENT_READONLY MAKE_DMHRESULTERROR(0x021C)
#define DMUS_E_SCRIPT_NOT_A_REFERENCE MAKE_DMHRESULTERROR(0x021D)
#define DMUS_E_SCRIPT_VALUE_NOT_SUPPORTED MAKE_DMHRESULTERROR(0x021E)
#define DMUS_E_INVALID_SEGMENTTRIGGERTRACK MAKE_DMHRESULTERROR(0x0220)
#define DMUS_E_INVALID_LYRICSTRACK MAKE_DMHRESULTERROR(0x0221)
#define DMUS_E_INVALID_PARAMCONTROLTRACK MAKE_DMHRESULTERROR(0x0222)
#define DMUS_E_AUDIOVBSCRIPT_SYNTAXERROR MAKE_DMHRESULTERROR(0x0223)
#define DMUS_E_AUDIOVBSCRIPT_RUNTIMEERROR MAKE_DMHRESULTERROR(0x0224)
#define DMUS_E_AUDIOVBSCRIPT_OPERATIONFAILURE MAKE_DMHRESULTERROR(0x0225)
#define DMUS_E_AUDIOPATHS_NOT_VALID MAKE_DMHRESULTERROR(0x0226)
#define DMUS_E_AUDIOPATHS_IN_USE MAKE_DMHRESULTERROR(0x0227)
#define DMUS_E_NO_AUDIOPATH_CONFIG MAKE_DMHRESULTERROR(0x0228)
#define DMUS_E_AUDIOPATH_INACTIVE MAKE_DMHRESULTERROR(0x0229)
#define DMUS_E_AUDIOPATH_NOBUFFER MAKE_DMHRESULTERROR(0x022A)
#define DMUS_E_AUDIOPATH_NOPORT MAKE_DMHRESULTERROR(0x022B)
#define DMUS_E_NO_AUDIOPATH MAKE_DMHRESULTERROR(0x022C)
#define DMUS_E_INVALIDCHUNK MAKE_DMHRESULTERROR(0x022D)
#define DMUS_E_AUDIOPATH_NOGLOBALFXBUFFER MAKE_DMHRESULTERROR(0x022E)
#define DMUS_E_INVALID_CONTAINER_OBJECT MAKE_DMHRESULTERROR(0x022F)
#endif /* __WINE_DMUSIC_ERROR_H */

View file

@ -0,0 +1,301 @@
/*
* DirectMusic Performance Layer Plugins API
*
* 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 Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef __WINE_DMUSIC_PLUGIN_H
#define __WINE_DMUSIC_PLUGIN_H
#ifndef __WINESRC__
#include <windows.h>
#endif /* __WINESRC__ */
#define COM_NO_WINDOWS_H
#include <objbase.h>
#include <mmsystem.h>
#include <dmusici.h>
#include <pshpack8.h>
#ifdef __cplusplus
extern "C" {
#endif
/*****************************************************************************
* Registry path
*/
#define DMUS_REGSTR_PATH_TOOLS "Software\\Microsoft\\DirectMusic\\Tools"
/*****************************************************************************
* Predeclare the interfaces
*/
/* 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);
/* 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);
/* typedef definitions */
typedef struct IDirectMusicTrack *LPDIRECTMUSICTRACK;
typedef struct IDirectMusicTrack8 *LPDIRECTMUSICTRACK8;
typedef struct IDirectMusicTool *LPDIRECTMUSICTOOL;
typedef struct IDirectMusicTool8 *LPDIRECTMUSICTOOL8;
/* these are from dmusici.h and are needed here */
typedef struct IDirectMusicPerformance *LPDIRECTMUSICPERFORMANCE;
typedef struct IDirectMusicPerformance8 *LPDIRECTMUSICPERFORMANCE8;
typedef struct IDirectMusicSegment *LPDIRECTMUSICSEGMENT;
typedef struct IDirectMusicSegment8 *LPDIRECTMUSICSEGMENT8;
typedef struct IDirectMusicSegmentState *LPDIRECTMUSICSEGMENTSTATE;
typedef struct IDirectMusicSegmentState8 *LPDIRECTMUSICSEGMENTSTATE8;
typedef struct 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
*/
#define INTERFACE IDirectMusicTool
DECLARE_INTERFACE_(IDirectMusicTool,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IDirectMusicTool methods ***/
STDMETHOD(Init)(THIS_ struct IDirectMusicGraph *pGraph) PURE;
STDMETHOD(GetMsgDeliveryType)(THIS_ DWORD *pdwDeliveryType) PURE;
STDMETHOD(GetMediaTypeArraySize)(THIS_ DWORD *pdwNumElements) PURE;
STDMETHOD(GetMediaTypes)(THIS_ DWORD **padwMediaTypes, DWORD dwNumElements) PURE;
STDMETHOD(ProcessPMsg)(THIS_ struct IDirectMusicPerformance *pPerf, DMUS_PMSG *pPMSG) PURE;
STDMETHOD(Flush)(THIS_ struct IDirectMusicPerformance *pPerf, DMUS_PMSG *pPMSG, REFERENCE_TIME rtTime) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** 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)
/*** 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)
#endif
/*****************************************************************************
* IDirectMusicTool8 interface
*/
#define INTERFACE IDirectMusicTool8
DECLARE_INTERFACE_(IDirectMusicTool8,IDirectMusicTool)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IDirectMusicTool methods ***/
STDMETHOD(Init)(THIS_ struct IDirectMusicGraph *pGraph) PURE;
STDMETHOD(GetMsgDeliveryType)(THIS_ DWORD *pdwDeliveryType) PURE;
STDMETHOD(GetMediaTypeArraySize)(THIS_ DWORD *pdwNumElements) PURE;
STDMETHOD(GetMediaTypes)(THIS_ DWORD **padwMediaTypes, DWORD dwNumElements) PURE;
STDMETHOD(ProcessPMsg)(THIS_ struct IDirectMusicPerformance *pPerf, DMUS_PMSG *pPMSG) PURE;
STDMETHOD(Flush)(THIS_ struct IDirectMusicPerformance *pPerf, DMUS_PMSG *pPMSG, REFERENCE_TIME rtTime) PURE;
/*** IDirectMusicTool8 methods ***/
STDMETHOD(Clone)(THIS_ IDirectMusicTool **ppTool) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** 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)
/*** 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)
/*** IDirectMusicTool8 methods ***/
#define IDirectMusicTool8_Clone(p,a) (p)->lpVtbl->Clone(p,a)
#endif
/*****************************************************************************
* IDirectMusicTrack interface
*/
#define INTERFACE IDirectMusicTrack
DECLARE_INTERFACE_(IDirectMusicTrack,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IDirectMusicTrack methods ***/
STDMETHOD(Init)(THIS_ struct IDirectMusicSegment *pSegment) PURE;
STDMETHOD(InitPlay)(THIS_ struct IDirectMusicSegmentState *pSegmentState, struct IDirectMusicPerformance *pPerformance, void **ppStateData, DWORD dwVirtualTrackID, DWORD dwFlags) PURE;
STDMETHOD(EndPlay)(THIS_ void *pStateData) PURE;
STDMETHOD(Play)(THIS_ void *pStateData, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, MUSIC_TIME mtOffset, DWORD dwFlags, struct IDirectMusicPerformance *pPerf, struct IDirectMusicSegmentState *pSegSt, DWORD dwVirtualID) PURE;
STDMETHOD(GetParam)(THIS_ REFGUID rguidType, MUSIC_TIME mtTime, MUSIC_TIME *pmtNext, void *pParam) PURE;
STDMETHOD(SetParam)(THIS_ REFGUID rguidType, MUSIC_TIME mtTime, void *pParam) PURE;
STDMETHOD(IsParamSupported)(THIS_ REFGUID rguidType) PURE;
STDMETHOD(AddNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
STDMETHOD(RemoveNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
STDMETHOD(Clone)(THIS_ MUSIC_TIME mtStart, MUSIC_TIME mtEnd, IDirectMusicTrack **ppTrack) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** 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)
/*** 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)
#endif
/*****************************************************************************
* IDirectMusicTrack8 interface
*/
#define INTERFACE IDirectMusicTrack8
DECLARE_INTERFACE_(IDirectMusicTrack8,IDirectMusicTrack)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IDirectMusicTrack methods ***/
STDMETHOD(Init)(THIS_ struct IDirectMusicSegment *pSegment) PURE;
STDMETHOD(InitPlay)(THIS_ struct IDirectMusicSegmentState *pSegmentState, struct IDirectMusicPerformance *pPerformance, void **ppStateData, DWORD dwVirtualTrackID, DWORD dwFlags) PURE;
STDMETHOD(EndPlay)(THIS_ void *pStateData) PURE;
STDMETHOD(Play)(THIS_ void *pStateData, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, MUSIC_TIME mtOffset, DWORD dwFlags, struct IDirectMusicPerformance *pPerf, struct IDirectMusicSegmentState *pSegSt, DWORD dwVirtualID) PURE;
STDMETHOD(GetParam)(THIS_ REFGUID rguidType, MUSIC_TIME mtTime, MUSIC_TIME *pmtNext, void *pParam) PURE;
STDMETHOD(SetParam)(THIS_ REFGUID rguidType, MUSIC_TIME mtTime, void *pParam) PURE;
STDMETHOD(IsParamSupported)(THIS_ REFGUID rguidType) PURE;
STDMETHOD(AddNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
STDMETHOD(RemoveNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
STDMETHOD(Clone)(THIS_ MUSIC_TIME mtStart, MUSIC_TIME mtEnd, IDirectMusicTrack **ppTrack) PURE;
/*** IDirectMusicTrack8 methods ***/
STDMETHOD(PlayEx)(THIS_ void *pStateData, REFERENCE_TIME rtStart, REFERENCE_TIME rtEnd, REFERENCE_TIME rtOffset, DWORD dwFlags, struct IDirectMusicPerformance *pPerf, struct IDirectMusicSegmentState *pSegSt, DWORD dwVirtualID) PURE;
STDMETHOD(GetParamEx)(THIS_ REFGUID rguidType, REFERENCE_TIME rtTime, REFERENCE_TIME *prtNext, void *pParam, void *pStateData, DWORD dwFlags) PURE;
STDMETHOD(SetParamEx)(THIS_ REFGUID rguidType, REFERENCE_TIME rtTime, void *pParam, void *pStateData, DWORD dwFlags) PURE;
STDMETHOD(Compose)(THIS_ IUnknown *pContext, DWORD dwTrackGroup, IDirectMusicTrack **ppResultTrack) PURE;
STDMETHOD(Join)(THIS_ IDirectMusicTrack *pNewTrack, MUSIC_TIME mtJoin, IUnknown *pContext, DWORD dwTrackGroup, IDirectMusicTrack **ppResultTrack) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** 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)
/*** 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)
/*** 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)
#endif
#ifdef __cplusplus
}
#endif
#include <poppack.h>
#endif /* __WINE_DMUSIC_PLUGIN_H */

View file

@ -0,0 +1,768 @@
/* DirectMusic Core API Stuff
*
* 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 Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef __WINE_DMUSIC_CORE_H
#define __WINE_DMUSIC_CORE_H
#ifndef __WINESRC__
#include <windows.h>
#endif /* __WINESRC__ */
#define COM_NO_WINDOWS_H
#include <objbase.h>
#include <mmsystem.h>
#include <dls1.h>
#include <dmerror.h>
#include <dmdls.h>
#include <dsound.h>
#include <dmusbuff.h>
#include <pshpack8.h>
#ifdef __cplusplus
extern "C" {
#endif
/*****************************************************************************
* Predeclare the interfaces
*/
/* 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);
#define IID_IDirectMusicCollection8 IID_IDirectMusicCollection
#define IID_IDirectMusicDownload8 IID_IDirectMusicDownload
#define IID_IDirectMusicDownloadedInstrument8 IID_IDirectMusicDownloadedInstrument
#define IID_IDirectMusicInstrument8 IID_IDirectMusicInstrument
#define IID_IDirectMusicPort8 IID_IDirectMusicPort
#define IID_IDirectMusicPortDownload8 IID_IDirectMusicPortDownload
#define IID_IDirectMusicThru8 IID_IDirectMusicThru
/* 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 *LPDIRECTMUSIC;
typedef struct IDirectMusic8 *LPDIRECTMUSIC8;
typedef struct IDirectMusicBuffer *LPDIRECTMUSICBUFFER;
typedef struct IDirectMusicBuffer IDirectMusicBuffer8, *LPDIRECTMUSICBUFFER8;
typedef struct IDirectMusicInstrument *LPDIRECTMUSICINSTRUMENT;
typedef struct IDirectMusicInstrument IDirectMusicInstrument8, *LPDIRECTMUSICINSTRUMENT8;
typedef struct IDirectMusicDownloadedInstrument *LPDIRECTMUSICDOWNLOADEDINSTRUMENT;
typedef struct IDirectMusicDownloadedInstrument IDirectMusicDownloadedInstrument8, *LPDIRECTMUSICDOWNLOADEDINSTRUMENT8;
typedef struct IDirectMusicCollection *LPDIRECTMUSICCOLLECTION;
typedef struct IDirectMusicCollection IDirectMusicCollection8, *LPDIRECTMUSICCOLLECTION8;
typedef struct IDirectMusicDownload *LPDIRECTMUSICDOWNLOAD;
typedef struct IDirectMusicDownload IDirectMusicDownload8, *LPDIRECTMUSICDOWNLOAD8;
typedef struct IDirectMusicPortDownload *LPDIRECTMUSICPORTDOWNLOAD;
typedef struct IDirectMusicPortDownload IDirectMusicPortDownload8, *LPDIRECTMUSICPORTDOWNLOAD8;
typedef struct IDirectMusicPort *LPDIRECTMUSICPORT;
typedef struct IDirectMusicPort IDirectMusicPort8, *LPDIRECTMUSICPORT8;
typedef struct IDirectMusicThru *LPDIRECTMUSICTHRU;
typedef struct IDirectMusicThru IDirectMusicThru8, *LPDIRECTMUSICTHRU8;
typedef struct IReferenceClock *LPREFERENCECLOCK;
/*****************************************************************************
* Typedef definitions
*/
typedef ULONGLONG SAMPLE_TIME, *LPSAMPLE_TIME;
typedef ULONGLONG SAMPLE_POSITION, *LPSAMPLE_POSITION;
/*****************************************************************************
* Flags
*/
#ifndef _DIRECTAUDIO_PRIORITIES_DEFINED_
#define _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 /* _DIRECTAUDIO_PRIORITIES_DEFINED_ */
#define DMUS_CLOCKF_GLOBAL 0x1
#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
#define DMUS_PC_INPUTCLASS 0x0
#define DMUS_PC_OUTPUTCLASS 0x1
#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_PORT_WINMM_DRIVER 0x0
#define DMUS_PORT_USER_MODE_SYNTH 0x1
#define DMUS_PORT_KERNEL_MODE 0x2
#define DMUS_PORT_FEATURE_AUDIOPATH 0x1
#define DMUS_PORT_FEATURE_STREAMING 0x2
#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_VOLUME_MAX 2000
#define DMUS_VOLUME_MIN -20000
#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
#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 DSBUSID_REVERB_SEND 0x00000040
#define DSBUSID_CHORUS_SEND 0x00000041
#define DSBUSID_DYNAMIC_0 0x00000200
#define DSBUSID_NULL 0xFFFFFFFF
/*****************************************************************************
* Enumerations
*/
typedef enum {
DMUS_CLOCK_SYSTEM = 0x0,
DMUS_CLOCK_WAVE = 0x1
} DMUS_CLOCKTYPE;
/*****************************************************************************
* 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;
/* 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;
};
/*****************************************************************************
* IDirectMusic interface
*/
#define INTERFACE IDirectMusic
DECLARE_INTERFACE_(IDirectMusic,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IDirectMusic methods ***/
STDMETHOD(EnumPort)(THIS_ DWORD dwIndex, LPDMUS_PORTCAPS pPortCaps) PURE;
STDMETHOD(CreateMusicBuffer)(THIS_ LPDMUS_BUFFERDESC pBufferDesc, LPDIRECTMUSICBUFFER **ppBuffer, LPUNKNOWN pUnkOuter) PURE;
STDMETHOD(CreatePort)(THIS_ REFCLSID rclsidPort, LPDMUS_PORTPARAMS pPortParams, LPDIRECTMUSICPORT *ppPort, LPUNKNOWN pUnkOuter) PURE;
STDMETHOD(EnumMasterClock)(THIS_ DWORD dwIndex, LPDMUS_CLOCKINFO lpClockInfo) PURE;
STDMETHOD(GetMasterClock)(THIS_ LPGUID pguidClock, struct IReferenceClock **ppReferenceClock) PURE;
STDMETHOD(SetMasterClock)(THIS_ REFGUID rguidClock) PURE;
STDMETHOD(Activate)(THIS_ BOOL fEnable) PURE;
STDMETHOD(GetDefaultPort)(THIS_ LPGUID pguidPort) PURE;
STDMETHOD(SetDirectSound)(THIS_ LPDIRECTSOUND pDirectSound, HWND hWnd) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** 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)
/*** 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)
#endif
/*****************************************************************************
* IDirectMusic8 interface
*/
#define INTERFACE IDirectMusic8
DECLARE_INTERFACE_(IDirectMusic8,IDirectMusic)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IDirectMusic methods ***/
STDMETHOD(EnumPort)(THIS_ DWORD dwIndex, LPDMUS_PORTCAPS pPortCaps) PURE;
STDMETHOD(CreateMusicBuffer)(THIS_ LPDMUS_BUFFERDESC pBufferDesc, LPDIRECTMUSICBUFFER **ppBuffer, LPUNKNOWN pUnkOuter) PURE;
STDMETHOD(CreatePort)(THIS_ REFCLSID rclsidPort, LPDMUS_PORTPARAMS pPortParams, LPDIRECTMUSICPORT *ppPort, LPUNKNOWN pUnkOuter) PURE;
STDMETHOD(EnumMasterClock)(THIS_ DWORD dwIndex, LPDMUS_CLOCKINFO lpClockInfo) PURE;
STDMETHOD(GetMasterClock)(THIS_ LPGUID pguidClock, struct IReferenceClock **ppReferenceClock) PURE;
STDMETHOD(SetMasterClock)(THIS_ REFGUID rguidClock) PURE;
STDMETHOD(Activate)(THIS_ BOOL fEnable) PURE;
STDMETHOD(GetDefaultPort)(THIS_ LPGUID pguidPort) PURE;
STDMETHOD(SetDirectSound)(THIS_ LPDIRECTSOUND pDirectSound, HWND hWnd) PURE;
/*** IDirectMusic8 methods ***/
STDMETHOD(SetExternalMasterClock)(THIS_ struct IReferenceClock *pClock) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** 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)
/*** 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)
/*** IDirectMusic8 methods ***/
#define IDirectMusic8_SetExternalMasterClock(p,a) (p)->lpVtbl->SetExternalMasterClock(p,a)
#endif
/*****************************************************************************
* IDirectMusicBuffer interface
*/
#define INTERFACE IDirectMusicBuffer
DECLARE_INTERFACE_(IDirectMusicBuffer,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IDirectMusicBuffer methods ***/
STDMETHOD(Flush)(THIS) PURE;
STDMETHOD(TotalTime)(THIS_ LPREFERENCE_TIME prtTime) PURE;
STDMETHOD(PackStructured)(THIS_ REFERENCE_TIME rt, DWORD dwChannelGroup, DWORD dwChannelMessage) PURE;
STDMETHOD(PackUnstructured)(THIS_ REFERENCE_TIME rt, DWORD dwChannelGroup, DWORD cb, LPBYTE lpb) PURE;
STDMETHOD(ResetReadPtr)(THIS) PURE;
STDMETHOD(GetNextEvent)(THIS_ LPREFERENCE_TIME prt, LPDWORD pdwChannelGroup, LPDWORD pdwLength, LPBYTE *ppData) PURE;
STDMETHOD(GetRawBufferPtr)(THIS_ LPBYTE *ppData) PURE;
STDMETHOD(GetStartTime)(THIS_ LPREFERENCE_TIME prt) PURE;
STDMETHOD(GetUsedBytes)(THIS_ LPDWORD pcb) PURE;
STDMETHOD(GetMaxBytes)(THIS_ LPDWORD pcb) PURE;
STDMETHOD(GetBufferFormat)(THIS_ LPGUID pGuidFormat) PURE;
STDMETHOD(SetStartTime)(THIS_ REFERENCE_TIME rt) PURE;
STDMETHOD(SetUsedBytes)(THIS_ DWORD cb) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define IDirectMusicBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirectMusicBuffer_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IDirectMusicBuffer_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectMusicBuffer methods ***/
#define IDirectMusicBuffer_Flush(p) (p)->lpVtbl->Flush(p)
#define IDirectMusicBuffer_TotalTime(p,a) (p)->lpVtbl->TotalTime(p,a)
#define IDirectMusicBuffer_PackStructured(p,a,b,c) (p)->lpVtbl->PackStructured(p,a,b,c)
#define IDirectMusicBuffer_PackUnstructured(p,a,b,c,d) (p)->lpVtbl->PackUnstructured(p,a,b,c,d)
#define IDirectMusicBuffer_ResetReadPtr(p) (p)->lpVtbl->ResetReadPtr(p)
#define IDirectMusicBuffer_GetNextEvent(p,a,b,c,d) (p)->lpVtbl->GetNextEvent(p,a,b,c,d)
#define IDirectMusicBuffer_GetRawBufferPtr(p,a) (p)->lpVtbl->GetRawBufferPtr(p,a)
#define IDirectMusicBuffer_GetStartTime(p,a) (p)->lpVtbl->GetStartTime(p,a)
#define IDirectMusicBuffer_GetUsedBytes(p,a) (p)->lpVtbl->GetUsedBytes(p,a)
#define IDirectMusicBuffer_GetMaxBytes(p,a) (p)->lpVtbl->GetMaxBytes(p,a)
#define IDirectMusicBuffer_GetBufferFormat(p,a) (p)->lpVtbl->GetBufferFormat(p,a)
#define IDirectMusicBuffer_SetStartTime(p,a) (p)->lpVtbl->SetStartTime(p,a)
#define IDirectMusicBuffer_SetUsedBytes(p,a) (p)->lpVtbl->SetUsedBytes(p,a)
#endif
/*****************************************************************************
* IDirectMusicInstrument interface
*/
#define INTERFACE IDirectMusicInstrument
DECLARE_INTERFACE_(IDirectMusicInstrument,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IDirectMusicInstrument methods ***/
STDMETHOD(GetPatch)(THIS_ DWORD *pdwPatch) PURE;
STDMETHOD(SetPatch)(THIS_ DWORD dwPatch) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** 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)
/*** IDirectMusicInstrument methods ***/
#define IDirectMusicInstrument_GetPatch(p,a) (p)->lpVtbl->GetPatch(p,a)
#define IDirectMusicInstrument_SetPatch(p,a) (p)->lpVtbl->SetPatch(p,a)
#endif
/*****************************************************************************
* IDirectMusicDownloadedInstrument interface
*/
#define INTERFACE IDirectMusicDownloadedInstrument
DECLARE_INTERFACE_(IDirectMusicDownloadedInstrument,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/* no IDirectMusicDownloadedInstrument methods at this time */
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** 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)
/*** IDirectMusicDownloadedInstrument methods ***/
/* none at this time */
#endif
/*****************************************************************************
* IDirectMusicCollection interface
*/
#define INTERFACE IDirectMusicCollection
DECLARE_INTERFACE_(IDirectMusicCollection,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IDirectMusicCollection methods ***/
STDMETHOD(GetInstrument)(THIS_ DWORD dwPatch, IDirectMusicInstrument **ppInstrument) PURE;
STDMETHOD(EnumInstrument)(THIS_ DWORD dwIndex, DWORD *pdwPatch, LPWSTR pwszName, DWORD dwNameLen) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define IDirectMusicCollection_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirectMusicCollection_AddRef(p) (p)->lpVtbl->AddRef(p)
#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,d) (p)->lpVtbl->EnumInstrument(p,a,b,c,d)
#endif
/*****************************************************************************
* IDirectMusicDownload interface
*/
#define INTERFACE IDirectMusicDownload
DECLARE_INTERFACE_(IDirectMusicDownload,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IDirectMusicDownload methods ***/
STDMETHOD(GetBuffer)(THIS_ void **ppvBuffer, DWORD *pdwSize) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define IDirectMusicDownload_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirectMusicDownload_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IDirectMusicDownload_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectMusicDownload methods ***/
#define IDirectMusicDownload_GetBuffer(p,a,b) (p)->lpVtbl->GetBuffer(p,a,b)
#endif
/*****************************************************************************
* IDirectMusicPortDownload interface
*/
#define INTERFACE IDirectMusicPortDownload
DECLARE_INTERFACE_(IDirectMusicPortDownload,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IDirectMusicPortDownload methods ***/
STDMETHOD(GetBuffer)(THIS_ DWORD dwDLId, IDirectMusicDownload **ppIDMDownload) PURE;
STDMETHOD(AllocateBuffer)(THIS_ DWORD dwSize, IDirectMusicDownload **ppIDMDownload) PURE;
STDMETHOD(GetDLId)(THIS_ DWORD *pdwStartDLId, DWORD dwCount) PURE;
STDMETHOD(GetAppend)(THIS_ DWORD *pdwAppend) PURE;
STDMETHOD(Download)(THIS_ IDirectMusicDownload *pIDMDownload) PURE;
STDMETHOD(Unload)(THIS_ IDirectMusicDownload *pIDMDownload) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** 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)
/*** 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)
#endif
/*****************************************************************************
* IDirectMusicPort interface
*/
#define INTERFACE IDirectMusicPort
DECLARE_INTERFACE_(IDirectMusicPort,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IDirectMusicPort methods ***/
STDMETHOD(PlayBuffer)(THIS_ LPDIRECTMUSICBUFFER pBuffer) PURE;
STDMETHOD(SetReadNotificationHandle)(THIS_ HANDLE hEvent) PURE;
STDMETHOD(Read)(THIS_ LPDIRECTMUSICBUFFER pBuffer) PURE;
STDMETHOD(DownloadInstrument)(THIS_ IDirectMusicInstrument *pInstrument, IDirectMusicDownloadedInstrument **ppDownloadedInstrument, DMUS_NOTERANGE *pNoteRanges, DWORD dwNumNoteRanges) PURE;
STDMETHOD(UnloadInstrument)(THIS_ IDirectMusicDownloadedInstrument *pDownloadedInstrument) PURE;
STDMETHOD(GetLatencyClock)(THIS_ struct 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;
STDMETHOD(GetNumChannelGroups)(THIS_ LPDWORD pdwChannelGroups) PURE;
STDMETHOD(Activate)(THIS_ BOOL fActive) PURE;
STDMETHOD(SetChannelPriority)(THIS_ DWORD dwChannelGroup, DWORD dwChannel, DWORD dwPriority) PURE;
STDMETHOD(GetChannelPriority)(THIS_ DWORD dwChannelGroup, DWORD dwChannel, LPDWORD pdwPriority) PURE;
STDMETHOD(SetDirectSound)(THIS_ LPDIRECTSOUND pDirectSound, LPDIRECTSOUNDBUFFER pDirectSoundBuffer) PURE;
STDMETHOD(GetFormat)(THIS_ LPWAVEFORMATEX pWaveFormatEx, LPDWORD pdwWaveFormatExSize, LPDWORD pdwBufferSize) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** 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)
/*** 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_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
/*****************************************************************************
* IDirectMusicThru interface
*/
#define INTERFACE IDirectMusicThru
DECLARE_INTERFACE_(IDirectMusicThru,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IDirectMusicThru methods ***/
STDMETHOD(ThruChannel)(THIS_ DWORD dwSourceChannelGroup, DWORD dwSourceChannel, DWORD dwDestinationChannelGroup, DWORD dwDestinationChannel, LPDIRECTMUSICPORT pDestinationPort) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define IDirectMusicThru_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirectMusicThru_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IDirectMusicThru_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectMusicThru methods ***/
#define IDirectMusicThru_ThruChannel(p,a,b,c,d,e) (p)->lpVtbl->ThruChannel(p,a,b,c,d,e)
#endif
#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
*/
#define INTERFACE IReferenceClock
DECLARE_INTERFACE_(IReferenceClock,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IReferenceClock 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;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** 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__ */
#ifdef __cplusplus
}
#endif
#include <poppack.h>
#endif /* __WINE_DMUSIC_CORE_H */

View file

@ -0,0 +1,911 @@
/*
* DirectMusic File Formats
*
* 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 Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef __WINE_DMUSIC_FILEFORMATS_H
#define __WINE_DMUSIC_FILEFORMATS_H
#ifndef __WINESRC__
#include <windows.h>
#endif /* __WINESRC__ */
#define COM_NO_WINDOWS_H
#include <objbase.h>
#include <mmsystem.h>
#include <pshpack8.h>
#ifdef __cplusplus
extern "C" {
#endif
/*****************************************************************************
* FOURCC Definitions
*/
/* 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')
/*****************************************************************************
* Flags
*/
#define DMUS_BUFFERF_SHARED 0x1
#define DMUS_BUFFERF_DEFINED 0x2
#define DMUS_BUFFERF_MIXIN 0x8
#define DMUS_CHORDMAPF_VERSION8 0x1
#define DMUS_CONTAINED_OBJF_KEEP 0x1
#define DMUS_CONTAINER_NOLOADS 0x2
#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_IO_SCRIPTTRACKF_PREPARE 0x1
#define DMUS_IO_SCRIPTTRACKF_QUEUE 0x2
#define DMUS_IO_SCRIPTTRACKF_ATTIME 0x4
#define DMUS_MARKERF_START 0x1
#define DMUS_MARKERF_STOP 0x2
#define DMUS_MARKERF_CHORD_ALIGN 0x4
#define DMUS_PATTERNF_PERSIST_CONTROL 0x1
#define DMUS_PARTF_USE_MARKERS 0x1
#define DMUS_PARTF_ALIGN_CHORDS 0x2
#define DMUS_PORTCONFIGF_DRUMSON10 0x1
#define DMUS_PORTCONFIGF_USEDEFAULT 0x2
#define DMUS_SCRIPTIOF_LOAD_ALL_CONTENT 0x1
#define DMUS_SCRIPTIOF_DOWNLOAD_ALL_SEGMENTS 0x2
#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
/*****************************************************************************
* 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;
/* 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
};
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 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;
/* actual structures */
struct _DMUS_IO_SEQ_ITEM {
MUSIC_TIME mtTime;
MUSIC_TIME mtDuration;
DWORD dwPChannel;
short nOffset;
BYTE bStatus;
BYTE bByte1;
BYTE bByte2;
};
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;
};
struct _DMUS_IO_TEMPO_ITEM {
MUSIC_TIME lTime;
double dblTempo;
};
struct _DMUS_IO_SYSEX_ITEM {
MUSIC_TIME mtTime;
DWORD dwPChannel;
DWORD dwSysExLength;
};
struct _DMUS_RHYTHM_PARAM {
DMUS_TIMESIGNATURE TimeSig;
DWORD dwRhythmPattern;
};
struct _DMUS_TEMPO_PARAM {
MUSIC_TIME mtTime;
double dblTempo;
};
struct _DMUS_MUTE_PARAM {
DWORD dwPChannel;
DWORD dwPChannelMap;
BOOL fMute;
};
#pragma pack(2)
struct _DMUS_IO_TIMESIG {
BYTE bBeatsPerMeasure;
BYTE bBeat;
WORD wGridsPerBeat;
};
struct _DMUS_IO_STYLE {
DMUS_IO_TIMESIG timeSig;
double dblTempo;
};
struct _DMUS_IO_VERSION {
DWORD dwVersionMS;
DWORD dwVersionLS;
};
struct _DMUS_IO_PATTERN {
DMUS_IO_TIMESIG timeSig;
BYTE bGrooveBottom;
BYTE bGrooveTop;
WORD wEmbellishment;
WORD wNbrMeasures;
BYTE bDestGrooveBottom;
BYTE bDestGrooveTop;
DWORD dwFlags;
};
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;
};
struct _DMUS_IO_PARTREF {
GUID guidPartID;
WORD wLogicalPartID;
BYTE bVariationLockID;
BYTE bSubChordLevel;
BYTE bPriority;
BYTE bRandomVariation;
WORD wPad;
DWORD dwPChannel;
};
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;
};
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;
};
struct _DMUS_IO_STYLEMARKER {
MUSIC_TIME mtGridStart;
DWORD dwVariation;
WORD wMarkerFlags;
};
struct _DMUS_IO_STYLERESOLUTION {
DWORD dwVariation;
WORD wMusicValue;
BYTE bInversionID;
BYTE bPlayModeFlags;
};
struct _DMUS_IO_STYLE_ANTICIPATION {
MUSIC_TIME mtGridStart;
DWORD dwVariation;
short nTimeOffset;
BYTE bTimeRange;
};
struct _DMUS_IO_MOTIFSETTINGS {
DWORD dwRepeats;
MUSIC_TIME mtPlayStart;
MUSIC_TIME mtLoopStart;
MUSIC_TIME mtLoopEnd;
DWORD dwResolution;
};
#pragma pack()
struct _DMUS_IO_CHORD {
WCHAR wszName[16];
MUSIC_TIME mtTime;
WORD wMeasure;
BYTE bBeat;
BYTE bFlags;
};
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;
};
struct _DMUS_IO_TOOL_HEADER {
GUID guidClassID;
LONG lIndex;
DWORD cPChannels;
FOURCC ckid;
FOURCC fccType;
DWORD dwPChannels[1];
};
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;
};
struct _DMUS_IO_BUFFER_ATTRIBUTES_HEADER {
GUID guidBufferID;
DWORD dwFlags;
};
struct _DMUS_IO_BAND_TRACK_HEADER {
BOOL bAutoDownload;
};
struct _DMUS_IO_BAND_ITEM_HEADER {
MUSIC_TIME lBandTime;
};
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;
};
struct _DMUS_IO_WAVE_HEADER {
REFERENCE_TIME rtReadAhead;
DWORD dwFlags;
};
struct _DMUS_IO_WAVE_TRACK_HEADER {
LONG lVolume;
DWORD dwFlags;
};
struct _DMUS_IO_WAVE_PART_HEADER {
LONG lVolume;
DWORD dwVariations;
DWORD dwPChannel;
DWORD dwLockToPart;
DWORD dwFlags;
DWORD dwIndex;
};
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;
};
struct _DMUS_IO_CONTAINED_OBJECT_HEADER {
GUID guidClassID;
DWORD dwFlags;
FOURCC ckid;
FOURCC fccType;
};
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;
};
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;
};
struct _DMUS_IO_REFERENCE {
GUID guidClassID;
DWORD dwValidData;
};
struct _DMUS_IO_CHORDMAP {
WCHAR wszLoadName[20];
DWORD dwScalePattern;
DWORD dwFlags;
};
struct _DMUS_IO_CHORDMAP_SUBCHORD {
DWORD dwChordPattern;
DWORD dwScalePattern;
DWORD dwInvertPattern;
BYTE bChordRoot;
BYTE bScaleRoot;
WORD wCFlags;
DWORD dwLevels;
};
struct _DMUS_IO_CHORDENTRY {
DWORD dwFlags;
WORD wConnectionID;
};
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 lTimeLogical;
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 */

File diff suppressed because it is too large Load diff

View file

@ -9,11 +9,6 @@
interface IDirectMusicSynth;
interface IDirectMusicSynthSink;
#ifndef __cplusplus
typedef interface IDirectMusicSynth IDirectMusicSynth;
typedef interface IDirectMusicSynthSink IDirectMusicSynthSink;
#endif
#ifndef _DMUS_VOICE_STATE_DEFINED
#define _DMUS_VOICE_STATE_DEFINED
@ -52,16 +47,38 @@ DECLARE_INTERFACE_(IDirectMusicSynth, IUnknown)
STDMETHOD(SetMasterClock) (THIS_ IReferenceClock *pClock) PURE;
STDMETHOD(GetLatencyClock) (THIS_ IReferenceClock **ppClock) PURE;
STDMETHOD(Activate) (THIS_ BOOL fEnable) PURE;
STDMETHOD(SetSynthSink) (THIS_ IDirectMusicSynthSink *pSynthSink) PURE;
STDMETHOD(SetSynthSink) (THIS_ struct IDirectMusicSynthSink *pSynthSink) PURE;
STDMETHOD(Render) (THIS_ short *pBuffer, DWORD dwLength, LONGLONG llPosition) PURE;
STDMETHOD(SetChannelPriority) (THIS_ DWORD dwChannelGroup, DWORD dwChannel, DWORD dwPriority) PURE;
STDMETHOD(GetChannelPriority) (THIS_ DWORD dwChannelGroup, DWORD dwChannel, LPDWORD pdwPriority) PURE;
STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pWaveFormatEx, LPDWORD pdwWaveFormatExSize) PURE;
STDMETHOD(GetAppend) (THIS_ DWORD* pdwAppend) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
#define IDirectMusicSynth_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
#define IDirectMusicSynth_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IDirectMusicSynth_Release(p) (p)->lpVtbl->Release(p)
#define IDirectMusicSynth_Open(p, a) (p)->lpVtbl->Open(p, a)
#define IDirectMusicSynth_Close(p) (p)->lpVtbl->Close(p)
#define IDirectMusicSynth_SetNumChannelGroups(p, a) (p)->lpVtbl->SetNumChannelGroups(p, a)
#define IDirectMusicSynth_Download(p, a, b, c) (p)->lpVtbl->Download(p, a, b, c)
#define IDirectMusicSynth_Unload(p, a, b, c) (p)->lpVtbl->Unload(p, a, b, c)
#define IDirectMusicSynth_PlayBuffer(p, a, b, c) (p)->lpVtbl->PlayBuffer(p, a, b, c)
#define IDirectMusicSynth_GetRunningStats(p, a) (p)->lpVtbl->GetRunningStats(p, a)
#define IDirectMusicSynth_GetPortCaps(p, a) (p)->lpVtbl->GetPortCaps(p, a)
#define IDirectMusicSynth_SetMasterClock(p, a) (p)->lpVtbl->SetMasterClock((p, a)
#define IDirectMusicSynth_GetLatencyClock(p, a) (p)->lpVtbl->GetLatencyClock(p, a)
#define IDirectMusicSynth_Activate(p, a) (p)->lpVtbl->Activate((p, a)
#define IDirectMusicSynth_SetSynthSink(p, a) (p)->lpVtbl->SetSynthSink(p, a)
#define IDirectMusicSynth_Render(p, a, b, c) (p)->lpVtbl->Render(p, a, b, c)
#define IDirectMusicSynth_SetChannelPriority(p, a, b, c) (p)->lpVtbl->SetChannelPriority(p, a, b, c)
#define IDirectMusicSynth_GetChannelPriority(p, a, b, c) (p)->lpVtbl->GetChannelPriority(p, a, b, c)
#define IDirectMusicSynth_GetFormat(p, a, b) (p)->lpVtbl->GetFormat(p, a, b)
#define IDirectMusicSynth_GetAppend(p, a) (p)->lpVtbl->GetAppend(p, a)
#endif
#define INTERFACE IDirectMusicSynth8
DECLARE_INTERFACE_(IDirectMusicSynth8, IDirectMusicSynth)
{
@ -79,7 +96,7 @@ DECLARE_INTERFACE_(IDirectMusicSynth8, IDirectMusicSynth)
STDMETHOD(SetMasterClock) (THIS_ IReferenceClock *pClock) PURE;
STDMETHOD(GetLatencyClock) (THIS_ IReferenceClock **ppClock) PURE;
STDMETHOD(Activate) (THIS_ BOOL fEnable) PURE;
STDMETHOD(SetSynthSink) (THIS_ IDirectMusicSynthSink *pSynthSink) PURE;
STDMETHOD(SetSynthSink) (THIS_ struct IDirectMusicSynthSink *pSynthSink) PURE;
STDMETHOD(Render) (THIS_ short *pBuffer, DWORD dwLength, LONGLONG llPosition) PURE;
STDMETHOD(SetChannelPriority) (THIS_ DWORD dwChannelGroup, DWORD dwChannel, DWORD dwPriority) PURE;
STDMETHOD(GetChannelPriority) (THIS_ DWORD dwChannelGroup, DWORD dwChannel, LPDWORD pdwPriority) PURE;
@ -91,8 +108,36 @@ DECLARE_INTERFACE_(IDirectMusicSynth8, IDirectMusicSynth)
STDMETHOD(Refresh) (THIS_ DWORD dwDownloadID, DWORD dwFlags) PURE;
STDMETHOD(AssignChannelToBuses) (THIS_ DWORD dwChannelGroup, DWORD dwChannel, LPDWORD pdwBuses, DWORD cBuses) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
#define IDirectMusicSynth8_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
#define IDirectMusicSynth8_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IDirectMusicSynth8_Release(p) (p)->lpVtbl->Release(p)
#define IDirectMusicSynth8_Open(p, a) (p)->lpVtbl->Open(p, a)
#define IDirectMusicSynth8_Close(p) (p)->lpVtbl->Close(p)
#define IDirectMusicSynth8_SetNumChannelGroups(p, a) (p)->lpVtbl->SetNumChannelGroups(p, a)
#define IDirectMusicSynth8_Download(p, a, b, c) (p)->lpVtbl->Download(p, a, b, c)
#define IDirectMusicSynth8_Unload(p, a, b, c) (p)->lpVtbl->Unload(p, a, b, c)
#define IDirectMusicSynth8_PlayBuffer(p, a, b, c) (p)->lpVtbl->PlayBuffer(p, a, b, c)
#define IDirectMusicSynth8_GetRunningStats(p, a) (p)->lpVtbl->GetRunningStats(p, a)
#define IDirectMusicSynth8_GetPortCaps(p, a) (p)->lpVtbl->GetPortCaps(p, a)
#define IDirectMusicSynth8_SetMasterClock(p, a) (p)->lpVtbl->SetMasterClock((p, a)
#define IDirectMusicSynth8_GetLatencyClock(p, a) (p)->lpVtbl->GetLatencyClock(p, a)
#define IDirectMusicSynth8_Activate(p, a) (p)->lpVtbl->Activate((p, a)
#define IDirectMusicSynth8_SetSynthSink(p, a) (p)->lpVtbl->SetSynthSink(p, a)
#define IDirectMusicSynth8_Render(p, a, b, c) (p)->lpVtbl->Render(p, a, b, c)
#define IDirectMusicSynth8_SetChannelPriority(p, a, b, c) (p)->lpVtbl->SetChannelPriority(p, a, b, c)
#define IDirectMusicSynth8_GetChannelPriority(p, a, b, c) (p)->lpVtbl->GetChannelPriority(p, a, b, c)
#define IDirectMusicSynth8_GetFormat(p, a, b) (p)->lpVtbl->GetFormat(p, a, b)
#define IDirectMusicSynth8_GetAppend(p, a) (p)->lpVtbl->GetAppend(p, a)
#define IDirectMusicSynth8_PlayVoice(p, a, b, c, d, e, f, g, h, i, j) (p)->lpVtbl->PlayVoice(p, a, b, c, d, e, f, g, h, i, j)
#define IDirectMusicSynth8_StopVoice(p, a, b) (p)->lpVtbl->StopVoice(p, a, b)
#define IDirectMusicSynth8_GetVoiceState(p, a, b, c) (p)->lpVtbl->GetVoiceState(p, a, b, c)
#define IDirectMusicSynth8_Refresh(p, a, b) (p)->lpVtbl->Refresh(p, a, b)
#define IDirectMusicSynth8_AssignChannelToBuses(p, a, b, c, d) (p)->lpVtbl->AssignChannelToBuses(p, a, b, c, d)
#endif
#define INTERFACE IDirectMusicSynthSink
DECLARE_INTERFACE_(IDirectMusicSynthSink, IUnknown)
{