- Path changes are saved to the struct correctly.
[wine/multimedia.git] / include / dls1.h
blob89c3b2620ff781dfa3f7df450b069abfad922089
1 /* Defines and Structures for Instrument Collection Form RIFF DLS
3 * Copyright (C) 2003 Rok Mandeljc
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.
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.
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.
20 #ifndef __WINE_INCLUDE_DLS1_H
21 #define __WINE_INCLUDE_DLS1_H
23 /*****************************************************************************
24 * FOURCC's
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 * Definitions
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
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
75 #define CONN_TRN_NONE 0x0000
76 #define CONN_TRN_CONCAVE 0x0001
78 #define F_INSTRUMENT_DRUMS 0x80000000
79 #define F_RGN_OPTION_SELFNONEXCLUSIVE 0x0001
81 #define WAVELINK_CHANNEL_LEFT 0x0001l
82 #define WAVELINK_CHANNEL_RIGHT 0x0002l
84 #define F_WAVELINK_PHASE_MASTER 0x0001
85 #define POOL_CUE_NULL 0xffffffffl
87 #define F_WSMP_NO_TRUNCATION 0x0001l
88 #define F_WSMP_NO_COMPRESSION 0x0002l
90 #define WLOOP_TYPE_FORWARD 0
92 /*****************************************************************************
93 * Structures
95 typedef struct _DLSID
97 ULONG ulData1;
98 USHORT usData2;
99 USHORT usData3;
100 BYTE abData4[8];
101 } DLSID, *LPDLSID;
103 typedef struct _DLSVERSION
104 { DWORD dwVersionMS;
105 DWORD dwVersionLS;
106 } DLSVERSION, *LPDLSVERSION;
108 typedef struct _CONNECTION
110 USHORT usSource;
111 USHORT usControl;
112 USHORT usDestination;
113 USHORT usTransform;
114 LONG lScale;
115 } CONNECTION, *LPCONNECTION;
117 typedef struct _CONNECTIONLIST
119 ULONG cbSize;
120 ULONG cConnections;
121 } CONNECTIONLIST, *LPCONNECTIONLIST;
123 typedef struct _RGNRANGE
125 USHORT usLow;
126 USHORT usHigh;
127 } RGNRANGE, *LPRGNRANGE;
129 typedef struct _MIDILOCALE
131 ULONG ulBank;
132 ULONG ulInstrument;
133 } MIDILOCALE, *LPMIDILOCALE;
135 typedef struct _RGNHEADER
137 RGNRANGE RangeKey;
138 RGNRANGE RangeVelocity;
139 USHORT fusOptions;
140 USHORT usKeyGroup;
141 } RGNHEADER, *LPRGNHEADER;
143 typedef struct _INSTHEADER
145 ULONG cRegions;
146 MIDILOCALE Locale;
147 } INSTHEADER, *LPINSTHEADER;
149 typedef struct _DLSHEADER
151 ULONG cInstruments;
152 } DLSHEADER, *LPDLSHEADER;
154 typedef struct _WAVELINK
156 USHORT fusOptions;
157 USHORT usPhaseGroup;
158 ULONG ulChannel;
159 ULONG ulTableIndex;
160 } WAVELINK, *LPWAVELINK;
162 typedef struct _POOLCUE
164 ULONG ulOffset;
165 } POOLCUE, *LPPOOLCUE;
167 typedef struct _POOLTABLE
169 ULONG cbSize;
170 ULONG cCues;
171 } POOLTABLE, *LPPOOLTABLE;
173 typedef struct _rwsmp
175 ULONG cbSize;
176 USHORT usUnityNote;
177 SHORT sFineTune;
178 LONG lAttenuation;
179 ULONG fulOptions;
180 ULONG cSampleLoops;
181 } WSMPL, *LPWSMPL;
183 typedef struct _rloop
185 ULONG cbSize;
186 ULONG ulType;
187 ULONG ulStart;
188 ULONG ulLength;
189 } WLOOP, *LPWLOOP;
191 #endif /* __WINE_INCLUDE_DLS1_H */