ARM_synth_constants_gnu.inc revision e442bb7cd6a085b33a4dd52c0e20a157ada7feb1
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