msvcrt/tests: Use the available ARRAY_SIZE() macro.
[wine.git] / include / dls1.h
blobd980b2b9b49e8e07fbc871cfa571f809b2f32d45
1 /* Defines and Structures for Instrument Collection Form RIFF DLS1
3 * Copyright (C) 2003-2004 Rok Mandeljc
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20 #ifndef __WINE_INCLUDE_DLS1_H
21 #define __WINE_INCLUDE_DLS1_H
23 /*****************************************************************************
24 * FOURCCs
26 #define FOURCC_DLS mmioFOURCC('D','L','S',' ')
27 #define FOURCC_DLID mmioFOURCC('d','l','i','d')
28 #define FOURCC_COLH mmioFOURCC('c','o','l','h')
29 #define FOURCC_WVPL mmioFOURCC('w','v','p','l')
30 #define FOURCC_PTBL mmioFOURCC('p','t','b','l')
31 #define FOURCC_PATH mmioFOURCC('p','a','t','h')
32 #define FOURCC_wave mmioFOURCC('w','a','v','e')
33 #define FOURCC_LINS mmioFOURCC('l','i','n','s')
34 #define FOURCC_INS mmioFOURCC('i','n','s',' ')
35 #define FOURCC_INSH mmioFOURCC('i','n','s','h')
36 #define FOURCC_LRGN mmioFOURCC('l','r','g','n')
37 #define FOURCC_RGN mmioFOURCC('r','g','n',' ')
38 #define FOURCC_RGNH mmioFOURCC('r','g','n','h')
39 #define FOURCC_LART mmioFOURCC('l','a','r','t')
40 #define FOURCC_ART1 mmioFOURCC('a','r','t','1')
41 #define FOURCC_WLNK mmioFOURCC('w','l','n','k')
42 #define FOURCC_WSMP mmioFOURCC('w','s','m','p')
43 #define FOURCC_VERS mmioFOURCC('v','e','r','s')
45 /*****************************************************************************
46 * Flags
49 #define CONN_DST_NONE 0x000
50 #define CONN_DST_ATTENUATION 0x001
51 #define CONN_DST_PITCH 0x003
52 #define CONN_DST_PAN 0x004
54 #define CONN_DST_LFO_FREQUENCY 0x104
55 #define CONN_DST_LFO_STARTDELAY 0x105
57 #define CONN_DST_EG1_ATTACKTIME 0x206
58 #define CONN_DST_EG1_DECAYTIME 0x207
59 #define CONN_DST_EG1_RELEASETIME 0x209
60 #define CONN_DST_EG1_SUSTAINLEVEL 0x20A
62 #define CONN_DST_EG2_ATTACKTIME 0x30A
63 #define CONN_DST_EG2_DECAYTIME 0x30B
64 #define CONN_DST_EG2_RELEASETIME 0x30D
65 #define CONN_DST_EG2_SUSTAINLEVEL 0x30E
67 #define CONN_SRC_NONE 0x000
68 #define CONN_SRC_LFO 0x001
69 #define CONN_SRC_KEYONVELOCITY 0x002
70 #define CONN_SRC_KEYNUMBER 0x003
71 #define CONN_SRC_EG1 0x004
72 #define CONN_SRC_EG2 0x005
73 #define CONN_SRC_PITCHWHEEL 0x006
75 #define CONN_SRC_CC1 0x081
76 #define CONN_SRC_CC7 0x087
77 #define CONN_SRC_CC10 0x08A
78 #define CONN_SRC_CC11 0x08B
80 #define CONN_TRN_NONE 0x000
81 #define CONN_TRN_CONCAVE 0x001
83 #define F_INSTRUMENT_DRUMS 0x80000000
85 #define F_RGN_OPTION_SELFNONEXCLUSIVE 0x1
87 #define F_WAVELINK_PHASE_MASTER 0x1
89 #define F_WSMP_NO_TRUNCATION 0x1
90 #define F_WSMP_NO_COMPRESSION 0x2
92 #define POOL_CUE_NULL 0xFFFFFFFF
94 #define WAVELINK_CHANNEL_LEFT 0x1
95 #define WAVELINK_CHANNEL_RIGHT 0x2
97 #define WLOOP_TYPE_FORWARD 0x0
99 /*****************************************************************************
100 * Structures
102 /* typedef definitions */
103 typedef struct _DLSID DLSID, *LPDLSID;
104 typedef struct _DLSVERSION DLSVERSION, *LPDLSVERSION;
105 typedef struct _CONNECTION CONNECTION, *LPCONNECTION;
106 typedef struct _CONNECTIONLIST CONNECTIONLIST, *LPCONNECTIONLIST;
107 typedef struct _RGNRANGE RGNRANGE, *LPRGNRANGE;
108 typedef struct _MIDILOCALE MIDILOCALE, *LPMIDILOCALE;
109 typedef struct _RGNHEADER RGNHEADER, *LPRGNHEADER;
110 typedef struct _INSTHEADER INSTHEADER, *LPINSTHEADER;
111 typedef struct _DLSHEADER DLSHEADER, *LPDLSHEADER;
112 typedef struct _WAVELINK WAVELINK, *LPWAVELINK;
113 typedef struct _POOLCUE POOLCUE, *LPPOOLCUE;
114 typedef struct _POOLTABLE POOLTABLE, *LPPOOLTABLE;
115 typedef struct _rwsmp WSMPL, *LPWSMPL;
116 typedef struct _rloop WLOOP, *LPWLOOP;
118 /* actual structures */
119 struct _DLSID {
120 ULONG ulData1;
121 USHORT usData2;
122 USHORT usData3;
123 BYTE abData4[8];
126 struct _DLSVERSION {
127 DWORD dwVersionMS;
128 DWORD dwVersionLS;
131 struct _CONNECTION {
132 USHORT usSource;
133 USHORT usControl;
134 USHORT usDestination;
135 USHORT usTransform;
136 LONG lScale;
139 struct _CONNECTIONLIST {
140 ULONG cbSize;
141 ULONG cConnections;
144 struct _RGNRANGE {
145 USHORT usLow;
146 USHORT usHigh;
149 struct _MIDILOCALE {
150 ULONG ulBank;
151 ULONG ulInstrument;
154 struct _RGNHEADER {
155 RGNRANGE RangeKey;
156 RGNRANGE RangeVelocity;
157 USHORT fusOptions;
158 USHORT usKeyGroup;
161 struct _INSTHEADER {
162 ULONG cRegions;
163 MIDILOCALE Locale;
166 struct _DLSHEADER {
167 ULONG cInstruments;
170 struct _WAVELINK {
171 USHORT fusOptions;
172 USHORT usPhaseGroup;
173 ULONG ulChannel;
174 ULONG ulTableIndex;
177 struct _POOLCUE {
178 ULONG ulOffset;
181 struct _POOLTABLE {
182 ULONG cbSize;
183 ULONG cCues;
186 struct _rwsmp {
187 ULONG cbSize;
188 USHORT usUnityNote;
189 SHORT sFineTune;
190 LONG lAttenuation;
191 ULONG fulOptions;
192 ULONG cSampleLoops;
195 struct _rloop {
196 ULONG cbSize;
197 ULONG ulType;
198 ULONG ulStart;
199 ULONG ulLength;
202 #endif /* __WINE_INCLUDE_DLS1_H */