156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@***********************************************************
256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@ File:         ARM_synth_constants.inc
356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@ Processor:    ARM
456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@ Description:  Contains constants and defines, most of which
556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@               are mirrored in synth.h
656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@
756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@ Copyright Sonic Network Inc. 2004
856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@****************************************************************
956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@ Revision Control:
1056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@   $Revision: 741 $
1156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@   $Date: 2007-06-22 16:39:21 -0700 (Fri, 22 Jun 2007) $
1256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@****************************************************************
1356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
1456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
1556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .ifdef  SAMPLE_RATE_8000
1656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    SYNTH_UPDATE_PERIOD_IN_BITS, 5
1756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    BUFFER_SIZE_IN_MONO_SAMPLES, 32
1856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .endif
1956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
2056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .ifdef  SAMPLE_RATE_16000
2156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    SYNTH_UPDATE_PERIOD_IN_BITS, 6
2256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    BUFFER_SIZE_IN_MONO_SAMPLES, 64
2356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .endif
2456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
2556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .ifdef  SAMPLE_RATE_20000
2656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    SYNTH_UPDATE_PERIOD_IN_BITS, 7
2756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    BUFFER_SIZE_IN_MONO_SAMPLES, 128
2856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .endif
2956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
3056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .ifdef  SAMPLE_RATE_22050
3156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    SYNTH_UPDATE_PERIOD_IN_BITS, 7
3256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    BUFFER_SIZE_IN_MONO_SAMPLES, 128
3356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .endif
3456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
3556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .ifdef  SAMPLE_RATE_24000
3656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    SYNTH_UPDATE_PERIOD_IN_BITS, 7
3756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    BUFFER_SIZE_IN_MONO_SAMPLES, 128
3856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .endif
3956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
4056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .ifdef  SAMPLE_RATE_32000
4156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    SYNTH_UPDATE_PERIOD_IN_BITS, 7
4256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    BUFFER_SIZE_IN_MONO_SAMPLES, 128
4356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .endif
4456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
4556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .ifdef  SAMPLE_RATE_44100
4656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    SYNTH_UPDATE_PERIOD_IN_BITS, 8
4756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    BUFFER_SIZE_IN_MONO_SAMPLES, 256
4856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .endif
4956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
5056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .ifdef  SAMPLE_RATE_48000
5156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    SYNTH_UPDATE_PERIOD_IN_BITS, 8
5256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    BUFFER_SIZE_IN_MONO_SAMPLES, 256
5356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .endif
5456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
5556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
5656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@ if the OUTPUT PCM sample is 16-bits, then when using indexed addressing,
5756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@ the next sample is this many bytes away
5856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    NEXT_OUTPUT_PCM, 2
5956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
6056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@****************************************************************************
6156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@/* macros for fractional phase accumulator */
6256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    NUM_PHASE_FRAC_BITS, 15
6356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
6456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    PHASE_FRAC_MASK, 0x7FFF
6556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
6656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@ shift for phase accumulator when fraction carries over
6756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .ifdef  SAMPLES_8_BIT
6856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    NEXT_INPUT_PCM_SHIFT, 0
6956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .endif
7056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
7156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .ifdef  SAMPLES_16_BIT
7256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    NEXT_INPUT_PCM_SHIFT, 1
7356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .endif
7456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
7556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@****************************************************************************
7656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    NUM_MIXER_GUARD_BITS, 4
7756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
7856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@****************************************************************************
7956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@/* Envelope 1 (EG1) calculation macros */
8056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    NUM_EG1_FRAC_BITS, 15
8156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
8256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@****************************************************************************
8356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
8456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    NUM_ENHANCER_FILTER_COEF_FRAC_BITS, 5
8556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
8656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@****************************************************************************
8756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
8856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@
8956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@ I've temporarily given up on the idea of getting ADS/RV and gcc to
9056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@ handle a struct in a compatible fashion. Switching to old fashion EQU
9156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@
9256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
9356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .if FILTER_ENABLED
9456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@**************************************
9556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@ typedef struct s_filter_tag
9656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_z1, 0
9756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_z2, 2
9856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .endif
9956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
10056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@**************************************
10156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@ typedef struct s_wt_frame_tag
10256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_gainTarget, 0
10356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_phaseIncrement, 4
10456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
10556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .if FILTER_ENABLED
10656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_k, 8
10756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_b1, 12
10856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_b2, 16
10956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_pAudioBuffer, 20
11056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_pMixBuffer, 24
11156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_numSamples, 28
11256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_prevGain, 32
11356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .else
11456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_pAudioBuffer, 8
11556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_pMixBuffer, 12
11656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_numSamples, 16
11756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_prevGain, 20
11856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .endif
11956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
12056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
12156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@**************************************
12256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@ typedef struct s_wt_voice_tag
12356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_pLoopEnd, 0   @ /* points to last PCM sample (not 1 beyond last) */
12456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_pLoopStart, 4 @ /* points to first sample at start of loop */
12556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_pPhaseAccum, 8    @ /* points to first sample at start of loop */
12656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_phaseFrac, 12 @ /* points to first sample at start of loop */
12756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
12856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .if STEREO_OUTPUT
12956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_gainLeft, 16  @ /* current gain, left ch  */
13056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_gainRight, 18 @ /* current gain, right ch */
13156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .endif
13256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
13356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
13456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@****************************************************************************
13556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@ enhancer
13656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_nEnhancerFeedForward1, 0
13756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_nEnhancerFeedback1, 1
13856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_nDriveCoef, 2
13956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_nEnhancerFeedback2, 3
14056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_nWet, 4
14156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_nDry, 5
14256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
14356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_zF0L, 6   @ filter 1 zero state var, left
14456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_zF1L, 8   @ filter 1 pole state var, left
14556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_zF2L, 10  @ filter 2 zero state var, left
14656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_zF0R, 12  @ filter 1 zero state var, right
14756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_zF1R, 14  @ filter 1 pole state var, right
14856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks    .equ    m_zF2R, 16  @ filter 2 zero state var, right
14956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
15056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks@****************************************************************************
15156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
15256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
15356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks
154