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