blob: c0f8df3164addfd2d121826ba7f85ab0db870017 [file] [log] [blame]
Dave Sparks56c99cd2009-08-24 17:35:45 -07001@***********************************************************
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