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