1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
|
/*
* 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
*/
/*
* Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
* other than GPL or LGPL is available it will apply instead, Oracle elects to use only
* the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
* a choice of LGPL license versions is made available with the language indicating
* that LGPLv2 or any later version may be used, or where a choice of which version
* of the LGPL is applied is otherwise unspecified.
*/
#ifndef __WINE_DMUSIC_FILEFORMATS_H
#define __WINE_DMUSIC_FILEFORMATS_H
#include <windows.h>
#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 */
|