blob: 0fc1d7a4465db67eed5c533810867f95ad5ddaa4 [file] [log] [blame]
Rok Mandeljc0382ea12004-01-20 00:21:40 +00001/* Defines and Structures for Instrument Collection Form RIFF DLS1
Rok Mandeljc2d04be72003-03-21 00:42:38 +00002 *
Rok Mandeljc0382ea12004-01-20 00:21:40 +00003 * Copyright (C) 2003-2004 Rok Mandeljc
Rok Mandeljc2d04be72003-03-21 00:42:38 +00004 *
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 */
Rok Mandeljc0382ea12004-01-20 00:21:40 +000019
Rok Mandeljc2d04be72003-03-21 00:42:38 +000020#ifndef __WINE_INCLUDE_DLS1_H
21#define __WINE_INCLUDE_DLS1_H
22
23/*****************************************************************************
Rok Mandeljc0382ea12004-01-20 00:21:40 +000024 * FOURCCs
Rok Mandeljc2d04be72003-03-21 00:42:38 +000025 */
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/*****************************************************************************
Rok Mandeljc0382ea12004-01-20 00:21:40 +000046 * Flags
Rok Mandeljc2d04be72003-03-21 00:42:38 +000047 */
Rok Mandeljc2d04be72003-03-21 00:42:38 +000048
Rok Mandeljc0382ea12004-01-20 00:21:40 +000049#define CONN_DST_NONE 0x000
50#define CONN_DST_ATTENUATION 0x001
51#define CONN_DST_PITCH 0x003
52#define CONN_DST_PAN 0x004
Rok Mandeljc2d04be72003-03-21 00:42:38 +000053
Rok Mandeljc0382ea12004-01-20 00:21:40 +000054#define CONN_DST_LFO_FREQUENCY 0x104
55#define CONN_DST_LFO_STARTDELAY 0x105
Rok Mandeljc2d04be72003-03-21 00:42:38 +000056
Rok Mandeljc0382ea12004-01-20 00:21:40 +000057#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
Rok Mandeljc2d04be72003-03-21 00:42:38 +000061
Rok Mandeljc0382ea12004-01-20 00:21:40 +000062#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
Rok Mandeljc2d04be72003-03-21 00:42:38 +000066
Rok Mandeljc0382ea12004-01-20 00:21:40 +000067#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
Rok Mandeljc2d04be72003-03-21 00:42:38 +000074
Rok Mandeljc0382ea12004-01-20 00:21:40 +000075#define CONN_SRC_CC1 0x081
76#define CONN_SRC_CC7 0x087
77#define CONN_SRC_CC10 0x08A
78#define CONN_SRC_CC11 0x08B
79
80#define CONN_TRN_NONE 0x000
81#define CONN_TRN_CONCAVE 0x001
82
83#define F_INSTRUMENT_DRUMS 0x80000000
84
85#define F_RGN_OPTION_SELFNONEXCLUSIVE 0x1
86
87#define F_WAVELINK_PHASE_MASTER 0x1
88
89#define F_WSMP_NO_TRUNCATION 0x1
90#define F_WSMP_NO_COMPRESSION 0x2
91
92#define POOL_CUE_NULL 0xFFFFFFFF
93
94#define WAVELINK_CHANNEL_LEFT 0x1
95#define WAVELINK_CHANNEL_RIGHT 0x2
96
97#define WLOOP_TYPE_FORWARD 0x0
Rok Mandeljc2d04be72003-03-21 00:42:38 +000098
99/*****************************************************************************
100 * Structures
101 */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000102/* typedef definitions */
103typedef struct _DLSID DLSID, *LPDLSID;
104typedef struct _DLSVERSION DLSVERSION, *LPDLSVERSION;
105typedef struct _CONNECTION CONNECTION, *LPCONNECTION;
106typedef struct _CONNECTIONLIST CONNECTIONLIST, *LPCONNECTIONLIST;
107typedef struct _RGNRANGE RGNRANGE, *LPRGNRANGE;
108typedef struct _MIDILOCALE MIDILOCALE, *LPMIDILOCALE;
109typedef struct _RGNHEADER RGNHEADER, *LPRGNHEADER;
110typedef struct _INSTHEADER INSTHEADER, *LPINSTHEADER;
111typedef struct _DLSHEADER DLSHEADER, *LPDLSHEADER;
112typedef struct _WAVELINK WAVELINK, *LPWAVELINK;
113typedef struct _POOLCUE POOLCUE, *LPPOOLCUE;
114typedef struct _POOLTABLE POOLTABLE, *LPPOOLTABLE;
115typedef struct _rwsmp WSMPL, *LPWSMPL;
116typedef struct _rloop WLOOP, *LPWLOOP;
Rok Mandeljc2d04be72003-03-21 00:42:38 +0000117
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000118/* actual structures */
119struct _DLSID {
120 ULONG ulData1;
121 USHORT usData2;
122 USHORT usData3;
123 BYTE abData4[8];
124};
Rok Mandeljc2d04be72003-03-21 00:42:38 +0000125
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000126struct _DLSVERSION {
127 DWORD dwVersionMS;
128 DWORD dwVersionLS;
129};
Rok Mandeljc2d04be72003-03-21 00:42:38 +0000130
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000131struct _CONNECTION {
132 USHORT usSource;
133 USHORT usControl;
134 USHORT usDestination;
135 USHORT usTransform;
136 LONG lScale;
137};
Rok Mandeljc2d04be72003-03-21 00:42:38 +0000138
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000139struct _CONNECTIONLIST {
140 ULONG cbSize;
141 ULONG cConnections;
142};
Rok Mandeljc2d04be72003-03-21 00:42:38 +0000143
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000144struct _RGNRANGE {
145 USHORT usLow;
146 USHORT usHigh;
147};
Rok Mandeljc2d04be72003-03-21 00:42:38 +0000148
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000149struct _MIDILOCALE {
150 ULONG ulBank;
151 ULONG ulInstrument;
152};
Rok Mandeljc2d04be72003-03-21 00:42:38 +0000153
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000154struct _RGNHEADER {
155 RGNRANGE RangeKey;
156 RGNRANGE RangeVelocity;
157 USHORT fusOptions;
158 USHORT usKeyGroup;
159};
Rok Mandeljc2d04be72003-03-21 00:42:38 +0000160
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000161struct _INSTHEADER {
162 ULONG cRegions;
163 MIDILOCALE Locale;
164};
Rok Mandeljc2d04be72003-03-21 00:42:38 +0000165
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000166struct _DLSHEADER {
167 ULONG cInstruments;
168};
Rok Mandeljc2d04be72003-03-21 00:42:38 +0000169
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000170struct _WAVELINK {
171 USHORT fusOptions;
172 USHORT usPhaseGroup;
173 ULONG ulChannel;
174 ULONG ulTableIndex;
175};
Rok Mandeljc2d04be72003-03-21 00:42:38 +0000176
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000177struct _POOLCUE {
178 ULONG ulOffset;
179};
Rok Mandeljc2d04be72003-03-21 00:42:38 +0000180
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000181struct _POOLTABLE {
182 ULONG cbSize;
183 ULONG cCues;
184};
185
186struct _rwsmp {
187 ULONG cbSize;
188 USHORT usUnityNote;
189 SHORT sFineTune;
190 LONG lAttenuation;
191 ULONG fulOptions;
192 ULONG cSampleLoops;
193};
194
195struct _rloop {
196 ULONG cbSize;
197 ULONG ulType;
198 ULONG ulStart;
199 ULONG ulLength;
200};
Rok Mandeljc2d04be72003-03-21 00:42:38 +0000201
202#endif /* __WINE_INCLUDE_DLS1_H */