[PSDK]
[reactos.git] / include / dxsdk / dmdls.h
1 #ifndef _DMDLS_
2 #define _DMDLS_
3
4 #include "dls1.h"
5
6 #define DMUS_DOWNLOADINFO_INSTRUMENT 1
7 #define DMUS_DOWNLOADINFO_WAVE 2
8 #define DMUS_DOWNLOADINFO_INSTRUMENT2 3
9 #define DMUS_DOWNLOADINFO_WAVEARTICULATION 4
10 #define DMUS_DOWNLOADINFO_STREAMINGWAVE 5
11 #define DMUS_DOWNLOADINFO_ONESHOTWAVE 6
12 #define DMUS_DEFAULT_SIZE_OFFSETTABLE 1
13 #define DMUS_INSTRUMENT_GM_INSTRUMENT (1 << 0)
14 #define DMUS_MIN_DATA_SIZE 4
15
16 typedef long PCENT;
17 typedef long GCENT;
18 typedef long TCENT;
19 typedef long PERCENT;
20 typedef LONGLONG REFERENCE_TIME;
21 typedef REFERENCE_TIME *LPREFERENCE_TIME;
22
23 #ifndef MAKEFOURCC
24 #define MAKEFOURCC(ch0, ch1, ch2, ch3) ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
25 typedef DWORD FOURCC;
26 #endif
27
28
29 typedef struct _DMUS_LFOPARAMS
30 {
31 PCENT pcFrequency;
32 TCENT tcDelay;
33 GCENT gcVolumeScale;
34 PCENT pcPitchScale;
35 GCENT gcMWToVolume;
36 PCENT pcMWToPitch;
37 } DMUS_LFOPARAMS;
38
39 typedef struct _DMUS_VEGPARAMS
40 {
41 TCENT tcAttack;
42 TCENT tcDecay;
43 PERCENT ptSustain;
44 TCENT tcRelease;
45 TCENT tcVel2Attack;
46 TCENT tcKey2Decay;
47 } DMUS_VEGPARAMS;
48
49 typedef struct _DMUS_PEGPARAMS
50 {
51 TCENT tcAttack;
52 TCENT tcDecay;
53 PERCENT ptSustain;
54 TCENT tcRelease;
55 TCENT tcVel2Attack;
56 TCENT tcKey2Decay;
57 PCENT pcRange;
58 } DMUS_PEGPARAMS;
59
60 typedef struct _DMUS_MSCPARAMS
61 {
62 PERCENT ptDefaultPan;
63 } DMUS_MSCPARAMS;
64
65 typedef struct _DMUS_DOWNLOADINFO
66 {
67 DWORD dwDLType;
68 DWORD dwDLId;
69 DWORD dwNumOffsetTableEntries;
70 DWORD cbSize;
71 } DMUS_DOWNLOADINFO;
72
73 typedef struct _DMUS_OFFSETTABLE
74 {
75 ULONG ulOffsetTable[DMUS_DEFAULT_SIZE_OFFSETTABLE];
76 } DMUS_OFFSETTABLE;
77
78 typedef struct _DMUS_INSTRUMENT
79 {
80 ULONG ulPatch;
81 ULONG ulFirstRegionIdx;
82 ULONG ulGlobalArtIdx;
83 ULONG ulFirstExtCkIdx;
84 ULONG ulCopyrightIdx;
85 ULONG ulFlags;
86 } DMUS_INSTRUMENT;
87
88 typedef struct _DMUS_REGION
89 {
90 RGNRANGE RangeKey;
91 RGNRANGE RangeVelocity;
92 USHORT fusOptions;
93 USHORT usKeyGroup;
94 ULONG ulRegionArtIdx;
95 ULONG ulNextRegionIdx;
96 ULONG ulFirstExtCkIdx;
97 WAVELINK WaveLink;
98 WSMPL WSMP;
99 WLOOP WLOOP[1];
100 } DMUS_REGION;
101
102 typedef struct _DMUS_NOTERANGE
103 {
104 DWORD dwLowNote;
105 DWORD dwHighNote;
106 } DMUS_NOTERANGE, *LPDMUS_NOTERANGE;
107
108 typedef struct _DMUS_COPYRIGHT
109 {
110 ULONG cbSize;
111 BYTE byCopyright[DMUS_MIN_DATA_SIZE];
112 } DMUS_COPYRIGHT;
113
114
115 typedef struct _DMUS_EXTENSIONCHUNK
116 {
117 ULONG cbSize;
118 ULONG ulNextExtCkIdx;
119 FOURCC ExtCkID;
120 BYTE byExtCk[DMUS_MIN_DATA_SIZE];
121 } DMUS_EXTENSIONCHUNK;
122
123
124 typedef struct _DMUS_WAVE
125 {
126 ULONG ulFirstExtCkIdx;
127 ULONG ulCopyrightIdx;
128 ULONG ulWaveDataIdx;
129 WAVEFORMATEX WaveformatEx;
130 } DMUS_WAVE;
131
132 typedef struct _DMUS_WAVEDATA
133 {
134 ULONG cbSize;
135 BYTE byData[DMUS_MIN_DATA_SIZE];
136 } DMUS_WAVEDATA;
137
138 typedef struct _DMUS_ARTICULATION
139 {
140 ULONG ulArt1Idx;
141 ULONG ulFirstExtCkIdx;
142 } DMUS_ARTICULATION;
143
144 typedef struct _DMUS_ARTICULATION2
145 {
146 ULONG ulArtIdx;
147 ULONG ulFirstExtCkIdx;
148 ULONG ulNextArtIdx;
149 } DMUS_ARTICULATION2;
150
151 typedef struct _DMUS_WAVEDL
152 {
153 ULONG cbWaveData;
154 } DMUS_WAVEDL, *LPDMUS_WAVEDL;
155
156 typedef struct _DMUS_ARTICPARAMS
157 {
158 DMUS_LFOPARAMS LFO;
159 DMUS_VEGPARAMS VolEG;
160 DMUS_PEGPARAMS PitchEG;
161 DMUS_MSCPARAMS Misc;
162 } DMUS_ARTICPARAMS;
163
164 typedef struct _DMUS_WAVEARTDL
165 {
166 ULONG ulDownloadIdIdx;
167 ULONG ulBus;
168 ULONG ulBuffers;
169 ULONG ulMasterDLId;
170 USHORT usOptions;
171 } DMUS_WAVEARTDL, *LPDMUS_WAVEARTDL;
172
173
174 #endif
175