Use the right buffer size in SYSPARAMS_Load instead of some random
[wine] / include / dls1.h
1 /* Defines and Structures for Instrument Collection Form RIFF DLS
2  *
3  * Copyright (C) 2003 Rok Mandeljc
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
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
13  * GNU Library General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18  */
19
20 #ifndef __WINE_INCLUDE_DLS1_H
21 #define __WINE_INCLUDE_DLS1_H
22
23 /*****************************************************************************
24  * FOURCC's
25  */
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')
44
45 /*****************************************************************************
46  * Definitions
47  */
48 #define CONN_SRC_NONE              0x0000
49 #define CONN_SRC_LFO               0x0001
50 #define CONN_SRC_KEYONVELOCITY     0x0002
51 #define CONN_SRC_KEYNUMBER         0x0003
52 #define CONN_SRC_EG1               0x0004
53 #define CONN_SRC_EG2               0x0005
54 #define CONN_SRC_PITCHWHEEL        0x0006
55 #define CONN_SRC_CC1               0x0081
56 #define CONN_SRC_CC7               0x0087
57 #define CONN_SRC_CC10              0x008a
58 #define CONN_SRC_CC11              0x008b
59
60 #define CONN_DST_NONE              0x0000
61 #define CONN_DST_ATTENUATION       0x0001
62 #define CONN_DST_PITCH             0x0003
63 #define CONN_DST_PAN               0x0004
64 #define CONN_DST_LFO_FREQUENCY     0x0104
65 #define CONN_DST_LFO_STARTDELAY    0x0105
66 #define CONN_DST_EG1_ATTACKTIME    0x0206
67 #define CONN_DST_EG1_DECAYTIME     0x0207
68 #define CONN_DST_EG1_RELEASETIME   0x0209
69 #define CONN_DST_EG1_SUSTAINLEVEL  0x020a
70 #define CONN_DST_EG2_ATTACKTIME    0x030a
71 #define CONN_DST_EG2_DECAYTIME     0x030b
72 #define CONN_DST_EG2_RELEASETIME   0x030d
73 #define CONN_DST_EG2_SUSTAINLEVEL  0x030e
74
75 #define CONN_TRN_NONE              0x0000
76 #define CONN_TRN_CONCAVE           0x0001
77
78 #define F_INSTRUMENT_DRUMS      0x80000000
79 #define F_RGN_OPTION_SELFNONEXCLUSIVE  0x0001
80
81 #define WAVELINK_CHANNEL_LEFT    0x0001l
82 #define WAVELINK_CHANNEL_RIGHT   0x0002l
83
84 #define F_WAVELINK_PHASE_MASTER  0x0001
85 #define POOL_CUE_NULL  0xffffffffl
86
87 #define F_WSMP_NO_TRUNCATION     0x0001l
88 #define F_WSMP_NO_COMPRESSION    0x0002l
89   
90 #define WLOOP_TYPE_FORWARD   0
91
92 /*****************************************************************************
93  * Structures
94  */
95 typedef struct _DLSID 
96 {
97   ULONG    ulData1;
98   USHORT   usData2;
99   USHORT   usData3;
100   BYTE     abData4[8];
101 } DLSID, *LPDLSID;
102
103 typedef struct _DLSVERSION
104 { DWORD    dwVersionMS;
105   DWORD    dwVersionLS;
106 } DLSVERSION, *LPDLSVERSION;
107                    
108 typedef struct _CONNECTION
109 {
110   USHORT   usSource;
111   USHORT   usControl;
112   USHORT   usDestination;
113   USHORT   usTransform;
114   LONG     lScale;
115 } CONNECTION, *LPCONNECTION;
116
117 typedef struct _CONNECTIONLIST
118 {
119   ULONG    cbSize;
120   ULONG    cConnections;
121 } CONNECTIONLIST, *LPCONNECTIONLIST;
122
123 typedef struct _RGNRANGE
124 {
125   USHORT usLow;
126   USHORT usHigh;
127 } RGNRANGE, *LPRGNRANGE;
128
129 typedef struct _MIDILOCALE
130 {
131   ULONG ulBank;
132   ULONG ulInstrument;
133 } MIDILOCALE, *LPMIDILOCALE;
134
135 typedef struct _RGNHEADER
136 {
137   RGNRANGE RangeKey;
138   RGNRANGE RangeVelocity;
139   USHORT   fusOptions;
140   USHORT   usKeyGroup;
141 } RGNHEADER, *LPRGNHEADER;
142
143 typedef struct _INSTHEADER
144 {
145   ULONG      cRegions;
146   MIDILOCALE Locale;
147 } INSTHEADER, *LPINSTHEADER;
148
149 typedef struct _DLSHEADER
150 {
151   ULONG      cInstruments;
152 } DLSHEADER, *LPDLSHEADER;
153
154 typedef struct _WAVELINK
155 {
156   USHORT   fusOptions;
157   USHORT   usPhaseGroup;
158   ULONG    ulChannel;
159   ULONG    ulTableIndex;
160 } WAVELINK, *LPWAVELINK;
161
162 typedef struct _POOLCUE
163
164   ULONG    ulOffset;
165 } POOLCUE, *LPPOOLCUE;
166
167 typedef struct _POOLTABLE
168 {
169   ULONG    cbSize;
170   ULONG    cCues;
171 } POOLTABLE, *LPPOOLTABLE;
172
173 typedef struct _rwsmp
174 {
175   ULONG   cbSize;
176   USHORT  usUnityNote;
177   SHORT   sFineTune;
178   LONG    lAttenuation;
179   ULONG   fulOptions;
180   ULONG   cSampleLoops;
181 } WSMPL, *LPWSMPL;
182
183 typedef struct _rloop
184 {
185   ULONG cbSize;
186   ULONG ulType;
187   ULONG ulStart;
188   ULONG ulLength;
189 } WLOOP, *LPWLOOP;
190
191 #endif /* __WINE_INCLUDE_DLS1_H */