Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;*****************************************************************************
- ; Colorgan4.s
- ; A DSP-based colour organ using digital filters
- ; Professor M. Csele, Niagara College, Canada, 2010
- ; Revised: 2010/04/24
- ;
- ; Uses FIR filters - Output Side Algorithm from chapter 6 of Smith
- ;
- ; Other Files Required : p30F6012.gld, p30f6012.inc
- ; Tools Used : MPLAB IDE version 8.xx
- ;
- ; Hardware:
- ; dsPICDEM board standard hardware (with ds30F6012 chip)
- ; Line IN provided via AN3/RB3 (via on-board 4KHz analog sampling filter)
- ; Line OUT provided via MCP4101 (thru on-board analog filter) - for testing
- ; Indicator LEDs on RD4-RD7
- ; ZCD input (active high) on RG12
- ; Triac/SCR output LOW channel (red) on RG15
- ; Triac/SCR output MID channel (yellow) on RG14
- ; Triac/SCR output HIGH channel (green) on RG13
- ;
- ; User Interface (Optional - NOT IMPLEMENTED):
- ; Pushbutton "Parameter" on RD0
- ; Pushbutton "Increase / +" on RD1
- ; Pushbutton "Decrease / -" on RD2
- ; Pressing "Parameter" selects next parameter to set
- ; Parameter Order: LO Gain, LO Background, MID Gain, MID Back, HI Gain, Hi Back
- ; Mode indicated by constant lights on other two channels
- ; Gain is set in 10% increments from 10% to 500%
- ; Background is set in steps from 0 to 66
- ; Parameters are stored in EEPROM and read upon startup
- ;
- ;*****************************************************************************
- .equ __30F6012, 1
- .include "p30f6012.inc"
- ;.............................................................................
- ; Configuration bits:
- ;.............................................................................
- config __FOSC, CSW_FSCM_OFF & XT_PLL16 ;16xPLL - 64MHz/16MIPs at 4MHz XTAL
- ; - 118MHz/30MPIs at 7.37MHz XTAL
- config __FWDT, WDT_OFF ;Turn off Watchdog Timer
- config __FBORPOR, PBOR_ON & BORV_42 & PWRT_64 & MCLR_EN ;Set Brown-out Reset voltage and
- config __FGS, CODE_PROT_OFF ;Set Code Protection Off
- ;.............................................................................
- ; Global Declarations:
- ;.............................................................................
- .global __reset ;Label for first line of code.
- .global __ICD2RAM ;Allows ICD2 to be used
- .global __OscillatorFail ;Declare Oscillator Fail trap routine label
- .global __AddressError ;Declare Address Error trap routine label
- .global __StackError ;Declare Stack Error trap routine label
- .global __MathError ;Declare Math Error trap routine label
- ;.............................................................................
- ; Storage in Data space (X and Y)
- ;.............................................................................
- .section .ybss ;Uninitialized Y-Space
- .align 2
- Samples: .space 512 ;256 samples (16 bits each)
- .section .xbss ;Uninitialized X-Space
- .align 2
- ;Kernels are in X space (Program memory via PSV)
- PeakAverageCounter: .space 2 ;Counter for samples to find peaks
- PeakTemp: .space 2 ;Temp peak for the current period
- Peak: .space 2 ;Peak amplitude found for last period
- Gain: .space 2 ;Current gain (from CVA)
- Sample: .space 2 ;Current incoming sample
- PeakLo: .space 2 ;Peak filter output for last half-cycle
- PeakLoTemp: .space 2 ;Temp peak for current period
- PeakMid: .space 2
- PeakMidTemp: .space 2
- PeakHi: .space 2
- PeakHiTemp: .space 2
- PhaseCounter: .space 2 ;Counter for AC cycle trigger points
- ;.............................................................................
- ; Program Constants
- ;.............................................................................
- .equ TIMECONST, #32000 ;Use 32000 samples (4 seconds) as constant to find peak
- .equ TARGETPEAK, #0x4000 ;Target peak for samples is 0x4000
- ;**** Operational Parameters - all determined by trial-and-error ****
- ;Background light levels (0=Min, 66=Max)
- .equ BACKGROUND_LO,#18 ;GREEN
- .equ BACKGROUND_MID,#12 ;YELLOW
- .equ BACKGROUND_HIGH,#15 ;RED
- ;Channel Gain (0=Min, 8=100%, 32=400%)
- .equ GAIN_LO,#10 ;Low channel gain
- .equ GAIN_MID,#10
- .equ GAIN_HI,#10
- ;**** I/O Bit definitions ****
- .equ SS,#9 ;RG9 = Slave Select for MCP
- .equ ZCD,#12 ;ZCD input from Optocoupler
- .equ TRIAC_LO,#15
- .equ TRIAC_MID,#14
- .equ TRIAC_HI,#13
- ;.............................................................................
- ; Code Section in Program Memory
- ;.............................................................................
- .text ;Start of Code section
- __reset:
- mov #__SPLIM_init-#128, W15 ;Initialize the Stack Pointer to base address
- mov #__SPLIM_init, W0 ;Initialize the Stack Pointer Limit Register
- mov W0, SPLIM
- nop
- bset CORCON,#IF ;Select Integer mode for DSP Multiplier
- bset CORCON,#PSV ;Allow PSV access of frame data in program date
- clr PSVPAG ;Map lowest program memory page into Data RAM space
- ;Setup Ports
- mov #0xFF0F,W0 ;RD4-7=LED Outputs (used for level meter - debug)
- mov W0,TRISD
- mov #0x0000,W0
- mov w0,PORTD
- mov #0x1EFF,W0 ;PORTG Outputs on RG13-15, RG9 (SS)
- mov w0,TRISG
- clr PORTG
- bset PORTG,#SS ;set SPI slave select high
- bclr TRISG,#SS ;set tris bit to output
- ;Setup hardware to allow ADC conversion on AN2-AN7
- mov #0B1111111111110011,W0 ;RB3 = analog input
- mov W0,ADPCFG
- mov #0B0000000011100000,W0 ;Set for Auto Sampling (SSRC=111)
- mov W0,ADCON1
- mov #0x0003,W0 ;Select RB3/AN3 as CH0 input ..
- mov W0,ADCHS
- clr ADCSSL
- mov #0B0000000100111001,W0 ;Auto Sample, Tad for 30 MIPs max
- mov W0,ADCON3
- clr ADCON2 ;AVdd,AVss external references on the 6011 chip
- bset ADCON1,#ADON ;Turn ADC ON
- bset ADCON1,#SAMP ; start sampling ...
- ;Setup Timer 1 for sampling delay: Tcy = 16MHz (64MHz Clock)
- mov #0x8000,w1 ;8KS/s at Tcy=16MHz
- mov w1,T1CON ;1:1, Int Clk, ON
- mov #2000,W1 ;Load PR1 for delay, 8KS/s Sample Rate @16MHz Internal
- mov w1,PR1
- ;Setup the SPI port 2 for the MCP chip
- ;The MCP chip is used as a DAC for analog output when testing filter kernels
- mov #0x053B,w0 ;Master mode, 16 bits,no frame, 1:2 prescale
- mov w0,SPI2CON
- clr SPI2STAT
- bset SPI2STAT,#SPIEN ;Enable SPI2
- ;Startup Splash
- bset PORTG,#TRIAC_LO
- mov #2000,w5
- SplashLo:
- call SamplingDelay
- dec w5,w5
- bra nz,SplashLo
- bclr PORTG,#TRIAC_LO
- bset PORTG,#TRIAC_MID
- mov #2000,w5
- SplashMid:
- call SamplingDelay
- dec w5,w5
- bra nz,SplashMid
- bclr PORTG,#TRIAC_MID
- bset PORTG,#TRIAC_HI
- mov #2000,w5
- SplashHi:
- call SamplingDelay
- dec w5,w5
- bra nz,SplashHi
- bclr PORTG,#TRIAC_HI
- ;Initialize Peak detector for Constant Volume Algorithm (CVA)
- clr Peak
- clr PeakTemp
- clr PeakLoTemp
- clr PeakMidTemp
- clr PeakHiTemp
- clr PhaseCounter
- mov #TIMECONST,w1 ;Preload counter for peak detector
- mov w1,PeakAverageCounter
- ;*****************************************
- ;* Main program loop (runs continuously) *
- ;*****************************************
- MainLoop:
- inc PhaseCounter
- ;Check for ZCD
- btss PORTG,#ZCD ;Low for ZCD
- goto NotZcd
- ;If early in the cycle, omit test for ZCD (ensures peaks only captured once)
- mov #10,w0
- mov PhaseCounter,w1
- cp w1,w0
- bra lt,NotZcd
- ;Zero-Cross, grab peaks for lights
- nop
- nop
- nop
- clr PhaseCounter
- bclr PORTG,#TRIAC_LO ;Turn off all channels
- bclr PORTG,#TRIAC_MID
- bclr PORTG,#TRIAC_HI
- mov PeakLoTemp,w0 ;Save peak amplitudes from last half-cycle
- mov w0,PeakLo
- clr PeakLoTemp
- mov PeakMidTemp,w0 ;Save peak amplitudes from last half-cycle
- mov w0,PeakMid
- clr PeakMidTemp
- mov PeakHiTemp,w0 ;Save peak amplitudes from last half-cycle
- mov w0,PeakHi
- clr PeakHiTemp
- NotZcd:
- call SampleIn ;Read a sample from the ADC (12-bits resolution)
- mov #0x800,w1 ;Make into a signed number (16 bit)
- sub w0,w1,w0
- mov w0,Sample
- ;Peak Detector: Constant Volume Algorithm (CVA)
- btsc Sample,#15 ;Test only positive numbers
- goto PeakDone
- mov PeakTemp,w1
- cp w0,w1 ;Check if sample > old peak found
- bra lt,NoNewPeak
- mov w0,PeakTemp ;Update new peak reading
- NoNewPeak:
- dec PeakAverageCounter
- cp0 PeakAverageCounter
- bra nz,PeakDone
- mov #TIMECONST,w1 ;Reload peak detector counter
- mov w1,PeakAverageCounter
- ;Update peak for the past <time constant> period
- mov PeakTemp,w1
- mov w1,Peak
- ;Clear peak level for the next period
- clr PeakTemp
- ;Compute new gain constant: Gain = Target / Peak
- mov #TARGETPEAK,w4
- mov Peak,w5
- repeat #17 ;Simple Divide (unsigned)
- div.u w4,w5 ;W0=W4/w5 (remainder in w1)
- mov w0,Gain
- PeakDone:
- ;Constant Volume Algorithm: multiply each sample by a gain constant
- mov Sample,w0
- mov Gain,w1
- mul.uu w0,w1,w4 ;W4:W5=W0*W1 ... Dest must be even
- mov w4,w0 ;W0 is output - input times gain
- ;Store current sample into top of samples array
- mov #Samples,W10 ;W10 points to start of Y data space (samples)
- mov W0,[W10] ;Store current sample into sample array
- ;**** FILTER #1: Low Band ****
- ;Setup W8 (Kernel in program memory - accessed via PSV)
- mov #KernelLow,W8 ;Kernel in program memory space - Low Range
- ;Setup W10 (Samples array) source data pointer
- mov #Samples,W10 ;W10 points to start of Y data space (samples)
- ;Reverse Kernel (required for algorithm) - point to last kernel entry
- mov #510,w1 ;Starting position of Kernal pointer is last (255th) entry
- add W8,W1,W8
- ;Convolution Kernel (256 entries)
- clr A
- repeat #256
- mac w5*w6, A, [W8]-=2, W5, [W10]+=2, W6
- ;ACCA=ACCA+W5*W6
- ;X([W8]-=2) --> W5 X Prefetch
- ;Y([W10]+=2) --> W6 Y Prefetch
- ;Post-scale Accumulator results
- ;For 5Vp-p ADC input, output stays in range 0x000 to 0xFFF.
- sftac A,#14 ;Shift left >> 16 bits (barrel shift)
- sftac A,#2
- mov ACCAL,W0 ;Save Filtered output value in w0
- ;Save peak output, now in W0
- mov PeakLoTemp,w1
- cp w0,w1 ;Check if new sample > old peak found
- bra lt,NoNewLoPeak
- mov w0,PeakLoTemp ;Update new peak reading
- NoNewLoPeak:
- ;**** FILTER #2: Mid Band ****
- ;Setup W8 (Kernel in program memory - accessed via PSV)
- mov #KernelMid,W8 ;Kernel in program memory space - Mid Range
- ;Setup W10 (Samples array) source data pointer
- mov #Samples,W10 ;W10 points to start of Y data space (samples)
- ;Reverse Kernel (required for algorithm) - point to last kernel entry
- mov #510,w1 ;Starting position of Kernal pointer is last (255th) entry
- add W8,W1,W8
- ;Convolution Kernel (256 entries)
- clr A
- repeat #256
- mac w5*w6, A, [W8]-=2, W5, [W10]+=2, W6
- ;ACCA=ACCA+W5*W6
- ;X([W8]-=2) --> W5 X Prefetch
- ;Y([W10]+=2) --> W6 Y Prefetch
- ;Post-scale Accumulator results
- ;For 5Vp-p ADC input, output stays in range 0x000 to 0xFFF.
- sftac A,#14 ;Shift left >> 16 bits (barrel shift)
- sftac A,#2
- mov ACCAL,W0 ;Save Filtered output value in w0
- ;Save peak output, now in W0
- mov PeakMidTemp,w1
- cp w0,w1 ;Check if new sample > old peak found
- bra lt,NoNewMidPeak
- mov w0,PeakMidTemp ;Update new peak reading
- NoNewMidPeak:
- ;**** FILTER #3: High Band ****
- ;Setup W8 (Kernel in program memory - accessed via PSV)
- mov #KernelHigh,W8 ;Kernel in program memory space - High Range
- ;Setup W10 (Samples array) source data pointer
- mov #Samples,W10 ;W10 points to start of Y data space (samples)
- ;Reverse Kernel (required for algorithm) - point to last kernel entry
- mov #510,w1 ;Starting position of Kernal pointer is last (255th) entry
- add W8,W1,W8
- ;Convolution Kernel (256 entries)
- clr A
- repeat #256
- mac w5*w6, A, [W8]-=2, W5, [W10]+=2, W6
- ;ACCA=ACCA+W5*W6
- ;X([W8]-=2) --> W5 X Prefetch
- ;Y([W10]+=2) --> W6 Y Prefetch
- ;Post-scale Accumulator results
- ;For 5Vp-p ADC input, output stays in range 0x000 to 0xFFF.
- sftac A,#14 ;Shift left >> 16 bits (barrel shift)
- sftac A,#2
- mov ACCAL,W0 ;Save Filtered output value in w0
- ;Save peak output, now in W0
- mov PeakHiTemp,w1
- cp w0,w1 ;Check if new sample > old peak found
- bra lt,NoNewHiPeak
- mov w0,PeakHiTemp ;Update new peak reading
- NoNewHiPeak:
- ;**** Filters Complete ****
- ;Update sample array by shifting entries down
- mov #Samples,W10 ;W10 points to start of Y data space (samples)
- mov #510,W1
- add W10,W1,W8 ;Point W8 to second-to-last entry (source)
- mov #512,W1
- add W10,W1,W10 ;Point W10 to last entry (target)
- repeat #256
- mov [W8--],[W10--]
- ;**** Output: Trigger Triacs/SCRs driving lamps ****
- Bypass:
- ;Trigger Low channel
- mov PeakLo,w0
- btsc w0,#15 ;Trigger only if positive number
- goto SkipLowTrigger
- ;GAIN control: Multiply W0*Gain to ACCB, then shift B, Gain: 8 = 100%, 64 = 800%
- ;Shift B <<3 for Gain and <<8 to get bits 9-12 scaled into LSBs
- mov w0,w4
- mov #GAIN_LO,w5
- mpy w4*w5,B ;ACCB = Filter * GainLo
- sftac B,#11 ;Shift by 3 (for Gain) + 8 (for bits 9-12)
- mov ACCBL,w0
- mov #0xF,w1 ;Mask off 4 lower bits only
- and w0,w1,w0
- ;Convert peak (4 bit number) into phase angle step
- mov #15,w1 ;Reverse step (0x00=Max, 0x0F=Min)
- sub w1,w0,w0
- mov #Linearize,w5
- add w5,w0,w5 ;Calculate address of table entry
- add w5,w0,w5
- mov [w5],w0 ;w0 now contains trigger point
- ;If PhaseCounter==Trigger step, turn on triac/scr
- mov PhaseCounter,w1
- cp w0,w1
- bra nz,SkipLowOn
- bset PORTG,#TRIAC_LO ;Turn on low channel triac
- SkipLowOn:
- SkipLowTrigger:
- ;If PhaseCounter==Background, turn on triac/scr
- mov #BACKGROUND_LO,w0
- mov #66,w1 ;Reverse step (0x00=Max step, 66=Min)
- sub w1,w0,w0
- mov PhaseCounter,w1
- cp w0,w1
- bra nz,SkipLowBack
- bset PORTG,#TRIAC_LO ;Turn on low channel triac
- SkipLowBack:
- ;Trigger Mid channel
- mov PeakMid,w0
- btsc w0,#15 ;Trigger only if positive number
- goto SkipMidTrigger
- mov w0,w4
- mov #GAIN_MID,w5
- mpy w4*w5,B ;ACCB = Filter * GainLo
- sftac B,#11 ;Shift by 3 (for Gain) + 8 (for bits 9-12)
- mov ACCBL,w0
- mov #0xF,w1 ;Mask off 4 lower bits only
- and w0,w1,w0
- ;Convert peak (4 bit number) into phase angle step
- mov #15,w1 ;Reverse step (0x00=Max, 0x0F=Min)
- sub w1,w0,w0
- mov #Linearize,w5
- add w5,w0,w5 ;Calculate address of table entry
- add w5,w0,w5
- mov [w5],w0 ;w0 now contains trigger point
- ;If PhaseCounter==Trigger step, turn on triac/scr
- mov PhaseCounter,w1
- cp w0,w1
- bra nz,SkipMidOn
- bset PORTG,#TRIAC_MID ;Turn on mid channel triac
- SkipMidOn:
- SkipMidTrigger:
- ;If PhaseCounter==Background, turn on triac/scr
- mov #BACKGROUND_MID,w0
- mov #66,w1 ;Reverse step (0x00=Max step, 66=Min)
- sub w1,w0,w0
- mov PhaseCounter,w1
- cp w0,w1
- bra nz,SkipMidBack
- bset PORTG,#TRIAC_MID ;Turn on mid channel triac
- SkipMidBack:
- ;Trigger High channel
- mov PeakHi,w0
- btsc w0,#15 ;Trigger only if positive number
- goto SkipHighTrigger
- ;GAIN control: Multiply W0*Gain to ACCB, then shift B, Gain: 8 = 100%, 64 = 800%
- ;Shift B <<3 for Gain and <<8 to get bits 9-12 scaled into LSBs
- mov w0,w4
- mov #GAIN_HI,w5
- mpy w4*w5,B ;ACCB = Filter * GainLo
- sftac B,#11 ;Shift by 3 (for Gain) + 8 (for bits 9-12)
- mov ACCBL,w0
- mov #0xF,w1 ;Mask off 4 lower bits only
- and w0,w1,w0
- ;Convert peak (4 bit number) into phase angle step
- mov #15,w1 ;Reverse step (0x00=Max, 0x0F=Min)
- sub w1,w0,w0
- mov #Linearize,w5
- add w5,w0,w5 ;Calculate address of table entry
- add w5,w0,w5
- mov [w5],w0 ;w0 now contains trigger point
- ;If PhaseCounter==Trigger step, turn on triac/scr
- mov PhaseCounter,w1
- cp w0,w1
- bra nz,SkipHighOn
- bset PORTG,#TRIAC_HI ;Turn on high channel triac
- SkipHighOn:
- SkipHighTrigger:
- ;If PhaseCounter==Background, turn on triac/scr
- mov #BACKGROUND_HIGH,w0
- mov #66,w1 ;Reverse step (0x00=Max step, 66=Min)
- sub w1,w0,w0
- mov PhaseCounter,w1
- cp w0,w1
- bra nz,SkipHiBack
- bset PORTG,#TRIAC_HI ;Turn on high channel triac
- SkipHiBack:
- ;**** End of Main Loop ****
- call SamplingDelay ;Wait for 8KS/s delay to expire
- goto MainLoop
- ;****** Sample Incoming Audio Signal to w0 ******
- SampleIn:
- bset ADCON1,#SAMP ;Start sampling, conversion is auto
- WaitForADCDone:
- btss IFS0,#ADIF ;conversion done?
- goto WaitForADCDone ; if not, wait for it
- bclr IFS0,#ADIF ;Reset conversion flag
- mov ADCBUF0,w0 ;Read current ADC value
- return
- ;****** Playback Sample in w0 via the MCP ******
- SampleOut:
- bclr IFS1,#SPI2IF ;clear the SPI2 interrupt flag
- DummyRead:
- mov SPI2BUF,w1 ;dummy read SPI2 buffer
- btsc SPI2STAT,#SPIRBF ;if spi buffer is full then
- bra DummyRead ; ... keep reading
- bclr PORTG,#SS ;start spi write
- mov w0,SPI2BUF ;load spi buffer
- TxDone:
- btss IFS1,#SPI2IF ;if flag is set then Tx is done
- bra TxDone ;else wait till it is done
- bset PORTG,#SS ;start spi write
- return
- ;***** Wait for timer to expire, start next delay *****
- SamplingDelay:
- btss IFS0,#T1IF ;Wait for Timer to expire
- bra SamplingDelay
- bclr IFS0,#T1IF ;Clear 'done' flag
- return
- ;**** TEST CODE: Output filter via the DAC to test performance ****
- FilterOut:
- mov #0x8000,w1
- add w0,w1,w0 ;Make into an unsigned number
- rrnc w0,w0 ;Shift right 4 bits (lower byte=data)
- rrnc w0,w0 ; to convert to an 8-bit sample size
- rrnc w0,w0
- rrnc w0,w0
- rrnc w0,w0
- rrnc w0,w0
- rrnc w0,w0
- rrnc w0,w0
- mov #0x00FF,w1 ;Set upper byte to zero in 16-bit word
- and w0,w1,w0
- mov #0x1300,w1 ;Set upper byte to "0x13" for MCP chip control
- add w0,w1,w0
- call SampleOut ;Output w0 via the MCP DAC (8-bits resolution) to test filters
- return
- ;==============================================================================
- ; Error traps
- ; Example trap routines. In application use retfie instruction to exit trap
- ;------------------------------------------------------------------------------
- ;Oscillator Fail Error trap routine
- .text ;Start of Code section
- __OscillatorFail:
- bclr LATD,#LATD3 ;Turn LED4 on
- bclr INTCON1, #OSCFAIL ;Reset oscillator fail trap flag
- bra __OscillatorFail ;Loop forever when oscillator failure occurs
- ;------------------------------------------------------------------------------
- ;Address Error trap routine
- __AddressError:
- bclr LATD,#LATD3 ;Turn LED4 on
- bclr INTCON1, #ADDRERR ;Reset address error trap flag
- retfie
- bra __AddressError ;Loop forever when address error occurs
- ;------------------------------------------------------------------------------
- ;Math (Arithmetic) Error trap routine
- __StackError:
- bclr LATD,#LATD3 ;Turn LED4 on
- bclr INTCON1, #STKERR ;Reset stack error trap flag
- bra __StackError ;Loop forever when stack error occurs
- ;------------------------------------------------------------------------------
- ;Math (Arithmetic) Error trap routine
- __MathError:
- ; bclr LATD,#LATD3 ;Turn LED4 on
- bclr INTCON1, #MATHERR ;Reset math error trap flag
- ; retfie ;TEST >>>> Just keep going despite error
- bra __MathError ;Loop forever when math error occurs
- ;------------------------------------------------------------------------------
- ;****************************************************************************
- ;*** Read-Only data segment (allows PSV) ***
- ;*** Used for predefined convolution filter kernels, 256 words each ***
- ;****************************************************************************
- .section .const, "r"
- .align 2
- ;Linearization curve: step values 0x00-0x0F yield phase trigger points as per
- ; in the table below giving equal steps of light increase
- Linearize:
- .hword 0,11,15,19,23,26,29,31,34,37,40,43,46,50,55,66
- ;*** 90-200Hz Bandpass Filter ... avoids 60Hz noise
- KernelLow:
- .hword 0xFFB1 ;Coefficient a[0] =
- .hword 0xFFC8 ;Coefficient a[1] =
- .hword 0xFFDE ;Coefficient a[2] =
- .hword 0xFFF2 ;Coefficient a[3] =
- .hword 0x0002 ;Coefficient a[4] =
- .hword 0x0010 ;Coefficient a[5] =
- .hword 0x001A ;Coefficient a[6] =
- .hword 0x0021 ;Coefficient a[7] =
- .hword 0x0023 ;Coefficient a[8] =
- .hword 0x0022 ;Coefficient a[9] =
- .hword 0x001D ;Coefficient a[10] =
- .hword 0x0015 ;Coefficient a[11] =
- .hword 0x0009 ;Coefficient a[12] =
- .hword 0xFFFC ;Coefficient a[13] =
- .hword 0xFFEB ;Coefficient a[14] =
- .hword 0xFFD9 ;Coefficient a[15] =
- .hword 0xFFC5 ;Coefficient a[16] =
- .hword 0xFFB2 ;Coefficient a[17] =
- .hword 0xFF9F ;Coefficient a[18] =
- .hword 0xFF8E ;Coefficient a[19] =
- .hword 0xFF7F ;Coefficient a[20] =
- .hword 0xFF72 ;Coefficient a[21] =
- .hword 0xFF69 ;Coefficient a[22] =
- .hword 0xFF65 ;Coefficient a[23] =
- .hword 0xFF64 ;Coefficient a[24] =
- .hword 0xFF69 ;Coefficient a[25] =
- .hword 0xFF73 ;Coefficient a[26] =
- .hword 0xFF82 ;Coefficient a[27] =
- .hword 0xFF96 ;Coefficient a[28] =
- .hword 0xFFB0 ;Coefficient a[29] =
- .hword 0xFFCE ;Coefficient a[30] =
- .hword 0xFFF0 ;Coefficient a[31] =
- .hword 0x0015 ;Coefficient a[32] =
- .hword 0x003D ;Coefficient a[33] =
- .hword 0x0068 ;Coefficient a[34] =
- .hword 0x0094 ;Coefficient a[35] =
- .hword 0x00C0 ;Coefficient a[36] =
- .hword 0x00EB ;Coefficient a[37] =
- .hword 0x0115 ;Coefficient a[38] =
- .hword 0x013B ;Coefficient a[39] =
- .hword 0x015E ;Coefficient a[40] =
- .hword 0x017D ;Coefficient a[41] =
- .hword 0x0196 ;Coefficient a[42] =
- .hword 0x01A8 ;Coefficient a[43] =
- .hword 0x01B5 ;Coefficient a[44] =
- .hword 0x01BA ;Coefficient a[45] =
- .hword 0x01B9 ;Coefficient a[46] =
- .hword 0x01B1 ;Coefficient a[47] =
- .hword 0x01A1 ;Coefficient a[48] =
- .hword 0x018B ;Coefficient a[49] =
- .hword 0x0170 ;Coefficient a[50] =
- .hword 0x014F ;Coefficient a[51] =
- .hword 0x0129 ;Coefficient a[52] =
- .hword 0x0100 ;Coefficient a[53] =
- .hword 0x00D5 ;Coefficient a[54] =
- .hword 0x00A8 ;Coefficient a[55] =
- .hword 0x007C ;Coefficient a[56] =
- .hword 0x0050 ;Coefficient a[57] =
- .hword 0x0027 ;Coefficient a[58] =
- .hword 0x0001 ;Coefficient a[59] =
- .hword 0xFFE0 ;Coefficient a[60] =
- .hword 0xFFC4 ;Coefficient a[61] =
- .hword 0xFFAE ;Coefficient a[62] =
- .hword 0xFF9F ;Coefficient a[63] =
- .hword 0xFF96 ;Coefficient a[64] =
- .hword 0xFF95 ;Coefficient a[65] =
- .hword 0xFF9C ;Coefficient a[66] =
- .hword 0xFFA9 ;Coefficient a[67] =
- .hword 0xFFBD ;Coefficient a[68] =
- .hword 0xFFD6 ;Coefficient a[69] =
- .hword 0xFFF5 ;Coefficient a[70] =
- .hword 0x0017 ;Coefficient a[71] =
- .hword 0x003C ;Coefficient a[72] =
- .hword 0x0062 ;Coefficient a[73] =
- .hword 0x0088 ;Coefficient a[74] =
- .hword 0x00AC ;Coefficient a[75] =
- .hword 0x00CC ;Coefficient a[76] =
- .hword 0x00E7 ;Coefficient a[77] =
- .hword 0x00FC ;Coefficient a[78] =
- .hword 0x0109 ;Coefficient a[79] =
- .hword 0x010C ;Coefficient a[80] =
- .hword 0x0105 ;Coefficient a[81] =
- .hword 0x00F2 ;Coefficient a[82] =
- .hword 0x00D4 ;Coefficient a[83] =
- .hword 0x00A9 ;Coefficient a[84] =
- .hword 0x0072 ;Coefficient a[85] =
- .hword 0x002F ;Coefficient a[86] =
- .hword 0xFFE1 ;Coefficient a[87] =
- .hword 0xFF88 ;Coefficient a[88] =
- .hword 0xFF26 ;Coefficient a[89] =
- .hword 0xFEBC ;Coefficient a[90] =
- .hword 0xFE4C ;Coefficient a[91] =
- .hword 0xFDD7 ;Coefficient a[92] =
- .hword 0xFD61 ;Coefficient a[93] =
- .hword 0xFCEC ;Coefficient a[94] =
- .hword 0xFC7A ;Coefficient a[95] =
- .hword 0xFC0E ;Coefficient a[96] =
- .hword 0xFBAA ;Coefficient a[97] =
- .hword 0xFB51 ;Coefficient a[98] =
- .hword 0xFB06 ;Coefficient a[99] =
- .hword 0xFACA ;Coefficient a[100] =
- .hword 0xFA9F ;Coefficient a[101] =
- .hword 0xFA88 ;Coefficient a[102] =
- .hword 0xFA86 ;Coefficient a[103] =
- .hword 0xFA9A ;Coefficient a[104] =
- .hword 0xFAC4 ;Coefficient a[105] =
- .hword 0xFB05 ;Coefficient a[106] =
- .hword 0xFB5C ;Coefficient a[107] =
- .hword 0xFBCA ;Coefficient a[108] =
- .hword 0xFC4D ;Coefficient a[109] =
- .hword 0xFCE3 ;Coefficient a[110] =
- .hword 0xFD8B ;Coefficient a[111] =
- .hword 0xFE43 ;Coefficient a[112] =
- .hword 0xFF07 ;Coefficient a[113] =
- .hword 0xFFD5 ;Coefficient a[114] =
- .hword 0x00A9 ;Coefficient a[115] =
- .hword 0x0180 ;Coefficient a[116] =
- .hword 0x0258 ;Coefficient a[117] =
- .hword 0x032C ;Coefficient a[118] =
- .hword 0x03F9 ;Coefficient a[119] =
- .hword 0x04BB ;Coefficient a[120] =
- .hword 0x056F ;Coefficient a[121] =
- .hword 0x0612 ;Coefficient a[122] =
- .hword 0x06A1 ;Coefficient a[123] =
- .hword 0x071A ;Coefficient a[124] =
- .hword 0x077A ;Coefficient a[125] =
- .hword 0x07C0 ;Coefficient a[126] =
- .hword 0x07EA ;Coefficient a[127] =
- .hword 0x07F8 ;Coefficient a[128] =
- .hword 0x07EA ;Coefficient a[129] =
- .hword 0x07C0 ;Coefficient a[130] =
- .hword 0x077A ;Coefficient a[131] =
- .hword 0x071A ;Coefficient a[132] =
- .hword 0x06A1 ;Coefficient a[133] =
- .hword 0x0612 ;Coefficient a[134] =
- .hword 0x056F ;Coefficient a[135] =
- .hword 0x04BB ;Coefficient a[136] =
- .hword 0x03F9 ;Coefficient a[137] =
- .hword 0x032C ;Coefficient a[138] =
- .hword 0x0258 ;Coefficient a[139] =
- .hword 0x0180 ;Coefficient a[140] =
- .hword 0x00A9 ;Coefficient a[141] =
- .hword 0xFFD5 ;Coefficient a[142] =
- .hword 0xFF07 ;Coefficient a[143] =
- .hword 0xFE43 ;Coefficient a[144] =
- .hword 0xFD8B ;Coefficient a[145] =
- .hword 0xFCE3 ;Coefficient a[146] =
- .hword 0xFC4D ;Coefficient a[147] =
- .hword 0xFBCA ;Coefficient a[148] =
- .hword 0xFB5C ;Coefficient a[149] =
- .hword 0xFB05 ;Coefficient a[150] =
- .hword 0xFAC4 ;Coefficient a[151] =
- .hword 0xFA9A ;Coefficient a[152] =
- .hword 0xFA86 ;Coefficient a[153] =
- .hword 0xFA88 ;Coefficient a[154] =
- .hword 0xFA9F ;Coefficient a[155] =
- .hword 0xFACA ;Coefficient a[156] =
- .hword 0xFB06 ;Coefficient a[157] =
- .hword 0xFB51 ;Coefficient a[158] =
- .hword 0xFBAA ;Coefficient a[159] =
- .hword 0xFC0E ;Coefficient a[160] =
- .hword 0xFC7A ;Coefficient a[161] =
- .hword 0xFCEC ;Coefficient a[162] =
- .hword 0xFD61 ;Coefficient a[163] =
- .hword 0xFDD7 ;Coefficient a[164] =
- .hword 0xFE4C ;Coefficient a[165] =
- .hword 0xFEBC ;Coefficient a[166] =
- .hword 0xFF26 ;Coefficient a[167] =
- .hword 0xFF88 ;Coefficient a[168] =
- .hword 0xFFE1 ;Coefficient a[169] =
- .hword 0x002F ;Coefficient a[170] =
- .hword 0x0072 ;Coefficient a[171] =
- .hword 0x00A9 ;Coefficient a[172] =
- .hword 0x00D4 ;Coefficient a[173] =
- .hword 0x00F2 ;Coefficient a[174] =
- .hword 0x0105 ;Coefficient a[175] =
- .hword 0x010C ;Coefficient a[176] =
- .hword 0x0109 ;Coefficient a[177] =
- .hword 0x00FC ;Coefficient a[178] =
- .hword 0x00E7 ;Coefficient a[179] =
- .hword 0x00CC ;Coefficient a[180] =
- .hword 0x00AC ;Coefficient a[181] =
- .hword 0x0088 ;Coefficient a[182] =
- .hword 0x0062 ;Coefficient a[183] =
- .hword 0x003C ;Coefficient a[184] =
- .hword 0x0017 ;Coefficient a[185] =
- .hword 0xFFF5 ;Coefficient a[186] =
- .hword 0xFFD6 ;Coefficient a[187] =
- .hword 0xFFBD ;Coefficient a[188] =
- .hword 0xFFA9 ;Coefficient a[189] =
- .hword 0xFF9C ;Coefficient a[190] =
- .hword 0xFF95 ;Coefficient a[191] =
- .hword 0xFF96 ;Coefficient a[192] =
- .hword 0xFF9F ;Coefficient a[193] =
- .hword 0xFFAE ;Coefficient a[194] =
- .hword 0xFFC4 ;Coefficient a[195] =
- .hword 0xFFE0 ;Coefficient a[196] =
- .hword 0x0001 ;Coefficient a[197] =
- .hword 0x0027 ;Coefficient a[198] =
- .hword 0x0050 ;Coefficient a[199] =
- .hword 0x007C ;Coefficient a[200] =
- .hword 0x00A8 ;Coefficient a[201] =
- .hword 0x00D5 ;Coefficient a[202] =
- .hword 0x0100 ;Coefficient a[203] =
- .hword 0x0129 ;Coefficient a[204] =
- .hword 0x014F ;Coefficient a[205] =
- .hword 0x0170 ;Coefficient a[206] =
- .hword 0x018B ;Coefficient a[207] =
- .hword 0x01A1 ;Coefficient a[208] =
- .hword 0x01B1 ;Coefficient a[209] =
- .hword 0x01B9 ;Coefficient a[210] =
- .hword 0x01BA ;Coefficient a[211] =
- .hword 0x01B5 ;Coefficient a[212] =
- .hword 0x01A8 ;Coefficient a[213] =
- .hword 0x0196 ;Coefficient a[214] =
- .hword 0x017D ;Coefficient a[215] =
- .hword 0x015E ;Coefficient a[216] =
- .hword 0x013B ;Coefficient a[217] =
- .hword 0x0115 ;Coefficient a[218] =
- .hword 0x00EB ;Coefficient a[219] =
- .hword 0x00C0 ;Coefficient a[220] =
- .hword 0x0094 ;Coefficient a[221] =
- .hword 0x0068 ;Coefficient a[222] =
- .hword 0x003D ;Coefficient a[223] =
- .hword 0x0015 ;Coefficient a[224] =
- .hword 0xFFF0 ;Coefficient a[225] =
- .hword 0xFFCE ;Coefficient a[226] =
- .hword 0xFFB0 ;Coefficient a[227] =
- .hword 0xFF96 ;Coefficient a[228] =
- .hword 0xFF82 ;Coefficient a[229] =
- .hword 0xFF73 ;Coefficient a[230] =
- .hword 0xFF69 ;Coefficient a[231] =
- .hword 0xFF64 ;Coefficient a[232] =
- .hword 0xFF65 ;Coefficient a[233] =
- .hword 0xFF69 ;Coefficient a[234] =
- .hword 0xFF72 ;Coefficient a[235] =
- .hword 0xFF7F ;Coefficient a[236] =
- .hword 0xFF8E ;Coefficient a[237] =
- .hword 0xFF9F ;Coefficient a[238] =
- .hword 0xFFB2 ;Coefficient a[239] =
- .hword 0xFFC5 ;Coefficient a[240] =
- .hword 0xFFD9 ;Coefficient a[241] =
- .hword 0xFFEB ;Coefficient a[242] =
- .hword 0xFFFC ;Coefficient a[243] =
- .hword 0x0009 ;Coefficient a[244] =
- .hword 0x0015 ;Coefficient a[245] =
- .hword 0x001D ;Coefficient a[246] =
- .hword 0x0022 ;Coefficient a[247] =
- .hword 0x0023 ;Coefficient a[248] =
- .hword 0x0021 ;Coefficient a[249] =
- .hword 0x001A ;Coefficient a[250] =
- .hword 0x0010 ;Coefficient a[251] =
- .hword 0x0002 ;Coefficient a[252] =
- .hword 0xFFF2 ;Coefficient a[253] =
- .hword 0xFFDE ;Coefficient a[254] =
- .hword 0xFFC8 ;Coefficient a[255] =
- .hword 0xFFB1 ;Coefficient a[256] =
- ;*** Mid Kernel 250-400Hz
- KernelMid:
- .hword 0x0026 ;Coefficient a[0] =
- .hword 0x004E ;Coefficient a[1] =
- .hword 0x0078 ;Coefficient a[2] =
- .hword 0x00A0 ;Coefficient a[3] =
- .hword 0x00C2 ;Coefficient a[4] =
- .hword 0x00D9 ;Coefficient a[5] =
- .hword 0x00E1 ;Coefficient a[6] =
- .hword 0x00D7 ;Coefficient a[7] =
- .hword 0x00BB ;Coefficient a[8] =
- .hword 0x008C ;Coefficient a[9] =
- .hword 0x004E ;Coefficient a[10] =
- .hword 0x0005 ;Coefficient a[11] =
- .hword 0xFFB8 ;Coefficient a[12] =
- .hword 0xFF6A ;Coefficient a[13] =
- .hword 0xFF23 ;Coefficient a[14] =
- .hword 0xFEE8 ;Coefficient a[15] =
- .hword 0xFEC0 ;Coefficient a[16] =
- .hword 0xFEAE ;Coefficient a[17] =
- .hword 0xFEB3 ;Coefficient a[18] =
- .hword 0xFED0 ;Coefficient a[19] =
- .hword 0xFF01 ;Coefficient a[20] =
- .hword 0xFF43 ;Coefficient a[21] =
- .hword 0xFF90 ;Coefficient a[22] =
- .hword 0xFFE1 ;Coefficient a[23] =
- .hword 0x0030 ;Coefficient a[24] =
- .hword 0x0077 ;Coefficient a[25] =
- .hword 0x00AF ;Coefficient a[26] =
- .hword 0x00D6 ;Coefficient a[27] =
- .hword 0x00E9 ;Coefficient a[28] =
- .hword 0x00E9 ;Coefficient a[29] =
- .hword 0x00D6 ;Coefficient a[30] =
- .hword 0x00B5 ;Coefficient a[31] =
- .hword 0x008B ;Coefficient a[32] =
- .hword 0x005E ;Coefficient a[33] =
- .hword 0x0034 ;Coefficient a[34] =
- .hword 0x0011 ;Coefficient a[35] =
- .hword 0xFFFB ;Coefficient a[36] =
- .hword 0xFFF2 ;Coefficient a[37] =
- .hword 0xFFF9 ;Coefficient a[38] =
- .hword 0x000B ;Coefficient a[39] =
- .hword 0x0028 ;Coefficient a[40] =
- .hword 0x004A ;Coefficient a[41] =
- .hword 0x006A ;Coefficient a[42] =
- .hword 0x0084 ;Coefficient a[43] =
- .hword 0x0090 ;Coefficient a[44] =
- .hword 0x008A ;Coefficient a[45] =
- .hword 0x0070 ;Coefficient a[46] =
- .hword 0x0042 ;Coefficient a[47] =
- .hword 0x0000 ;Coefficient a[48] =
- .hword 0xFFAF ;Coefficient a[49] =
- .hword 0xFF56 ;Coefficient a[50] =
- .hword 0xFEFB ;Coefficient a[51] =
- .hword 0xFEA9 ;Coefficient a[52] =
- .hword 0xFE67 ;Coefficient a[53] =
- .hword 0xFE3E ;Coefficient a[54] =
- .hword 0xFE32 ;Coefficient a[55] =
- .hword 0xFE49 ;Coefficient a[56] =
- .hword 0xFE82 ;Coefficient a[57] =
- .hword 0xFEDB ;Coefficient a[58] =
- .hword 0xFF4F ;Coefficient a[59] =
- .hword 0xFFD5 ;Coefficient a[60] =
- .hword 0x0062 ;Coefficient a[61] =
- .hword 0x00EE ;Coefficient a[62] =
- .hword 0x016B ;Coefficient a[63] =
- .hword 0x01D0 ;Coefficient a[64] =
- .hword 0x0215 ;Coefficient a[65] =
- .hword 0x0234 ;Coefficient a[66] =
- .hword 0x022C ;Coefficient a[67] =
- .hword 0x01FD ;Coefficient a[68] =
- .hword 0x01AC ;Coefficient a[69] =
- .hword 0x0142 ;Coefficient a[70] =
- .hword 0x00C8 ;Coefficient a[71] =
- .hword 0x004A ;Coefficient a[72] =
- .hword 0xFFD4 ;Coefficient a[73] =
- .hword 0xFF6F ;Coefficient a[74] =
- .hword 0xFF22 ;Coefficient a[75] =
- .hword 0xFEF4 ;Coefficient a[76] =
- .hword 0xFEE6 ;Coefficient a[77] =
- .hword 0xFEF6 ;Coefficient a[78] =
- .hword 0xFF1F ;Coefficient a[79] =
- .hword 0xFF58 ;Coefficient a[80] =
- .hword 0xFF97 ;Coefficient a[81] =
- .hword 0xFFD0 ;Coefficient a[82] =
- .hword 0xFFFA ;Coefficient a[83] =
- .hword 0x000A ;Coefficient a[84] =
- .hword 0xFFFE ;Coefficient a[85] =
- .hword 0xFFD2 ;Coefficient a[86] =
- .hword 0xFF87 ;Coefficient a[87] =
- .hword 0xFF26 ;Coefficient a[88] =
- .hword 0xFEB9 ;Coefficient a[89] =
- .hword 0xFE4D ;Coefficient a[90] =
- .hword 0xFDF1 ;Coefficient a[91] =
- .hword 0xFDB6 ;Coefficient a[92] =
- .hword 0xFDA8 ;Coefficient a[93] =
- .hword 0xFDD3 ;Coefficient a[94] =
- .hword 0xFE3C ;Coefficient a[95] =
- .hword 0xFEE4 ;Coefficient a[96] =
- .hword 0xFFC6 ;Coefficient a[97] =
- .hword 0x00D2 ;Coefficient a[98] =
- .hword 0x01FA ;Coefficient a[99] =
- .hword 0x0326 ;Coefficient a[100] =
- .hword 0x043D ;Coefficient a[101] =
- .hword 0x0524 ;Coefficient a[102] =
- .hword 0x05C2 ;Coefficient a[103] =
- .hword 0x0604 ;Coefficient a[104] =
- .hword 0x05DB ;Coefficient a[105] =
- .hword 0x0540 ;Coefficient a[106] =
- .hword 0x0436 ;Coefficient a[107] =
- .hword 0x02C7 ;Coefficient a[108] =
- .hword 0x0108 ;Coefficient a[109] =
- .hword 0xFF16 ;Coefficient a[110] =
- .hword 0xFD11 ;Coefficient a[111] =
- .hword 0xFB20 ;Coefficient a[112] =
- .hword 0xF969 ;Coefficient a[113] =
- .hword 0xF80F ;Coefficient a[114] =
- .hword 0xF72F ;Coefficient a[115] =
- .hword 0xF6E0 ;Coefficient a[116] =
- .hword 0xF72E ;Coefficient a[117] =
- .hword 0xF819 ;Coefficient a[118] =
- .hword 0xF996 ;Coefficient a[119] =
- .hword 0xFB8E ;Coefficient a[120] =
- .hword 0xFDE0 ;Coefficient a[121] =
- .hword 0x0064 ;Coefficient a[122] =
- .hword 0x02F0 ;Coefficient a[123] =
- .hword 0x0554 ;Coefficient a[124] =
- .hword 0x0764 ;Coefficient a[125] =
- .hword 0x08FC ;Coefficient a[126] =
- .hword 0x09FD ;Coefficient a[127] =
- .hword 0x0A55 ;Coefficient a[128] =
- .hword 0x09FD ;Coefficient a[129] =
- .hword 0x08FC ;Coefficient a[130] =
- .hword 0x0764 ;Coefficient a[131] =
- .hword 0x0554 ;Coefficient a[132] =
- .hword 0x02F0 ;Coefficient a[133] =
- .hword 0x0064 ;Coefficient a[134] =
- .hword 0xFDE0 ;Coefficient a[135] =
- .hword 0xFB8E ;Coefficient a[136] =
- .hword 0xF996 ;Coefficient a[137] =
- .hword 0xF819 ;Coefficient a[138] =
- .hword 0xF72E ;Coefficient a[139] =
- .hword 0xF6E0 ;Coefficient a[140] =
- .hword 0xF72F ;Coefficient a[141] =
- .hword 0xF80F ;Coefficient a[142] =
- .hword 0xF969 ;Coefficient a[143] =
- .hword 0xFB20 ;Coefficient a[144] =
- .hword 0xFD11 ;Coefficient a[145] =
- .hword 0xFF16 ;Coefficient a[146] =
- .hword 0x0108 ;Coefficient a[147] =
- .hword 0x02C7 ;Coefficient a[148] =
- .hword 0x0436 ;Coefficient a[149] =
- .hword 0x0540 ;Coefficient a[150] =
- .hword 0x05DB ;Coefficient a[151] =
- .hword 0x0604 ;Coefficient a[152] =
- .hword 0x05C2 ;Coefficient a[153] =
- .hword 0x0524 ;Coefficient a[154] =
- .hword 0x043D ;Coefficient a[155] =
- .hword 0x0326 ;Coefficient a[156] =
- .hword 0x01FA ;Coefficient a[157] =
- .hword 0x00D2 ;Coefficient a[158] =
- .hword 0xFFC6 ;Coefficient a[159] =
- .hword 0xFEE4 ;Coefficient a[160] =
- .hword 0xFE3C ;Coefficient a[161] =
- .hword 0xFDD3 ;Coefficient a[162] =
- .hword 0xFDA8 ;Coefficient a[163] =
- .hword 0xFDB6 ;Coefficient a[164] =
- .hword 0xFDF1 ;Coefficient a[165] =
- .hword 0xFE4D ;Coefficient a[166] =
- .hword 0xFEB9 ;Coefficient a[167] =
- .hword 0xFF26 ;Coefficient a[168] =
- .hword 0xFF87 ;Coefficient a[169] =
- .hword 0xFFD2 ;Coefficient a[170] =
- .hword 0xFFFE ;Coefficient a[171] =
- .hword 0x000A ;Coefficient a[172] =
- .hword 0xFFFA ;Coefficient a[173] =
- .hword 0xFFD0 ;Coefficient a[174] =
- .hword 0xFF97 ;Coefficient a[175] =
- .hword 0xFF58 ;Coefficient a[176] =
- .hword 0xFF1F ;Coefficient a[177] =
- .hword 0xFEF6 ;Coefficient a[178] =
- .hword 0xFEE6 ;Coefficient a[179] =
- .hword 0xFEF4 ;Coefficient a[180] =
- .hword 0xFF22 ;Coefficient a[181] =
- .hword 0xFF6F ;Coefficient a[182] =
- .hword 0xFFD4 ;Coefficient a[183] =
- .hword 0x004A ;Coefficient a[184] =
- .hword 0x00C8 ;Coefficient a[185] =
- .hword 0x0142 ;Coefficient a[186] =
- .hword 0x01AC ;Coefficient a[187] =
- .hword 0x01FD ;Coefficient a[188] =
- .hword 0x022C ;Coefficient a[189] =
- .hword 0x0234 ;Coefficient a[190] =
- .hword 0x0215 ;Coefficient a[191] =
- .hword 0x01D0 ;Coefficient a[192] =
- .hword 0x016B ;Coefficient a[193] =
- .hword 0x00EE ;Coefficient a[194] =
- .hword 0x0062 ;Coefficient a[195] =
- .hword 0xFFD5 ;Coefficient a[196] =
- .hword 0xFF4F ;Coefficient a[197] =
- .hword 0xFEDB ;Coefficient a[198] =
- .hword 0xFE82 ;Coefficient a[199] =
- .hword 0xFE49 ;Coefficient a[200] =
- .hword 0xFE32 ;Coefficient a[201] =
- .hword 0xFE3E ;Coefficient a[202] =
- .hword 0xFE67 ;Coefficient a[203] =
- .hword 0xFEA9 ;Coefficient a[204] =
- .hword 0xFEFB ;Coefficient a[205] =
- .hword 0xFF56 ;Coefficient a[206] =
- .hword 0xFFAF ;Coefficient a[207] =
- .hword 0x0000 ;Coefficient a[208] =
- .hword 0x0042 ;Coefficient a[209] =
- .hword 0x0070 ;Coefficient a[210] =
- .hword 0x008A ;Coefficient a[211] =
- .hword 0x0090 ;Coefficient a[212] =
- .hword 0x0084 ;Coefficient a[213] =
- .hword 0x006A ;Coefficient a[214] =
- .hword 0x004A ;Coefficient a[215] =
- .hword 0x0028 ;Coefficient a[216] =
- .hword 0x000B ;Coefficient a[217] =
- .hword 0xFFF9 ;Coefficient a[218] =
- .hword 0xFFF2 ;Coefficient a[219] =
- .hword 0xFFFB ;Coefficient a[220] =
- .hword 0x0011 ;Coefficient a[221] =
- .hword 0x0034 ;Coefficient a[222] =
- .hword 0x005E ;Coefficient a[223] =
- .hword 0x008B ;Coefficient a[224] =
- .hword 0x00B5 ;Coefficient a[225] =
- .hword 0x00D6 ;Coefficient a[226] =
- .hword 0x00E9 ;Coefficient a[227] =
- .hword 0x00E9 ;Coefficient a[228] =
- .hword 0x00D6 ;Coefficient a[229] =
- .hword 0x00AF ;Coefficient a[230] =
- .hword 0x0077 ;Coefficient a[231] =
- .hword 0x0030 ;Coefficient a[232] =
- .hword 0xFFE1 ;Coefficient a[233] =
- .hword 0xFF90 ;Coefficient a[234] =
- .hword 0xFF43 ;Coefficient a[235] =
- .hword 0xFF01 ;Coefficient a[236] =
- .hword 0xFED0 ;Coefficient a[237] =
- .hword 0xFEB3 ;Coefficient a[238] =
- .hword 0xFEAE ;Coefficient a[239] =
- .hword 0xFEC0 ;Coefficient a[240] =
- .hword 0xFEE8 ;Coefficient a[241] =
- .hword 0xFF23 ;Coefficient a[242] =
- .hword 0xFF6A ;Coefficient a[243] =
- .hword 0xFFB8 ;Coefficient a[244] =
- .hword 0x0005 ;Coefficient a[245] =
- .hword 0x004E ;Coefficient a[246] =
- .hword 0x008C ;Coefficient a[247] =
- .hword 0x00BB ;Coefficient a[248] =
- .hword 0x00D7 ;Coefficient a[249] =
- .hword 0x00E1 ;Coefficient a[250] =
- .hword 0x00D9 ;Coefficient a[251] =
- .hword 0x00C2 ;Coefficient a[252] =
- .hword 0x00A0 ;Coefficient a[253] =
- .hword 0x0078 ;Coefficient a[254] =
- .hword 0x004E ;Coefficient a[255] =
- .hword 0x0026 ;Coefficient a[256] =
- ;*** High Kernel 500 - 2000Hz
- KernelHigh:
- .hword 0x0129 ;Coefficient a[0] =
- .hword 0x007D ;Coefficient a[1] =
- .hword 0xFFE4 ;Coefficient a[2] =
- .hword 0x0069 ;Coefficient a[3] =
- .hword 0x00B2 ;Coefficient a[4] =
- .hword 0xFFC4 ;Coefficient a[5] =
- .hword 0xFF0E ;Coefficient a[6] =
- .hword 0xFF9E ;Coefficient a[7] =
- .hword 0x0000 ;Coefficient a[8] =
- .hword 0xFF3D ;Coefficient a[9] =
- .hword 0xFED7 ;Coefficient a[10] =
- .hword 0xFFC7 ;Coefficient a[11] =
- .hword 0x0075 ;Coefficient a[12] =
- .hword 0xFFE8 ;Coefficient a[13] =
- .hword 0xFFB0 ;Coefficient a[14] =
- .hword 0x00B4 ;Coefficient a[15] =
- .hword 0x0146 ;Coefficient a[16] =
- .hword 0x0076 ;Coefficient a[17] =
- .hword 0xFFF8 ;Coefficient a[18] =
- .hword 0x00B0 ;Coefficient a[19] =
- .hword 0x00E4 ;Coefficient a[20] =
- .hword 0xFFBB ;Coefficient a[21] =
- .hword 0xFF0F ;Coefficient a[22] =
- .hword 0xFFC3 ;Coefficient a[23] =
- .hword 0x0000 ;Coefficient a[24] =
- .hword 0xFEFC ;Coefficient a[25] =
- .hword 0xFEA5 ;Coefficient a[26] =
- .hword 0xFFC4 ;Coefficient a[27] =
- .hword 0x005B ;Coefficient a[28] =
- .hword 0xFFA0 ;Coefficient a[29] =
- .hword 0xFF8F ;Coefficient a[30] =
- .hword 0x00DA ;Coefficient a[31] =
- .hword 0x0161 ;Coefficient a[32] =
- .hword 0x0068 ;Coefficient a[33] =
- .hword 0x0012 ;Coefficient a[34] =
- .hword 0x010A ;Coefficient a[35] =
- .hword 0x011D ;Coefficient a[36] =
- .hword 0xFFB3 ;Coefficient a[37] =
- .hword 0xFF1A ;Coefficient a[38] =
- .hword 0xFFF8 ;Coefficient a[39] =
- .hword 0x0000 ;Coefficient a[40] =
- .hword 0xFEAD ;Coefficient a[41] =
- .hword 0xFE6D ;Coefficient a[42] =
- .hword 0xFFC4 ;Coefficient a[43] =
- .hword 0x0034 ;Coefficient a[44] =
- .hword 0xFF40 ;Coefficient a[45] =
- .hword 0xFF66 ;Coefficient a[46] =
- .hword 0x0106 ;Coefficient a[47] =
- .hword 0x0179 ;Coefficient a[48] =
- .hword 0x0050 ;Coefficient a[49] =
- .hword 0x0037 ;Coefficient a[50] =
- .hword 0x017E ;Coefficient a[51] =
- .hword 0x0164 ;Coefficient a[52] =
- .hword 0xFFAA ;Coefficient a[53] =
- .hword 0xFF33 ;Coefficient a[54] =
- .hword 0x0044 ;Coefficient a[55] =
- .hword 0x0000 ;Coefficient a[56] =
- .hword 0xFE49 ;Coefficient a[57] =
- .hword 0xFE2B ;Coefficient a[58] =
- .hword 0xFFC5 ;Coefficient a[59] =
- .hword 0xFFF9 ;Coefficient a[60] =
- .hword 0xFEBB ;Coefficient a[61] =
- .hword 0xFF2F ;Coefficient a[62] =
- .hword 0x013E ;Coefficient a[63] =
- .hword 0x018C ;Coefficient a[64] =
- .hword 0x0029 ;Coefficient a[65] =
- .hword 0x006D ;Coefficient a[66] =
- .hword 0x0220 ;Coefficient a[67] =
- .hword 0x01C2 ;Coefficient a[68] =
- .hword 0xFFA0 ;Coefficient a[69] =
- .hword 0xFF62 ;Coefficient a[70] =
- .hword 0x00B9 ;Coefficient a[71] =
- .hword 0x0000 ;Coefficient a[72] =
- .hword 0xFDBC ;Coefficient a[73] =
- .hword 0xFDD7 ;Coefficient a[74] =
- .hword 0xFFC9 ;Coefficient a[75] =
- .hword 0xFF9A ;Coefficient a[76] =
- .hword 0xFDEF ;Coefficient a[77] =
- .hword 0xFEDF ;Coefficient a[78] =
- .hword 0x018C ;Coefficient a[79] =
- .hword 0x019C ;Coefficient a[80] =
- .hword 0xFFE6 ;Coefficient a[81] =
- .hword 0x00C3 ;Coefficient a[82] =
- .hword 0x031C ;Coefficient a[83] =
- .hword 0x024F ;Coefficient a[84] =
- .hword 0xFF93 ;Coefficient a[85] =
- .hword 0xFFBC ;Coefficient a[86] =
- .hword 0x0182 ;Coefficient a[87] =
- .hword 0x0000 ;Coefficient a[88] =
- .hword 0xFCD7 ;Coefficient a[89] =
- .hword 0xFD55 ;Coefficient a[90] =
- .hword 0xFFD4 ;Coefficient a[91] =
- .hword 0xFEE9 ;Coefficient a[92] =
- .hword 0xFC83 ;Coefficient a[93] =
- .hword 0xFE50 ;Coefficient a[94] =
- .hword 0x0212 ;Coefficient a[95] =
- .hword 0x01A8 ;Coefficient a[96] =
- .hword 0xFF5E ;Coefficient a[97] =
- .hword 0x016C ;Coefficient a[98] =
- .hword 0x0507 ;Coefficient a[99] =
- .hword 0x0361 ;Coefficient a[100] =
- .hword 0xFF7B ;Coefficient a[101] =
- .hword 0x0087 ;Coefficient a[102] =
- .hword 0x0336 ;Coefficient a[103] =
- .hword 0x0000 ;Coefficient a[104] =
- .hword 0xFADF ;Coefficient a[105] =
- .hword 0xFC3C ;Coefficient a[106] =
- .hword 0xFFF2 ;Coefficient a[107] =
- .hword 0xFD30 ;Coefficient a[108] =
- .hword 0xF8E7 ;Coefficient a[109] =
- .hword 0xFCDF ;Coefficient a[110] =
- .hword 0x0373 ;Coefficient a[111] =
- .hword 0x01AF ;Coefficient a[112] =
- .hword 0xFDBD ;Coefficient a[113] =
- .hword 0x037E ;Coefficient a[114] =
- .hword 0x0B4E ;Coefficient a[115] =
- .hword 0x0709 ;Coefficient a[116] =
- .hword 0xFF2A ;Coefficient a[117] =
- .hword 0x03D3 ;Coefficient a[118] =
- .hword 0x0AAF ;Coefficient a[119] =
- .hword 0x0000 ;Coefficient a[120] =
- .hword 0xF073 ;Coefficient a[121] =
- .hword 0xF5BD ;Coefficient a[122] =
- .hword 0x00D0 ;Coefficient a[123] =
- .hword 0xEE1D ;Coefficient a[124] =
- .hword 0xD03F ;Coefficient a[125] =
- .hword 0xE53D ;Coefficient a[126] =
- .hword 0x2F16 ;Coefficient a[127] =
- .hword 0x5A12 ;Coefficient a[128] =
- .hword 0x2F16 ;Coefficient a[129] =
- .hword 0xE53D ;Coefficient a[130] =
- .hword 0xD03F ;Coefficient a[131] =
- .hword 0xEE1D ;Coefficient a[132] =
- .hword 0x00D0 ;Coefficient a[133] =
- .hword 0xF5BD ;Coefficient a[134] =
- .hword 0xF073 ;Coefficient a[135] =
- .hword 0x0000 ;Coefficient a[136] =
- .hword 0x0AAF ;Coefficient a[137] =
- .hword 0x03D3 ;Coefficient a[138] =
- .hword 0xFF2A ;Coefficient a[139] =
- .hword 0x0709 ;Coefficient a[140] =
- .hword 0x0B4E ;Coefficient a[141] =
- .hword 0x037E ;Coefficient a[142] =
- .hword 0xFDBD ;Coefficient a[143] =
- .hword 0x01AF ;Coefficient a[144] =
- .hword 0x0373 ;Coefficient a[145] =
- .hword 0xFCDF ;Coefficient a[146] =
- .hword 0xF8E7 ;Coefficient a[147] =
- .hword 0xFD30 ;Coefficient a[148] =
- .hword 0xFFF2 ;Coefficient a[149] =
- .hword 0xFC3C ;Coefficient a[150] =
- .hword 0xFADF ;Coefficient a[151] =
- .hword 0x0000 ;Coefficient a[152] =
- .hword 0x0336 ;Coefficient a[153] =
- .hword 0x0087 ;Coefficient a[154] =
- .hword 0xFF7B ;Coefficient a[155] =
- .hword 0x0361 ;Coefficient a[156] =
- .hword 0x0507 ;Coefficient a[157] =
- .hword 0x016C ;Coefficient a[158] =
- .hword 0xFF5E ;Coefficient a[159] =
- .hword 0x01A8 ;Coefficient a[160] =
- .hword 0x0212 ;Coefficient a[161] =
- .hword 0xFE50 ;Coefficient a[162] =
- .hword 0xFC83 ;Coefficient a[163] =
- .hword 0xFEE9 ;Coefficient a[164] =
- .hword 0xFFD4 ;Coefficient a[165] =
- .hword 0xFD55 ;Coefficient a[166] =
- .hword 0xFCD7 ;Coefficient a[167] =
- .hword 0x0000 ;Coefficient a[168] =
- .hword 0x0182 ;Coefficient a[169] =
- .hword 0xFFBC ;Coefficient a[170] =
- .hword 0xFF93 ;Coefficient a[171] =
- .hword 0x024F ;Coefficient a[172] =
- .hword 0x031C ;Coefficient a[173] =
- .hword 0x00C3 ;Coefficient a[174] =
- .hword 0xFFE6 ;Coefficient a[175] =
- .hword 0x019C ;Coefficient a[176] =
- .hword 0x018C ;Coefficient a[177] =
- .hword 0xFEDF ;Coefficient a[178] =
- .hword 0xFDEF ;Coefficient a[179] =
- .hword 0xFF9A ;Coefficient a[180] =
- .hword 0xFFC9 ;Coefficient a[181] =
- .hword 0xFDD7 ;Coefficient a[182] =
- .hword 0xFDBC ;Coefficient a[183] =
- .hword 0x0000 ;Coefficient a[184] =
- .hword 0x00B9 ;Coefficient a[185] =
- .hword 0xFF62 ;Coefficient a[186] =
- .hword 0xFFA0 ;Coefficient a[187] =
- .hword 0x01C2 ;Coefficient a[188] =
- .hword 0x0220 ;Coefficient a[189] =
- .hword 0x006D ;Coefficient a[190] =
- .hword 0x0029 ;Coefficient a[191] =
- .hword 0x018C ;Coefficient a[192] =
- .hword 0x013E ;Coefficient a[193] =
- .hword 0xFF2F ;Coefficient a[194] =
- .hword 0xFEBB ;Coefficient a[195] =
- .hword 0xFFF9 ;Coefficient a[196] =
- .hword 0xFFC5 ;Coefficient a[197] =
- .hword 0xFE2B ;Coefficient a[198] =
- .hword 0xFE49 ;Coefficient a[199] =
- .hword 0x0000 ;Coefficient a[200] =
- .hword 0x0044 ;Coefficient a[201] =
- .hword 0xFF33 ;Coefficient a[202] =
- .hword 0xFFAA ;Coefficient a[203] =
- .hword 0x0164 ;Coefficient a[204] =
- .hword 0x017E ;Coefficient a[205] =
- .hword 0x0037 ;Coefficient a[206] =
- .hword 0x0050 ;Coefficient a[207] =
- .hword 0x0179 ;Coefficient a[208] =
- .hword 0x0106 ;Coefficient a[209] =
- .hword 0xFF66 ;Coefficient a[210] =
- .hword 0xFF40 ;Coefficient a[211] =
- .hword 0x0034 ;Coefficient a[212] =
- .hword 0xFFC4 ;Coefficient a[213] =
- .hword 0xFE6D ;Coefficient a[214] =
- .hword 0xFEAD ;Coefficient a[215] =
- .hword 0x0000 ;Coefficient a[216] =
- .hword 0xFFF8 ;Coefficient a[217] =
- .hword 0xFF1A ;Coefficient a[218] =
- .hword 0xFFB3 ;Coefficient a[219] =
- .hword 0x011D ;Coefficient a[220] =
- .hword 0x010A ;Coefficient a[221] =
- .hword 0x0012 ;Coefficient a[222] =
- .hword 0x0068 ;Coefficient a[223] =
- .hword 0x0161 ;Coefficient a[224] =
- .hword 0x00DA ;Coefficient a[225] =
- .hword 0xFF8F ;Coefficient a[226] =
- .hword 0xFFA0 ;Coefficient a[227] =
- .hword 0x005B ;Coefficient a[228] =
- .hword 0xFFC4 ;Coefficient a[229] =
- .hword 0xFEA5 ;Coefficient a[230] =
- .hword 0xFEFC ;Coefficient a[231] =
- .hword 0x0000 ;Coefficient a[232] =
- .hword 0xFFC3 ;Coefficient a[233] =
- .hword 0xFF0F ;Coefficient a[234] =
- .hword 0xFFBB ;Coefficient a[235] =
- .hword 0x00E4 ;Coefficient a[236] =
- .hword 0x00B0 ;Coefficient a[237] =
- .hword 0xFFF8 ;Coefficient a[238] =
- .hword 0x0076 ;Coefficient a[239] =
- .hword 0x0146 ;Coefficient a[240] =
- .hword 0x00B4 ;Coefficient a[241] =
- .hword 0xFFB0 ;Coefficient a[242] =
- .hword 0xFFE8 ;Coefficient a[243] =
- .hword 0x0075 ;Coefficient a[244] =
- .hword 0xFFC7 ;Coefficient a[245] =
- .hword 0xFED7 ;Coefficient a[246] =
- .hword 0xFF3D ;Coefficient a[247] =
- .hword 0x0000 ;Coefficient a[248] =
- .hword 0xFF9E ;Coefficient a[249] =
- .hword 0xFF0E ;Coefficient a[250] =
- .hword 0xFFC4 ;Coefficient a[251] =
- .hword 0x00B2 ;Coefficient a[252] =
- .hword 0x0069 ;Coefficient a[253] =
- .hword 0xFFE4 ;Coefficient a[254] =
- .hword 0x007D ;Coefficient a[255] =
- .hword 0x0129 ;Coefficient a[256] =
- ;Filter coefficents calculated from http://www.dsptutor.freeuk.com/index.htm
- ;Coefficients already Normalized to 1.0, multiplied by 16-bits (65535)
- ;--------End of All Code Sections--------------------------------------------
- .end ;End of program code in this file
Advertisement
Add Comment
Please, Sign In to add comment