From a8c89077d78769bf4840fa91609edc51fe2fa02d Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Queru Date: Thu, 12 Nov 2009 18:45:37 -0800 Subject: eclair snapshot --- arm-hybrid-22k/lib_src/eas_sndlib.h | 788 ++++++++++++++++++------------------ 1 file changed, 394 insertions(+), 394 deletions(-) (limited to 'arm-hybrid-22k/lib_src/eas_sndlib.h') diff --git a/arm-hybrid-22k/lib_src/eas_sndlib.h b/arm-hybrid-22k/lib_src/eas_sndlib.h index e05bee0..416be6e 100644 --- a/arm-hybrid-22k/lib_src/eas_sndlib.h +++ b/arm-hybrid-22k/lib_src/eas_sndlib.h @@ -1,12 +1,12 @@ -/*---------------------------------------------------------------------------- - * - * File: - * eas_sndlib.h - * - * Contents and purpose: - * Declarations for the sound library - * - * Copyright Sonic Network Inc. 2005 +/*---------------------------------------------------------------------------- + * + * File: + * eas_sndlib.h + * + * Contents and purpose: + * Declarations for the sound library + * + * Copyright Sonic Network Inc. 2005 * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,388 +19,388 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - *---------------------------------------------------------------------------- - * Revision Control: - * $Revision: 550 $ - * $Date: 2007-02-02 09:37:03 -0800 (Fri, 02 Feb 2007) $ - *---------------------------------------------------------------------------- -*/ - -#ifndef _EAS_SNDLIB_H -#define _EAS_SNDLIB_H - -#include "eas_types.h" -#include "eas_synthcfg.h" - -#ifdef _WT_SYNTH -#include "eas_wtengine.h" -#endif - -/*---------------------------------------------------------------------------- - * This is bit of a hack to allow us to keep the same structure - * declarations for the DLS parser. Normally, the data is located - * in read-only memory, but for DLS, we store the data in RW - * memory. - *---------------------------------------------------------------------------- -*/ -#ifndef SCNST -#define SCNST const -#endif - -/*---------------------------------------------------------------------------- - * sample size - *---------------------------------------------------------------------------- -*/ -#ifdef _16_BIT_SAMPLES -typedef EAS_I16 EAS_SAMPLE; -#else -typedef EAS_I8 EAS_SAMPLE; -#endif - -/*---------------------------------------------------------------------------- - * EAS Library ID - quick check for valid library and version - *---------------------------------------------------------------------------- -*/ -#define _EAS_LIBRARY_VERSION 0x01534145 - -#define NUM_PROGRAMS_IN_BANK 128 -#define INVALID_REGION_INDEX 0xffff - -/* this bit in region index indicates that region is for secondary synth */ -#define FLAG_RGN_IDX_FM_SYNTH 0x8000 -#define FLAG_RGN_IDX_DLS_SYNTH 0x4000 -#define REGION_INDEX_MASK 0x3fff - -/*---------------------------------------------------------------------------- - * Generic region data structure - * - * This must be the first element in each region structure - *---------------------------------------------------------------------------- -*/ -typedef struct s_region_tag -{ - EAS_U16 keyGroupAndFlags; - EAS_U8 rangeLow; - EAS_U8 rangeHigh; -} S_REGION; - -/* - * Bit fields for m_nKeyGroupAndFlags - * Bits 0-2 are mode bits in FM synth - * Bits 8-11 are the key group - */ -#define REGION_FLAG_IS_LOOPED 0x01 -#define REGION_FLAG_USE_WAVE_GENERATOR 0x02 -#define REGION_FLAG_USE_ADPCM 0x04 -#define REGION_FLAG_ONE_SHOT 0x08 -#define REGION_FLAG_SQUARE_WAVE 0x10 -#define REGION_FLAG_OFF_CHIP 0x20 -#define REGION_FLAG_NON_SELF_EXCLUSIVE 0x40 -#define REGION_FLAG_LAST_REGION 0x8000 - -/*---------------------------------------------------------------------------- - * Envelope data structure - *---------------------------------------------------------------------------- -*/ -typedef struct s_envelope_tag -{ - EAS_I16 attackTime; - EAS_I16 decayTime; - EAS_I16 sustainLevel; - EAS_I16 releaseTime; -} S_ENVELOPE; - -/*---------------------------------------------------------------------------- - * DLS envelope data structure - *---------------------------------------------------------------------------- -*/ -typedef struct s_dls_envelope_tag -{ - EAS_I16 delayTime; - EAS_I16 attackTime; - EAS_I16 holdTime; - EAS_I16 decayTime; - EAS_I16 sustainLevel; - EAS_I16 releaseTime; - EAS_I16 velToAttack; - EAS_I16 keyNumToDecay; - EAS_I16 keyNumToHold; -} S_DLS_ENVELOPE; - -/*---------------------------------------------------------------------------- - * LFO data structure - *---------------------------------------------------------------------------- -*/ -typedef struct s_lfo_params_tag -{ - EAS_I16 lfoFreq; - EAS_I16 lfoDelay; -} S_LFO_PARAMS; - -/*---------------------------------------------------------------------------- - * Articulation data structure - *---------------------------------------------------------------------------- -*/ -typedef struct s_articulation_tag -{ - S_ENVELOPE eg1; - S_ENVELOPE eg2; - EAS_I16 lfoToPitch; - EAS_I16 lfoDelay; - EAS_I16 lfoFreq; - EAS_I16 eg2ToPitch; - EAS_I16 eg2ToFc; - EAS_I16 filterCutoff; - EAS_I8 lfoToGain; - EAS_U8 filterQ; - EAS_I8 pan; -} S_ARTICULATION; - -/*---------------------------------------------------------------------------- - * DLS articulation data structure - *---------------------------------------------------------------------------- -*/ - -typedef struct s_dls_articulation_tag -{ - S_LFO_PARAMS modLFO; - S_LFO_PARAMS vibLFO; - - S_DLS_ENVELOPE eg1; - S_DLS_ENVELOPE eg2; - - EAS_I16 eg1ShutdownTime; - - EAS_I16 filterCutoff; - EAS_I16 modLFOToFc; - EAS_I16 modLFOCC1ToFc; - EAS_I16 modLFOChanPressToFc; - EAS_I16 eg2ToFc; - EAS_I16 velToFc; - EAS_I16 keyNumToFc; - - EAS_I16 modLFOToGain; - EAS_I16 modLFOCC1ToGain; - EAS_I16 modLFOChanPressToGain; - - EAS_I16 tuning; - EAS_I16 keyNumToPitch; - EAS_I16 vibLFOToPitch; - EAS_I16 vibLFOCC1ToPitch; - EAS_I16 vibLFOChanPressToPitch; - EAS_I16 modLFOToPitch; - EAS_I16 modLFOCC1ToPitch; - EAS_I16 modLFOChanPressToPitch; - EAS_I16 eg2ToPitch; - - /* pad to 4-byte boundary */ - EAS_U16 pad; - - EAS_I8 pan; - EAS_U8 filterQandFlags; - -#ifdef _REVERB - EAS_I16 reverbSend; - EAS_I16 cc91ToReverbSend; -#endif - -#ifdef _CHORUS - EAS_I16 chorusSend; - EAS_I16 cc93ToChorusSend; -#endif -} S_DLS_ARTICULATION; - -/* flags in filterQandFlags - * NOTE: Q is stored in bottom 5 bits - */ -#define FLAG_DLS_VELOCITY_SENSITIVE 0x80 -#define FILTER_Q_MASK 0x1f - -/*---------------------------------------------------------------------------- - * Wavetable region data structure - *---------------------------------------------------------------------------- -*/ -typedef struct s_wt_region_tag -{ - S_REGION region; - EAS_I16 tuning; - EAS_I16 gain; - EAS_U32 loopStart; - EAS_U32 loopEnd; - EAS_U16 waveIndex; - EAS_U16 artIndex; -} S_WT_REGION; - -/*---------------------------------------------------------------------------- - * DLS region data structure - *---------------------------------------------------------------------------- -*/ -typedef struct s_dls_region_tag -{ - S_WT_REGION wtRegion; - EAS_U8 velLow; - EAS_U8 velHigh; -} S_DLS_REGION; - -/*---------------------------------------------------------------------------- - * FM synthesizer data structures - *---------------------------------------------------------------------------- -*/ -typedef struct s_fm_oper_tag -{ - EAS_I16 tuning; - EAS_U8 attackDecay; - EAS_U8 velocityRelease; - EAS_U8 egKeyScale; - EAS_U8 sustain; - EAS_U8 gain; - EAS_U8 flags; -} S_FM_OPER; - -/* defines for S_FM_OPER.m_nFlags */ -#define FM_OPER_FLAG_MONOTONE 0x01 -#define FM_OPER_FLAG_NO_VIBRATO 0x02 -#define FM_OPER_FLAG_NOISE 0x04 -#define FM_OPER_FLAG_LINEAR_VELOCITY 0x08 - -/* NOTE: The first two structure elements are common with S_WT_REGION - * and we will rely on that in the voice management code and must - * remain there unless the voice management code is revisited. - */ -typedef struct s_fm_region_tag -{ - S_REGION region; - EAS_U8 vibTrem; - EAS_U8 lfoFreqDelay; - EAS_U8 feedback; - EAS_I8 pan; - S_FM_OPER oper[4]; -} S_FM_REGION; - -/*---------------------------------------------------------------------------- - * Common data structures - *---------------------------------------------------------------------------- -*/ - -/*---------------------------------------------------------------------------- - * Program data structure - * Used for individual programs not stored as a complete bank. - *---------------------------------------------------------------------------- -*/ -typedef struct s_program_tag -{ - EAS_U32 locale; - EAS_U16 regionIndex; -} S_PROGRAM; - -/*---------------------------------------------------------------------------- - * Bank data structure - * - * A bank always consists of 128 programs. If a bank is less than 128 - * programs, it should be stored as a spare matrix in the pPrograms - * array. - * - * bankNum: MSB/LSB of MIDI bank select controller - * regionIndex: Index of first region in program - *---------------------------------------------------------------------------- -*/ -typedef struct s_bank_tag -{ - EAS_U16 locale; - EAS_U16 regionIndex[NUM_PROGRAMS_IN_BANK]; -} S_BANK; - - -/* defines for libFormat field - * bits 0-17 are the sample rate - * bit 18 is true if wavetable is present - * bit 19 is true if FM is present - * bit 20 is true if filter is enabled - * bit 21 is sample depth (0 = 8-bits, 1 = 16-bits) - * bits 22-31 are reserved - */ -#define LIBFORMAT_SAMPLE_RATE_MASK 0x0003ffff -#define LIB_FORMAT_TYPE_MASK 0x000c0000 -#define LIB_FORMAT_WAVETABLE 0x00000000 -#define LIB_FORMAT_FM 0x00040000 -#define LIB_FORMAT_HYBRID 0x00080000 -#define LIB_FORMAT_FILTER_ENABLED 0x00100000 -#define LIB_FORMAT_16_BIT_SAMPLES 0x00200000 - -#ifdef DLS_SYNTHESIZER -/*---------------------------------------------------------------------------- - * DLS data structure - * - * pDLSPrograms pointer to array of DLS programs - * pDLSRegions pointer to array of DLS regions - * pDLSArticulations pointer to array of DLS articulations - * pSampleLen pointer to array of sample lengths - * ppSamples pointer to array of sample pointers - * numDLSPrograms number of DLS programs - * numDLSRegions number of DLS regions - * numDLSArticulations number of DLS articulations - * numDLSSamples number of DLS samples - *---------------------------------------------------------------------------- -*/ -typedef struct s_eas_dls_tag -{ - S_PROGRAM *pDLSPrograms; - S_DLS_REGION *pDLSRegions; - S_DLS_ARTICULATION *pDLSArticulations; - EAS_U32 *pDLSSampleLen; - EAS_U32 *pDLSSampleOffsets; - EAS_SAMPLE *pDLSSamples; - EAS_U16 numDLSPrograms; - EAS_U16 numDLSRegions; - EAS_U16 numDLSArticulations; - EAS_U16 numDLSSamples; - EAS_U8 refCount; -} S_DLS; -#endif - -/*---------------------------------------------------------------------------- - * Sound library data structure - * - * pBanks pointer to array of banks - * pPrograms pointer to array of programs - * pWTRegions pointer to array of wavetable regions - * pFMRegions pointer to array of FM regions - * pArticulations pointer to array of articulations - * pSampleLen pointer to array of sample lengths - * ppSamples pointer to array of sample pointers - * numBanks number of banks - * numPrograms number of individual program - * numRegions number of regions - * numArticulations number of articulations - * numSamples number of samples - *---------------------------------------------------------------------------- -*/ -typedef struct s_eas_sndlib_tag -{ - SCNST EAS_U32 identifier; - SCNST EAS_U32 libAttr; - - SCNST S_BANK *pBanks; - SCNST S_PROGRAM *pPrograms; - - SCNST S_WT_REGION *pWTRegions; - SCNST S_ARTICULATION *pArticulations; - SCNST EAS_U32 *pSampleLen; - SCNST EAS_U32 *pSampleOffsets; - SCNST EAS_SAMPLE *pSamples; - - SCNST S_FM_REGION *pFMRegions; - - SCNST EAS_U16 numBanks; - SCNST EAS_U16 numPrograms; - - SCNST EAS_U16 numWTRegions; - SCNST EAS_U16 numArticulations; - SCNST EAS_U16 numSamples; - - SCNST EAS_U16 numFMRegions; -} S_EAS; - -#endif - + * + *---------------------------------------------------------------------------- + * Revision Control: + * $Revision: 550 $ + * $Date: 2007-02-02 09:37:03 -0800 (Fri, 02 Feb 2007) $ + *---------------------------------------------------------------------------- +*/ + +#ifndef _EAS_SNDLIB_H +#define _EAS_SNDLIB_H + +#include "eas_types.h" +#include "eas_synthcfg.h" + +#ifdef _WT_SYNTH +#include "eas_wtengine.h" +#endif + +/*---------------------------------------------------------------------------- + * This is bit of a hack to allow us to keep the same structure + * declarations for the DLS parser. Normally, the data is located + * in read-only memory, but for DLS, we store the data in RW + * memory. + *---------------------------------------------------------------------------- +*/ +#ifndef SCNST +#define SCNST const +#endif + +/*---------------------------------------------------------------------------- + * sample size + *---------------------------------------------------------------------------- +*/ +#ifdef _16_BIT_SAMPLES +typedef EAS_I16 EAS_SAMPLE; +#else +typedef EAS_I8 EAS_SAMPLE; +#endif + +/*---------------------------------------------------------------------------- + * EAS Library ID - quick check for valid library and version + *---------------------------------------------------------------------------- +*/ +#define _EAS_LIBRARY_VERSION 0x01534145 + +#define NUM_PROGRAMS_IN_BANK 128 +#define INVALID_REGION_INDEX 0xffff + +/* this bit in region index indicates that region is for secondary synth */ +#define FLAG_RGN_IDX_FM_SYNTH 0x8000 +#define FLAG_RGN_IDX_DLS_SYNTH 0x4000 +#define REGION_INDEX_MASK 0x3fff + +/*---------------------------------------------------------------------------- + * Generic region data structure + * + * This must be the first element in each region structure + *---------------------------------------------------------------------------- +*/ +typedef struct s_region_tag +{ + EAS_U16 keyGroupAndFlags; + EAS_U8 rangeLow; + EAS_U8 rangeHigh; +} S_REGION; + +/* + * Bit fields for m_nKeyGroupAndFlags + * Bits 0-2 are mode bits in FM synth + * Bits 8-11 are the key group + */ +#define REGION_FLAG_IS_LOOPED 0x01 +#define REGION_FLAG_USE_WAVE_GENERATOR 0x02 +#define REGION_FLAG_USE_ADPCM 0x04 +#define REGION_FLAG_ONE_SHOT 0x08 +#define REGION_FLAG_SQUARE_WAVE 0x10 +#define REGION_FLAG_OFF_CHIP 0x20 +#define REGION_FLAG_NON_SELF_EXCLUSIVE 0x40 +#define REGION_FLAG_LAST_REGION 0x8000 + +/*---------------------------------------------------------------------------- + * Envelope data structure + *---------------------------------------------------------------------------- +*/ +typedef struct s_envelope_tag +{ + EAS_I16 attackTime; + EAS_I16 decayTime; + EAS_I16 sustainLevel; + EAS_I16 releaseTime; +} S_ENVELOPE; + +/*---------------------------------------------------------------------------- + * DLS envelope data structure + *---------------------------------------------------------------------------- +*/ +typedef struct s_dls_envelope_tag +{ + EAS_I16 delayTime; + EAS_I16 attackTime; + EAS_I16 holdTime; + EAS_I16 decayTime; + EAS_I16 sustainLevel; + EAS_I16 releaseTime; + EAS_I16 velToAttack; + EAS_I16 keyNumToDecay; + EAS_I16 keyNumToHold; +} S_DLS_ENVELOPE; + +/*---------------------------------------------------------------------------- + * LFO data structure + *---------------------------------------------------------------------------- +*/ +typedef struct s_lfo_params_tag +{ + EAS_I16 lfoFreq; + EAS_I16 lfoDelay; +} S_LFO_PARAMS; + +/*---------------------------------------------------------------------------- + * Articulation data structure + *---------------------------------------------------------------------------- +*/ +typedef struct s_articulation_tag +{ + S_ENVELOPE eg1; + S_ENVELOPE eg2; + EAS_I16 lfoToPitch; + EAS_I16 lfoDelay; + EAS_I16 lfoFreq; + EAS_I16 eg2ToPitch; + EAS_I16 eg2ToFc; + EAS_I16 filterCutoff; + EAS_I8 lfoToGain; + EAS_U8 filterQ; + EAS_I8 pan; +} S_ARTICULATION; + +/*---------------------------------------------------------------------------- + * DLS articulation data structure + *---------------------------------------------------------------------------- +*/ + +typedef struct s_dls_articulation_tag +{ + S_LFO_PARAMS modLFO; + S_LFO_PARAMS vibLFO; + + S_DLS_ENVELOPE eg1; + S_DLS_ENVELOPE eg2; + + EAS_I16 eg1ShutdownTime; + + EAS_I16 filterCutoff; + EAS_I16 modLFOToFc; + EAS_I16 modLFOCC1ToFc; + EAS_I16 modLFOChanPressToFc; + EAS_I16 eg2ToFc; + EAS_I16 velToFc; + EAS_I16 keyNumToFc; + + EAS_I16 modLFOToGain; + EAS_I16 modLFOCC1ToGain; + EAS_I16 modLFOChanPressToGain; + + EAS_I16 tuning; + EAS_I16 keyNumToPitch; + EAS_I16 vibLFOToPitch; + EAS_I16 vibLFOCC1ToPitch; + EAS_I16 vibLFOChanPressToPitch; + EAS_I16 modLFOToPitch; + EAS_I16 modLFOCC1ToPitch; + EAS_I16 modLFOChanPressToPitch; + EAS_I16 eg2ToPitch; + + /* pad to 4-byte boundary */ + EAS_U16 pad; + + EAS_I8 pan; + EAS_U8 filterQandFlags; + +#ifdef _REVERB + EAS_I16 reverbSend; + EAS_I16 cc91ToReverbSend; +#endif + +#ifdef _CHORUS + EAS_I16 chorusSend; + EAS_I16 cc93ToChorusSend; +#endif +} S_DLS_ARTICULATION; + +/* flags in filterQandFlags + * NOTE: Q is stored in bottom 5 bits + */ +#define FLAG_DLS_VELOCITY_SENSITIVE 0x80 +#define FILTER_Q_MASK 0x1f + +/*---------------------------------------------------------------------------- + * Wavetable region data structure + *---------------------------------------------------------------------------- +*/ +typedef struct s_wt_region_tag +{ + S_REGION region; + EAS_I16 tuning; + EAS_I16 gain; + EAS_U32 loopStart; + EAS_U32 loopEnd; + EAS_U16 waveIndex; + EAS_U16 artIndex; +} S_WT_REGION; + +/*---------------------------------------------------------------------------- + * DLS region data structure + *---------------------------------------------------------------------------- +*/ +typedef struct s_dls_region_tag +{ + S_WT_REGION wtRegion; + EAS_U8 velLow; + EAS_U8 velHigh; +} S_DLS_REGION; + +/*---------------------------------------------------------------------------- + * FM synthesizer data structures + *---------------------------------------------------------------------------- +*/ +typedef struct s_fm_oper_tag +{ + EAS_I16 tuning; + EAS_U8 attackDecay; + EAS_U8 velocityRelease; + EAS_U8 egKeyScale; + EAS_U8 sustain; + EAS_U8 gain; + EAS_U8 flags; +} S_FM_OPER; + +/* defines for S_FM_OPER.m_nFlags */ +#define FM_OPER_FLAG_MONOTONE 0x01 +#define FM_OPER_FLAG_NO_VIBRATO 0x02 +#define FM_OPER_FLAG_NOISE 0x04 +#define FM_OPER_FLAG_LINEAR_VELOCITY 0x08 + +/* NOTE: The first two structure elements are common with S_WT_REGION + * and we will rely on that in the voice management code and must + * remain there unless the voice management code is revisited. + */ +typedef struct s_fm_region_tag +{ + S_REGION region; + EAS_U8 vibTrem; + EAS_U8 lfoFreqDelay; + EAS_U8 feedback; + EAS_I8 pan; + S_FM_OPER oper[4]; +} S_FM_REGION; + +/*---------------------------------------------------------------------------- + * Common data structures + *---------------------------------------------------------------------------- +*/ + +/*---------------------------------------------------------------------------- + * Program data structure + * Used for individual programs not stored as a complete bank. + *---------------------------------------------------------------------------- +*/ +typedef struct s_program_tag +{ + EAS_U32 locale; + EAS_U16 regionIndex; +} S_PROGRAM; + +/*---------------------------------------------------------------------------- + * Bank data structure + * + * A bank always consists of 128 programs. If a bank is less than 128 + * programs, it should be stored as a spare matrix in the pPrograms + * array. + * + * bankNum: MSB/LSB of MIDI bank select controller + * regionIndex: Index of first region in program + *---------------------------------------------------------------------------- +*/ +typedef struct s_bank_tag +{ + EAS_U16 locale; + EAS_U16 regionIndex[NUM_PROGRAMS_IN_BANK]; +} S_BANK; + + +/* defines for libFormat field + * bits 0-17 are the sample rate + * bit 18 is true if wavetable is present + * bit 19 is true if FM is present + * bit 20 is true if filter is enabled + * bit 21 is sample depth (0 = 8-bits, 1 = 16-bits) + * bits 22-31 are reserved + */ +#define LIBFORMAT_SAMPLE_RATE_MASK 0x0003ffff +#define LIB_FORMAT_TYPE_MASK 0x000c0000 +#define LIB_FORMAT_WAVETABLE 0x00000000 +#define LIB_FORMAT_FM 0x00040000 +#define LIB_FORMAT_HYBRID 0x00080000 +#define LIB_FORMAT_FILTER_ENABLED 0x00100000 +#define LIB_FORMAT_16_BIT_SAMPLES 0x00200000 + +#ifdef DLS_SYNTHESIZER +/*---------------------------------------------------------------------------- + * DLS data structure + * + * pDLSPrograms pointer to array of DLS programs + * pDLSRegions pointer to array of DLS regions + * pDLSArticulations pointer to array of DLS articulations + * pSampleLen pointer to array of sample lengths + * ppSamples pointer to array of sample pointers + * numDLSPrograms number of DLS programs + * numDLSRegions number of DLS regions + * numDLSArticulations number of DLS articulations + * numDLSSamples number of DLS samples + *---------------------------------------------------------------------------- +*/ +typedef struct s_eas_dls_tag +{ + S_PROGRAM *pDLSPrograms; + S_DLS_REGION *pDLSRegions; + S_DLS_ARTICULATION *pDLSArticulations; + EAS_U32 *pDLSSampleLen; + EAS_U32 *pDLSSampleOffsets; + EAS_SAMPLE *pDLSSamples; + EAS_U16 numDLSPrograms; + EAS_U16 numDLSRegions; + EAS_U16 numDLSArticulations; + EAS_U16 numDLSSamples; + EAS_U8 refCount; +} S_DLS; +#endif + +/*---------------------------------------------------------------------------- + * Sound library data structure + * + * pBanks pointer to array of banks + * pPrograms pointer to array of programs + * pWTRegions pointer to array of wavetable regions + * pFMRegions pointer to array of FM regions + * pArticulations pointer to array of articulations + * pSampleLen pointer to array of sample lengths + * ppSamples pointer to array of sample pointers + * numBanks number of banks + * numPrograms number of individual program + * numRegions number of regions + * numArticulations number of articulations + * numSamples number of samples + *---------------------------------------------------------------------------- +*/ +typedef struct s_eas_sndlib_tag +{ + SCNST EAS_U32 identifier; + SCNST EAS_U32 libAttr; + + SCNST S_BANK *pBanks; + SCNST S_PROGRAM *pPrograms; + + SCNST S_WT_REGION *pWTRegions; + SCNST S_ARTICULATION *pArticulations; + SCNST EAS_U32 *pSampleLen; + SCNST EAS_U32 *pSampleOffsets; + SCNST EAS_SAMPLE *pSamples; + + SCNST S_FM_REGION *pFMRegions; + + SCNST EAS_U16 numBanks; + SCNST EAS_U16 numPrograms; + + SCNST EAS_U16 numWTRegions; + SCNST EAS_U16 numArticulations; + SCNST EAS_U16 numSamples; + + SCNST EAS_U16 numFMRegions; +} S_EAS; + +#endif + -- cgit v1.2.3