master
  1/*
  2 *  DirectMusic File Formats
  3 *
  4 *  Copyright (C) 2003-2004 Rok Mandeljc
  5 *
  6 *  This program is free software; you can redistribute it and/or
  7 *  modify it under the terms of the GNU Lesser General Public
  8 *  License as published by the Free Software Foundation; either
  9 *  version 2.1 of the License, or (at your option) any later version.
 10 *
 11 *  This program is distributed in the hope that it will be useful,
 12 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 13 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 14 *  Lesser General Public License for more details.
 15 *
 16 *  You should have received a copy of the GNU Lesser General Public
 17 *  License along with this program; if not, write to the Free Software
 18 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 19 */
 20
 21#ifndef __WINE_DMUSIC_FILEFORMATS_H
 22#define __WINE_DMUSIC_FILEFORMATS_H
 23
 24#include <windows.h>
 25
 26#define COM_NO_WINDOWS_H
 27#include <objbase.h>
 28#include <mmsystem.h>
 29#pragma pack(push,8)
 30
 31#ifdef __cplusplus
 32extern "C" {
 33#endif
 34
 35
 36/*****************************************************************************
 37 * FOURCC Definitions
 38 */
 39/* Common chunks */
 40#define DMUS_FOURCC_GUID_CHUNK                     mmioFOURCC('g','u','i','d')
 41#define DMUS_FOURCC_INFO_LIST                      mmioFOURCC('I','N','F','O')
 42#define DMUS_FOURCC_UNFO_LIST                      mmioFOURCC('U','N','F','O')
 43#define DMUS_FOURCC_UNAM_CHUNK                     mmioFOURCC('U','N','A','M')
 44#define DMUS_FOURCC_UART_CHUNK                     mmioFOURCC('U','A','R','T')
 45#define DMUS_FOURCC_UCOP_CHUNK                     mmioFOURCC('U','C','O','P')
 46#define DMUS_FOURCC_USBJ_CHUNK                     mmioFOURCC('U','S','B','J')
 47#define DMUS_FOURCC_UCMT_CHUNK                     mmioFOURCC('U','C','M','T')
 48#define DMUS_FOURCC_CATEGORY_CHUNK                 mmioFOURCC('c','a','t','g')
 49#define DMUS_FOURCC_VERSION_CHUNK                  mmioFOURCC('v','e','r','s')
 50/* AudioPath */
 51#define DMUS_FOURCC_AUDIOPATH_FORM                 mmioFOURCC('D','M','A','P')
 52#define DMUS_FOURCC_PORTCONFIGS_LIST               mmioFOURCC('p','c','s','l')
 53#define DMUS_FOURCC_PORTCONFIG_LIST                mmioFOURCC('p','c','f','l')
 54#define DMUS_FOURCC_PORTCONFIG_ITEM                mmioFOURCC('p','c','f','h')
 55#define DMUS_FOURCC_PORTPARAMS_ITEM                mmioFOURCC('p','p','r','h')
 56#define DMUS_FOURCC_DSBUFFER_LIST                  mmioFOURCC('d','b','f','l')
 57#define DMUS_FOURCC_DSBUFFATTR_ITEM                mmioFOURCC('d','d','a','h')
 58#define DMUS_FOURCC_PCHANNELS_LIST                 mmioFOURCC('p','c','h','l')
 59#define DMUS_FOURCC_PCHANNELS_ITEM                 mmioFOURCC('p','c','h','h')
 60/* Band */
 61#define DMUS_FOURCC_BAND_FORM                      mmioFOURCC('D','M','B','D')
 62#define DMUS_FOURCC_INSTRUMENTS_LIST               mmioFOURCC('l','b','i','l')
 63#define DMUS_FOURCC_INSTRUMENT_LIST                mmioFOURCC('l','b','i','n')
 64#define DMUS_FOURCC_INSTRUMENT_CHUNK               mmioFOURCC('b','i','n','s')
 65/* Chordmap */
 66#define DMUS_FOURCC_CHORDMAP_FORM                  mmioFOURCC('D','M','P','R')
 67#define DMUS_FOURCC_IOCHORDMAP_CHUNK               mmioFOURCC('p','e','r','h')
 68#define DMUS_FOURCC_SUBCHORD_CHUNK                 mmioFOURCC('c','h','d','t')
 69#define DMUS_FOURCC_CHORDENTRY_CHUNK               mmioFOURCC('c','h','e','h')
 70#define DMUS_FOURCC_SUBCHORDID_CHUNK               mmioFOURCC('s','b','c','n')
 71#define DMUS_FOURCC_IONEXTCHORD_CHUNK              mmioFOURCC('n','c','r','d')
 72#define DMUS_FOURCC_NEXTCHORDSEQ_CHUNK             mmioFOURCC('n','c','s','q')
 73#define DMUS_FOURCC_IOSIGNPOST_CHUNK               mmioFOURCC('s','p','s','h')
 74#define DMUS_FOURCC_CHORDNAME_CHUNK                mmioFOURCC('I','N','A','M')
 75#define DMUS_FOURCC_CHORDENTRY_LIST                mmioFOURCC('c','h','o','e')
 76#define DMUS_FOURCC_CHORDMAP_LIST                  mmioFOURCC('c','m','a','p')
 77#define DMUS_FOURCC_CHORD_LIST                     mmioFOURCC('c','h','r','d')
 78#define DMUS_FOURCC_CHORDPALETTE_LIST              mmioFOURCC('c','h','p','l')
 79#define DMUS_FOURCC_CADENCE_LIST                   mmioFOURCC('c','a','d','e')
 80#define DMUS_FOURCC_SIGNPOSTITEM_LIST              mmioFOURCC('s','p','s','t')
 81#define DMUS_FOURCC_SIGNPOST_LIST                  mmioFOURCC('s','p','s','q')
 82/* Container */
 83#define DMUS_FOURCC_CONTAINER_FORM                 mmioFOURCC('D','M','C','N')
 84#define DMUS_FOURCC_CONTAINER_CHUNK                mmioFOURCC('c','o','n','h')
 85#define DMUS_FOURCC_CONTAINED_ALIAS_CHUNK          mmioFOURCC('c','o','b','a')
 86#define DMUS_FOURCC_CONTAINED_OBJECT_CHUNK         mmioFOURCC('c','o','b','h')
 87#define DMUS_FOURCC_CONTAINED_OBJECTS_LIST         mmioFOURCC('c','o','s','l')
 88#define DMUS_FOURCC_CONTAINED_OBJECT_LIST          mmioFOURCC('c','o','b','l')
 89/* DirectSound Buffer Configuration */
 90#define DMUS_FOURCC_DSBC_FORM                      mmioFOURCC('D','S','B','C')
 91#define DMUS_FOURCC_DSBD_CHUNK                     mmioFOURCC('d','s','b','d')
 92#define DMUS_FOURCC_BSID_CHUNK                     mmioFOURCC('b','s','i','d')
 93#define DMUS_FOURCC_DS3D_CHUNK                     mmioFOURCC('d','s','3','d')
 94#define DMUS_FOURCC_DSBC_LIST                      mmioFOURCC('f','x','l','s')
 95/* Effects */
 96#define DMUS_FOURCC_DSFX_FORM                      mmioFOURCC('D','S','F','X')
 97#define DMUS_FOURCC_DSFX_CHUNK                     mmioFOURCC('f','x','h','r')
 98#define DMUS_FOURCC_DSFX_DATA                      mmioFOURCC('d','a','t','a')
 99/* Reference */
100#define DMUS_FOURCC_REF_LIST                       mmioFOURCC('D','M','R','F')
101#define DMUS_FOURCC_REF_CHUNK                      mmioFOURCC('r','e','f','h')
102#define DMUS_FOURCC_DATE_CHUNK                     mmioFOURCC('d','a','t','e')
103#define DMUS_FOURCC_NAME_CHUNK                     mmioFOURCC('n','a','m','e')
104#define DMUS_FOURCC_FILE_CHUNK                     mmioFOURCC('f','i','l','e')
105/* Script */
106#define DMUS_FOURCC_SCRIPT_FORM                    mmioFOURCC('D','M','S','C')
107#define DMUS_FOURCC_SCRIPT_CHUNK                   mmioFOURCC('s','c','h','d')
108#define DMUS_FOURCC_SCRIPTVERSION_CHUNK            mmioFOURCC('s','c','v','e')
109#define DMUS_FOURCC_SCRIPTLANGUAGE_CHUNK           mmioFOURCC('s','c','l','a')
110#define DMUS_FOURCC_SCRIPTSOURCE_CHUNK             mmioFOURCC('s','c','s','r')
111/* Segment */
112#define DMUS_FOURCC_SEGMENT_FORM                   mmioFOURCC('D','M','S','G')
113#define DMUS_FOURCC_SEGMENT_CHUNK                  mmioFOURCC('s','e','g','h')
114#define DMUS_FOURCC_TRACK_LIST                     mmioFOURCC('t','r','k','l')
115/* Style chunks */
116#define DMUS_FOURCC_STYLE_FORM                     mmioFOURCC('D','M','S','T')
117#define DMUS_FOURCC_STYLE_CHUNK                    mmioFOURCC('s','t','y','h')
118#define DMUS_FOURCC_PART_LIST                      mmioFOURCC('p','a','r','t')
119#define DMUS_FOURCC_PART_CHUNK                     mmioFOURCC('p','r','t','h')
120#define DMUS_FOURCC_NOTE_CHUNK                     mmioFOURCC('n','o','t','e')
121#define DMUS_FOURCC_CURVE_CHUNK                    mmioFOURCC('c','r','v','e')
122#define DMUS_FOURCC_MARKER_CHUNK                   mmioFOURCC('m','r','k','r')
123#define DMUS_FOURCC_RESOLUTION_CHUNK               mmioFOURCC('r','s','l','n')
124#define DMUS_FOURCC_ANTICIPATION_CHUNK             mmioFOURCC('a','n','p','n')
125#define DMUS_FOURCC_PATTERN_LIST                   mmioFOURCC('p','t','t','n')
126#define DMUS_FOURCC_PATTERN_CHUNK                  mmioFOURCC('p','t','n','h')
127#define DMUS_FOURCC_RHYTHM_CHUNK                   mmioFOURCC('r','h','t','m')
128#define DMUS_FOURCC_PARTREF_LIST                   mmioFOURCC('p','r','e','f')
129#define DMUS_FOURCC_PARTREF_CHUNK                  mmioFOURCC('p','r','f','c')
130#define DMUS_FOURCC_STYLE_PERS_REF_LIST            mmioFOURCC('p','r','r','f')
131#define DMUS_FOURCC_MOTIFSETTINGS_CHUNK            mmioFOURCC('m','t','f','s')
132/* Tool */
133#define DMUS_FOURCC_TOOL_FORM                      mmioFOURCC('D','M','T','L')
134#define DMUS_FOURCC_TOOL_CHUNK                     mmioFOURCC('t','o','l','h')
135/* ToolGraph */
136#define DMUS_FOURCC_TOOLGRAPH_FORM                 mmioFOURCC('D','M','T','G')
137#define DMUS_FOURCC_TOOL_LIST                      mmioFOURCC('t','o','l','l')
138/* Track */
139#define DMUS_FOURCC_TRACK_FORM                     mmioFOURCC('D','M','T','K')
140#define DMUS_FOURCC_TRACK_CHUNK                    mmioFOURCC('t','r','k','h')
141#define DMUS_FOURCC_TRACK_EXTRAS_CHUNK             mmioFOURCC('t','r','k','x')
142/* Band Track */
143#define DMUS_FOURCC_BANDTRACK_FORM                 mmioFOURCC('D','M','B','T')
144#define DMUS_FOURCC_BANDTRACK_CHUNK                mmioFOURCC('b','d','t','h')
145#define DMUS_FOURCC_BANDS_LIST                     mmioFOURCC('l','b','d','l')
146#define DMUS_FOURCC_BAND_LIST                      mmioFOURCC('l','b','n','d')
147#define DMUS_FOURCC_BANDITEM_CHUNK                 mmioFOURCC('b','d','i','h')
148#define DMUS_FOURCC_BANDITEM_CHUNK2                mmioFOURCC('b','d','2','h')
149/* Chord Track */
150#define DMUS_FOURCC_CHORDTRACK_LIST                mmioFOURCC('c','o','r','d')
151#define DMUS_FOURCC_CHORDTRACKHEADER_CHUNK         mmioFOURCC('c','r','d','h')
152#define DMUS_FOURCC_CHORDTRACKBODY_CHUNK           mmioFOURCC('c','r','d','b')
153/* Chordmap Track */
154#define DMUS_FOURCC_PERS_TRACK_LIST                mmioFOURCC('p','f','t','r')
155#define DMUS_FOURCC_PERS_REF_LIST                  mmioFOURCC('p','f','r','f')
156#define DMUS_FOURCC_TIME_STAMP_CHUNK               mmioFOURCC('s','t','m','p')
157/* Command Track */
158#define DMUS_FOURCC_COMMANDTRACK_CHUNK             mmioFOURCC('c','m','n','d')
159/* Lyrics Track */
160#define DMUS_FOURCC_LYRICSTRACK_LIST               mmioFOURCC('l','y','r','t')
161#define DMUS_FOURCC_LYRICSTRACKEVENTS_LIST         mmioFOURCC('l','y','r','l')
162#define DMUS_FOURCC_LYRICSTRACKEVENT_LIST          mmioFOURCC('l','y','r','e')
163#define DMUS_FOURCC_LYRICSTRACKEVENTHEADER_CHUNK   mmioFOURCC('l','y','r','h')
164#define DMUS_FOURCC_LYRICSTRACKEVENTTEXT_CHUNK     mmioFOURCC('l','y','r','n')
165/* Marker Track */
166#define DMUS_FOURCC_MARKERTRACK_LIST               mmioFOURCC('M','A','R','K')
167#define DMUS_FOURCC_VALIDSTART_CHUNK               mmioFOURCC('v','a','l','s')
168#define DMUS_FOURCC_PLAYMARKER_CHUNK               mmioFOURCC('p','l','a','y')
169/* Mute Track */
170#define DMUS_FOURCC_MUTE_CHUNK                     mmioFOURCC('m','u','t','e')
171/* Parameter Control Track */
172#define DMUS_FOURCC_PARAMCONTROLTRACK_TRACK_LIST   mmioFOURCC('p','r','m','t')
173#define DMUS_FOURCC_PARAMCONTROLTRACK_OBJECT_LIST  mmioFOURCC('p','r','o','l')
174#define DMUS_FOURCC_PARAMCONTROLTRACK_OBJECT_CHUNK mmioFOURCC('p','r','o','h')
175#define DMUS_FOURCC_PARAMCONTROLTRACK_PARAM_LIST   mmioFOURCC('p','r','p','l')
176#define DMUS_FOURCC_PARAMCONTROLTRACK_PARAM_CHUNK  mmioFOURCC('p','r','p','h')
177#define DMUS_FOURCC_PARAMCONTROLTRACK_CURVES_CHUNK mmioFOURCC('p','r','c','c')
178/* Pattern Track */
179#define DMUS_FOURCC_PATTERN_FORM                   mmioFOURCC('D','M','P','T')
180/* Script Track */
181#define DMUS_FOURCC_SCRIPTTRACK_LIST               mmioFOURCC('s','c','r','t')
182#define DMUS_FOURCC_SCRIPTTRACKEVENTS_LIST         mmioFOURCC('s','c','r','l')
183#define DMUS_FOURCC_SCRIPTTRACKEVENT_LIST          mmioFOURCC('s','c','r','e')
184#define DMUS_FOURCC_SCRIPTTRACKEVENTHEADER_CHUNK   mmioFOURCC('s','c','r','h')
185#define DMUS_FOURCC_SCRIPTTRACKEVENTNAME_CHUNK     mmioFOURCC('s','c','r','n')
186/* Segment Trgigger Track */
187#define DMUS_FOURCC_SEGTRACK_LIST                  mmioFOURCC('s','e','g','t')
188#define DMUS_FOURCC_SEGTRACK_CHUNK                 mmioFOURCC('s','g','t','h')
189#define DMUS_FOURCC_SEGMENTS_LIST                  mmioFOURCC('l','s','g','l')
190#define DMUS_FOURCC_SEGMENT_LIST                   mmioFOURCC('l','s','e','g')
191#define DMUS_FOURCC_SEGMENTITEM_CHUNK              mmioFOURCC('s','g','i','h')
192#define DMUS_FOURCC_SEGMENTITEMNAME_CHUNK          mmioFOURCC('s','n','a','m')
193/* Sequence Track */
194#define DMUS_FOURCC_SEQ_TRACK                      mmioFOURCC('s','e','q','t')
195#define DMUS_FOURCC_SEQ_LIST                       mmioFOURCC('e','v','t','l')
196#define DMUS_FOURCC_CURVE_LIST                     mmioFOURCC('c','u','r','l')
197/* Signpost Track */
198#define DMUS_FOURCC_SIGNPOST_TRACK_CHUNK           mmioFOURCC('s','g','n','p')
199/* Style Track */
200#define DMUS_FOURCC_STYLE_TRACK_LIST               mmioFOURCC('s','t','t','r')
201#define DMUS_FOURCC_STYLE_REF_LIST                 mmioFOURCC('s','t','r','f')
202/* SysEx Track */
203#define DMUS_FOURCC_SYSEX_TRACK                    mmioFOURCC('s','y','e','x')
204/* Tempo Track */
205#define DMUS_FOURCC_TEMPO_TRACK                    mmioFOURCC('t','e','t','r')
206/* Time Signature Track */
207#define DMUS_FOURCC_TIMESIGNATURE_TRACK            mmioFOURCC('t','i','m','s')
208#define DMUS_FOURCC_TIMESIGTRACK_LIST              mmioFOURCC('T','I','M','S')
209#define DMUS_FOURCC_TIMESIG_CHUNK                  DMUS_FOURCC_TIMESIGNATURE_TRACK
210/* Wave Track */
211#define DMUS_FOURCC_WAVETRACK_LIST                 mmioFOURCC('w','a','v','t')
212#define DMUS_FOURCC_WAVETRACK_CHUNK                mmioFOURCC('w','a','t','h')
213#define DMUS_FOURCC_WAVEPART_LIST                  mmioFOURCC('w','a','v','p')
214#define DMUS_FOURCC_WAVEPART_CHUNK                 mmioFOURCC('w','a','p','h')
215#define DMUS_FOURCC_WAVEITEM_LIST                  mmioFOURCC('w','a','v','i')
216#define DMUS_FOURCC_WAVE_LIST                      mmioFOURCC('w','a','v','e')
217#define DMUS_FOURCC_WAVEITEM_CHUNK                 mmioFOURCC('w','a','i','h')
218/* Wave Header */
219#define DMUS_FOURCC_WAVEHEADER_CHUNK               mmioFOURCC('w','a','v','h')
220
221
222/*****************************************************************************
223 * Flags
224 */
225#define DMUS_BUFFERF_SHARED  0x1
226#define DMUS_BUFFERF_DEFINED 0x2
227#define DMUS_BUFFERF_MIXIN   0x8
228
229#define DMUS_CHORDMAPF_VERSION8 0x1
230
231#define DMUS_CONTAINED_OBJF_KEEP 0x1
232
233#define DMUS_CONTAINER_NOLOADS 0x2
234
235#define DMUS_IO_INST_PATCH              0x0001
236#define DMUS_IO_INST_BANKSELECT         0x0002
237#define DMUS_IO_INST_ASSIGN_PATCH       0x0008
238#define DMUS_IO_INST_NOTERANGES         0x0010
239#define DMUS_IO_INST_PAN                0x0020
240#define DMUS_IO_INST_VOLUME             0x0040
241#define DMUS_IO_INST_TRANSPOSE          0x0080
242#define DMUS_IO_INST_GM                 0x0100
243#define DMUS_IO_INST_GS                 0x0200
244#define DMUS_IO_INST_XG                 0x0400
245#define DMUS_IO_INST_CHANNEL_PRIORITY   0x0800
246#define DMUS_IO_INST_USE_DEFAULT_GM_SET 0x1000
247#define DMUS_IO_INST_PITCHBENDRANGE     0x2000
248
249#define DMUS_IO_SCRIPTTRACKF_PREPARE 0x1
250#define DMUS_IO_SCRIPTTRACKF_QUEUE   0x2
251#define DMUS_IO_SCRIPTTRACKF_ATTIME  0x4
252
253#define DMUS_MARKERF_START       0x1
254#define DMUS_MARKERF_STOP        0x2
255#define DMUS_MARKERF_CHORD_ALIGN 0x4
256
257#define DMUS_PATTERNF_PERSIST_CONTROL 0x1
258
259#define DMUS_PARTF_USE_MARKERS  0x1
260#define DMUS_PARTF_ALIGN_CHORDS 0x2
261
262#define DMUS_PORTCONFIGF_DRUMSON10  0x1
263#define DMUS_PORTCONFIGF_USEDEFAULT 0x2
264
265#define DMUS_SCRIPTIOF_LOAD_ALL_CONTENT       0x1
266#define DMUS_SCRIPTIOF_DOWNLOAD_ALL_SEGMENTS  0x2
267
268#define DMUS_SEGIOF_REFLENGTH 0x1
269#define DMUS_SEGIOF_CLOCKTIME 0x2
270
271#define DMUS_SEGMENTTRACKF_MOTIF 0x1
272
273/* Song flags; MS doesn't support this in DX 9.0 anymore */
274#define DMUS_SONG_MAXSEGID  0x7FFFFFFF
275#define DMUS_SONG_ANYSEG    0x80000000
276#define DMUS_SONG_NOSEG     0xFFFFFFFF
277#define DMUS_SONG_NOFROMSEG 0x80000001
278
279#define DMUS_SIGNPOSTF_A        0x0001      
280#define DMUS_SIGNPOSTF_B        0x0002
281#define DMUS_SIGNPOSTF_C        0x0004
282#define DMUS_SIGNPOSTF_D        0x0008
283#define DMUS_SIGNPOSTF_E        0x0010
284#define DMUS_SIGNPOSTF_F        0x0020
285#define DMUS_SIGNPOSTF_1        0x0100
286#define DMUS_SIGNPOSTF_2        0x0200
287#define DMUS_SIGNPOSTF_3        0x0400
288#define DMUS_SIGNPOSTF_4        0x0800
289#define DMUS_SIGNPOSTF_5        0x1000
290#define DMUS_SIGNPOSTF_6        0x2000
291#define DMUS_SIGNPOSTF_7        0x4000
292#define DMUS_SIGNPOSTF_CADENCE  0x8000
293#define DMUS_SIGNPOSTF_LETTER   (DMUS_SIGNPOSTF_A | DMUS_SIGNPOSTF_B | DMUS_SIGNPOSTF_C | DMUS_SIGNPOSTF_D | DMUS_SIGNPOSTF_E | DMUS_SIGNPOSTF_F)
294#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)
295
296#define DMUS_SPOSTCADENCEF_1 0x2
297#define DMUS_SPOSTCADENCEF_2 0x4
298
299#define DMUS_VARIATIONF_MAJOR        0x0000007F
300#define DMUS_VARIATIONF_MINOR        0x00003F80
301#define DMUS_VARIATIONF_OTHER        0x001FC000
302#define DMUS_VARIATIONF_ROOT_SCALE   0x00200000
303#define DMUS_VARIATIONF_ROOT_FLAT    0x00400000
304#define DMUS_VARIATIONF_ROOT_SHARP   0x00800000
305#define DMUS_VARIATIONF_TYPE_TRIAD   0x01000000
306#define DMUS_VARIATIONF_TYPE_6AND7   0x02000000
307#define DMUS_VARIATIONF_TYPE_COMPLEX 0x04000000
308#define DMUS_VARIATIONF_DEST_TO1     0x08000000
309#define DMUS_VARIATIONF_DEST_TO5     0x10000000
310#define DMUS_VARIATIONF_DEST_OTHER   0x40000000
311#define DMUS_VARIATIONF_MODES        0xE0000000
312#define DMUS_VARIATIONF_MODES_EX     (0x20000000 | 0x80000000)
313#define DMUS_VARIATIONF_IMA25_MODE   0x00000000
314#define DMUS_VARIATIONF_DMUS_MODE    0x20000000
315
316#define DMUS_WAVETRACKF_SYNC_VAR        0x1
317#define DMUS_WAVETRACKF_PERSIST_CONTROL 0x2
318
319
320/*****************************************************************************
321 * Enumerations
322 */
323/* actual enumerations */
324enum enumDMUS_VARIATIONT_TYPES {
325	DMUS_VARIATIONT_SEQUENTIAL   = 0x0,
326	DMUS_VARIATIONT_RANDOM       = 0x1,
327	DMUS_VARIATIONT_RANDOM_START = 0x2,
328	DMUS_VARIATIONT_NO_REPEAT    = 0x3,
329	DMUS_VARIATIONT_RANDOM_ROW   = 0x4
330};
331
332enum enumDMUS_EMBELLISHT_TYPES {
333	DMUS_EMBELLISHT_NORMAL = 0x0000,
334	DMUS_EMBELLISHT_FILL   = 0x0001,
335	DMUS_EMBELLISHT_BREAK  = 0x0002,
336	DMUS_EMBELLISHT_INTRO  = 0x0004,
337	DMUS_EMBELLISHT_END    = 0x0008,
338	DMUS_EMBELLISHT_MOTIF  = 0x0010,
339	DMUS_EMBELLISHT_ALL    = 0xFFFF
340};
341
342enum enumDMUS_PATTERNT_TYPES {
343	DMUS_PATTERNT_RANDOM       = 0x0,
344	DMUS_PATTERNT_REPEAT       = 0x1,
345	DMUS_PATTERNT_SEQUENTIAL   = 0x2,
346	DMUS_PATTERNT_RANDOM_START = 0x3,
347	DMUS_PATTERNT_NO_REPEAT    = 0x4,
348	DMUS_PATTERNT_RANDOM_ROW   = 0x5
349};
350
351typedef enum enumDMUS_VARIATIONT_TYPES DMUS_VARIATIONT_TYPES;
352typedef enum enumDMUS_EMBELLISHT_TYPES DMUS_EMBELLISHT_TYPES;
353typedef enum enumDMUS_PATTERNT_TYPES   DMUS_PATTERNT_TYPES;
354
355
356/*****************************************************************************
357 * Structures
358 */
359/* typedef definitions */
360typedef struct _DMUS_IO_SEQ_ITEM                       DMUS_IO_SEQ_ITEM,                       *LPDMUS_IO_SEQ_ITEM;
361typedef struct _DMUS_IO_CURVE_ITEM                     DMUS_IO_CURVE_ITEM,                     *LPDMUS_IO_CURVE_ITEM;
362typedef struct _DMUS_IO_TEMPO_ITEM                     DMUS_IO_TEMPO_ITEM,                     *LPDMUS_IO_TEMPO_ITEM;
363typedef struct _DMUS_IO_SYSEX_ITEM                     DMUS_IO_SYSEX_ITEM,                     *LPDMUS_IO_SYSEX_ITEM;
364typedef struct  DMUS_CHORD_KEY                         DMUS_CHORD_PARAM,                       *LPDMUS_CHORD_PARAM; /* in dmusici.h */
365typedef struct _DMUS_RHYTHM_PARAM                      DMUS_RHYTHM_PARAM,                      *LPDMUS_RHYTHM_PARAM;
366typedef struct _DMUS_TEMPO_PARAM                       DMUS_TEMPO_PARAM,                       *LPDMUS_TEMPO_PARAM;
367typedef struct _DMUS_MUTE_PARAM                        DMUS_MUTE_PARAM,                        *LPDMUS_MUTE_PARAM;
368typedef struct _DMUS_IO_TIMESIG                        DMUS_IO_TIMESIG,                        *LPDMUS_IO_TIMESIG;
369typedef struct _DMUS_IO_STYLE                          DMUS_IO_STYLE,                          *LPDMUS_IO_STYLE;
370typedef struct _DMUS_IO_VERSION                        DMUS_IO_VERSION,                        *LPDMUS_IO_VERSION;
371typedef struct _DMUS_IO_PATTERN                        DMUS_IO_PATTERN,                        *LPDMUS_IO_PATTERN;
372typedef struct _DMUS_IO_STYLEPART                      DMUS_IO_STYLEPART,                      *LPDMUS_IO_STYLEPART;
373typedef struct _DMUS_IO_PARTREF                        DMUS_IO_PARTREF,                        *LPDMUS_IO_PARTREF;
374typedef struct _DMUS_IO_STYLENOTE                      DMUS_IO_STYLENOTE,                      *LPDMUS_IO_STYLENOTE;
375typedef struct _DMUS_IO_STYLECURVE                     DMUS_IO_STYLECURVE,                     *LPDMUS_IO_STYLECURVE;
376typedef struct _DMUS_IO_STYLEMARKER                    DMUS_IO_STYLEMARKER,                    *LPDMUS_IO_STYLEMARKER;
377typedef struct _DMUS_IO_STYLERESOLUTION                DMUS_IO_STYLERESOLUTION,                *LPDMUS_IO_STYLERESOLUTION;
378typedef struct _DMUS_IO_STYLE_ANTICIPATION             DMUS_IO_STYLE_ANTICIPATION,             *LPDMUS_IO_STYLE_ANTICIPATION;
379typedef struct _DMUS_IO_MOTIFSETTINGS                  DMUS_IO_MOTIFSETTINGS,                  *LPDMUS_IO_MOTIFSETTINGS;
380typedef struct _DMUS_IO_CHORD                          DMUS_IO_CHORD,                          *LPDMUS_IO_CHORD;
381typedef struct _DMUS_IO_SUBCHORD                       DMUS_IO_SUBCHORD,                       *LPDMUS_IO_SUBCHORD;
382typedef struct _DMUS_IO_COMMAND                        DMUS_IO_COMMAND,                        *LPDMUS_IO_COMMAND;
383typedef struct _DMUS_IO_TOOL_HEADER                    DMUS_IO_TOOL_HEADER,                    *LPDMUS_IO_TOOL_HEADER;
384typedef struct _DMUS_IO_PORTCONFIG_HEADER              DMUS_IO_PORTCONFIG_HEADER,              *LPDMUS_IO_PORTCONFIG_HEADER;
385typedef struct _DMUS_IO_PCHANNELTOBUFFER_HEADER        DMUS_IO_PCHANNELTOBUFFER_HEADER,        *LPDMUS_IO_PCHANNELTOBUFFER_HEADER;
386typedef struct _DMUS_IO_BUFFER_ATTRIBUTES_HEADER       DMUS_IO_BUFFER_ATTRIBUTES_HEADER,       *LPDMUS_IO_BUFFER_ATTRIBUTES_HEADER;
387typedef struct _DMUS_IO_BAND_TRACK_HEADER              DMUS_IO_BAND_TRACK_HEADER,              *LPDMUS_IO_BAND_TRACK_HEADER;
388typedef struct _DMUS_IO_BAND_ITEM_HEADER               DMUS_IO_BAND_ITEM_HEADER,               *LPDMUS_IO_BAND_ITEM_HEADER;
389typedef struct _DMUS_IO_BAND_ITEM_HEADER2              DMUS_IO_BAND_ITEM_HEADER2,              *LPDMUS_IO_BAND_ITEM_HEADER2;
390typedef struct _DMUS_IO_INSTRUMENT                     DMUS_IO_INSTRUMENT,                     *LPDMUS_IO_INSTRUMENT;
391typedef struct _DMUS_IO_WAVE_HEADER                    DMUS_IO_WAVE_HEADER,                    *LPDMUS_IO_WAVE_HEADER;
392typedef struct _DMUS_IO_WAVE_TRACK_HEADER              DMUS_IO_WAVE_TRACK_HEADER,              *LPDMUS_IO_WAVE_TRACK_HEADER;
393typedef struct _DMUS_IO_WAVE_PART_HEADER               DMUS_IO_WAVE_PART_HEADER,               *LPDMUS_IO_WAVE_PART_HEADER;
394typedef struct _DMUS_IO_WAVE_ITEM_HEADER               DMUS_IO_WAVE_ITEM_HEADER,               *LPDMUS_IO_WAVE_ITEM_HEADER;
395typedef struct _DMUS_IO_CONTAINER_HEADER               DMUS_IO_CONTAINER_HEADER,               *LPDMUS_IO_CONTAINER_HEADER;
396typedef struct _DMUS_IO_CONTAINED_OBJECT_HEADER        DMUS_IO_CONTAINED_OBJECT_HEADER,        *LPDMUS_IO_CONTAINED_OBJECT_HEADER;
397typedef struct _DMUS_IO_SEGMENT_HEADER                 DMUS_IO_SEGMENT_HEADER,                 *LPDMUS_IO_SEGMENT_HEADER;	
398typedef struct _DMUS_IO_TRACK_HEADER                   DMUS_IO_TRACK_HEADER,                   *LPDMUS_IO_TRACK_HEADER;
399typedef struct _DMUS_IO_TRACK_EXTRAS_HEADER            DMUS_IO_TRACK_EXTRAS_HEADER,            *LPDMUS_IO_TRACK_EXTRAS_HEADER;
400typedef struct _DMUS_IO_REFERENCE                      DMUS_IO_REFERENCE,                      *LPDMUS_IO_REFERENCE;
401typedef struct _DMUS_IO_CHORDMAP                       DMUS_IO_CHORDMAP,                       *LPDMUS_IO_CHORDMAP;
402typedef struct _DMUS_IO_CHORDMAP_SUBCHORD              DMUS_IO_CHORDMAP_SUBCHORD,              *LPDMUS_IO_CHORDMAP_SUBCHORD;
403typedef struct _DMUS_IO_CHORDMAP_SUBCHORD              DMUS_IO_PERS_SUBCHORD,                  *LPDMUS_IO_PERS_SUBCHORD;
404typedef struct _DMUS_IO_CHORDENTRY                     DMUS_IO_CHORDENTRY,                     *LPDMUS_IO_CHORDENTRY;
405typedef struct _DMUS_IO_NEXTCHORD                      DMUS_IO_NEXTCHORD,                      *LPDMUS_IO_NEXTCHORD;
406typedef struct _DMUS_IO_CHORDMAP_SIGNPOST              DMUS_IO_CHORDMAP_SIGNPOST,              *LPDMUS_IO_CHORDMAP_SIGNPOST;
407typedef struct _DMUS_IO_CHORDMAP_SIGNPOST              DMUS_IO_PERS_SIGNPOST,                  *LPDMUS_IO_PERS_SIGNPOST;
408typedef struct _DMUS_IO_SCRIPT_HEADER                  DMUS_IO_SCRIPT_HEADER,                  *LPDMUS_IO_SCRIPT_HEADER;
409typedef struct _DMUS_IO_SIGNPOST                       DMUS_IO_SIGNPOST,                       *LPDMUS_IO_SIGNPOST;
410typedef struct _DMUS_IO_MUTE                           DMUS_IO_MUTE,                           *LPDMUS_IO_MUTE;
411typedef struct _DMUS_IO_TIMESIGNATURE_ITEM             DMUS_IO_TIMESIGNATURE_ITEM,             *LPDMUS_IO_TIMESIGNATURE_ITEM;
412typedef struct _DMUS_IO_VALID_START                    DMUS_IO_VALID_START,                    *LPDMUS_IO_VALID_START;
413typedef struct _DMUS_IO_PLAY_MARKER                    DMUS_IO_PLAY_MARKER,                    *LPDMUS_IO_PLAY_MARKER;
414typedef struct _DMUS_IO_SEGMENT_TRACK_HEADER           DMUS_IO_SEGMENT_TRACK_HEADER,           *LPDMUS_IO_SEGMENT_TRACK_HEADER;
415typedef struct _DMUS_IO_SEGMENT_ITEM_HEADER            DMUS_IO_SEGMENT_ITEM_HEADER,            *LPDMUS_IO_SEGMENT_ITEM_HEADER;
416typedef struct _DMUS_IO_SCRIPTTRACK_EVENTHEADER        DMUS_IO_SCRIPTTRACK_EVENTHEADER,        *LPDMUS_IO_SCRIPTTRACK_EVENTHEADER;
417typedef struct _DMUS_IO_LYRICSTRACK_EVENTHEADER        DMUS_IO_LYRICSTRACK_EVENTHEADER,        *LPDMUS_IO_LYRICSTRACK_EVENTHEADER;
418typedef struct _DMUS_IO_PARAMCONTROLTRACK_OBJECTHEADER DMUS_IO_PARAMCONTROLTRACK_OBJECTHEADER, *LPDMUS_IO_PARAMCONTROLTRACK_OBJECTHEADER;
419typedef struct _DMUS_IO_PARAMCONTROLTRACK_PARAMHEADER  DMUS_IO_PARAMCONTROLTRACK_PARAMHEADER,  *LPDMUS_IO_PARAMCONTROLTRACK_PARAMHEADER;
420typedef struct _DMUS_IO_PARAMCONTROLTRACK_CURVEINFO    DMUS_IO_PARAMCONTROLTRACK_CURVEINFO,    *LPDMUS_IO_PARAMCONTROLTRACK_CURVEINFO;
421typedef struct _DSOUND_IO_DSBUFFERDESC                 DSOUND_IO_DSBUFFERDESC,                 *LPDSOUND_IO_DSBUFFERDESC;
422typedef struct _DSOUND_IO_DSBUSID                      DSOUND_IO_DSBUSID,                      *LPDSOUND_IO_DSBUSID;
423typedef struct _DSOUND_IO_3D                           DSOUND_IO_3D,                           *LPDSOUND_IO_3D;
424typedef struct _DSOUND_IO_DXDMO_HEADER                 DSOUND_IO_DXDMO_HEADER,                 *LPDSOUND_IO_DXDMO_HEADER;
425typedef struct _DSOUND_IO_DXDMO_DATA                   DSOUND_IO_DXDMO_DATA,                   *LPDSOUND_IO_DXDMO_DATA;
426
427/* actual structures */
428struct _DMUS_IO_SEQ_ITEM {
429	MUSIC_TIME mtTime;
430	MUSIC_TIME mtDuration;
431	DWORD      dwPChannel;
432	short      nOffset; 
433	BYTE       bStatus;
434	BYTE       bByte1;
435	BYTE       bByte2;
436};
437
438struct _DMUS_IO_CURVE_ITEM {
439	MUSIC_TIME mtStart;
440	MUSIC_TIME mtDuration;
441	MUSIC_TIME mtResetDuration;
442	DWORD      dwPChannel;
443	short      nOffset;
444	short      nStartValue;
445	short      nEndValue;
446	short      nResetValue;
447	BYTE       bType;
448	BYTE       bCurveShape;
449	BYTE       bCCData;
450	BYTE       bFlags;
451	/* DX8 */
452	WORD       wParamType;
453	WORD       wMergeIndex;
454};
455
456struct _DMUS_IO_TEMPO_ITEM {
457	MUSIC_TIME lTime;
458	double     dblTempo;
459};
460
461struct _DMUS_IO_SYSEX_ITEM {
462	MUSIC_TIME mtTime;
463	DWORD      dwPChannel;
464	DWORD      dwSysExLength;
465};
466
467struct _DMUS_RHYTHM_PARAM {
468	DMUS_TIMESIGNATURE TimeSig;
469	DWORD              dwRhythmPattern;
470};
471
472struct _DMUS_TEMPO_PARAM {
473	MUSIC_TIME mtTime;
474	double     dblTempo;
475};
476
477struct _DMUS_MUTE_PARAM {
478	DWORD dwPChannel;
479	DWORD dwPChannelMap;
480	WINBOOL  fMute;
481};
482
483#pragma pack(2)
484struct _DMUS_IO_TIMESIG {
485	BYTE bBeatsPerMeasure;
486	BYTE bBeat;
487	WORD wGridsPerBeat;
488};
489
490struct _DMUS_IO_STYLE {
491	DMUS_IO_TIMESIG timeSig;
492	double          dblTempo;   
493};
494
495struct _DMUS_IO_VERSION {
496	DWORD dwVersionMS;
497	DWORD dwVersionLS;
498};
499
500struct _DMUS_IO_PATTERN {
501	DMUS_IO_TIMESIG timeSig;
502	BYTE            bGrooveBottom;
503	BYTE            bGrooveTop;
504	WORD            wEmbellishment;
505	WORD            wNbrMeasures;
506	BYTE            bDestGrooveBottom;
507	BYTE            bDestGrooveTop;
508	DWORD           dwFlags;
509};
510
511struct _DMUS_IO_STYLEPART {
512	DMUS_IO_TIMESIG timeSig;
513	DWORD           dwVariationChoices[32];
514	GUID            guidPartID;
515	WORD            wNbrMeasures;
516	BYTE            bPlayModeFlags;
517	BYTE            bInvertUpper;
518	BYTE            bInvertLower;
519	BYTE            bPad[3];
520	DWORD           dwFlags;
521};
522
523struct _DMUS_IO_PARTREF {
524	GUID  guidPartID;
525	WORD  wLogicalPartID;
526	BYTE  bVariationLockID;
527	BYTE  bSubChordLevel;
528	BYTE  bPriority;
529	BYTE  bRandomVariation;
530	WORD  wPad;
531	DWORD dwPChannel;
532};
533
534
535struct _DMUS_IO_STYLENOTE {
536	MUSIC_TIME mtGridStart;
537	DWORD      dwVariation;
538	MUSIC_TIME mtDuration;
539	short      nTimeOffset;
540	WORD       wMusicValue;
541	BYTE       bVelocity;
542	BYTE       bTimeRange;
543	BYTE       bDurRange;
544	BYTE       bVelRange;
545	BYTE       bInversionID;
546	BYTE       bPlayModeFlags;
547	 /* DX8 */
548	BYTE       bNoteFlags;
549};
550
551struct _DMUS_IO_STYLECURVE {
552	MUSIC_TIME mtGridStart;
553	DWORD      dwVariation;
554	MUSIC_TIME mtDuration;
555	MUSIC_TIME mtResetDuration;
556	short      nTimeOffset;
557	short      nStartValue;
558	short      nEndValue;
559	short      nResetValue;
560	BYTE       bEventType;
561	BYTE       bCurveShape;
562	BYTE       bCCData;
563	BYTE       bFlags;
564	/* DX8 */
565	WORD       wParamType;
566	WORD       wMergeIndex;
567};
568
569struct _DMUS_IO_STYLEMARKER {
570	MUSIC_TIME mtGridStart;
571	DWORD      dwVariation;
572	WORD       wMarkerFlags;
573};
574
575struct _DMUS_IO_STYLERESOLUTION {
576	DWORD dwVariation;
577	WORD  wMusicValue;
578	BYTE  bInversionID;
579	BYTE  bPlayModeFlags;
580};
581
582struct _DMUS_IO_STYLE_ANTICIPATION {
583	MUSIC_TIME mtGridStart;
584	DWORD      dwVariation;
585	short      nTimeOffset;
586	BYTE       bTimeRange;
587};
588
589struct _DMUS_IO_MOTIFSETTINGS {
590	DWORD      dwRepeats;
591	MUSIC_TIME mtPlayStart;
592	MUSIC_TIME mtLoopStart;
593	MUSIC_TIME mtLoopEnd;
594	DWORD      dwResolution;
595};
596#pragma pack()
597
598struct _DMUS_IO_CHORD {
599	WCHAR      wszName[16];
600	MUSIC_TIME mtTime;
601	WORD       wMeasure;
602	BYTE       bBeat;
603	BYTE       bFlags;
604};
605
606struct _DMUS_IO_SUBCHORD {
607	DWORD dwChordPattern;
608	DWORD dwScalePattern;
609	DWORD dwInversionPoints;
610	DWORD dwLevels;
611	BYTE  bChordRoot;
612	BYTE  bScaleRoot;
613};
614
615struct _DMUS_IO_COMMAND {
616	MUSIC_TIME mtTime;
617	WORD       wMeasure;
618	BYTE       bBeat;
619	BYTE       bCommand;
620	BYTE       bGrooveLevel;
621	BYTE       bGrooveRange;
622	BYTE       bRepeatMode;
623};
624
625struct _DMUS_IO_TOOL_HEADER {
626	GUID   guidClassID;
627	LONG   lIndex;
628	DWORD  cPChannels;
629	FOURCC ckid;
630	FOURCC fccType;
631	DWORD  dwPChannels[1];
632};
633
634struct _DMUS_IO_PORTCONFIG_HEADER {
635	GUID  guidPort;
636	DWORD dwPChannelBase;
637	DWORD dwPChannelCount;
638	DWORD dwFlags;
639};
640
641struct _DMUS_IO_PCHANNELTOBUFFER_HEADER {
642	DWORD dwPChannelBase;
643	DWORD dwPChannelCount;
644	DWORD dwBufferCount;
645	DWORD dwFlags;
646};
647
648struct _DMUS_IO_BUFFER_ATTRIBUTES_HEADER {
649	GUID  guidBufferID;
650	DWORD dwFlags;
651};
652
653struct _DMUS_IO_BAND_TRACK_HEADER {
654	WINBOOL bAutoDownload;
655};
656
657struct _DMUS_IO_BAND_ITEM_HEADER {
658	MUSIC_TIME lBandTime;
659};
660
661struct _DMUS_IO_BAND_ITEM_HEADER2 {
662	MUSIC_TIME lBandTimeLogical;
663	MUSIC_TIME lBandTimePhysical;
664};
665
666struct _DMUS_IO_INSTRUMENT {
667	DWORD dwPatch;
668	DWORD dwAssignPatch;
669	DWORD dwNoteRanges[4];
670	DWORD dwPChannel;
671	DWORD dwFlags;
672	BYTE  bPan;
673	BYTE  bVolume;
674	short nTranspose;
675	DWORD dwChannelPriority;
676	short nPitchBendRange;
677};
678
679struct _DMUS_IO_WAVE_HEADER {
680	REFERENCE_TIME rtReadAhead;
681	DWORD          dwFlags;
682};
683
684struct _DMUS_IO_WAVE_TRACK_HEADER {
685	LONG  lVolume;
686	DWORD dwFlags;
687};
688
689struct _DMUS_IO_WAVE_PART_HEADER {
690    LONG  lVolume;
691    DWORD dwVariations;
692    DWORD dwPChannel;
693    DWORD dwLockToPart;
694    DWORD dwFlags;
695    DWORD dwIndex;
696};
697
698struct _DMUS_IO_WAVE_ITEM_HEADER  {
699	LONG           lVolume;
700	LONG           lPitch;
701	DWORD          dwVariations;
702	REFERENCE_TIME rtTime;
703	REFERENCE_TIME rtStartOffset;
704	REFERENCE_TIME rtReserved;
705	REFERENCE_TIME rtDuration;
706	MUSIC_TIME     mtLogicalTime;
707	DWORD          dwLoopStart;
708	DWORD          dwLoopEnd;
709	DWORD          dwFlags;
710	WORD           wVolumeRange;
711	WORD           wPitchRange;
712};
713
714struct _DMUS_IO_CONTAINER_HEADER {
715	DWORD dwFlags;
716};
717
718struct _DMUS_IO_CONTAINED_OBJECT_HEADER {
719	GUID   guidClassID;
720	DWORD  dwFlags;
721	FOURCC ckid;
722	FOURCC fccType;
723};
724
725struct _DMUS_IO_SEGMENT_HEADER {
726	DWORD          dwRepeats;
727	MUSIC_TIME     mtLength;
728	MUSIC_TIME     mtPlayStart;
729	MUSIC_TIME     mtLoopStart;
730	MUSIC_TIME     mtLoopEnd;
731	DWORD          dwResolution;
732	/* DX8 */
733	REFERENCE_TIME rtLength;
734	DWORD          dwFlags;
735	DWORD          dwReserved;
736	/* DX9 */
737	REFERENCE_TIME rtLoopStart;
738	REFERENCE_TIME rtLoopEnd;
739	REFERENCE_TIME rtPlayStart;
740};
741
742struct _DMUS_IO_TRACK_HEADER {
743	GUID   guidClassID;
744	DWORD  dwPosition;
745	DWORD  dwGroup;
746	FOURCC ckid;
747	FOURCC fccType;
748};
749
750struct _DMUS_IO_TRACK_EXTRAS_HEADER {
751	DWORD dwFlags;
752	DWORD dwPriority;
753};
754
755struct _DMUS_IO_REFERENCE {
756	GUID  guidClassID;
757	DWORD dwValidData;
758};
759
760struct _DMUS_IO_CHORDMAP {
761	WCHAR wszLoadName[20];
762	DWORD dwScalePattern;
763	DWORD dwFlags;
764};
765
766struct _DMUS_IO_CHORDMAP_SUBCHORD {
767	DWORD dwChordPattern;
768	DWORD dwScalePattern;
769	DWORD dwInvertPattern;
770	BYTE  bChordRoot;
771	BYTE  bScaleRoot;
772	WORD  wCFlags;
773	DWORD dwLevels;
774};
775
776struct _DMUS_IO_CHORDENTRY {
777	DWORD dwFlags;
778	WORD  wConnectionID;
779};
780
781struct _DMUS_IO_NEXTCHORD {
782	DWORD dwFlags;
783	WORD  nWeight;
784	WORD  wMinBeats;
785	WORD  wMaxBeats;
786	WORD  wConnectionID;
787};
788
789struct _DMUS_IO_CHORDMAP_SIGNPOST {
790	DWORD dwChords;
791	DWORD dwFlags;
792};
793
794struct _DMUS_IO_SCRIPT_HEADER {
795	DWORD dwFlags;
796};
797
798struct _DMUS_IO_SIGNPOST {
799	MUSIC_TIME mtTime;
800	DWORD      dwChords;
801	WORD       wMeasure;
802};
803
804struct _DMUS_IO_MUTE {
805	MUSIC_TIME mtTime;
806	DWORD      dwPChannel;
807	DWORD      dwPChannelMap;
808};
809
810struct _DMUS_IO_TIMESIGNATURE_ITEM {
811	MUSIC_TIME lTime;
812	BYTE       bBeatsPerMeasure;
813	BYTE       bBeat;
814	WORD       wGridsPerBeat;
815};
816
817struct _DMUS_IO_VALID_START {
818	MUSIC_TIME mtTime;
819};
820
821struct _DMUS_IO_PLAY_MARKER {
822	MUSIC_TIME mtTime;
823};
824
825struct _DMUS_IO_SEGMENT_TRACK_HEADER {
826	DWORD dwFlags;
827};
828
829struct _DMUS_IO_SEGMENT_ITEM_HEADER {
830	MUSIC_TIME lTimeLogical;
831	MUSIC_TIME lTimePhysical;
832	DWORD      dwPlayFlags;
833	DWORD      dwFlags;
834};
835
836struct _DMUS_IO_SCRIPTTRACK_EVENTHEADER {
837	DWORD      dwFlags;
838	MUSIC_TIME lTimeLogical;
839	MUSIC_TIME lTimePhysical;
840};
841
842struct _DMUS_IO_LYRICSTRACK_EVENTHEADER {
843	DWORD dwFlags;
844	DWORD dwTimingFlags;
845	MUSIC_TIME lTimeLogical;
846	MUSIC_TIME lTimePhysical;
847};
848
849struct _DMUS_IO_PARAMCONTROLTRACK_OBJECTHEADER {
850	DWORD dwFlags;
851	GUID guidTimeFormat;
852	DWORD dwPChannel;
853	DWORD dwStage;
854	DWORD dwBuffer;
855	GUID guidObject;
856	DWORD dwIndex;
857};
858
859struct _DMUS_IO_PARAMCONTROLTRACK_PARAMHEADER {
860	DWORD dwFlags;
861	DWORD dwIndex;
862};
863
864struct _DMUS_IO_PARAMCONTROLTRACK_CURVEINFO {
865	MUSIC_TIME mtStartTime;
866	MUSIC_TIME mtEndTime;
867	float      fltStartValue;
868	float      fltEndValue;
869	DWORD      dwCurveType;
870	DWORD      dwFlags;
871};
872
873struct _DSOUND_IO_DSBUFFERDESC {
874	DWORD dwFlags;
875	WORD  nChannels;
876	LONG  lVolume;
877	LONG  lPan;
878	DWORD dwReserved;
879};
880
881struct _DSOUND_IO_DSBUSID {
882	DWORD busid[1];
883};
884
885struct _DSOUND_IO_3D {
886	GUID guid3DAlgorithm;
887	DS3DBUFFER ds3d;
888};
889
890struct _DSOUND_IO_DXDMO_HEADER {
891	DWORD dwEffectFlags;
892	GUID  guidDSFXClass;
893	GUID  guidReserved;
894	GUID  guidSendBuffer;
895	DWORD dwReserved;
896};
897
898struct _DSOUND_IO_DXDMO_DATA {
899	DWORD data[1];
900};
901
902#ifdef __cplusplus
903}
904#endif
905
906#pragma pack(pop)
907
908#endif /* __WINE_DMUSIC_FILEFORMATS_H */