xref: /aosp_15_r20/external/sonivox/arm-wt-22k/lib_src/eas_sndlib.h (revision f81fb7c475c4b71ff83bdcc517de2a8c174e4e5c)
1*f81fb7c4SAndroid Build Coastguard Worker /*----------------------------------------------------------------------------
2*f81fb7c4SAndroid Build Coastguard Worker  *
3*f81fb7c4SAndroid Build Coastguard Worker  * File:
4*f81fb7c4SAndroid Build Coastguard Worker  * eas_sndlib.h
5*f81fb7c4SAndroid Build Coastguard Worker  *
6*f81fb7c4SAndroid Build Coastguard Worker  * Contents and purpose:
7*f81fb7c4SAndroid Build Coastguard Worker  * Declarations for the sound library
8*f81fb7c4SAndroid Build Coastguard Worker  *
9*f81fb7c4SAndroid Build Coastguard Worker  * Copyright Sonic Network Inc. 2005
10*f81fb7c4SAndroid Build Coastguard Worker 
11*f81fb7c4SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
12*f81fb7c4SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
13*f81fb7c4SAndroid Build Coastguard Worker  * You may obtain a copy of the License at
14*f81fb7c4SAndroid Build Coastguard Worker  *
15*f81fb7c4SAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
16*f81fb7c4SAndroid Build Coastguard Worker  *
17*f81fb7c4SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
18*f81fb7c4SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
19*f81fb7c4SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20*f81fb7c4SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
21*f81fb7c4SAndroid Build Coastguard Worker  * limitations under the License.
22*f81fb7c4SAndroid Build Coastguard Worker  *
23*f81fb7c4SAndroid Build Coastguard Worker  *----------------------------------------------------------------------------
24*f81fb7c4SAndroid Build Coastguard Worker  * Revision Control:
25*f81fb7c4SAndroid Build Coastguard Worker  *   $Revision: 550 $
26*f81fb7c4SAndroid Build Coastguard Worker  *   $Date: 2007-02-02 09:37:03 -0800 (Fri, 02 Feb 2007) $
27*f81fb7c4SAndroid Build Coastguard Worker  *----------------------------------------------------------------------------
28*f81fb7c4SAndroid Build Coastguard Worker */
29*f81fb7c4SAndroid Build Coastguard Worker 
30*f81fb7c4SAndroid Build Coastguard Worker #ifndef _EAS_SNDLIB_H
31*f81fb7c4SAndroid Build Coastguard Worker #define _EAS_SNDLIB_H
32*f81fb7c4SAndroid Build Coastguard Worker 
33*f81fb7c4SAndroid Build Coastguard Worker #include "eas_types.h"
34*f81fb7c4SAndroid Build Coastguard Worker #include "eas_synthcfg.h"
35*f81fb7c4SAndroid Build Coastguard Worker 
36*f81fb7c4SAndroid Build Coastguard Worker #ifdef _WT_SYNTH
37*f81fb7c4SAndroid Build Coastguard Worker #include "eas_wtengine.h"
38*f81fb7c4SAndroid Build Coastguard Worker #endif
39*f81fb7c4SAndroid Build Coastguard Worker 
40*f81fb7c4SAndroid Build Coastguard Worker /*----------------------------------------------------------------------------
41*f81fb7c4SAndroid Build Coastguard Worker  * This is bit of a hack to allow us to keep the same structure
42*f81fb7c4SAndroid Build Coastguard Worker  * declarations for the DLS parser. Normally, the data is located
43*f81fb7c4SAndroid Build Coastguard Worker  * in read-only memory, but for DLS, we store the data in RW
44*f81fb7c4SAndroid Build Coastguard Worker  * memory.
45*f81fb7c4SAndroid Build Coastguard Worker  *----------------------------------------------------------------------------
46*f81fb7c4SAndroid Build Coastguard Worker */
47*f81fb7c4SAndroid Build Coastguard Worker #ifndef SCNST
48*f81fb7c4SAndroid Build Coastguard Worker #define SCNST const
49*f81fb7c4SAndroid Build Coastguard Worker #endif
50*f81fb7c4SAndroid Build Coastguard Worker 
51*f81fb7c4SAndroid Build Coastguard Worker /*----------------------------------------------------------------------------
52*f81fb7c4SAndroid Build Coastguard Worker  * sample size
53*f81fb7c4SAndroid Build Coastguard Worker  *----------------------------------------------------------------------------
54*f81fb7c4SAndroid Build Coastguard Worker */
55*f81fb7c4SAndroid Build Coastguard Worker #ifdef _16_BIT_SAMPLES
56*f81fb7c4SAndroid Build Coastguard Worker typedef EAS_I16 EAS_SAMPLE;
57*f81fb7c4SAndroid Build Coastguard Worker #else
58*f81fb7c4SAndroid Build Coastguard Worker typedef EAS_I8 EAS_SAMPLE;
59*f81fb7c4SAndroid Build Coastguard Worker #endif
60*f81fb7c4SAndroid Build Coastguard Worker 
61*f81fb7c4SAndroid Build Coastguard Worker /*----------------------------------------------------------------------------
62*f81fb7c4SAndroid Build Coastguard Worker  * EAS Library ID - quick check for valid library and version
63*f81fb7c4SAndroid Build Coastguard Worker  *----------------------------------------------------------------------------
64*f81fb7c4SAndroid Build Coastguard Worker */
65*f81fb7c4SAndroid Build Coastguard Worker #define _EAS_LIBRARY_VERSION        0x01534145
66*f81fb7c4SAndroid Build Coastguard Worker 
67*f81fb7c4SAndroid Build Coastguard Worker #define NUM_PROGRAMS_IN_BANK        128
68*f81fb7c4SAndroid Build Coastguard Worker #define INVALID_REGION_INDEX        0xffff
69*f81fb7c4SAndroid Build Coastguard Worker 
70*f81fb7c4SAndroid Build Coastguard Worker /* this bit in region index indicates that region is for secondary synth */
71*f81fb7c4SAndroid Build Coastguard Worker #define FLAG_RGN_IDX_FM_SYNTH       0x8000
72*f81fb7c4SAndroid Build Coastguard Worker #define FLAG_RGN_IDX_DLS_SYNTH      0x4000
73*f81fb7c4SAndroid Build Coastguard Worker #define REGION_INDEX_MASK           0x3fff
74*f81fb7c4SAndroid Build Coastguard Worker 
75*f81fb7c4SAndroid Build Coastguard Worker /*----------------------------------------------------------------------------
76*f81fb7c4SAndroid Build Coastguard Worker  * Generic region data structure
77*f81fb7c4SAndroid Build Coastguard Worker  *
78*f81fb7c4SAndroid Build Coastguard Worker  * This must be the first element in each region structure
79*f81fb7c4SAndroid Build Coastguard Worker  *----------------------------------------------------------------------------
80*f81fb7c4SAndroid Build Coastguard Worker */
81*f81fb7c4SAndroid Build Coastguard Worker typedef struct s_region_tag
82*f81fb7c4SAndroid Build Coastguard Worker {
83*f81fb7c4SAndroid Build Coastguard Worker     EAS_U16     keyGroupAndFlags;
84*f81fb7c4SAndroid Build Coastguard Worker     EAS_U8      rangeLow;
85*f81fb7c4SAndroid Build Coastguard Worker     EAS_U8      rangeHigh;
86*f81fb7c4SAndroid Build Coastguard Worker } S_REGION;
87*f81fb7c4SAndroid Build Coastguard Worker 
88*f81fb7c4SAndroid Build Coastguard Worker /*
89*f81fb7c4SAndroid Build Coastguard Worker  * Bit fields for m_nKeyGroupAndFlags
90*f81fb7c4SAndroid Build Coastguard Worker  * Bits 0-2 are mode bits in FM synth
91*f81fb7c4SAndroid Build Coastguard Worker  * Bits 8-11 are the key group
92*f81fb7c4SAndroid Build Coastguard Worker  */
93*f81fb7c4SAndroid Build Coastguard Worker #define REGION_FLAG_IS_LOOPED                   0x01
94*f81fb7c4SAndroid Build Coastguard Worker #define REGION_FLAG_USE_WAVE_GENERATOR          0x02
95*f81fb7c4SAndroid Build Coastguard Worker #define REGION_FLAG_USE_ADPCM                   0x04
96*f81fb7c4SAndroid Build Coastguard Worker #define REGION_FLAG_ONE_SHOT                    0x08
97*f81fb7c4SAndroid Build Coastguard Worker #define REGION_FLAG_SQUARE_WAVE                 0x10
98*f81fb7c4SAndroid Build Coastguard Worker #define REGION_FLAG_OFF_CHIP                    0x20
99*f81fb7c4SAndroid Build Coastguard Worker #define REGION_FLAG_NON_SELF_EXCLUSIVE          0x40
100*f81fb7c4SAndroid Build Coastguard Worker #define REGION_FLAG_LAST_REGION                 0x8000
101*f81fb7c4SAndroid Build Coastguard Worker 
102*f81fb7c4SAndroid Build Coastguard Worker /*----------------------------------------------------------------------------
103*f81fb7c4SAndroid Build Coastguard Worker  * Envelope data structure
104*f81fb7c4SAndroid Build Coastguard Worker  *----------------------------------------------------------------------------
105*f81fb7c4SAndroid Build Coastguard Worker */
106*f81fb7c4SAndroid Build Coastguard Worker typedef struct s_envelope_tag
107*f81fb7c4SAndroid Build Coastguard Worker {
108*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16     attackTime;
109*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16     decayTime;
110*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16     sustainLevel;
111*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16     releaseTime;
112*f81fb7c4SAndroid Build Coastguard Worker } S_ENVELOPE;
113*f81fb7c4SAndroid Build Coastguard Worker 
114*f81fb7c4SAndroid Build Coastguard Worker /*----------------------------------------------------------------------------
115*f81fb7c4SAndroid Build Coastguard Worker  * DLS envelope data structure
116*f81fb7c4SAndroid Build Coastguard Worker  *----------------------------------------------------------------------------
117*f81fb7c4SAndroid Build Coastguard Worker */
118*f81fb7c4SAndroid Build Coastguard Worker typedef struct s_dls_envelope_tag
119*f81fb7c4SAndroid Build Coastguard Worker {
120*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         delayTime;
121*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         attackTime;
122*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         holdTime;
123*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         decayTime;
124*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         sustainLevel;
125*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         releaseTime;
126*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         velToAttack;
127*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         keyNumToDecay;
128*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         keyNumToHold;
129*f81fb7c4SAndroid Build Coastguard Worker } S_DLS_ENVELOPE;
130*f81fb7c4SAndroid Build Coastguard Worker 
131*f81fb7c4SAndroid Build Coastguard Worker /*----------------------------------------------------------------------------
132*f81fb7c4SAndroid Build Coastguard Worker  * LFO data structure
133*f81fb7c4SAndroid Build Coastguard Worker  *----------------------------------------------------------------------------
134*f81fb7c4SAndroid Build Coastguard Worker */
135*f81fb7c4SAndroid Build Coastguard Worker typedef struct s_lfo_params_tag
136*f81fb7c4SAndroid Build Coastguard Worker {
137*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16     lfoFreq;
138*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16     lfoDelay;
139*f81fb7c4SAndroid Build Coastguard Worker } S_LFO_PARAMS;
140*f81fb7c4SAndroid Build Coastguard Worker 
141*f81fb7c4SAndroid Build Coastguard Worker /*----------------------------------------------------------------------------
142*f81fb7c4SAndroid Build Coastguard Worker  * Articulation data structure
143*f81fb7c4SAndroid Build Coastguard Worker  *----------------------------------------------------------------------------
144*f81fb7c4SAndroid Build Coastguard Worker */
145*f81fb7c4SAndroid Build Coastguard Worker typedef struct s_articulation_tag
146*f81fb7c4SAndroid Build Coastguard Worker {
147*f81fb7c4SAndroid Build Coastguard Worker     S_ENVELOPE  eg1;
148*f81fb7c4SAndroid Build Coastguard Worker     S_ENVELOPE  eg2;
149*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16     lfoToPitch;
150*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16     lfoDelay;
151*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16     lfoFreq;
152*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16     eg2ToPitch;
153*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16     eg2ToFc;
154*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16     filterCutoff;
155*f81fb7c4SAndroid Build Coastguard Worker     EAS_I8      lfoToGain;
156*f81fb7c4SAndroid Build Coastguard Worker     EAS_U8      filterQ;
157*f81fb7c4SAndroid Build Coastguard Worker     EAS_I8      pan;
158*f81fb7c4SAndroid Build Coastguard Worker } S_ARTICULATION;
159*f81fb7c4SAndroid Build Coastguard Worker 
160*f81fb7c4SAndroid Build Coastguard Worker /*----------------------------------------------------------------------------
161*f81fb7c4SAndroid Build Coastguard Worker  * DLS articulation data structure
162*f81fb7c4SAndroid Build Coastguard Worker  *----------------------------------------------------------------------------
163*f81fb7c4SAndroid Build Coastguard Worker */
164*f81fb7c4SAndroid Build Coastguard Worker 
165*f81fb7c4SAndroid Build Coastguard Worker typedef struct s_dls_articulation_tag
166*f81fb7c4SAndroid Build Coastguard Worker {
167*f81fb7c4SAndroid Build Coastguard Worker     S_LFO_PARAMS    modLFO;
168*f81fb7c4SAndroid Build Coastguard Worker     S_LFO_PARAMS    vibLFO;
169*f81fb7c4SAndroid Build Coastguard Worker 
170*f81fb7c4SAndroid Build Coastguard Worker     S_DLS_ENVELOPE  eg1;
171*f81fb7c4SAndroid Build Coastguard Worker     S_DLS_ENVELOPE  eg2;
172*f81fb7c4SAndroid Build Coastguard Worker 
173*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         eg1ShutdownTime;
174*f81fb7c4SAndroid Build Coastguard Worker 
175*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         filterCutoff;
176*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         modLFOToFc;
177*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         modLFOCC1ToFc;
178*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         modLFOChanPressToFc;
179*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         eg2ToFc;
180*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         velToFc;
181*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         keyNumToFc;
182*f81fb7c4SAndroid Build Coastguard Worker 
183*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         modLFOToGain;
184*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         modLFOCC1ToGain;
185*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         modLFOChanPressToGain;
186*f81fb7c4SAndroid Build Coastguard Worker 
187*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         tuning;
188*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         keyNumToPitch;
189*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         vibLFOToPitch;
190*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         vibLFOCC1ToPitch;
191*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         vibLFOChanPressToPitch;
192*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         modLFOToPitch;
193*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         modLFOCC1ToPitch;
194*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         modLFOChanPressToPitch;
195*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         eg2ToPitch;
196*f81fb7c4SAndroid Build Coastguard Worker 
197*f81fb7c4SAndroid Build Coastguard Worker     /* pad to 4-byte boundary */
198*f81fb7c4SAndroid Build Coastguard Worker     EAS_U16         pad;
199*f81fb7c4SAndroid Build Coastguard Worker 
200*f81fb7c4SAndroid Build Coastguard Worker     EAS_I8          pan;
201*f81fb7c4SAndroid Build Coastguard Worker     EAS_U8          filterQandFlags;
202*f81fb7c4SAndroid Build Coastguard Worker 
203*f81fb7c4SAndroid Build Coastguard Worker #ifdef _REVERB
204*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         reverbSend;
205*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         cc91ToReverbSend;
206*f81fb7c4SAndroid Build Coastguard Worker #endif
207*f81fb7c4SAndroid Build Coastguard Worker 
208*f81fb7c4SAndroid Build Coastguard Worker #ifdef _CHORUS
209*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         chorusSend;
210*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16         cc93ToChorusSend;
211*f81fb7c4SAndroid Build Coastguard Worker #endif
212*f81fb7c4SAndroid Build Coastguard Worker } S_DLS_ARTICULATION;
213*f81fb7c4SAndroid Build Coastguard Worker 
214*f81fb7c4SAndroid Build Coastguard Worker /* flags in filterQandFlags
215*f81fb7c4SAndroid Build Coastguard Worker  * NOTE: Q is stored in bottom 5 bits
216*f81fb7c4SAndroid Build Coastguard Worker  */
217*f81fb7c4SAndroid Build Coastguard Worker #define FLAG_DLS_VELOCITY_SENSITIVE     0x80
218*f81fb7c4SAndroid Build Coastguard Worker #define FILTER_Q_MASK                   0x1f
219*f81fb7c4SAndroid Build Coastguard Worker 
220*f81fb7c4SAndroid Build Coastguard Worker /*----------------------------------------------------------------------------
221*f81fb7c4SAndroid Build Coastguard Worker  * Wavetable region data structure
222*f81fb7c4SAndroid Build Coastguard Worker  *----------------------------------------------------------------------------
223*f81fb7c4SAndroid Build Coastguard Worker */
224*f81fb7c4SAndroid Build Coastguard Worker typedef struct s_wt_region_tag
225*f81fb7c4SAndroid Build Coastguard Worker {
226*f81fb7c4SAndroid Build Coastguard Worker     S_REGION    region;
227*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16     tuning;
228*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16     gain;
229*f81fb7c4SAndroid Build Coastguard Worker     EAS_U32     loopStart;
230*f81fb7c4SAndroid Build Coastguard Worker     EAS_U32     loopEnd;
231*f81fb7c4SAndroid Build Coastguard Worker     EAS_U16     waveIndex;
232*f81fb7c4SAndroid Build Coastguard Worker     EAS_U16     artIndex;
233*f81fb7c4SAndroid Build Coastguard Worker } S_WT_REGION;
234*f81fb7c4SAndroid Build Coastguard Worker 
235*f81fb7c4SAndroid Build Coastguard Worker /*----------------------------------------------------------------------------
236*f81fb7c4SAndroid Build Coastguard Worker  * DLS region data structure
237*f81fb7c4SAndroid Build Coastguard Worker  *----------------------------------------------------------------------------
238*f81fb7c4SAndroid Build Coastguard Worker */
239*f81fb7c4SAndroid Build Coastguard Worker typedef struct s_dls_region_tag
240*f81fb7c4SAndroid Build Coastguard Worker {
241*f81fb7c4SAndroid Build Coastguard Worker     S_WT_REGION     wtRegion;
242*f81fb7c4SAndroid Build Coastguard Worker     EAS_U8          velLow;
243*f81fb7c4SAndroid Build Coastguard Worker     EAS_U8          velHigh;
244*f81fb7c4SAndroid Build Coastguard Worker } S_DLS_REGION;
245*f81fb7c4SAndroid Build Coastguard Worker 
246*f81fb7c4SAndroid Build Coastguard Worker /*----------------------------------------------------------------------------
247*f81fb7c4SAndroid Build Coastguard Worker  * FM synthesizer data structures
248*f81fb7c4SAndroid Build Coastguard Worker  *----------------------------------------------------------------------------
249*f81fb7c4SAndroid Build Coastguard Worker */
250*f81fb7c4SAndroid Build Coastguard Worker typedef struct s_fm_oper_tag
251*f81fb7c4SAndroid Build Coastguard Worker {
252*f81fb7c4SAndroid Build Coastguard Worker     EAS_I16     tuning;
253*f81fb7c4SAndroid Build Coastguard Worker     EAS_U8      attackDecay;
254*f81fb7c4SAndroid Build Coastguard Worker     EAS_U8      velocityRelease;
255*f81fb7c4SAndroid Build Coastguard Worker     EAS_U8      egKeyScale;
256*f81fb7c4SAndroid Build Coastguard Worker     EAS_U8      sustain;
257*f81fb7c4SAndroid Build Coastguard Worker     EAS_U8      gain;
258*f81fb7c4SAndroid Build Coastguard Worker     EAS_U8      flags;
259*f81fb7c4SAndroid Build Coastguard Worker } S_FM_OPER;
260*f81fb7c4SAndroid Build Coastguard Worker 
261*f81fb7c4SAndroid Build Coastguard Worker /* defines for S_FM_OPER.m_nFlags */
262*f81fb7c4SAndroid Build Coastguard Worker #define FM_OPER_FLAG_MONOTONE           0x01
263*f81fb7c4SAndroid Build Coastguard Worker #define FM_OPER_FLAG_NO_VIBRATO         0x02
264*f81fb7c4SAndroid Build Coastguard Worker #define FM_OPER_FLAG_NOISE              0x04
265*f81fb7c4SAndroid Build Coastguard Worker #define FM_OPER_FLAG_LINEAR_VELOCITY    0x08
266*f81fb7c4SAndroid Build Coastguard Worker 
267*f81fb7c4SAndroid Build Coastguard Worker /* NOTE: The first two structure elements are common with S_WT_REGION
268*f81fb7c4SAndroid Build Coastguard Worker  * and we will rely on that in the voice management code and must
269*f81fb7c4SAndroid Build Coastguard Worker  * remain there unless the voice management code is revisited.
270*f81fb7c4SAndroid Build Coastguard Worker  */
271*f81fb7c4SAndroid Build Coastguard Worker typedef struct s_fm_region_tag
272*f81fb7c4SAndroid Build Coastguard Worker {
273*f81fb7c4SAndroid Build Coastguard Worker     S_REGION        region;
274*f81fb7c4SAndroid Build Coastguard Worker     EAS_U8          vibTrem;
275*f81fb7c4SAndroid Build Coastguard Worker     EAS_U8          lfoFreqDelay;
276*f81fb7c4SAndroid Build Coastguard Worker     EAS_U8          feedback;
277*f81fb7c4SAndroid Build Coastguard Worker     EAS_I8          pan;
278*f81fb7c4SAndroid Build Coastguard Worker     S_FM_OPER       oper[4];
279*f81fb7c4SAndroid Build Coastguard Worker } S_FM_REGION;
280*f81fb7c4SAndroid Build Coastguard Worker 
281*f81fb7c4SAndroid Build Coastguard Worker /*----------------------------------------------------------------------------
282*f81fb7c4SAndroid Build Coastguard Worker  * Common data structures
283*f81fb7c4SAndroid Build Coastguard Worker  *----------------------------------------------------------------------------
284*f81fb7c4SAndroid Build Coastguard Worker */
285*f81fb7c4SAndroid Build Coastguard Worker 
286*f81fb7c4SAndroid Build Coastguard Worker /*----------------------------------------------------------------------------
287*f81fb7c4SAndroid Build Coastguard Worker  * Program data structure
288*f81fb7c4SAndroid Build Coastguard Worker  * Used for individual programs not stored as a complete bank.
289*f81fb7c4SAndroid Build Coastguard Worker  *----------------------------------------------------------------------------
290*f81fb7c4SAndroid Build Coastguard Worker */
291*f81fb7c4SAndroid Build Coastguard Worker typedef struct s_program_tag
292*f81fb7c4SAndroid Build Coastguard Worker {
293*f81fb7c4SAndroid Build Coastguard Worker     EAS_U32 locale;
294*f81fb7c4SAndroid Build Coastguard Worker     EAS_U16 regionIndex;
295*f81fb7c4SAndroid Build Coastguard Worker } S_PROGRAM;
296*f81fb7c4SAndroid Build Coastguard Worker 
297*f81fb7c4SAndroid Build Coastguard Worker /*----------------------------------------------------------------------------
298*f81fb7c4SAndroid Build Coastguard Worker  * Bank data structure
299*f81fb7c4SAndroid Build Coastguard Worker  *
300*f81fb7c4SAndroid Build Coastguard Worker  * A bank always consists of 128 programs. If a bank is less than 128
301*f81fb7c4SAndroid Build Coastguard Worker  * programs, it should be stored as a spare matrix in the pPrograms
302*f81fb7c4SAndroid Build Coastguard Worker  * array.
303*f81fb7c4SAndroid Build Coastguard Worker  *
304*f81fb7c4SAndroid Build Coastguard Worker  * bankNum:     MSB/LSB of MIDI bank select controller
305*f81fb7c4SAndroid Build Coastguard Worker  * regionIndex: Index of first region in program
306*f81fb7c4SAndroid Build Coastguard Worker  *----------------------------------------------------------------------------
307*f81fb7c4SAndroid Build Coastguard Worker */
308*f81fb7c4SAndroid Build Coastguard Worker typedef struct s_bank_tag
309*f81fb7c4SAndroid Build Coastguard Worker {
310*f81fb7c4SAndroid Build Coastguard Worker     EAS_U16 locale;
311*f81fb7c4SAndroid Build Coastguard Worker     EAS_U16 regionIndex[NUM_PROGRAMS_IN_BANK];
312*f81fb7c4SAndroid Build Coastguard Worker } S_BANK;
313*f81fb7c4SAndroid Build Coastguard Worker 
314*f81fb7c4SAndroid Build Coastguard Worker 
315*f81fb7c4SAndroid Build Coastguard Worker /* defines for libFormat field
316*f81fb7c4SAndroid Build Coastguard Worker  * bits 0-17 are the sample rate
317*f81fb7c4SAndroid Build Coastguard Worker  * bit 18 is true if wavetable is present
318*f81fb7c4SAndroid Build Coastguard Worker  * bit 19 is true if FM is present
319*f81fb7c4SAndroid Build Coastguard Worker  * bit 20 is true if filter is enabled
320*f81fb7c4SAndroid Build Coastguard Worker  * bit 21 is sample depth (0 = 8-bits, 1 = 16-bits)
321*f81fb7c4SAndroid Build Coastguard Worker  * bits 22-31 are reserved
322*f81fb7c4SAndroid Build Coastguard Worker  */
323*f81fb7c4SAndroid Build Coastguard Worker #define LIBFORMAT_SAMPLE_RATE_MASK      0x0003ffff
324*f81fb7c4SAndroid Build Coastguard Worker #define LIB_FORMAT_TYPE_MASK            0x000c0000
325*f81fb7c4SAndroid Build Coastguard Worker #define LIB_FORMAT_WAVETABLE            0x00000000
326*f81fb7c4SAndroid Build Coastguard Worker #define LIB_FORMAT_FM                   0x00040000
327*f81fb7c4SAndroid Build Coastguard Worker #define LIB_FORMAT_HYBRID               0x00080000
328*f81fb7c4SAndroid Build Coastguard Worker #define LIB_FORMAT_FILTER_ENABLED       0x00100000
329*f81fb7c4SAndroid Build Coastguard Worker #define LIB_FORMAT_16_BIT_SAMPLES       0x00200000
330*f81fb7c4SAndroid Build Coastguard Worker 
331*f81fb7c4SAndroid Build Coastguard Worker #ifdef DLS_SYNTHESIZER
332*f81fb7c4SAndroid Build Coastguard Worker /*----------------------------------------------------------------------------
333*f81fb7c4SAndroid Build Coastguard Worker  * DLS data structure
334*f81fb7c4SAndroid Build Coastguard Worker  *
335*f81fb7c4SAndroid Build Coastguard Worker  * pDLSPrograms         pointer to array of DLS programs
336*f81fb7c4SAndroid Build Coastguard Worker  * pDLSRegions          pointer to array of DLS regions
337*f81fb7c4SAndroid Build Coastguard Worker  * pDLSArticulations    pointer to array of DLS articulations
338*f81fb7c4SAndroid Build Coastguard Worker  * pSampleLen           pointer to array of sample lengths
339*f81fb7c4SAndroid Build Coastguard Worker  * ppSamples            pointer to array of sample pointers
340*f81fb7c4SAndroid Build Coastguard Worker  * numDLSPrograms       number of DLS programs
341*f81fb7c4SAndroid Build Coastguard Worker  * numDLSRegions        number of DLS regions
342*f81fb7c4SAndroid Build Coastguard Worker  * numDLSArticulations  number of DLS articulations
343*f81fb7c4SAndroid Build Coastguard Worker  * numDLSSamples        number of DLS samples
344*f81fb7c4SAndroid Build Coastguard Worker  *----------------------------------------------------------------------------
345*f81fb7c4SAndroid Build Coastguard Worker */
346*f81fb7c4SAndroid Build Coastguard Worker typedef struct s_eas_dls_tag
347*f81fb7c4SAndroid Build Coastguard Worker {
348*f81fb7c4SAndroid Build Coastguard Worker     S_PROGRAM           *pDLSPrograms;
349*f81fb7c4SAndroid Build Coastguard Worker     S_DLS_REGION        *pDLSRegions;
350*f81fb7c4SAndroid Build Coastguard Worker     S_DLS_ARTICULATION  *pDLSArticulations;
351*f81fb7c4SAndroid Build Coastguard Worker     EAS_U32             *pDLSSampleLen;
352*f81fb7c4SAndroid Build Coastguard Worker     EAS_U32             *pDLSSampleOffsets;
353*f81fb7c4SAndroid Build Coastguard Worker     EAS_SAMPLE          *pDLSSamples;
354*f81fb7c4SAndroid Build Coastguard Worker     EAS_U16             numDLSPrograms;
355*f81fb7c4SAndroid Build Coastguard Worker     EAS_U16             numDLSRegions;
356*f81fb7c4SAndroid Build Coastguard Worker     EAS_U16             numDLSArticulations;
357*f81fb7c4SAndroid Build Coastguard Worker     EAS_U16             numDLSSamples;
358*f81fb7c4SAndroid Build Coastguard Worker     EAS_U8              refCount;
359*f81fb7c4SAndroid Build Coastguard Worker } S_DLS;
360*f81fb7c4SAndroid Build Coastguard Worker #endif
361*f81fb7c4SAndroid Build Coastguard Worker 
362*f81fb7c4SAndroid Build Coastguard Worker /*----------------------------------------------------------------------------
363*f81fb7c4SAndroid Build Coastguard Worker  * Sound library data structure
364*f81fb7c4SAndroid Build Coastguard Worker  *
365*f81fb7c4SAndroid Build Coastguard Worker  * pBanks           pointer to array of banks
366*f81fb7c4SAndroid Build Coastguard Worker  * pPrograms        pointer to array of programs
367*f81fb7c4SAndroid Build Coastguard Worker  * pWTRegions       pointer to array of wavetable regions
368*f81fb7c4SAndroid Build Coastguard Worker  * pFMRegions       pointer to array of FM regions
369*f81fb7c4SAndroid Build Coastguard Worker  * pArticulations   pointer to array of articulations
370*f81fb7c4SAndroid Build Coastguard Worker  * pSampleLen       pointer to array of sample lengths
371*f81fb7c4SAndroid Build Coastguard Worker  * ppSamples        pointer to array of sample pointers
372*f81fb7c4SAndroid Build Coastguard Worker  * numBanks         number of banks
373*f81fb7c4SAndroid Build Coastguard Worker  * numPrograms      number of individual program
374*f81fb7c4SAndroid Build Coastguard Worker  * numRegions       number of regions
375*f81fb7c4SAndroid Build Coastguard Worker  * numArticulations number of articulations
376*f81fb7c4SAndroid Build Coastguard Worker  * numSamples       number of samples
377*f81fb7c4SAndroid Build Coastguard Worker  *----------------------------------------------------------------------------
378*f81fb7c4SAndroid Build Coastguard Worker */
379*f81fb7c4SAndroid Build Coastguard Worker typedef struct s_eas_sndlib_tag
380*f81fb7c4SAndroid Build Coastguard Worker {
381*f81fb7c4SAndroid Build Coastguard Worker     SCNST EAS_U32               identifier;
382*f81fb7c4SAndroid Build Coastguard Worker     SCNST EAS_U32               libAttr;
383*f81fb7c4SAndroid Build Coastguard Worker 
384*f81fb7c4SAndroid Build Coastguard Worker     SCNST S_BANK                *pBanks;
385*f81fb7c4SAndroid Build Coastguard Worker     SCNST S_PROGRAM             *pPrograms;
386*f81fb7c4SAndroid Build Coastguard Worker 
387*f81fb7c4SAndroid Build Coastguard Worker     SCNST S_WT_REGION           *pWTRegions;
388*f81fb7c4SAndroid Build Coastguard Worker     SCNST S_ARTICULATION        *pArticulations;
389*f81fb7c4SAndroid Build Coastguard Worker     SCNST EAS_U32               *pSampleLen;
390*f81fb7c4SAndroid Build Coastguard Worker     SCNST EAS_U32               *pSampleOffsets;
391*f81fb7c4SAndroid Build Coastguard Worker     SCNST EAS_SAMPLE            *pSamples;
392*f81fb7c4SAndroid Build Coastguard Worker 
393*f81fb7c4SAndroid Build Coastguard Worker     SCNST S_FM_REGION           *pFMRegions;
394*f81fb7c4SAndroid Build Coastguard Worker 
395*f81fb7c4SAndroid Build Coastguard Worker     SCNST EAS_U16               numBanks;
396*f81fb7c4SAndroid Build Coastguard Worker     SCNST EAS_U16               numPrograms;
397*f81fb7c4SAndroid Build Coastguard Worker 
398*f81fb7c4SAndroid Build Coastguard Worker     SCNST EAS_U16               numWTRegions;
399*f81fb7c4SAndroid Build Coastguard Worker     SCNST EAS_U16               numArticulations;
400*f81fb7c4SAndroid Build Coastguard Worker     SCNST EAS_U16               numSamples;
401*f81fb7c4SAndroid Build Coastguard Worker 
402*f81fb7c4SAndroid Build Coastguard Worker     SCNST EAS_U16               numFMRegions;
403*f81fb7c4SAndroid Build Coastguard Worker } S_EAS;
404*f81fb7c4SAndroid Build Coastguard Worker 
405*f81fb7c4SAndroid Build Coastguard Worker #endif
406*f81fb7c4SAndroid Build Coastguard Worker 
407