Home | History | Annotate | Download | only in lib_src
      1 @***********************************************************
      2 @ File:         ARM_synth_constants.inc
      3 @ Processor:    ARM
      4 @ Description:  Contains constants and defines, most of which
      5 @               are mirrored in synth.h
      6 @
      7 @ Copyright Sonic Network Inc. 2004
      8 @****************************************************************
      9 @ Revision Control:
     10 @   $Revision: 741 $
     11 @   $Date: 2007-06-22 16:39:21 -0700 (Fri, 22 Jun 2007) $
     12 @****************************************************************
     13 
     14 
     15     .ifdef  SAMPLE_RATE_8000
     16     .equ    SYNTH_UPDATE_PERIOD_IN_BITS, 5
     17     .equ    BUFFER_SIZE_IN_MONO_SAMPLES, 32
     18     .endif
     19 
     20     .ifdef  SAMPLE_RATE_16000
     21     .equ    SYNTH_UPDATE_PERIOD_IN_BITS, 6
     22     .equ    BUFFER_SIZE_IN_MONO_SAMPLES, 64
     23     .endif
     24 
     25     .ifdef  SAMPLE_RATE_20000
     26     .equ    SYNTH_UPDATE_PERIOD_IN_BITS, 7
     27     .equ    BUFFER_SIZE_IN_MONO_SAMPLES, 128
     28     .endif
     29 
     30     .ifdef  SAMPLE_RATE_22050
     31     .equ    SYNTH_UPDATE_PERIOD_IN_BITS, 7
     32     .equ    BUFFER_SIZE_IN_MONO_SAMPLES, 128
     33     .endif
     34 
     35     .ifdef  SAMPLE_RATE_24000
     36     .equ    SYNTH_UPDATE_PERIOD_IN_BITS, 7
     37     .equ    BUFFER_SIZE_IN_MONO_SAMPLES, 128
     38     .endif
     39 
     40     .ifdef  SAMPLE_RATE_32000
     41     .equ    SYNTH_UPDATE_PERIOD_IN_BITS, 7
     42     .equ    BUFFER_SIZE_IN_MONO_SAMPLES, 128
     43     .endif
     44 
     45     .ifdef  SAMPLE_RATE_44100
     46     .equ    SYNTH_UPDATE_PERIOD_IN_BITS, 8
     47     .equ    BUFFER_SIZE_IN_MONO_SAMPLES, 256
     48     .endif
     49 
     50     .ifdef  SAMPLE_RATE_48000
     51     .equ    SYNTH_UPDATE_PERIOD_IN_BITS, 8
     52     .equ    BUFFER_SIZE_IN_MONO_SAMPLES, 256
     53     .endif
     54 
     55 
     56 @ if the OUTPUT PCM sample is 16-bits, then when using indexed addressing,
     57 @ the next sample is this many bytes away
     58     .equ    NEXT_OUTPUT_PCM, 2
     59 
     60 @****************************************************************************
     61 @/* macros for fractional phase accumulator */
     62     .equ    NUM_PHASE_FRAC_BITS, 15
     63 
     64     .equ    PHASE_FRAC_MASK, 0x7FFF
     65 
     66 @ shift for phase accumulator when fraction carries over
     67     .ifdef  SAMPLES_8_BIT
     68     .equ    NEXT_INPUT_PCM_SHIFT, 0
     69     .endif
     70 
     71     .ifdef  SAMPLES_16_BIT
     72     .equ    NEXT_INPUT_PCM_SHIFT, 1
     73     .endif
     74 
     75 @****************************************************************************
     76     .equ    NUM_MIXER_GUARD_BITS, 4
     77 
     78 @****************************************************************************
     79 @/* Envelope 1 (EG1) calculation macros */
     80     .equ    NUM_EG1_FRAC_BITS, 15
     81 
     82 @****************************************************************************
     83 
     84     .equ    NUM_ENHANCER_FILTER_COEF_FRAC_BITS, 5
     85 
     86 @****************************************************************************
     87 
     88 @
     89 @ I've temporarily given up on the idea of getting ADS/RV and gcc to
     90 @ handle a struct in a compatible fashion. Switching to old fashion EQU
     91 @
     92 
     93     .if FILTER_ENABLED
     94 @**************************************
     95 @ typedef struct s_filter_tag
     96     .equ    m_z1, 0
     97     .equ    m_z2, 2
     98     .endif
     99 
    100 @**************************************
    101 @ typedef struct s_wt_frame_tag
    102     .equ    m_gainTarget, 0
    103     .equ    m_phaseIncrement, 4
    104 
    105     .if FILTER_ENABLED
    106     .equ    m_k, 8
    107     .equ    m_b1, 12
    108     .equ    m_b2, 16
    109     .equ    m_pAudioBuffer, 20
    110     .equ    m_pMixBuffer, 24
    111     .equ    m_numSamples, 28
    112     .equ    m_prevGain, 32
    113     .else
    114     .equ    m_pAudioBuffer, 8
    115     .equ    m_pMixBuffer, 12
    116     .equ    m_numSamples, 16
    117     .equ    m_prevGain, 20
    118     .endif
    119 
    120 
    121 @**************************************
    122 @ typedef struct s_wt_voice_tag
    123     .equ    m_pLoopEnd, 0   @ /* points to last PCM sample (not 1 beyond last) */
    124     .equ    m_pLoopStart, 4 @ /* points to first sample at start of loop */
    125     .equ    m_pPhaseAccum, 8    @ /* points to first sample at start of loop */
    126     .equ    m_phaseFrac, 12 @ /* points to first sample at start of loop */
    127 
    128     .if STEREO_OUTPUT
    129     .equ    m_gainLeft, 16  @ /* current gain, left ch  */
    130     .equ    m_gainRight, 18 @ /* current gain, right ch */
    131     .endif
    132 
    133 
    134 @****************************************************************************
    135 @ enhancer
    136     .equ    m_nEnhancerFeedForward1, 0
    137     .equ    m_nEnhancerFeedback1, 1
    138     .equ    m_nDriveCoef, 2
    139     .equ    m_nEnhancerFeedback2, 3
    140     .equ    m_nWet, 4
    141     .equ    m_nDry, 5
    142 
    143     .equ    m_zF0L, 6   @ filter 1 zero state var, left
    144     .equ    m_zF1L, 8   @ filter 1 pole state var, left
    145     .equ    m_zF2L, 10  @ filter 2 zero state var, left
    146     .equ    m_zF0R, 12  @ filter 1 zero state var, right
    147     .equ    m_zF1R, 14  @ filter 1 pole state var, right
    148     .equ    m_zF2R, 16  @ filter 2 zero state var, right
    149 
    150 @****************************************************************************
    151 
    152 
    153 
    154