156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*----------------------------------------------------------------------------
256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *
356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * File:
456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * eas_sndlib.h
556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *
656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Contents and purpose:
756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Declarations for the sound library
856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *
956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Copyright Sonic Network Inc. 2005
107df30109963092559d3760c0661a020f9daf1030The Android Open Source Project
117df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
127df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * you may not use this file except in compliance with the License.
137df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * You may obtain a copy of the License at
147df30109963092559d3760c0661a020f9daf1030The Android Open Source Project *
157df30109963092559d3760c0661a020f9daf1030The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
167df30109963092559d3760c0661a020f9daf1030The Android Open Source Project *
177df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
187df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
197df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
207df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * See the License for the specific language governing permissions and
217df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * limitations under the License.
2256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *
2356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *----------------------------------------------------------------------------
2456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Revision Control:
2556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *   $Revision: 550 $
2656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *   $Date: 2007-02-02 09:37:03 -0800 (Fri, 02 Feb 2007) $
2756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *----------------------------------------------------------------------------
2856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/
2956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
3056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#ifndef _EAS_SNDLIB_H
3156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define _EAS_SNDLIB_H
3256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
3356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#include "eas_types.h"
3456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#include "eas_synthcfg.h"
3556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
3656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#ifdef _WT_SYNTH
3756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#include "eas_wtengine.h"
3856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#endif
3956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
4056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*----------------------------------------------------------------------------
4156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * This is bit of a hack to allow us to keep the same structure
4256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * declarations for the DLS parser. Normally, the data is located
4356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * in read-only memory, but for DLS, we store the data in RW
4456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * memory.
4556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *----------------------------------------------------------------------------
4656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/
4756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#ifndef SCNST
4856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define SCNST const
4956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#endif
5056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
5156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*----------------------------------------------------------------------------
5256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * sample size
5356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *----------------------------------------------------------------------------
5456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/
5556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#ifdef _16_BIT_SAMPLES
5656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkstypedef EAS_I16 EAS_SAMPLE;
5756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#else
5856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkstypedef EAS_I8 EAS_SAMPLE;
5956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#endif
6056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
6156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*----------------------------------------------------------------------------
6256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * EAS Library ID - quick check for valid library and version
6356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *----------------------------------------------------------------------------
6456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/
6556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define _EAS_LIBRARY_VERSION        0x01534145
6656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
6756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define NUM_PROGRAMS_IN_BANK        128
6856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define INVALID_REGION_INDEX        0xffff
6956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
7056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* this bit in region index indicates that region is for secondary synth */
7156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define FLAG_RGN_IDX_FM_SYNTH       0x8000
7256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define FLAG_RGN_IDX_DLS_SYNTH      0x4000
7356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define REGION_INDEX_MASK           0x3fff
7456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
7556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*----------------------------------------------------------------------------
7656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Generic region data structure
7756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *
7856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * This must be the first element in each region structure
7956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *----------------------------------------------------------------------------
8056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/
8156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkstypedef struct s_region_tag
8256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{
8356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U16     keyGroupAndFlags;
8456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U8      rangeLow;
8556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U8      rangeHigh;
8656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} S_REGION;
8756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
8856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*
8956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Bit fields for m_nKeyGroupAndFlags
9056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Bits 0-2 are mode bits in FM synth
9156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Bits 8-11 are the key group
9256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks */
9356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define REGION_FLAG_IS_LOOPED                   0x01
9456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define REGION_FLAG_USE_WAVE_GENERATOR          0x02
9556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define REGION_FLAG_USE_ADPCM                   0x04
9656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define REGION_FLAG_ONE_SHOT                    0x08
9756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define REGION_FLAG_SQUARE_WAVE                 0x10
9856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define REGION_FLAG_OFF_CHIP                    0x20
9956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define REGION_FLAG_NON_SELF_EXCLUSIVE          0x40
10056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define REGION_FLAG_LAST_REGION                 0x8000
10156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
10256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*----------------------------------------------------------------------------
10356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Envelope data structure
10456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *----------------------------------------------------------------------------
10556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/
10656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkstypedef struct s_envelope_tag
10756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{
10856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16     attackTime;
10956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16     decayTime;
11056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16     sustainLevel;
11156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16     releaseTime;
11256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} S_ENVELOPE;
11356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
11456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*----------------------------------------------------------------------------
11556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * DLS envelope data structure
11656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *----------------------------------------------------------------------------
11756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/
11856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkstypedef struct s_dls_envelope_tag
11956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{
12056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         delayTime;
12156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         attackTime;
12256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         holdTime;
12356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         decayTime;
12456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         sustainLevel;
12556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         releaseTime;
12656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         velToAttack;
12756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         keyNumToDecay;
12856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         keyNumToHold;
12956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} S_DLS_ENVELOPE;
13056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
13156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*----------------------------------------------------------------------------
13256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * LFO data structure
13356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *----------------------------------------------------------------------------
13456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/
13556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkstypedef struct s_lfo_params_tag
13656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{
13756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16     lfoFreq;
13856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16     lfoDelay;
13956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} S_LFO_PARAMS;
14056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
14156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*----------------------------------------------------------------------------
14256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Articulation data structure
14356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *----------------------------------------------------------------------------
14456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/
14556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkstypedef struct s_articulation_tag
14656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{
14756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    S_ENVELOPE  eg1;
14856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    S_ENVELOPE  eg2;
14956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16     lfoToPitch;
15056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16     lfoDelay;
15156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16     lfoFreq;
15256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16     eg2ToPitch;
15356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16     eg2ToFc;
15456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16     filterCutoff;
15556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I8      lfoToGain;
15656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U8      filterQ;
15756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I8      pan;
15856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} S_ARTICULATION;
15956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
16056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*----------------------------------------------------------------------------
16156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * DLS articulation data structure
16256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *----------------------------------------------------------------------------
16356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/
16456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
16556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkstypedef struct s_dls_articulation_tag
16656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{
16756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    S_LFO_PARAMS    modLFO;
16856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    S_LFO_PARAMS    vibLFO;
16956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
17056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    S_DLS_ENVELOPE  eg1;
17156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    S_DLS_ENVELOPE  eg2;
17256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
17356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         eg1ShutdownTime;
17456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
17556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         filterCutoff;
17656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         modLFOToFc;
17756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         modLFOCC1ToFc;
17856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         modLFOChanPressToFc;
17956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         eg2ToFc;
18056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         velToFc;
18156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         keyNumToFc;
18256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
18356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         modLFOToGain;
18456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         modLFOCC1ToGain;
18556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         modLFOChanPressToGain;
18656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
18756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         tuning;
18856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         keyNumToPitch;
18956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         vibLFOToPitch;
19056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         vibLFOCC1ToPitch;
19156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         vibLFOChanPressToPitch;
19256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         modLFOToPitch;
19356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         modLFOCC1ToPitch;
19456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         modLFOChanPressToPitch;
19556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         eg2ToPitch;
19656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
19756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    /* pad to 4-byte boundary */
19856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U16         pad;
19956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
20056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I8          pan;
20156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U8          filterQandFlags;
20256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
20356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#ifdef _REVERB
20456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         reverbSend;
20556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         cc91ToReverbSend;
20656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#endif
20756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
20856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#ifdef _CHORUS
20956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         chorusSend;
21056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16         cc93ToChorusSend;
21156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#endif
21256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} S_DLS_ARTICULATION;
21356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
21456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* flags in filterQandFlags
21556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * NOTE: Q is stored in bottom 5 bits
21656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks */
21756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define FLAG_DLS_VELOCITY_SENSITIVE     0x80
21856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define FILTER_Q_MASK                   0x1f
21956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
22056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*----------------------------------------------------------------------------
22156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Wavetable region data structure
22256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *----------------------------------------------------------------------------
22356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/
22456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkstypedef struct s_wt_region_tag
22556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{
22656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    S_REGION    region;
22756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16     tuning;
22856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16     gain;
22956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U32     loopStart;
23056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U32     loopEnd;
23156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U16     waveIndex;
23256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U16     artIndex;
23356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} S_WT_REGION;
23456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
23556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*----------------------------------------------------------------------------
23656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * DLS region data structure
23756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *----------------------------------------------------------------------------
23856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/
23956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkstypedef struct s_dls_region_tag
24056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{
24156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    S_WT_REGION     wtRegion;
24256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U8          velLow;
24356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U8          velHigh;
24456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} S_DLS_REGION;
24556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
24656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*----------------------------------------------------------------------------
24756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * FM synthesizer data structures
24856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *----------------------------------------------------------------------------
24956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/
25056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkstypedef struct s_fm_oper_tag
25156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{
25256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I16     tuning;
25356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U8      attackDecay;
25456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U8      velocityRelease;
25556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U8      egKeyScale;
25656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U8      sustain;
25756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U8      gain;
25856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U8      flags;
25956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} S_FM_OPER;
26056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
26156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* defines for S_FM_OPER.m_nFlags */
26256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define FM_OPER_FLAG_MONOTONE           0x01
26356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define FM_OPER_FLAG_NO_VIBRATO         0x02
26456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define FM_OPER_FLAG_NOISE              0x04
26556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define FM_OPER_FLAG_LINEAR_VELOCITY    0x08
26656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
26756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* NOTE: The first two structure elements are common with S_WT_REGION
26856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * and we will rely on that in the voice management code and must
26956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * remain there unless the voice management code is revisited.
27056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks */
27156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkstypedef struct s_fm_region_tag
27256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{
27356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    S_REGION        region;
27456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U8          vibTrem;
27556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U8          lfoFreqDelay;
27656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U8          feedback;
27756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_I8          pan;
27856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    S_FM_OPER       oper[4];
27956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} S_FM_REGION;
28056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
28156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*----------------------------------------------------------------------------
28256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Common data structures
28356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *----------------------------------------------------------------------------
28456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/
28556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
28656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*----------------------------------------------------------------------------
28756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Program data structure
28856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Used for individual programs not stored as a complete bank.
28956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *----------------------------------------------------------------------------
29056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/
29156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkstypedef struct s_program_tag
29256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{
29356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U32 locale;
29456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U16 regionIndex;
29556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} S_PROGRAM;
29656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
29756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*----------------------------------------------------------------------------
29856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Bank data structure
29956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *
30056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * A bank always consists of 128 programs. If a bank is less than 128
30156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * programs, it should be stored as a spare matrix in the pPrograms
30256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * array.
30356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *
30456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * bankNum:     MSB/LSB of MIDI bank select controller
30556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * regionIndex: Index of first region in program
30656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *----------------------------------------------------------------------------
30756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/
30856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkstypedef struct s_bank_tag
30956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{
31056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U16 locale;
31156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U16 regionIndex[NUM_PROGRAMS_IN_BANK];
31256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} S_BANK;
31356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
31456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
31556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* defines for libFormat field
31656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * bits 0-17 are the sample rate
31756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * bit 18 is true if wavetable is present
31856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * bit 19 is true if FM is present
31956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * bit 20 is true if filter is enabled
32056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * bit 21 is sample depth (0 = 8-bits, 1 = 16-bits)
32156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * bits 22-31 are reserved
32256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks */
32356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define LIBFORMAT_SAMPLE_RATE_MASK      0x0003ffff
32456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define LIB_FORMAT_TYPE_MASK            0x000c0000
32556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define LIB_FORMAT_WAVETABLE            0x00000000
32656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define LIB_FORMAT_FM                   0x00040000
32756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define LIB_FORMAT_HYBRID               0x00080000
32856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define LIB_FORMAT_FILTER_ENABLED       0x00100000
32956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define LIB_FORMAT_16_BIT_SAMPLES       0x00200000
33056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
33156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#ifdef DLS_SYNTHESIZER
33256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*----------------------------------------------------------------------------
33356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * DLS data structure
33456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *
33556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * pDLSPrograms         pointer to array of DLS programs
33656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * pDLSRegions          pointer to array of DLS regions
33756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * pDLSArticulations    pointer to array of DLS articulations
33856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * pSampleLen           pointer to array of sample lengths
33956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * ppSamples            pointer to array of sample pointers
34056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * numDLSPrograms       number of DLS programs
34156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * numDLSRegions        number of DLS regions
34256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * numDLSArticulations  number of DLS articulations
34356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * numDLSSamples        number of DLS samples
34456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *----------------------------------------------------------------------------
34556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/
34656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkstypedef struct s_eas_dls_tag
34756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{
34856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    S_PROGRAM           *pDLSPrograms;
34956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    S_DLS_REGION        *pDLSRegions;
35056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    S_DLS_ARTICULATION  *pDLSArticulations;
35156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U32             *pDLSSampleLen;
35256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U32             *pDLSSampleOffsets;
35356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_SAMPLE          *pDLSSamples;
35456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U16             numDLSPrograms;
35556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U16             numDLSRegions;
35656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U16             numDLSArticulations;
35756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U16             numDLSSamples;
35856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    EAS_U8              refCount;
35956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} S_DLS;
36056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#endif
36156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
36256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*----------------------------------------------------------------------------
36356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Sound library data structure
36456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *
36556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * pBanks           pointer to array of banks
36656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * pPrograms        pointer to array of programs
36756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * pWTRegions       pointer to array of wavetable regions
36856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * pFMRegions       pointer to array of FM regions
36956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * pArticulations   pointer to array of articulations
37056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * pSampleLen       pointer to array of sample lengths
37156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * ppSamples        pointer to array of sample pointers
37256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * numBanks         number of banks
37356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * numPrograms      number of individual program
37456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * numRegions       number of regions
37556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * numArticulations number of articulations
37656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * numSamples       number of samples
37756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *----------------------------------------------------------------------------
37856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/
37956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkstypedef struct s_eas_sndlib_tag
38056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{
38156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    SCNST EAS_U32               identifier;
38256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    SCNST EAS_U32               libAttr;
38356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
38456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    SCNST S_BANK                *pBanks;
38556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    SCNST S_PROGRAM             *pPrograms;
38656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
38756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    SCNST S_WT_REGION           *pWTRegions;
38856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    SCNST S_ARTICULATION        *pArticulations;
38956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    SCNST EAS_U32               *pSampleLen;
39056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    SCNST EAS_U32               *pSampleOffsets;
39156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    SCNST EAS_SAMPLE            *pSamples;
39256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
39356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    SCNST S_FM_REGION           *pFMRegions;
39456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
39556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    SCNST EAS_U16               numBanks;
39656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    SCNST EAS_U16               numPrograms;
39756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
39856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    SCNST EAS_U16               numWTRegions;
39956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    SCNST EAS_U16               numArticulations;
40056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    SCNST EAS_U16               numSamples;
40156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
40256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    SCNST EAS_U16               numFMRegions;
40356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} S_EAS;
40456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
40556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#endif
40656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
407