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