/[cvs]/api/include/dls1.h
ViewVC logotype

Annotation of /api/include/dls1.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations)
Sun Jul 1 20:47:59 2001 UTC (22 years, 10 months ago) by bearsoft
Branch point for: lazy, MAIN
File MIME type: text/plain
Initial revision

1 bearsoft 1.1 /*==========================================================================;
2     //
3     // dls1.h
4     //
5     //
6     // Description:
7     //
8     // Interface defines and structures for the Instrument Collection Form
9     // RIFF DLS.
10     //
11     //
12     // Written by Sonic Foundry 1996. Released for public use.
13     //
14     //=========================================================================*/
15    
16     #ifndef _INC_DLS1
17     #define _INC_DLS1
18    
19     /*//////////////////////////////////////////////////////////////////////////
20     //
21     //
22     // Layout of an instrument collection:
23     //
24     //
25     // RIFF [] 'DLS ' [dlid,colh,INSTLIST,WAVEPOOL,INFOLIST]
26     //
27     // INSTLIST
28     // LIST [] 'lins'
29     // LIST [] 'ins ' [dlid,insh,RGNLIST,ARTLIST,INFOLIST]
30     // LIST [] 'ins ' [dlid,insh,RGNLIST,ARTLIST,INFOLIST]
31     // LIST [] 'ins ' [dlid,insh,RGNLIST,ARTLIST,INFOLIST]
32     //
33     // RGNLIST
34     // LIST [] 'lrgn'
35     // LIST [] 'rgn ' [rgnh,wsmp,wlnk,ARTLIST]
36     // LIST [] 'rgn ' [rgnh,wsmp,wlnk,ARTLIST]
37     // LIST [] 'rgn ' [rgnh,wsmp,wlnk,ARTLIST]
38     //
39     // ARTLIST
40     // LIST [] 'lart'
41     // 'art1' level 1 Articulation connection graph
42     // 'art2' level 2 Articulation connection graph
43     // '3rd1' Possible 3rd party articulation structure 1
44     // '3rd2' Possible 3rd party articulation structure 2 .... and so on
45     //
46     // WAVEPOOL
47     // ptbl [] [pool table]
48     // LIST [] 'wvpl'
49     // [path],
50     // [path],
51     // LIST [] 'wave' [dlid,RIFFWAVE]
52     // LIST [] 'wave' [dlid,RIFFWAVE]
53     // LIST [] 'wave' [dlid,RIFFWAVE]
54     // LIST [] 'wave' [dlid,RIFFWAVE]
55     // LIST [] 'wave' [dlid,RIFFWAVE]
56     //
57     // INFOLIST
58     // LIST [] 'INFO'
59     // 'icmt' 'One of those crazy comments.'
60     // 'icop' 'Copyright (C) 1996 Sonic Foundry'
61     //
62     /////////////////////////////////////////////////////////////////////////*/
63    
64    
65     /*/////////////////////////////////////////////////////////////////////////
66     // FOURCC's used in the DLS file
67     /////////////////////////////////////////////////////////////////////////*/
68    
69     #define FOURCC_DLS mmioFOURCC('D','L','S',' ')
70     #define FOURCC_DLID mmioFOURCC('d','l','i','d')
71     #define FOURCC_COLH mmioFOURCC('c','o','l','h')
72     #define FOURCC_WVPL mmioFOURCC('w','v','p','l')
73     #define FOURCC_PTBL mmioFOURCC('p','t','b','l')
74     #define FOURCC_PATH mmioFOURCC('p','a','t','h')
75     #define FOURCC_wave mmioFOURCC('w','a','v','e')
76     #define FOURCC_LINS mmioFOURCC('l','i','n','s')
77     #define FOURCC_INS mmioFOURCC('i','n','s',' ')
78     #define FOURCC_INSH mmioFOURCC('i','n','s','h')
79     #define FOURCC_LRGN mmioFOURCC('l','r','g','n')
80     #define FOURCC_RGN mmioFOURCC('r','g','n',' ')
81     #define FOURCC_RGNH mmioFOURCC('r','g','n','h')
82     #define FOURCC_LART mmioFOURCC('l','a','r','t')
83     #define FOURCC_ART1 mmioFOURCC('a','r','t','1')
84     #define FOURCC_WLNK mmioFOURCC('w','l','n','k')
85     #define FOURCC_WSMP mmioFOURCC('w','s','m','p')
86     #define FOURCC_VERS mmioFOURCC('v','e','r','s')
87    
88     /*/////////////////////////////////////////////////////////////////////////
89     // Articulation connection graph definitions
90     /////////////////////////////////////////////////////////////////////////*/
91    
92     /* Generic Sources */
93     #define CONN_SRC_NONE 0x0000
94     #define CONN_SRC_LFO 0x0001
95     #define CONN_SRC_KEYONVELOCITY 0x0002
96     #define CONN_SRC_KEYNUMBER 0x0003
97     #define CONN_SRC_EG1 0x0004
98     #define CONN_SRC_EG2 0x0005
99     #define CONN_SRC_PITCHWHEEL 0x0006
100    
101     /* Midi Controllers 0-127 */
102     #define CONN_SRC_CC1 0x0081
103     #define CONN_SRC_CC7 0x0087
104     #define CONN_SRC_CC10 0x008a
105     #define CONN_SRC_CC11 0x008b
106    
107     /* Generic Destinations */
108     #define CONN_DST_NONE 0x0000
109     #define CONN_DST_ATTENUATION 0x0001
110     #define CONN_DST_PITCH 0x0003
111     #define CONN_DST_PAN 0x0004
112    
113     /* LFO Destinations */
114     #define CONN_DST_LFO_FREQUENCY 0x0104
115     #define CONN_DST_LFO_STARTDELAY 0x0105
116    
117     /* EG1 Destinations */
118     #define CONN_DST_EG1_ATTACKTIME 0x0206
119     #define CONN_DST_EG1_DECAYTIME 0x0207
120     #define CONN_DST_EG1_RELEASETIME 0x0209
121     #define CONN_DST_EG1_SUSTAINLEVEL 0x020a
122    
123     /* EG2 Destinations */
124     #define CONN_DST_EG2_ATTACKTIME 0x030a
125     #define CONN_DST_EG2_DECAYTIME 0x030b
126     #define CONN_DST_EG2_RELEASETIME 0x030d
127     #define CONN_DST_EG2_SUSTAINLEVEL 0x030e
128    
129     #define CONN_TRN_NONE 0x0000
130     #define CONN_TRN_CONCAVE 0x0001
131    
132     typedef struct _DLSID {
133     ULONG ulData1;
134     USHORT usData2;
135     USHORT usData3;
136     BYTE abData4[8];
137     } DLSID, FAR *LPDLSID;
138    
139     typedef struct _DLSVERSION {
140     DWORD dwVersionMS;
141     DWORD dwVersionLS;
142     }DLSVERSION, FAR *LPDLSVERSION;
143    
144    
145     typedef struct _CONNECTION {
146     USHORT usSource;
147     USHORT usControl;
148     USHORT usDestination;
149     USHORT usTransform;
150     LONG lScale;
151     }CONNECTION, FAR *LPCONNECTION;
152    
153    
154     /* Level 1 Articulation Data */
155    
156     typedef struct _CONNECTIONLIST {
157     ULONG cbSize; /* size of the connection list structure */
158     ULONG cConnections; /* count of connections in the list */
159     } CONNECTIONLIST, FAR *LPCONNECTIONLIST;
160    
161    
162    
163     /*/////////////////////////////////////////////////////////////////////////
164     // Generic type defines for regions and instruments
165     /////////////////////////////////////////////////////////////////////////*/
166    
167     typedef struct _RGNRANGE {
168     USHORT usLow;
169     USHORT usHigh;
170     }RGNRANGE, FAR * LPRGNRANGE;
171    
172     #define F_INSTRUMENT_DRUMS 0x80000000
173    
174     typedef struct _MIDILOCALE {
175     ULONG ulBank;
176     ULONG ulInstrument;
177     }MIDILOCALE, FAR *LPMIDILOCALE;
178    
179     /*/////////////////////////////////////////////////////////////////////////
180     // Header structures found in an DLS file for collection, instruments, and
181     // regions.
182     /////////////////////////////////////////////////////////////////////////*/
183    
184     #define F_RGN_OPTION_SELFNONEXCLUSIVE 0x0001
185    
186     typedef struct _RGNHEADER {
187     RGNRANGE RangeKey; /* Key range */
188     RGNRANGE RangeVelocity; /* Velocity Range */
189     USHORT fusOptions; /* Synthesis options for this range */
190     USHORT usKeyGroup; /* Key grouping for non simultaneous play */
191     /* 0 = no group, 1 up is group */
192     /* for Level 1 only groups 1-15 are allowed */
193     }RGNHEADER, FAR *LPRGNHEADER;
194    
195     typedef struct _INSTHEADER {
196     ULONG cRegions; /* Count of regions in this instrument */
197     MIDILOCALE Locale; /* Intended MIDI locale of this instrument */
198     }INSTHEADER, FAR *LPINSTHEADER;
199    
200     typedef struct _DLSHEADER {
201     ULONG cInstruments; /* Count of instruments in the collection */
202     }DLSHEADER, FAR *LPDLSHEADER;
203    
204     /*////////////////////////////////////////////////////////////////////////////
205     // definitions for the Wave link structure
206     ////////////////////////////////////////////////////////////////////////////*/
207    
208     /* **** For level 1 only WAVELINK_CHANNEL_MONO is valid **** */
209     /* ulChannel allows for up to 32 channels of audio with each bit position */
210     /* specifiying a channel of playback */
211    
212     #define WAVELINK_CHANNEL_LEFT 0x0001l
213     #define WAVELINK_CHANNEL_RIGHT 0x0002l
214    
215     #define F_WAVELINK_PHASE_MASTER 0x0001
216    
217     typedef struct _WAVELINK { /* any paths or links are stored right after struct */
218     USHORT fusOptions; /* options flags for this wave */
219     USHORT usPhaseGroup; /* Phase grouping for locking channels */
220     ULONG ulChannel; /* channel placement */
221     ULONG ulTableIndex; /* index into the wave pool table, 0 based */
222     }WAVELINK, FAR *LPWAVELINK;
223    
224     #define POOL_CUE_NULL 0xffffffffl
225    
226     typedef struct _POOLCUE {
227     ULONG ulOffset; /* Offset to the entry in the list */
228     }POOLCUE, FAR *LPPOOLCUE;
229    
230     typedef struct _POOLTABLE {
231     ULONG cbSize; /* size of the pool table structure */
232     ULONG cCues; /* count of cues in the list */
233     } POOLTABLE, FAR *LPPOOLTABLE;
234    
235     /*////////////////////////////////////////////////////////////////////////////
236     // Structures for the "wsmp" chunk
237     ////////////////////////////////////////////////////////////////////////////*/
238    
239     #define F_WSMP_NO_TRUNCATION 0x0001l
240     #define F_WSMP_NO_COMPRESSION 0x0002l
241    
242    
243     typedef struct _rwsmp {
244     ULONG cbSize;
245     USHORT usUnityNote; /* MIDI Unity Playback Note */
246     SHORT sFineTune; /* Fine Tune in log tuning */
247     LONG lAttenuation; /* Overall Attenuation to be applied to data */
248     ULONG fulOptions; /* Flag options */
249     ULONG cSampleLoops; /* Count of Sample loops, 0 loops is one shot */
250     } WSMPL, FAR *LPWSMPL;
251    
252    
253     /* This loop type is a normal forward playing loop which is continually */
254     /* played until the envelope reaches an off threshold in the release */
255     /* portion of the volume envelope */
256    
257     #define WLOOP_TYPE_FORWARD 0
258    
259     typedef struct _rloop {
260     ULONG cbSize;
261     ULONG ulType; /* Loop Type */
262     ULONG ulStart; /* Start of loop in samples */
263     ULONG ulLength; /* Length of loop in samples */
264     } WLOOP, FAR *LPWLOOP;
265    
266     #endif /*_INC_DLS1 */
267    

root@recompile.se
ViewVC Help
Powered by ViewVC 1.1.26