blob: c0f8df3164addfd2d121826ba7f85ab0db870017 [file] [log] [blame]
@***********************************************************
@ File: ARM_synth_constants.inc
@ Processor: ARM
@ Description: Contains constants and defines, most of which
@ are mirrored in synth.h
@
@ Copyright Sonic Network Inc. 2004
@****************************************************************
@ Revision Control:
@ $Revision: 741 $
@ $Date: 2007-06-22 16:39:21 -0700 (Fri, 22 Jun 2007) $
@****************************************************************
.ifdef SAMPLE_RATE_8000
.equ SYNTH_UPDATE_PERIOD_IN_BITS, 5
.equ BUFFER_SIZE_IN_MONO_SAMPLES, 32
.endif
.ifdef SAMPLE_RATE_16000
.equ SYNTH_UPDATE_PERIOD_IN_BITS, 6
.equ BUFFER_SIZE_IN_MONO_SAMPLES, 64
.endif
.ifdef SAMPLE_RATE_20000
.equ SYNTH_UPDATE_PERIOD_IN_BITS, 7
.equ BUFFER_SIZE_IN_MONO_SAMPLES, 128
.endif
.ifdef SAMPLE_RATE_22050
.equ SYNTH_UPDATE_PERIOD_IN_BITS, 7
.equ BUFFER_SIZE_IN_MONO_SAMPLES, 128
.endif
.ifdef SAMPLE_RATE_24000
.equ SYNTH_UPDATE_PERIOD_IN_BITS, 7
.equ BUFFER_SIZE_IN_MONO_SAMPLES, 128
.endif
.ifdef SAMPLE_RATE_32000
.equ SYNTH_UPDATE_PERIOD_IN_BITS, 7
.equ BUFFER_SIZE_IN_MONO_SAMPLES, 128
.endif
.ifdef SAMPLE_RATE_44100
.equ SYNTH_UPDATE_PERIOD_IN_BITS, 8
.equ BUFFER_SIZE_IN_MONO_SAMPLES, 256
.endif
.ifdef SAMPLE_RATE_48000
.equ SYNTH_UPDATE_PERIOD_IN_BITS, 8
.equ BUFFER_SIZE_IN_MONO_SAMPLES, 256
.endif
@ if the OUTPUT PCM sample is 16-bits, then when using indexed addressing,
@ the next sample is this many bytes away
.equ NEXT_OUTPUT_PCM, 2
@****************************************************************************
@/* macros for fractional phase accumulator */
.equ NUM_PHASE_FRAC_BITS, 15
.equ PHASE_FRAC_MASK, 0x7FFF
@ shift for phase accumulator when fraction carries over
.ifdef SAMPLES_8_BIT
.equ NEXT_INPUT_PCM_SHIFT, 0
.endif
.ifdef SAMPLES_16_BIT
.equ NEXT_INPUT_PCM_SHIFT, 1
.endif
@****************************************************************************
.equ NUM_MIXER_GUARD_BITS, 4
@****************************************************************************
@/* Envelope 1 (EG1) calculation macros */
.equ NUM_EG1_FRAC_BITS, 15
@****************************************************************************
.equ NUM_ENHANCER_FILTER_COEF_FRAC_BITS, 5
@****************************************************************************
@
@ I've temporarily given up on the idea of getting ADS/RV and gcc to
@ handle a struct in a compatible fashion. Switching to old fashion EQU
@
.if FILTER_ENABLED
@**************************************
@ typedef struct s_filter_tag
.equ m_z1, 0
.equ m_z2, 2
.endif
@**************************************
@ typedef struct s_wt_frame_tag
.equ m_gainTarget, 0
.equ m_phaseIncrement, 4
.if FILTER_ENABLED
.equ m_k, 8
.equ m_b1, 12
.equ m_b2, 16
.equ m_pAudioBuffer, 20
.equ m_pMixBuffer, 24
.equ m_numSamples, 28
.equ m_prevGain, 32
.else
.equ m_pAudioBuffer, 8
.equ m_pMixBuffer, 12
.equ m_numSamples, 16
.equ m_prevGain, 20
.endif
@**************************************
@ typedef struct s_wt_voice_tag
.equ m_pLoopEnd, 0 @ /* points to last PCM sample (not 1 beyond last) */
.equ m_pLoopStart, 4 @ /* points to first sample at start of loop */
.equ m_pPhaseAccum, 8 @ /* points to first sample at start of loop */
.equ m_phaseFrac, 12 @ /* points to first sample at start of loop */
.if STEREO_OUTPUT
.equ m_gainLeft, 16 @ /* current gain, left ch */
.equ m_gainRight, 18 @ /* current gain, right ch */
.endif
@****************************************************************************
@ enhancer
.equ m_nEnhancerFeedForward1, 0
.equ m_nEnhancerFeedback1, 1
.equ m_nDriveCoef, 2
.equ m_nEnhancerFeedback2, 3
.equ m_nWet, 4
.equ m_nDry, 5
.equ m_zF0L, 6 @ filter 1 zero state var, left
.equ m_zF1L, 8 @ filter 1 pole state var, left
.equ m_zF2L, 10 @ filter 2 zero state var, left
.equ m_zF0R, 12 @ filter 1 zero state var, right
.equ m_zF1R, 14 @ filter 1 pole state var, right
.equ m_zF2R, 16 @ filter 2 zero state var, right
@****************************************************************************