History

working on oversampler

Matthew Wang committed 7 years ago

Commit a8831f41 parent e4bfbde14 files · +416 −444Browse files

Unified · Split

14 files
  1. LEAF/Inc/.DS_Store +0 −0
  2. LEAF/Inc/leaf-filter.h +62 −62
  3. LEAF/Inc/leaf-globals.h +29 −32
  4. LEAF/Inc/leaf-oversampler.h +9 −19
  5. LEAF/Inc/leaf-tables.h +34 −16
  6. LEAF/Src/leaf-filter.c +48 −48
  7. LEAF/Src/leaf-math.c +101 −101
  8. LEAF/Src/leaf-oscillator.c +2 −2
  9. LEAF/Src/leaf-oversampler.c +59 −92
  10. LEAF/Src/leaf-tables.c +33 −2
  11. LEAF/Src/leaf-utilities.c +2 −2
  12. LEAF/leaf.h +2 −2
  13. LEAF_JUCEPlugin/LEAF.jucer +2 −4
  14. LEAF_JUCEPlugin/Source/MyTest.cpp +34 −63
LEAF/Inc/.DS_Store+0−0

Binary file not shown.

LEAF/Inc/leaf-filter.h+62−62
@@ -7,53 +7,53 @@ · 6 unmodified lines
7==============================================================================*/7==============================================================================*/
8 8
9#ifndef LEAF_FILTER_H_INCLUDED9#ifndef LEAF_FILTER_H_INCLUDED
10#define LEAF_FILTER_H_INCLUDED10#define LEAF_FILTER_H_INCLUDED
11 11
12#ifdef __cplusplus12#ifdef __cplusplus
13extern "C" {13extern "C" {
14#endif14#endif
15 15
16//==============================================================================16//==============================================================================
17 17
18#include "leaf-globals.h"18#include "leaf-globals.h"
19#include "leaf-math.h"19#include "leaf-math.h"
20 20
21#include "leaf-delay.h"21#include "leaf-delay.h"
22 22
23#include "leaf-wavetables.h"23#include "leaf-tables.h"
24 24
25//==============================================================================25//==============================================================================
26 26
27/* tAllpass: Schroeder allpass. Comb-filter with feedforward and feedback. */27/* tAllpass: Schroeder allpass. Comb-filter with feedforward and feedback. */
28typedef struct _tAllpass28typedef struct _tAllpass
29{29{
30 float gain;30 float gain;
31 31
32 tDelayL delay;32 tDelayL delay;
33 33
34 float lastOut;34 float lastOut;
35 35
36} tAllpass;36} tAllpass;
37 37
38void tAllpass_init (tAllpass* const, float initDelay, uint32_t maxDelay);38void tAllpass_init (tAllpass* const, float initDelay, uint32_t maxDelay);
39void tAllpass_free (tAllpass* const);39void tAllpass_free (tAllpass* const);
40 40
41float tAllpass_tick (tAllpass* const, float input);41float tAllpass_tick (tAllpass* const, float input);
42void tAllpass_setGain (tAllpass* const, float gain);42void tAllpass_setGain (tAllpass* const, float gain);
43void tAllpass_setDelay (tAllpass* const f, float delay);43void tAllpass_setDelay (tAllpass* const f, float delay);
44 44
45 45
46//==============================================================================46//==============================================================================
47 47
48/* tOnePole: OnePole filter, reimplemented from STK (Cook and Scavone). */48/* tOnePole: OnePole filter, reimplemented from STK (Cook and Scavone). */
49typedef struct _tOnePole49typedef struct _tOnePole
50{50{
51 float gain;51 float gain;
52 float a0,a1;52 float a0,a1;
53 float b0,b1;53 float b0,b1;
54 54
55 float coef;55 float coef;
56 56
57 float freq;57 float freq;
58 58
59 float lastIn, lastOut;59 float lastIn, lastOut;
@@ -66,12 +66,12 @@ void tOnePole_free (tOnePole* const); · 6 unmodified lines
66float tOnePole_tick (tOnePole* const, float input);66float tOnePole_tick (tOnePole* const, float input);
67void tOnePole_setB0 (tOnePole* const, float b0);67void tOnePole_setB0 (tOnePole* const, float b0);
68void tOnePole_setA1 (tOnePole* const, float a1);68void tOnePole_setA1 (tOnePole* const, float a1);
69void tOnePole_setPole (tOnePole* const, float thePole);69void tOnePole_setPole (tOnePole* const, float thePole);
70void tOnePole_setFreq (tOnePole* const, float freq);70void tOnePole_setFreq (tOnePole* const, float freq);
71void tOnePole_setCoefficients(tOnePole* const, float b0, float a1);71void tOnePole_setCoefficients(tOnePole* const, float b0, float a1);
72void tOnePole_setGain (tOnePole* const, float gain);72void tOnePole_setGain (tOnePole* const, float gain);
73 73
74//==============================================================================74//==============================================================================
75 75
76/* TwoPole filter, reimplemented from STK (Cook and Scavone). */76/* TwoPole filter, reimplemented from STK (Cook and Scavone). */
77typedef struct _tTwoPole77typedef struct _tTwoPole
@@ -98,7 +98,7 @@ void tTwoPole_setResonance (tTwoPole* const, float freq, float radius, · 20 unmodified lines
98void tTwoPole_setCoefficients(tTwoPole* const, float b0, float a1, float a2);98void tTwoPole_setCoefficients(tTwoPole* const, float b0, float a1, float a2);
99void tTwoPole_setGain (tTwoPole* const, float gain);99void tTwoPole_setGain (tTwoPole* const, float gain);
100 100
101//==============================================================================101//==============================================================================
102 102
103/* OneZero filter, reimplemented from STK (Cook and Scavone). */103/* OneZero filter, reimplemented from STK (Cook and Scavone). */
104typedef struct _tOneZero104typedef struct _tOneZero
@@ -118,8 +118,8 @@ void tOneZero_setZero (tOneZero* const, float theZero); · 13 unmodified lines
118void tOneZero_setCoefficients(tOneZero* const, float b0, float b1);118void tOneZero_setCoefficients(tOneZero* const, float b0, float b1);
119void tOneZero_setGain (tOneZero* const, float gain);119void tOneZero_setGain (tOneZero* const, float gain);
120float tOneZero_getPhaseDelay(tOneZero *f, float frequency );120float tOneZero_getPhaseDelay(tOneZero *f, float frequency );
121 121
122//==============================================================================122//==============================================================================
123 123
124/* TwoZero filter, reimplemented from STK (Cook and Scavone). */124/* TwoZero filter, reimplemented from STK (Cook and Scavone). */
125typedef struct _tTwoZero125typedef struct _tTwoZero
@@ -143,8 +143,8 @@ void tTwoZero_setB2 (tTwoZero* const, float b2); · 17 unmodified lines
143void tTwoZero_setNotch (tTwoZero* const, float frequency, float radius);143void tTwoZero_setNotch (tTwoZero* const, float frequency, float radius);
144void tTwoZero_setCoefficients(tTwoZero* const, float b0, float b1, float b2);144void tTwoZero_setCoefficients(tTwoZero* const, float b0, float b1, float b2);
145void tTwoZero_setGain (tTwoZero* const, float gain);145void tTwoZero_setGain (tTwoZero* const, float gain);
146 146
147//==============================================================================147//==============================================================================
148 148
149/* PoleZero filter, reimplemented from STK (Cook and Scavone). */149/* PoleZero filter, reimplemented from STK (Cook and Scavone). */
150typedef struct _tPoleZero150typedef struct _tPoleZero
@@ -168,8 +168,8 @@ void tPoleZero_setCoefficients (tPoleZero* const, float b0, float b1, · 17 unmodified lines
168void tPoleZero_setAllpass (tPoleZero* const, float coeff);168void tPoleZero_setAllpass (tPoleZero* const, float coeff);
169void tPoleZero_setBlockZero (tPoleZero* const, float thePole);169void tPoleZero_setBlockZero (tPoleZero* const, float thePole);
170void tPoleZero_setGain (tPoleZero* const, float gain);170void tPoleZero_setGain (tPoleZero* const, float gain);
171 171
172//==============================================================================172//==============================================================================
173 173
174/* BiQuad filter, reimplemented from STK (Cook and Scavone). */174/* BiQuad filter, reimplemented from STK (Cook and Scavone). */
175typedef struct _tBiQuad175typedef struct _tBiQuad
@@ -198,8 +198,8 @@ void tBiQuad_setNotch (tBiQuad* const, float freq, float radius); · 22 unmodified lines
198void tBiQuad_setResonance (tBiQuad* const, float freq, float radius, oBool normalize);198void tBiQuad_setResonance (tBiQuad* const, float freq, float radius, oBool normalize);
199void tBiQuad_setCoefficients(tBiQuad* const, float b0, float b1, float b2, float a1, float a2);199void tBiQuad_setCoefficients(tBiQuad* const, float b0, float b1, float b2, float a1, float a2);
200void tBiQuad_setGain (tBiQuad* const, float gain);200void tBiQuad_setGain (tBiQuad* const, float gain);
201 201
202//==============================================================================202//==============================================================================
203 203
204/* State Variable Filter, algorithm from Andy Simper. */204/* State Variable Filter, algorithm from Andy Simper. */
205typedef enum SVFType205typedef enum SVFType
@@ -226,8 +226,8 @@ void tSVF_free (tSVF* const); · 20 unmodified lines
226float tSVF_tick (tSVF* const, float v0);226float tSVF_tick (tSVF* const, float v0);
227int tSVF_setFreq (tSVF* const, float freq);227int tSVF_setFreq (tSVF* const, float freq);
228int tSVF_setQ (tSVF* const, float Q);228int tSVF_setQ (tSVF* const, float Q);
229 229
230//==============================================================================230//==============================================================================
231 231
232/* Efficient State Variable Filter for 14-bit control input, [0, 4096). */232/* Efficient State Variable Filter for 14-bit control input, [0, 4096). */
233typedef struct _tSVFE233typedef struct _tSVFE
@@ -245,8 +245,8 @@ void tSVFE_free (tSVFE* const); · 11 unmodified lines
245float tSVFE_tick (tSVFE* const, float v0);245float tSVFE_tick (tSVFE* const, float v0);
246int tSVFE_setFreq (tSVFE* const, uint16_t controlFreq);246int tSVFE_setFreq (tSVFE* const, uint16_t controlFreq);
247int tSVFE_setQ (tSVFE* const, float Q);247int tSVFE_setQ (tSVFE* const, float Q);
248 248
249//==============================================================================249//==============================================================================
250 250
251/* Simple Highpass filter. */251/* Simple Highpass filter. */
252typedef struct _tHighpass252typedef struct _tHighpass
@@ -263,7 +263,7 @@ float tHighpass_tick (tHighpass* const, float x); · 10 unmodified lines
263void tHighpass_setFreq (tHighpass* const, float freq);263void tHighpass_setFreq (tHighpass* const, float freq);
264float tHighpass_getFreq (tHighpass* const);264float tHighpass_getFreq (tHighpass* const);
265 265
266//==============================================================================266//==============================================================================
267 267
268// Butterworth Filter268// Butterworth Filter
269#define NUM_SVF_BW 16269#define NUM_SVF_BW 16
@@ -287,8 +287,8 @@ float tButterworth_tick (tButterworth* const, float input); · 17 unmodified lines
287void tButterworth_setF1 (tButterworth* const, float in);287void tButterworth_setF1 (tButterworth* const, float in);
288void tButterworth_setF2 (tButterworth* const, float in);288void tButterworth_setF2 (tButterworth* const, float in);
289void tButterworth_setFreqs (tButterworth* const, float f1, float f2);289void tButterworth_setFreqs (tButterworth* const, float f1, float f2);
290 290
291//==============================================================================291//==============================================================================
292 292
293#define NUM_TAPS 29293#define NUM_TAPS 29
294typedef struct _tFIR294typedef struct _tFIR
@@ -306,11 +306,11 @@ float tFIR_tick (tFIR* const, float input); · 11 unmodified lines
306void tFIR_coeffs (tFIR* const, float in);306void tFIR_coeffs (tFIR* const, float in);
307 307
308//==============================================================================308//==============================================================================
309
310#ifdef __cplusplus
311}
312#endif
313 309
314#endif // LEAF_FILTER_H_INCLUDED310#ifdef __cplusplus
315 311}
312#endif
313
314#endif // LEAF_FILTER_H_INCLUDED
315
316//==============================================================================316//==============================================================================
LEAF/Inc/leaf-globals.h+29−32
@@ -7,16 +7,16 @@ · 6 unmodified lines
7==============================================================================*/7==============================================================================*/
8 8
9#ifndef LEAF_GLOBALS_H_INCLUDED9#ifndef LEAF_GLOBALS_H_INCLUDED
10#define LEAF_GLOBALS_H_INCLUDED10#define LEAF_GLOBALS_H_INCLUDED
11 11
12#ifdef __cplusplus12#ifdef __cplusplus
13extern "C" {13extern "C" {
14#endif14#endif
15 15
16//==============================================================================16//==============================================================================
17 17
18#include "leaf-mempool.h"18#include "leaf-mempool.h"
19 19
20//==============================================================================20//==============================================================================
21 21
22typedef struct _LEAF22typedef struct _LEAF
@@ -24,29 +24,26 @@ typedef struct _LEAF · 1 unmodified line
24 float sampleRate;24 float sampleRate;
25 float invSampleRate;25 float invSampleRate;
26 int blockSize;26 int blockSize;
27 27
28 28
29 float* sinewave;29 float* sinewave;
30 float* sawtooth[11];30 float* sawtooth[11];
31 float* square[11];31 float* square[11];
32 float* triangle[11];32 float* triangle[11];
33 33
34 34
35 float (*random)(void);35 float (*random)(void);
36} LEAF;36} LEAF;
37 37
38//==============================================================================38//==============================================================================
39 39
40extern LEAF leaf; // The global instance of LEAF.40extern LEAF leaf; // The global instance of LEAF.
41 41
42//==============================================================================42//==============================================================================
43 43
44#define SHAPER1_TABLE_SIZE 65536
45extern const float shaper1[SHAPER1_TABLE_SIZE];
46
47#define NUM_VOICES 844#define NUM_VOICES 8
48#define NUM_SHIFTERS 445#define NUM_SHIFTERS 4
49#define MPOLY_NUM_MAX_VOICES 846#define POLY_NUM_MAX_VOICES 8
50#define NUM_OSC 447#define NUM_OSC 4
51#define INV_NUM_OSC (1.0f / NUM_OSC)48#define INV_NUM_OSC (1.0f / NUM_OSC)
52#define PS_FRAME_SIZE 1024 // SNAC_FRAME_SIZE in leaf-pitch.h should match (or be smaller than?) this49#define PS_FRAME_SIZE 1024 // SNAC_FRAME_SIZE in leaf-pitch.h should match (or be smaller than?) this
@@ -57,19 +54,19 @@ extern const float shaper1[SHAPER1_TABLE_SIZE]; · 4 unmodified lines
57 // Feel free to change to suit memory constraints or desired delay max length / functionality.54 // Feel free to change to suit memory constraints or desired delay max length / functionality.
58 55
59 56
60#define TALKBOX_BUFFER_LENGTH 1600 // Every talkbox instance introduces 5 buffers of this size57#define TALKBOX_BUFFER_LENGTH 1600 // Every talkbox instance introduces 5 buffers of this size
61 58
62union unholy_t { /* a union between a float and an integer */59union unholy_t { /* a union between a float and an integer */
63 float f;60 float f;
64 int i;61 int i;
65};62};
66 63
67//==============================================================================64//==============================================================================
68 65
69#ifdef __cplusplus66#ifdef __cplusplus
70}67}
71#endif68#endif
72 69
73#endif // LEAF_GLOBALS_H_INCLUDED70#endif // LEAF_GLOBALS_H_INCLUDED
74 71
75//==============================================================================72//==============================================================================
LEAF/Inc/leaf-oversampler.h+9−19
@@ -21,29 +21,19 @@ extern "C" { · 20 unmodified lines
21#include "leaf-filter.h"21#include "leaf-filter.h"
22 22
23//==============================================================================23//==============================================================================
24typedef struct _tOversamplerFilter
25{
26 float cutoff, Q;
27 float ic1eq,ic2eq;
28 float g,k,a1,a2,a3;
29} tOversamplerFilter;
30 24
31typedef struct _tOversampler2x25typedef struct _tOversampler
32{26{
33 tOversamplerFilter filters[2];27 tFIR firUp;
34} tOversampler2x;28 tFIR firDown;
35 29 int ratio;
36void tOversampler2x_init(tOversampler2x* const);30} tOversampler;
37float tOversampler2x_tick(tOversampler2x* const, float input, float (*nonLinearTick)(float));
38 31
39typedef struct _tOversampler4x32void tOversampler_init(tOversampler* const, int order, oBool extraQuality);
40{33void tOversampler_upsample(tOversampler* const, float input, float* output);
41 tOversamplerFilter filters[4];34float tOversampler_downsample(tOversampler* const, float* input);
42} tOversampler4x;35float tOversampler_tick(tOversampler* const, float input, float (*effectTick)(float));
43 36
44void tOversampler4x_init(tOversampler4x* const);
45float tOversampler4x_tick(tOversampler4x* const, float input, float (*nonLinearTick)(float));
46
47//==============================================================================37//==============================================================================
48 38
49#ifdef __cplusplus39#ifdef __cplusplus
LEAF/Inc/leaf-tables.hrenamed from LEAF/Inc/leaf-wavetables.h+34−16
@@ -1,17 +1,17 @@
1/*==============================================================================1/*==============================================================================
2 2
3 leaf-wavetables.h3 leaf-tables.h
4 Created: 4 Dec 2016 9:42:41pm4 Created: 4 Dec 2016 9:42:41pm
5 Author: Michael R Mulshine5 Author: Michael R Mulshine
6 6
7==============================================================================*/7==============================================================================*/
8 8
9#ifndef LEAF_WAVETABLES_H_INCLUDED9#ifndef LEAF_WAVETABLES_H_INCLUDED
10#define LEAF_WAVETABLES_H_INCLUDED10#define LEAF_WAVETABLES_H_INCLUDED
11 11
12#ifdef __cplusplus12#ifdef __cplusplus
13extern "C" {13extern "C" {
14#endif14#endif
15 15
16//==============================================================================16//==============================================================================
17 17
@@ -31,6 +31,24 @@ extern "C" { · 13 unmodified lines
31#define DECAY_COEFF_TABLE_SIZE 409631#define DECAY_COEFF_TABLE_SIZE 4096
32#define MTOF1_TABLE_SIZE 409632#define MTOF1_TABLE_SIZE 4096
33#define FILTERTAN_TABLE_SIZE 409633#define FILTERTAN_TABLE_SIZE 4096
34
35#define SHAPER1_TABLE_SIZE 65536
36extern const float shaper1[SHAPER1_TABLE_SIZE];
37
38#define COEFFS_SIZE 32
39extern const float* firCoeffs[COEFFS_SIZE];
40extern const float fir2XLow[32];
41extern const float fir4XLow[64];
42extern const float fir8XLow[64];
43extern const float fir16XLow[128];
44extern const float fir32XLow[256];
45extern const float fir64XLow[256];
46extern const float fir2XHigh[128];
47extern const float fir4XHigh[256];
48extern const float fir8XHigh[281];
49extern const float fir16XHigh[507];
50extern const float fir32XHigh[512];
51extern const float fir64XHigh[1024];
34 52
35typedef enum TableName53typedef enum TableName
36{54{
@@ -59,8 +77,8 @@ extern const float mtof1[MTOF1_TABLE_SIZE]; · 22 unmodified lines
59extern const float decayCoeffTable[DECAY_COEFF_TABLE_SIZE];77extern const float decayCoeffTable[DECAY_COEFF_TABLE_SIZE];
60 78
61extern const float tanh1[TANH1_TABLE_SIZE];79extern const float tanh1[TANH1_TABLE_SIZE];
62 80
63//==============================================================================81//==============================================================================
64 82
65/* Sine wave table ripped from http://aquaticus.info/pwm-sine-wave. */83/* Sine wave table ripped from http://aquaticus.info/pwm-sine-wave. */
66extern const float sinewave[SINE_TABLE_SIZE];84extern const float sinewave[SINE_TABLE_SIZE];
@@ -69,14 +87,14 @@ extern const float sawtooth[11][SAW_TABLE_SIZE]; · 2 unmodified lines
69 87
70extern const float triangle[11][TRI_TABLE_SIZE];88extern const float triangle[11][TRI_TABLE_SIZE];
71 89
72extern const float squarewave[11][SQR_TABLE_SIZE];90extern const float squarewave[11][SQR_TABLE_SIZE];
73 91
74//==============================================================================92//==============================================================================
75 93
76#ifdef __cplusplus94#ifdef __cplusplus
77}95}
78#endif96#endif
79 97
80#endif // LEAF_WAVETABLES_H_INCLUDED98#endif // LEAF_WAVETABLES_H_INCLUDED
81 99
82//==============================================================================100//==============================================================================
LEAF/Src/leaf-filter.c+48−48
@@ -9,52 +9,52 @@ · 8 unmodified lines
9#if _WIN32 || _WIN649#if _WIN32 || _WIN64
10 10
11#include "..\Inc\leaf-filter.h"11#include "..\Inc\leaf-filter.h"
12#include "..\Inc\leaf-wavetables.h"12#include "..\Inc\leaf-tables.h"
13#include "..\leaf.h"13#include "..\leaf.h"
14 14
15#else15#else
16 16
17#include "../Inc/leaf-filter.h"17#include "../Inc/leaf-filter.h"
18#include "../Inc/leaf-wavetables.h"18#include "../Inc/leaf-tables.h"
19#include "../leaf.h"19#include "../leaf.h"
20 20
21#endif21#endif
22 22
23// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ OnePole Filter ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //23// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ OnePole Filter ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
24void tAllpass_init(tAllpass* const f, float initDelay, uint32_t maxDelay)24void tAllpass_init(tAllpass* const f, float initDelay, uint32_t maxDelay)
25{25{
26 f->gain = 0.7f;26 f->gain = 0.7f;
27 27
28 f->lastOut = 0.0f;28 f->lastOut = 0.0f;
29 29
30 tDelayL_init(&f->delay, initDelay, maxDelay);30 tDelayL_init(&f->delay, initDelay, maxDelay);
31}31}
32 32
33void tAllpass_setDelay(tAllpass* const f, float delay)33void tAllpass_setDelay(tAllpass* const f, float delay)
34{34{
35 tDelayL_setDelay(&f->delay, delay);35 tDelayL_setDelay(&f->delay, delay);
36}36}
37 37
38void tAllpass_free(tAllpass* const f)38void tAllpass_free(tAllpass* const f)
39{39{
40 leaf_free(&f->delay);40 leaf_free(&f->delay);
41 leaf_free(f);41 leaf_free(f);
42}42}
43 43
44void tAllpass_setGain(tAllpass* const f, float gain)44void tAllpass_setGain(tAllpass* const f, float gain)
45{45{
46 f->gain = gain;46 f->gain = gain;
47}47}
48 48
49float tAllpass_tick(tAllpass* const f, float input)49float tAllpass_tick(tAllpass* const f, float input)
50{50{
51 float s1 = (-f->gain) * f->lastOut + input;51 float s1 = (-f->gain) * f->lastOut + input;
52 52
53 float s2 = tDelayL_tick(&f->delay, s1) + (f->gain) * input;53 float s2 = tDelayL_tick(&f->delay, s1) + (f->gain) * input;
54 54
55 f->lastOut = s2;55 f->lastOut = s2;
56 56
57 return f->lastOut;57 return f->lastOut;
58}58}
59 59
60void tButterworth_init(tButterworth* const f, int N, float f1, float f2)60void tButterworth_init(tButterworth* const f, int N, float f1, float f2)
@@ -311,15 +311,15 @@ void tOnePole_setPole(tOnePole* const f, float thePole) · 250 unmodified lines
311 else f->b0 = (1.0f + thePole);311 else f->b0 = (1.0f + thePole);
312 312
313 f->a1 = -thePole;313 f->a1 = -thePole;
314}314}
315 315
316void tOnePole_setFreq (tOnePole* const f, float freq)316void tOnePole_setFreq (tOnePole* const f, float freq)
317{317{
318 f->b0 = freq * TWO_PI * leaf.invSampleRate;318 f->b0 = freq * TWO_PI * leaf.invSampleRate;
319 319
320 f->b0 = LEAF_clip(0.0f, f->b0, 1.0f);320 f->b0 = LEAF_clip(0.0f, f->b0, 1.0f);
321 321
322 f->a1 = 1.0f - f->b0;322 f->a1 = 1.0f - f->b0;
323}323}
324 324
325void tOnePole_setCoefficients(tOnePole* const f, float b0, float a1)325void tOnePole_setCoefficients(tOnePole* const f, float b0, float a1)
LEAF/Src/leaf-math.c+101−101
@@ -9,67 +9,67 @@ · 8 unmodified lines
9#if _WIN32 || _WIN649#if _WIN32 || _WIN64
10 10
11#include "..\Inc\leaf-math.h"11#include "..\Inc\leaf-math.h"
12#include "..\Inc\leaf-wavetables.h"12#include "..\Inc\leaf-tables.h"
13 13
14#else14#else
15 15
16#include "../Inc/leaf-math.h"16#include "../Inc/leaf-math.h"
17#include "../Inc/leaf-wavetables.h"17#include "../Inc/leaf-tables.h"
18 18
19#endif19#endif
20 20
21// The C-embedded Audio Library.21// The C-embedded Audio Library.
22#define TWO_TO_16 65536.f22#define TWO_TO_16 65536.f
23 23
24#define EXPONENTIAL_TABLE_SIZE 6553624#define EXPONENTIAL_TABLE_SIZE 65536
25 25
26float interpolate3max(float *buf, const int peakindex)26float interpolate3max(float *buf, const int peakindex)
27{27{
28 float a = buf[peakindex-1];28 float a = buf[peakindex-1];
29 float b = buf[peakindex];29 float b = buf[peakindex];
30 float c = buf[peakindex+1];30 float c = buf[peakindex+1];
31 float realpeak;31 float realpeak;
32 32
33 realpeak = b + (float)0.125 * (c - a) * (c - a) / ((float)2. * b - a - c);33 realpeak = b + (float)0.125 * (c - a) * (c - a) / ((float)2. * b - a - c);
34 34
35 return(realpeak);35 return(realpeak);
36}36}
37 37
38float interpolate3phase(float *buf, const int peakindex)38float interpolate3phase(float *buf, const int peakindex)
39{39{
40 float a = buf[peakindex-1];40 float a = buf[peakindex-1];
41 float b = buf[peakindex];41 float b = buf[peakindex];
42 float c = buf[peakindex+1];42 float c = buf[peakindex+1];
43 float fraction;43 float fraction;
44 44
45 fraction = ((float)0.5 * (c - a)) / ((float)2. * b - a - c);45 fraction = ((float)0.5 * (c - a)) / ((float)2. * b - a - c);
46 46
47 return(fraction);47 return(fraction);
48}48}
49 49
50// alternative implementation for abs()50// alternative implementation for abs()
51// REQUIRES: 32 bit integers51// REQUIRES: 32 bit integers
52int fastabs_int(int in){52int fastabs_int(int in){
53 unsigned int r;53 unsigned int r;
54 int const mask = in >> 31;54 int const mask = in >> 31;
55 55
56 r = (in ^ mask) - mask;56 r = (in ^ mask) - mask;
57 57
58 return (r);58 return (r);
59}59}
60 60
61// alternative implementation for abs()61// alternative implementation for abs()
62// REQUIRES: 32 bit floats62// REQUIRES: 32 bit floats
63float fastabs(float f)63float fastabs(float f)
64{64{
65 union65 union
66 {66 {
67 float f;67 float f;
68 unsigned int ui;68 unsigned int ui;
69 }alias;69 }alias;
70 70
71 alias.f = f;71 alias.f = f;
72 alias.ui &= 0x7fffffff;72 alias.ui &= 0x7fffffff;
73 return alias.f;73 return alias.f;
74}74}
75 75
@@ -116,45 +116,45 @@ float LEAF_shaper(float input, float m_drive) · 40 unmodified lines
116 float shaperOut = w*(c+ 0.05f*xc2)*(m_drive + 0.75f);116 float shaperOut = w*(c+ 0.05f*xc2)*(m_drive + 0.75f);
117 shaperOut *= 0.5f; // post_scale117 shaperOut *= 0.5f; // post_scale
118 return shaperOut;118 return shaperOut;
119}119}
120 120
121// reduce sample resolution121// reduce sample resolution
122float hold = 0.f;122float hold = 0.f;
123int reduct_count = 0;123int reduct_count = 0;
124 124
125 125
126float LEAF_reduct (float input, float ratio)126float LEAF_reduct (float input, float ratio)
127{127{
128 reduct_count++;128 reduct_count++;
129 if (reduct_count > 1.f / ratio)129 if (reduct_count > 1.f / ratio)
130 {130 {
131 hold = input;131 hold = input;
132 reduct_count = 0;132 reduct_count = 0;
133 }133 }
134 134
135 return hold;135 return hold;
136}136}
137 137
138// round input to nearest rnd138// round input to nearest rnd
139float LEAF_round (float input, float rnd)139float LEAF_round (float input, float rnd)
140{140{
141 rnd = fabsf(rnd);141 rnd = fabsf(rnd);
142 142
143 if (rnd <= 0.0000001f) return input;143 if (rnd <= 0.0000001f) return input;
144 144
145 float scale = 1.f / rnd;145 float scale = 1.f / rnd;
146 146
147 return roundf(input * scale) / scale;147 return roundf(input * scale) / scale;
148}148}
149 149
150union unholy_t unholy;150union unholy_t unholy;
151 151
152float LEAF_bitwise_xor(float input, uint32_t op)152float LEAF_bitwise_xor(float input, uint32_t op)
153{153{
154 unholy.f = input;154 unholy.f = input;
155 unholy.i = (unholy.i ^ op);155 unholy.i = (unholy.i ^ op);
156 156
157 return unholy.f;157 return unholy.f;
158}158}
159 159
160float LEAF_reedTable(float input, float offset, float slope) 160float LEAF_reedTable(float input, float offset, float slope)
@@ -195,17 +195,17 @@ float LEAF_clip(float min, float val, float max) · 34 unmodified lines
195 } else {195 } else {
196 return val;196 return val;
197 }197 }
198}198}
199 199
200int LEAF_clipInt(int min, int val, int max)200int LEAF_clipInt(int min, int val, int max)
201{201{
202 if (val < min) {202 if (val < min) {
203 return min;203 return min;
204 } else if (val > max) {204 } else if (val > max) {
205 return max;205 return max;
206 } else {206 } else {
207 return val;207 return val;
208 }208 }
209}209}
210 210
211oBool LEAF_isPrime(uint64_t number )211oBool LEAF_isPrime(uint64_t number )
LEAF/Src/leaf-oscillator.c+2−2
@@ -8,13 +8,13 @@ · 7 unmodified lines
8 8
9#if _WIN32 || _WIN649#if _WIN32 || _WIN64
10 10
11#include "..\Inc\leaf-wavetables.h"11#include "..\Inc\leaf-tables.h"
12#include "..\Inc\leaf-oscillator.h"12#include "..\Inc\leaf-oscillator.h"
13#include "..\leaf.h"13#include "..\leaf.h"
14 14
15#else15#else
16 16
17#include "../Inc/leaf-wavetables.h"17#include "../Inc/leaf-tables.h"
18#include "../Inc/leaf-oscillator.h"18#include "../Inc/leaf-oscillator.h"
19#include "../leaf.h"19#include "../leaf.h"
20 20
LEAF/Src/leaf-oversampler.c+59−92
@@ -9,116 +9,83 @@ · 8 unmodified lines
9#if _WIN32 || _WIN649#if _WIN32 || _WIN64
10 10
11#include "..\Inc\leaf-oversampler.h"11#include "..\Inc\leaf-oversampler.h"
12#include "..\Inc\leaf-tables.h"
12#else13#else
13 14
15
14#include "../Inc/leaf-oversampler.h"16#include "../Inc/leaf-oversampler.h"
17#include "../Inc/leaf-tables.h"
15 18
16#endif19#endif
17 20
18// Currently just using a double sample rate version of SVF from leaf-filter.c, may want to implement better filter for oversampling.21// Oversampler
19// Quick testing seems to indicate that this filter sufficiently handles most aliasing.22void tOversampler_init(tOversampler* const os, int ratio, oBool extraQuality)
20void tOversamplerFilter_init(tOversamplerFilter* const lpf, float freq, float Q, float sampleRateMultiplier)
21{
22 lpf->ic1eq = 0;
23 lpf->ic2eq = 0;
24
25 float a1,a2,a3,g,k;
26 float scaledInverseSampleRate = leaf.invSampleRate * (1 / sampleRateMultiplier);
27
28 g = tanf(PI * freq * scaledInverseSampleRate);
29 k = 1.0f/Q;
30 a1 = 1.0f/(1.0f+g*(g+k));
31 a2 = g*a1;
32 a3 = g*a2;
33
34 lpf->g = g;
35 lpf->k = k;
36 lpf->a1 = a1;
37 lpf->a2 = a2;
38 lpf->a3 = a3;
39}
40
41float tOversamplerFilter_tick(tOversamplerFilter* const lpf, float v0)
42{
43 float v1,v2,v3;
44 v3 = v0 - lpf->ic2eq;
45 v1 = (lpf->a1 * lpf->ic1eq) + (lpf->a2 * v3);
46 v2 = lpf->ic2eq + (lpf->a2 * lpf->ic1eq) + (lpf->a3 * v3);
47 lpf->ic1eq = (2.0f * v1) - lpf->ic1eq;
48 lpf->ic2eq = (2.0f * v2) - lpf->ic2eq;
49
50 return v2;
51}
52
53// 2X Oversampler
54void tOversampler2x_init(tOversampler2x* const os)
55{23{
56 tOversamplerFilter_init(&os->filters[0], leaf.sampleRate*0.5f, 0.1f, 2.f);24 uint8_t offset = 0;
57 tOversamplerFilter_init(&os->filters[1], leaf.sampleRate*0.5f, 0.1f, 2.f);25 if (extraQuality) offset = 6;
26 if (ratio == 2 || ratio == 4 ||
27 ratio == 8 || ratio == 16 ||
28 ratio == 32 || ratio == 64) {
29 os->ratio = ratio;
30 tFIR_init(&os->firUp, firCoeffs[(int)(os->ratio*0.5f)-1+offset]);
31 tFIR_init(&os->firDown, firCoeffs[(int)(os->ratio*0.5f)-1+offset]);
32 }
58}33}
59 34
60float tOversampler2x_tick(tOversampler2x* const os, float input, float (*nonLinearTick)(float))35void tOversampler_upsample(tOversampler* const os, float input, float* output)
61{36{
62 float sample = input;37 output[0] = input;
63 float oversample = 0.f;38 for (int i = 0; i < os->ratio; ++i) {
64 39 if (i > 0) output[i] = 0;
65 sample = tOversamplerFilter_tick(&os->filters[0], sample);40 output[i] = tFIR_tick(&os->firUp, output[i]);
66 oversample = tOversamplerFilter_tick(&os->filters[0], oversample);41 }
67
68 sample = nonLinearTick(sample);
69 oversample = nonLinearTick(oversample);
70
71 sample = tOversamplerFilter_tick(&os->filters[1], sample);
72 oversample = tOversamplerFilter_tick(&os->filters[1], oversample);
73
74 return sample;
75}42}
76 43
77// 4X Oversampler44float tOversampler_downsample(tOversampler* const os, float* input)
78void tOversampler4x_init(tOversampler4x* const os)
79{45{
80 tOversamplerFilter_init(&os->filters[0], leaf.sampleRate*0.25f, 0.1f, 2.f); //sample rate was *0.5 but I assume that was copypaste mistake (copied from 2X filter) - JS46 float output = tFIR_tick(&os->firDown, input[0]);
81 tOversamplerFilter_init(&os->filters[1], leaf.sampleRate*0.25f, 0.1f, 4.f);47 for (int i = 1; i < os->ratio; ++i) {
82 tOversamplerFilter_init(&os->filters[2], leaf.sampleRate*0.25f, 0.1f, 4.f);48 tFIR_tick(&os->firDown, input[i]);
83 tOversamplerFilter_init(&os->filters[3] , leaf.sampleRate*0.25f, 0.1f, 2.f);49 }
50 return output;
84}51}
85 52
86float tOversampler4x_tick(tOversampler4x* const os, float input, float (*nonLinearTick)(float))53float tOversampler_tick(tOversampler* const os, float input, float (*effectTick)(float))
87{54{
88 float sample = input;55 float buf[os->ratio];
89 float oversample1 = 0.f;
90 float oversample2 = 0.f;
91 float oversample3 = 0.f;
92 // Phase 1:
93 // x = [sample, oversample2]
94 // lpf(x)
95 // Phase 2:
96 // x = [sample, oversample1, oversample2, oversample3]
97 // lpf(dist(lpf(x)))
98 // Phase 3:
99 // x = [sample, oversample2]
100 // lpf(x)
101 56
102 sample = tOversamplerFilter_tick(&os->filters[0], sample);57 tOversampler_upsample(os, input, buf);
103 oversample2 = tOversamplerFilter_tick(&os->filters[0], oversample2);
104 58
105 sample = tOversamplerFilter_tick(&os->filters[1], sample);59 for (int i = 0; i < os->ratio; ++i) {
106 oversample1 = tOversamplerFilter_tick(&os->filters[1], oversample1);60 buf[i] = effectTick(buf[i]);
107 oversample2 = tOversamplerFilter_tick(&os->filters[1], oversample2);61 }
108 oversample3 = tOversamplerFilter_tick(&os->filters[1], oversample3);
109 62
110 sample = nonLinearTick(sample);63 return tOversampler_downsample(os, buf);
111 oversample1 = nonLinearTick(oversample1);
112 oversample2 = nonLinearTick(oversample2);
113 oversample3 = nonLinearTick(oversample3);
114 64
115 sample = tOversamplerFilter_tick(&os->filters[2], sample);65// float samples[os->ratio];
116 oversample1 = tOversamplerFilter_tick(&os->filters[2], oversample1);66// samples[0] = input;
117 oversample2 = tOversamplerFilter_tick(&os->filters[2], oversample2);67// for (int i = 1; i < os->ratio; ++i) {
118 oversample3 = tOversamplerFilter_tick(&os->filters[2], oversample3);68// samples[i]= 0.f;
119 69// }
120 sample = tOversamplerFilter_tick(&os->filters[3], sample);70//
121 oversample2 = tOversamplerFilter_tick(&os->filters[3], oversample2);71// int whichFilter = 0;
122 72// int i = 0;
123 return sample;73// int j = 0;
74// for (; i < os->order; ++i) {
75// for (; j < exp2(i+1); j += os->order-i) {
76// samples[j] = tFIR_tick(&os->filters[whichFilter], samples[j]);
77// }
78// whichFilter++;
79// }
80//
81// for (int s = 0; s < os->ratio; ++s) {
82// samples[s] = effectTick(samples[s]);
83// }
84//
85// for (; i >= 0; --i) {
86// for (; j >= 0; j -= os->order-i) {
87// samples[j] = tFIR_tick(&os->filters[whichFilter], samples[j]);
88// }
89// whichFilter++;
90// }
124}91}
LEAF/Src/leaf-tables.crenamed from LEAF/Src/leaf-wavetables.c+33−2
@@ -2,11 +2,11 @@ · 1 unmodified line
2 2
3#if _WIN32 || _WIN643#if _WIN32 || _WIN64
4 4
5#include "..\Inc\leaf-wavetables.h"5#include "..\Inc\leaf-tables.h"
6#include "..\Inc\leaf-globals.h"6#include "..\Inc\leaf-globals.h"
7#else7#else
8 8
9#include "../Inc/leaf-wavetables.h"9#include "../Inc/leaf-tables.h"
10#include "../Inc/leaf-globals.h"10#include "../Inc/leaf-globals.h"
11 11
12#endif12#endif
@@ -14,6 +14,37 @@ · 1 unmodified line
14 14
15#include "stdlib.h"15#include "stdlib.h"
16 16
17const float fir2XLow[32] = { 0.001067048115027622, -0.004557728776555209, -0.016711590887520535, -0.021065500881657994, -0.003828695019946828, 0.01865935152799254, 0.012036365576553658, -0.02064070362810112, -0.02682399333687091, 0.017862623081258543, 0.0492716766870816, -0.004310232755957251, -0.08571879958189704, -0.03828300159135686, 0.18420501161808442, 0.4054061613074031, 0.4054061613074031, 0.18420501161808442, -0.03828300159135686, -0.08571879958189704, -0.004310232755957251, 0.0492716766870816, 0.017862623081258543, -0.02682399333687091, -0.02064070362810112, 0.012036365576553658, 0.01865935152799254, -0.003828695019946828, -0.021065500881657994, -0.016711590887520535, -0.004557728776555209, 0.001067048115027622
18
19};
20const float fir4XLow[64] = { 0.0006952369848543607, -0.0021602595656775407, -0.005046940892783684, -0.009045400833780066, -0.01291169046367334, -0.015115999752735221, -0.014305643164290147, -0.009951858009311934, -0.0028258377448417927, 0.004999374847547033, 0.010750729432710248, 0.012011264580991868, 0.007846433846826574, -0.0005004296670167205, -0.009772888585453377, -0.015810363406761653, -0.01525350231205246, -0.007226084282741553, 0.005835838890105145, 0.018676910759237414, 0.025091142837250335, 0.02056199072613674, 0.004658087892329196, -0.017877850338462058, -0.03800800914197999, -0.04518029996599868, -0.031146769751981856, 0.006553281738260734, 0.06282284508297871, 0.1257919544316159, 0.18007204974638935, 0.21145499612282317, 0.21145499612282317, 0.18007204974638935, 0.1257919544316159, 0.06282284508297871, 0.006553281738260734, -0.031146769751981856, -0.04518029996599868, -0.03800800914197999, -0.017877850338462058, 0.004658087892329196, 0.02056199072613674, 0.025091142837250335, 0.018676910759237414, 0.005835838890105145, -0.007226084282741553, -0.01525350231205246, -0.015810363406761653, -0.009772888585453377, -0.0005004296670167205, 0.007846433846826574, 0.012011264580991868, 0.010750729432710248, 0.004999374847547033, -0.0028258377448417927, -0.009951858009311934, -0.014305643164290147, -0.015115999752735221, -0.01291169046367334, -0.009045400833780066, -0.005046940892783684, -0.0021602595656775407, 0.0006952369848543607
21};
22const float fir8XLow[64] = { 0.0006754949160790157, 0.0002779478357299437, 0.00016529299248029802, -0.00013134896547707938, -0.0006717131404275674, -0.0015110701381990592, -0.002691718323402088, -0.004233151560515273, -0.006122759810873029, -0.008309678451155357, -0.010700324896169348, -0.013154262594364387, -0.015486775440587882, -0.01748014690133886, -0.018887653514132675, -0.019456772349369558, -0.01894272181784527, -0.017131243827335194, -0.013858969256894846, -0.009032963777720983, -0.0026459262830678125, 0.00521276165394513, 0.01435273458276724, 0.024486845310977834, 0.03524172116254876, 0.04617574968276393, 0.05680505888194891, 0.06663123541320262, 0.07517390607705798, 0.08200222626654773, 0.0867639105153248, 0.08920930675382921, 0.08920930675382921, 0.0867639105153248, 0.08200222626654773, 0.07517390607705798, 0.06663123541320262, 0.05680505888194891, 0.04617574968276393, 0.03524172116254876, 0.024486845310977834, 0.01435273458276724, 0.00521276165394513, -0.0026459262830678125, -0.009032963777720983, -0.013858969256894846, -0.017131243827335194, -0.01894272181784527, -0.019456772349369558, -0.018887653514132675, -0.01748014690133886, -0.015486775440587882, -0.013154262594364387, -0.010700324896169348, -0.008309678451155357, -0.006122759810873029, -0.004233151560515273, -0.002691718323402088, -0.0015110701381990592, -0.0006717131404275674, -0.00013134896547707938, 0.00016529299248029802, 0.0002779478357299437, 0.0006754949160790157
23};
24const float fir16XLow[128] = { 0.0046126349429950276, 0.002418251320043122, 0.002998396982119693, 0.0036278090719021024, 0.0042975430005925104, 0.004996222179947315, 0.005711926725799716, 0.00643079625328543, 0.007135468516004265, 0.007808520869830334, 0.008432568881455365, 0.008987453845736109, 0.00945525638237626, 0.009815890031354925, 0.01005214318250272, 0.0101471696783731, 0.010086582032584102, 0.009858344528406827, 0.009453351108896472, 0.00886647074448095, 0.008096771309653635, 0.00714751717242796, 0.006026566967445846, 0.004745997071949807, 0.0033222377606249025, 0.0017766711441555428, 0.00013504407845816216, -0.0015717347700967995, -0.0033094088955885038, -0.005040712758495562, -0.0067262136355625045, -0.00832548062138737, -0.009796853749250854, -0.011097728611024173, -0.012187337326564303, -0.013023698103098556, -0.013573509920266506, -0.013801755448129987, -0.013685636499932173, -0.0132011750541409, -0.012328290422335804, -0.011059565013468301, -0.009397775060844537, -0.007349071952063118, -0.004920665178899413, -0.002134336426912994, 0.0009664872092121234, 0.00436478920287496, 0.008003553325930378, 0.011839210717492617, 0.015814297525442545, 0.01987142580304551, 0.023948983229671674, 0.0279823843957138, 0.03190689232743185, 0.03565816745288488, 0.03917373689862927, 0.042395392373465575, 0.04526788671987817, 0.0477424527036618, 0.04977580760639264, 0.051332653704811104, 0.05238580079738586, 0.05291690409987073, 0.05291690409987073, 0.05238580079738586, 0.051332653704811104, 0.04977580760639264, 0.0477424527036618, 0.04526788671987817, 0.042395392373465575, 0.03917373689862927, 0.03565816745288488, 0.03190689232743185, 0.0279823843957138, 0.023948983229671674, 0.01987142580304551, 0.015814297525442545, 0.011839210717492617, 0.008003553325930378, 0.00436478920287496, 0.0009664872092121234, -0.002134336426912994, -0.004920665178899413, -0.007349071952063118, -0.009397775060844537, -0.011059565013468301, -0.012328290422335804, -0.0132011750541409, -0.013685636499932173, -0.013801755448129987, -0.013573509920266506, -0.013023698103098556, -0.012187337326564303, -0.011097728611024173, -0.009796853749250854, -0.00832548062138737, -0.0067262136355625045, -0.005040712758495562, -0.0033094088955885038, -0.0015717347700967995, 0.00013504407845816216, 0.0017766711441555428, 0.0033222377606249025, 0.004745997071949807, 0.006026566967445846, 0.00714751717242796, 0.008096771309653635, 0.00886647074448095, 0.009453351108896472, 0.009858344528406827, 0.010086582032584102, 0.0101471696783731, 0.01005214318250272, 0.009815890031354925, 0.00945525638237626, 0.008987453845736109, 0.008432568881455365, 0.007808520869830334, 0.007135468516004265, 0.00643079625328543, 0.005711926725799716, 0.004996222179947315, 0.0042975430005925104, 0.0036278090719021024, 0.002998396982119693, 0.002418251320043122, 0.0046126349429950276
25};
26
27const float fir32XLow[256] = { 0.003135815035675548, 0.0008156232239328851, 0.000917068197598276, 0.0010233321389754753, 0.001134110218761504, 0.0012491667970169805, 0.0013680375075057851, 0.001490070275243389, 0.0016147643011084855, 0.0017417157238882276, 0.0018700914504121836, 0.0019991579415749683, 0.002128471863076254, 0.0022567566738769186, 0.002383672659264704, 0.002508166194956474, 0.002629506399721181, 0.0027467683378931368, 0.0028590361951993043, 0.0029653540222406116, 0.0030647286416823558, 0.00315623470697179, 0.003238837936508139, 0.0033114996375323753, 0.003373275427426179, 0.003423120728613286, 0.0034602078573979502, 0.00348370126489233, 0.0034928589363555137, 0.003487024926580723, 0.00346544617544127, 0.0034275901596743786, 0.003372744288160786, 0.003300374368830668, 0.0032100011629779615, 0.0031011259873207366, 0.0029734835473811155, 0.002826966057696581, 0.002661647372342504, 0.002477856491791658, 0.0022758592957851788, 0.002056324802981239, 0.0018188203182857804, 0.0015643564184398945, 0.0012926118931092972, 0.0010045690459120843, 0.0007018867678747181, 0.0003860391202902529, 0.00005849980158161824, -0.0002799696936324717, -0.0006296005356373679, -0.0009895247437558183, -0.0013546785675169304, -0.0017195561866995873, -0.0020963876502479964, -0.002468260301862593, -0.0028417218921490055, -0.0032120394918615683, -0.0035773608021516137, -0.003935505336691309, -0.004284369920502227, -0.004621670593236145, -0.004945031807804129, -0.005252279037886353, -0.005541035510098375, -0.0058089264241534076, -0.006054095814242929, -0.006274068947767563, -0.00646696244866887, -0.0066305675756926155, -0.006762900683506128, -0.0068620368760529005, -0.006926182735003765, -0.0069537046122919695, -0.006943019919480639, -0.006892771889917669, -0.006801741377343995, -0.006668838708546407, -0.006493264006045824, -0.006274267867821416, -0.006011320357808483, -0.0057040303527059145, -0.0053521596030233955, -0.004955865565614219, -0.0045153171035821945, -0.004031251472901679, -0.0035043462024212605, -0.002935495552851842, -0.0023258420785969196, -0.0016765768456949962, -0.0009892344368254917, -0.0002656979807816483, 0.0004919846584003508, 0.0012815018066687268, 0.0021009777555761797, 0.002947120990883713, 0.003818897132096946, 0.004711821532573362, 0.005623441877750917, 0.0065507318610126455, 0.00749007256295643, 0.008438601047417412, 0.009393231377415961, 0.010349728929990198, 0.011304034683748016, 0.012253787036798792, 0.0131957325172224, 0.014123534046112132, 0.015037407721547907, 0.015930638333497147, 0.016801083762848282, 0.017644931748342123, 0.018458926379618365, 0.019239740862760844, 0.0199842074278331, 0.02068926196032209, 0.021351902836904902, 0.021969538576994418, 0.022539688024890127, 0.02305979792910538, 0.023527892067270753, 0.023941757493848588, 0.02429975740762361, 0.024600378168866704, 0.02484241441905009, 0.025024893038415853, 0.025146995906550493, 0.025208214258904054, 0.025208214258904054, 0.025146995906550493, 0.025024893038415853, 0.02484241441905009, 0.024600378168866704, 0.02429975740762361, 0.023941757493848588, 0.023527892067270753, 0.02305979792910538, 0.022539688024890127, 0.021969538576994418, 0.021351902836904902, 0.02068926196032209, 0.0199842074278331, 0.019239740862760844, 0.018458926379618365, 0.017644931748342123, 0.016801083762848282, 0.015930638333497147, 0.015037407721547907, 0.014123534046112132, 0.0131957325172224, 0.012253787036798792, 0.011304034683748016, 0.010349728929990198, 0.009393231377415961, 0.008438601047417412, 0.00749007256295643, 0.0065507318610126455, 0.005623441877750917, 0.004711821532573362, 0.003818897132096946, 0.002947120990883713, 0.0021009777555761797, 0.0012815018066687268, 0.0004919846584003508, -0.0002656979807816483, -0.0009892344368254917, -0.0016765768456949962, -0.0023258420785969196, -0.002935495552851842, -0.0035043462024212605, -0.004031251472901679, -0.0045153171035821945, -0.004955865565614219, -0.0053521596030233955, -0.0057040303527059145, -0.006011320357808483, -0.006274267867821416, -0.006493264006045824, -0.006668838708546407, -0.006801741377343995, -0.006892771889917669, -0.006943019919480639, -0.0069537046122919695, -0.006926182735003765, -0.0068620368760529005, -0.006762900683506128, -0.0066305675756926155, -0.00646696244866887, -0.006274068947767563, -0.006054095814242929, -0.0058089264241534076, -0.005541035510098375, -0.005252279037886353, -0.004945031807804129, -0.004621670593236145, -0.004284369920502227, -0.003935505336691309, -0.0035773608021516137, -0.0032120394918615683, -0.0028417218921490055, -0.002468260301862593, -0.0020963876502479964, -0.0017195561866995873, -0.0013546785675169304, -0.0009895247437558183, -0.0006296005356373679, -0.0002799696936324717, 0.00005849980158161824, 0.0003860391202902529, 0.0007018867678747181, 0.0010045690459120843, 0.0012926118931092972, 0.0015643564184398945, 0.0018188203182857804, 0.002056324802981239, 0.0022758592957851788, 0.002477856491791658, 0.002661647372342504, 0.002826966057696581, 0.0029734835473811155, 0.0031011259873207366, 0.0032100011629779615, 0.003300374368830668, 0.003372744288160786, 0.0034275901596743786, 0.00346544617544127, 0.003487024926580723, 0.0034928589363555137, 0.00348370126489233, 0.0034602078573979502, 0.003423120728613286, 0.003373275427426179, 0.0033114996375323753, 0.003238837936508139, 0.00315623470697179, 0.0030647286416823558, 0.0029653540222406116, 0.0028590361951993043, 0.0027467683378931368, 0.002629506399721181, 0.002508166194956474, 0.002383672659264704, 0.0022567566738769186, 0.002128471863076254, 0.0019991579415749683, 0.0018700914504121836, 0.0017417157238882276, 0.0016147643011084855, 0.001490070275243389, 0.0013680375075057851, 0.0012491667970169805, 0.001134110218761504, 0.0010233321389754753, 0.000917068197598276, 0.0008156232239328851, 0.003135815035675548
28};
29const float fir64XLow[256] = { -0.007573012406345277, 0.00024079274850113426, 0.00024263723882202515, 0.0002481761013286244, 0.0002570861260137623, 0.0002699368701027846, 0.0002857208679875607, 0.00030498547559247845, 0.0003276748319944884, 0.0003537347795633787, 0.0003828493219762104, 0.00041517688767673063, 0.00045068714217736007, 0.0004893648798719514, 0.0005311398297784606, 0.0005760959724897604, 0.0006241866818625697, 0.00067534060229161, 0.0007295120216703175, 0.0007867375202056556, 0.00084702149975344, 0.0009103261049980538, 0.000976697360607544, 0.001046184181770156, 0.0011188000414977899, 0.0011944092399743605, 0.0012730564419046215, 0.0013547197757430203, 0.0014394035452673572, 0.0015269066196715306, 0.0016175658016292192, 0.0017113538530254156, 0.0018082288964809644, 0.0019074086707092258, 0.0020102102191501834, 0.002115750178775707, 0.0022249923434846707, 0.002324224442263978, 0.0024546715656463027, 0.0025707750602413674, 0.0026886907797787993, 0.0028092893752555753, 0.0029332425986383416, 0.003059760096689252, 0.0031892620828723227, 0.0033216131163189126, 0.00345667963318062, 0.003594116005810746, 0.00373401564369845, 0.003876285696289593, 0.004020837780560375, 0.004167535061341574, 0.004316384032044447, 0.004467271202856345, 0.004620059305184111, 0.00477464934326076, 0.004931017978539705, 0.005089107569792517, 0.005248795189805357, 0.005410043882397958, 0.00557279812512997, 0.005736960631925176, 0.005902264421456515, 0.006068673112862706, 0.006236075536115428, 0.006404404103216645, 0.006573347381526989, 0.006743241263261084, 0.006913918086775748, 0.007085185727911214, 0.007255841416075524, 0.007427788300814843, 0.007599440425756014, 0.007771491831017079, 0.007940210385740073, 0.008115982431613405, 0.008286230477311076, 0.008455728261315427, 0.008624828065636171, 0.0087938382520137, 0.008961934603559608, 0.009129309914478244, 0.009295705048569773, 0.009460895719293651, 0.009624512383898252, 0.009786590519239425, 0.009946995212091796, 0.010105592312872629, 0.010262212502414601, 0.010416818688520148, 0.010569268906811192, 0.010719396502249774, 0.010867082742078902, 0.011012274230511132, 0.011154883295408143, 0.01129473907939671, 0.011431766458575066, 0.011565861880187342, 0.011696890630696698, 0.011824548066976817, 0.011948823922340134, 0.012069629781346847, 0.012186937947306629, 0.012300432892104241, 0.01241055721228422, 0.012517086983512674, 0.012619772868365714, 0.01271694508250919, 0.012811738843612799, 0.012901614577029171, 0.012987520090940792, 0.013067705672196494, 0.013146659639966262, 0.013218602399208508, 0.013285987093409357, 0.013349032229359648, 0.013407929990549725, 0.013461999810303231, 0.013511437444384976, 0.013556082697096088, 0.013595835757053917, 0.013630499982440026, 0.01366023670087255, 0.013685042776887582, 0.013704903172994373, 0.013719772986706352, 0.013729721512429531, 0.01373472352074017, 0.01373472352074017, 0.013729721512429531, 0.013719772986706352, 0.013704903172994373, 0.013685042776887582, 0.01366023670087255, 0.013630499982440026, 0.013595835757053917, 0.013556082697096088, 0.013511437444384976, 0.013461999810303231, 0.013407929990549725, 0.013349032229359648, 0.013285987093409357, 0.013218602399208508, 0.013146659639966262, 0.013067705672196494, 0.012987520090940792, 0.012901614577029171, 0.012811738843612799, 0.01271694508250919, 0.012619772868365714, 0.012517086983512674, 0.01241055721228422, 0.012300432892104241, 0.012186937947306629, 0.012069629781346847, 0.011948823922340134, 0.011824548066976817, 0.011696890630696698, 0.011565861880187342, 0.011431766458575066, 0.01129473907939671, 0.011154883295408143, 0.011012274230511132, 0.010867082742078902, 0.010719396502249774, 0.010569268906811192, 0.010416818688520148, 0.010262212502414601, 0.010105592312872629, 0.009946995212091796, 0.009786590519239425, 0.009624512383898252, 0.009460895719293651, 0.009295705048569773, 0.009129309914478244, 0.008961934603559608, 0.0087938382520137, 0.008624828065636171, 0.008455728261315427, 0.008286230477311076, 0.008115982431613405, 0.007940210385740073, 0.007771491831017079, 0.007599440425756014, 0.007427788300814843, 0.007255841416075524, 0.007085185727911214, 0.006913918086775748, 0.006743241263261084, 0.006573347381526989, 0.006404404103216645, 0.006236075536115428, 0.006068673112862706, 0.005902264421456515, 0.005736960631925176, 0.00557279812512997, 0.005410043882397958, 0.005248795189805357, 0.005089107569792517, 0.004931017978539705, 0.00477464934326076, 0.004620059305184111, 0.004467271202856345, 0.004316384032044447, 0.004167535061341574, 0.004020837780560375, 0.003876285696289593, 0.00373401564369845, 0.003594116005810746, 0.00345667963318062, 0.0033216131163189126, 0.0031892620828723227, 0.003059760096689252, 0.0029332425986383416, 0.0028092893752555753, 0.0026886907797787993, 0.0025707750602413674, 0.0024546715656463027, 0.002324224442263978, 0.0022249923434846707, 0.002115750178775707, 0.0020102102191501834, 0.0019074086707092258, 0.0018082288964809644, 0.0017113538530254156, 0.0016175658016292192, 0.0015269066196715306, 0.0014394035452673572, 0.0013547197757430203, 0.0012730564419046215, 0.0011944092399743605, 0.0011188000414977899, 0.001046184181770156, 0.000976697360607544, 0.0009103261049980538, 0.00084702149975344, 0.0007867375202056556, 0.0007295120216703175, 0.00067534060229161, 0.0006241866818625697, 0.0005760959724897604, 0.0005311398297784606, 0.0004893648798719514, 0.00045068714217736007, 0.00041517688767673063, 0.0003828493219762104, 0.0003537347795633787, 0.0003276748319944884, 0.00030498547559247845, 0.0002857208679875607, 0.0002699368701027846, 0.0002570861260137623, 0.0002481761013286244, 0.00024263723882202515, 0.00024079274850113426, -0.007573012406345277
30};
31
32const float fir2XHigh[128] = { -2.84059575423864e-7, -0.00000136947295895967, -0.00000213110629785921, 5.807441351521463e-7, 0.000005239591854415941, 0.0000017841093721093506, -0.000011653029986124283, -0.000012481751035611902, 0.000014692437654954816, 0.00003091988960026406, -0.000011636477685383897, -0.00006163665493961978, -0.00001118322316939516, 0.0000961395818492714, 0.00006083206665324362, -0.00012648324239817438, -0.0001504708418330321, 0.00012753607518766694, 0.00027753923597010266, -0.00007473591299809917, -0.0004344444061086839, -0.00006832501012358436, 0.0005862297350582802, 0.00032465365599127654, -0.0006850628390191059, -0.0007096577214822187, 0.0006552234666252462, 0.0012010034203710784, -0.00041922406056782083, -0.0017446179378994388, -0.00010392099105524336, 0.002230631291161319, 0.0009594567093737222, -0.0025128059157130817, -0.002149706133662562, 0.0024038381899768617, 0.0035931253272614688, -0.0017176062590590708, -0.005125004981810711, 0.0002868765073834209, 0.006475023818177746, 0.001977797493927114, -0.007294746305130189, -0.005063375113227534, 0.007166496494812792, 0.008801581540883702, -0.005659099397006974, -0.012862366201787455, 0.00235384598511852, 0.016726921191779598, 0.0031052434033518096, -0.01970178000552065, -0.011028401875416302, 0.020882193937533836, 0.021743369519245558, -0.019061942568474207, -0.03589474387520175, 0.012292311428695956, 0.05536768370150782, 0.0038607600693388554, -0.08741418160721261, -0.046877671142694095, 0.18124004024261609, 0.41210996873316647, 0.41210996873316647, 0.18124004024261609, -0.046877671142694095, -0.08741418160721261, 0.0038607600693388554, 0.05536768370150782, 0.012292311428695956, -0.03589474387520175, -0.019061942568474207, 0.021743369519245558, 0.020882193937533836, -0.011028401875416302, -0.01970178000552065, 0.0031052434033518096, 0.016726921191779598, 0.00235384598511852, -0.012862366201787455, -0.005659099397006974, 0.008801581540883702, 0.007166496494812792, -0.005063375113227534, -0.007294746305130189, 0.001977797493927114, 0.006475023818177746, 0.0002868765073834209, -0.005125004981810711, -0.0017176062590590708, 0.0035931253272614688, 0.0024038381899768617, -0.002149706133662562, -0.0025128059157130817, 0.0009594567093737222, 0.002230631291161319, -0.00010392099105524336, -0.0017446179378994388, -0.00041922406056782083, 0.0012010034203710784, 0.0006552234666252462, -0.0007096577214822187, -0.0006850628390191059, 0.00032465365599127654, 0.0005862297350582802, -0.00006832501012358436, -0.0004344444061086839, -0.00007473591299809917, 0.00027753923597010266, 0.00012753607518766694, -0.0001504708418330321, -0.00012648324239817438, 0.00006083206665324362, 0.0000961395818492714, -0.00001118322316939516, -0.00006163665493961978, -0.000011636477685383897, 0.00003091988960026406, 0.000014692437654954816, -0.000012481751035611902, -0.000011653029986124283, 0.0000017841093721093506, 0.000005239591854415941, 5.807441351521463e-7, -0.00000213110629785921, -0.00000136947295895967, -2.84059575423864e-7
33};
34const float fir4XHigh[256] = { -0.000005005316694254475, -0.000010486216859223391, -0.000020341389435584184, -0.000028297461945285203, -0.00003403970018224806, -0.00003356141383522181, -0.000028580071407296435, -0.000021726870316473222, -0.000018929805847104457, -0.000024937785475375726, -0.00004148092321827023, -0.00006494904958257674, -0.00008704299086494871, -0.00009817726370665003, -0.00009207287115371104, -0.000070350790919461, -0.000043204247279965386, -0.000026338754429996997, -0.00003337527183661095, -0.00006864404983689099, -0.00012208654155480072, -0.00017229784061896603, -0.00019443471041769651, -0.0001738448733058993, -0.00011458014625437172, -0.00004241909459592675, 0.000005858218684625342, -0.000001824861163195929, -0.00007376494795165521, -0.0001870435534541462, -0.00029242213522170924, -0.00033660459070401045, -0.00028781004597914193, -0.00015737268974254042, 2.4069038430437714e-7, 0.00010675981100488967, 0.00009819903503597289, -0.000041503003504151876, -0.00026298229853436046, -0.0004679330143401381, -0.000550680089032831, -0.00045235278384860993, -0.0001968527747134386, 0.00010787721721971545, 0.00031390651451180623, 0.0003015617300329922, 0.00004577001768172358, -0.0003593242009009715, -0.0007303801286775824, -0.0008768456304295432, -0.0006955854650565154, -0.00023554905807185743, 0.00030790928383371996, 0.0006717577010285365, 0.0006504775398685704, 0.00020580176646200433, -0.0004919858457618222, -0.0011250441730682327, -0.001368894036877941, -0.0010555177901930952, -0.00027554321698262794, 0.0006358082850902164, 0.0012391753523202087, 0.0011981314765901019, 0.0004602570434921762, -0.0006853292543951153, -0.0017133793271509106, -0.0020995520812018714, -0.0015812527530506791, -0.00031822317984990035, 0.0011425257824338887, 0.0020968295391595774, 0.0020180799074488486, 0.000837174097496827, -0.0009743823002432432, -0.0025836938014065975, -0.00317200799245191, -0.0023436048910665127, -0.0003642960983689493, 0.0019025392919524162, 0.0033649169125380706, 0.003219398725098763, 0.0013786588356217962, -0.001415068708295585, -0.003874469283244301, -0.004750945120551563, -0.0034548726172607498, -0.0004124431830693066, 0.003046185830666762, 0.005254266475282044, 0.004999101428335298, 0.002164099554982996, -0.0021053850268023615, -0.005843180111542266, -0.0071497618238720055, -0.0051353491910507984, -0.0004583930086451031, 0.004842595616255233, 0.008213402548972962, 0.00778770755309392, 0.003376641721920036, -0.003263596560752136, -0.00908888688929085, -0.011124936147882954, -0.007935453568187856, -0.0004986705357686102, 0.007998600315936934, 0.013466881500422878, 0.012810645017913123, 0.0055655403444453775, -0.00554207852540761, -0.015510462180576574, -0.019193722858760427, -0.013786276388279539, -0.0005292356782833587, 0.01526523041211863, 0.026109899142542758, 0.02555053211054643, 0.011414259133477645, -0.01233979307221452, -0.036160130412882435, -0.04790631293501779, -0.03735668670551693, -0.0005458966005379449, 0.0578178869957579, 0.12496957303698586, 0.18372600900451644, 0.21795911568314993, 0.21795911568314993, 0.18372600900451644, 0.12496957303698586, 0.0578178869957579, -0.0005458966005379449, -0.03735668670551693, -0.04790631293501779, -0.036160130412882435, -0.01233979307221452, 0.011414259133477645, 0.02555053211054643, 0.026109899142542758, 0.01526523041211863, -0.0005292356782833587, -0.013786276388279539, -0.019193722858760427, -0.015510462180576574, -0.00554207852540761, 0.0055655403444453775, 0.012810645017913123, 0.013466881500422878, 0.007998600315936934, -0.0004986705357686102, -0.007935453568187856, -0.011124936147882954, -0.00908888688929085, -0.003263596560752136, 0.003376641721920036, 0.00778770755309392, 0.008213402548972962, 0.004842595616255233, -0.0004583930086451031, -0.0051353491910507984, -0.0071497618238720055, -0.005843180111542266, -0.0021053850268023615, 0.002164099554982996, 0.004999101428335298, 0.005254266475282044, 0.003046185830666762, -0.0004124431830693066, -0.0034548726172607498, -0.004750945120551563, -0.003874469283244301, -0.001415068708295585, 0.0013786588356217962, 0.003219398725098763, 0.0033649169125380706, 0.0019025392919524162, -0.0003642960983689493, -0.0023436048910665127, -0.00317200799245191, -0.0025836938014065975, -0.0009743823002432432, 0.000837174097496827, 0.0020180799074488486, 0.0020968295391595774, 0.0011425257824338887, -0.00031822317984990035, -0.0015812527530506791, -0.0020995520812018714, -0.0017133793271509106, -0.0006853292543951153, 0.0004602570434921762, 0.0011981314765901019, 0.0012391753523202087, 0.0006358082850902164, -0.00027554321698262794, -0.0010555177901930952, -0.001368894036877941, -0.0011250441730682327, -0.0004919858457618222, 0.00020580176646200433, 0.0006504775398685704, 0.0006717577010285365, 0.00030790928383371996, -0.00023554905807185743, -0.0006955854650565154, -0.0008768456304295432, -0.0007303801286775824, -0.0003593242009009715, 0.00004577001768172358, 0.0003015617300329922, 0.00031390651451180623, 0.00010787721721971545, -0.0001968527747134386, -0.00045235278384860993, -0.000550680089032831, -0.0004679330143401381, -0.00026298229853436046, -0.000041503003504151876, 0.00009819903503597289, 0.00010675981100488967, 2.4069038430437714e-7, -0.00015737268974254042, -0.00028781004597914193, -0.00033660459070401045, -0.00029242213522170924, -0.0001870435534541462, -0.00007376494795165521, -0.000001824861163195929, 0.000005858218684625342, -0.00004241909459592675, -0.00011458014625437172, -0.0001738448733058993, -0.00019443471041769651, -0.00017229784061896603, -0.00012208654155480072, -0.00006864404983689099, -0.00003337527183661095, -0.000026338754429996997, -0.000043204247279965386, -0.000070350790919461, -0.00009207287115371104, -0.00009817726370665003, -0.00008704299086494871, -0.00006494904958257674, -0.00004148092321827023, -0.000024937785475375726, -0.000018929805847104457, -0.000021726870316473222, -0.000028580071407296435, -0.00003356141383522181, -0.00003403970018224806, -0.000028297461945285203, -0.000020341389435584184, -0.000010486216859223391, -0.000005005316694254475
35};
36const float fir8XHigh[281] = { 0.000006515809210236611, 0.000006433991670242511, 0.000008876221916189558, 0.000011214865619507605, 0.000013066733820804594, 0.000013981107205384017, 0.000013479377465019901, 0.000011108628232005872, 0.000006506828603611105, -5.289705171249898e-7, -0.00000997817252311171, -0.00002154186204366967, -0.000034609657800925634, -0.00004825700710931881, -0.00006127726723857158, -0.00007225207424591706, -0.00007966191749236725, -0.00008202959022406827, -0.00007808540302029911, -0.00006694410044638306, -0.000048272991834249023, -0.000022428220677001062, 0.00000945519618350689, 0.00004543933131195438, 0.00008284463647997294, 0.00011839421808937768, 0.0001484453939861778, 0.00016930196836844217, 0.00017757068005525774, 0.0001705551281856014, 0.0001466259260978121, 0.00010554953654423453, 0.000048713986255269035, -0.00002076914916642107, -0.00009812670772817325, -0.00017715913233461153, -0.0002506512893134693, -0.00031094020467360364, -0.00035060341921983105, -0.00036321457599195286, -0.000344097253126408, -0.0002910035300654813, -0.00020463863066340804, -0.0000889596462925044, 0.0000488065342129464, 0.00019846344507950818, 0.0003474719185455316, 0.0004818774216658429, 0.0005874831782969511, 0.0006511821678893009, 0.0006623328402563043, 0.0006140516294678713, 0.0005042852156009971, 0.00033653370625019924, 0.00012011888794986249, -0.00013008025896695598, -0.0003944482469328303, -0.0006499992351713145, -0.0008721981757872817, -0.0010371241058790954, -0.0011237848293952834, -0.001116390991413482, -0.001006354290932797, -0.0007938015361709206, -0.0004884092949725727, -0.00010941224635219784, 0.00031528775696513877, 0.0007509162059373942, 0.0011584361578093477, 0.0014977980668289563, 0.0017315832835398534, 0.0018287320452685962, 0.001768008710143546, 0.001540856733253093, 0.0011533207915249972, 0.0006267723261937353, -0.000002730837064573008, -0.000686507599139094, -0.001366668704322837, -0.0019806797805119046, -0.002466740486722005, -0.0027695470996196084, -0.002845938634535671, -0.0026698805672307046, -0.0022363009289308334, -0.0015632638676050168, -0.0006922721287036599, 0.0003136767188792293, 0.0013740390681091675, 0.00239668755753389, 0.003285389650049797, 0.003948233176598269, 0.004306356542469053, 0.004302187126891144, 0.003906381571148949, 0.0031227586280687734, 0.0019906312316864162, 0.0005841127698488963, -0.000991773612225015, -0.0026080684279961796, -0.004121541638039505, -0.005386397411897306, -0.006267130625938093, -0.006651482916115235, -0.006462364294177974, -0.0056676073466073755, -0.004286536029155119, -0.00239254903212187, -0.00011119032068043591, 0.0023864763663203046, 0.004894953723490399, 0.007189250895714774, 0.009042714283589649, 0.010246422161232217, 0.010628697324455047, 0.010073084289140301, 0.00853325380877814, 0.006043384248100991, 0.002722900135231063, -0.0012251912233039515, -0.00552263664478698, -0.009830708703730309, -0.013770652449236885, -0.016948562423166388, -0.018983038365521697, -0.019533674199849648, -0.018328285730983804, -0.015186786196633398, -0.010039790159071691, -0.0029403540852480344, 0.005932283582188087, 0.016277538632752685, 0.02768684678656681, 0.03966488477882676, 0.05165737483789425, 0.06308368436467467, 0.07337205172778682, 0.08199503223813394, 0.08850270507176243, 0.09255131664236119, 0.09392532916601987, 0.09255131664236119, 0.08850270507176243, 0.08199503223813394, 0.07337205172778682, 0.06308368436467467, 0.05165737483789425, 0.03966488477882676, 0.02768684678656681, 0.016277538632752685, 0.005932283582188087, -0.0029403540852480344, -0.010039790159071691, -0.015186786196633398, -0.018328285730983804, -0.019533674199849648, -0.018983038365521697, -0.016948562423166388, -0.013770652449236885, -0.009830708703730309, -0.00552263664478698, -0.0012251912233039515, 0.002722900135231063, 0.006043384248100991, 0.00853325380877814, 0.010073084289140301, 0.010628697324455047, 0.010246422161232217, 0.009042714283589649, 0.007189250895714774, 0.004894953723490399, 0.0023864763663203046, -0.00011119032068043591, -0.00239254903212187, -0.004286536029155119, -0.0056676073466073755, -0.006462364294177974, -0.006651482916115235, -0.006267130625938093, -0.005386397411897306, -0.004121541638039505, -0.0026080684279961796, -0.000991773612225015, 0.0005841127698488963, 0.0019906312316864162, 0.0031227586280687734, 0.003906381571148949, 0.004302187126891144, 0.004306356542469053, 0.003948233176598269, 0.003285389650049797, 0.00239668755753389, 0.0013740390681091675, 0.0003136767188792293, -0.0006922721287036599, -0.0015632638676050168, -0.0022363009289308334, -0.0026698805672307046, -0.002845938634535671, -0.0027695470996196084, -0.002466740486722005, -0.0019806797805119046, -0.001366668704322837, -0.000686507599139094, -0.000002730837064573008, 0.0006267723261937353, 0.0011533207915249972, 0.001540856733253093, 0.001768008710143546, 0.0018287320452685962, 0.0017315832835398534, 0.0014977980668289563, 0.0011584361578093477, 0.0007509162059373942, 0.00031528775696513877, -0.00010941224635219784, -0.0004884092949725727, -0.0007938015361709206, -0.001006354290932797, -0.001116390991413482, -0.0011237848293952834, -0.0010371241058790954, -0.0008721981757872817, -0.0006499992351713145, -0.0003944482469328303, -0.00013008025896695598, 0.00012011888794986249, 0.00033653370625019924, 0.0005042852156009971, 0.0006140516294678713, 0.0006623328402563043, 0.0006511821678893009, 0.0005874831782969511, 0.0004818774216658429, 0.0003474719185455316, 0.00019846344507950818, 0.0000488065342129464, -0.0000889596462925044, -0.00020463863066340804, -0.0002910035300654813, -0.000344097253126408, -0.00036321457599195286, -0.00035060341921983105, -0.00031094020467360364, -0.0002506512893134693, -0.00017715913233461153, -0.00009812670772817325, -0.00002076914916642107, 0.000048713986255269035, 0.00010554953654423453, 0.0001466259260978121, 0.0001705551281856014, 0.00017757068005525774, 0.00016930196836844217, 0.0001484453939861778, 0.00011839421808937768, 0.00008284463647997294, 0.00004543933131195438, 0.00000945519618350689, -0.000022428220677001062, -0.000048272991834249023, -0.00006694410044638306, -0.00007808540302029911, -0.00008202959022406827, -0.00007966191749236725, -0.00007225207424591706, -0.00006127726723857158, -0.00004825700710931881, -0.000034609657800925634, -0.00002154186204366967, -0.00000997817252311171, -5.289705171249898e-7, 0.000006506828603611105, 0.000011108628232005872, 0.000013479377465019901, 0.000013981107205384017, 0.000013066733820804594, 0.000011214865619507605, 0.000008876221916189558, 0.000006433991670242511, 0.000006515809210236611
37};
38const float fir16XHigh[507] = { 0.000011223639487175034, 0.00003389476132831667, 0.00001565142600136805, 0.000029785565597257123, 0.000033019509640348576, 0.000040890011095128895, 0.000047645976665165004, 0.00005519205648330811, 0.00006263088530625951, 0.00007004411185309244, 0.0000771324566916655, 0.00008371202601526943, 0.00008954131982464572, 0.00009438985590103045, 0.00009802251663221825, 0.00010021766977046484, 0.00010077099406228367, 0.00009950354997327299, 0.00009626859110453859, 0.0000909600537916604, 0.00008352242039123624, 0.00007395372186247605, 0.00006231047583453306, 0.00004871192585529492, 0.00003334356571983411, 0.00001645471256452401, -0.0000016413555153330923, -0.000020575227175562262, -0.00003992062913931496, -0.00005920706964218722, -0.00007793217485231889, -0.00009557112119831485, -0.00011158939070902697, -0.00012545892879240573, -0.00013667294731229326, -0.00014476758540289084, -0.00014932995769211714, -0.000150018341895562, -0.000146580744606288, -0.00013886259748780043, -0.0001268190446981172, -0.00011052388056271511, -0.00009017969193987633, -0.00006611465374230917, -0.000038782938435978234, -0.00000876133822602926, 0.000023260672340825108, 0.00005649687929971302, 0.00009007562653717549, 0.00012306759645970273, 0.00015449607180095516, 0.00018338444785875874, 0.00020875809537386906, 0.00022969849532759564, 0.0002453517770850021, 0.0002549809478537094, 0.00025796163603291, 0.0002538462848586374, 0.00024234944561075662, 0.00022339916263349984, 0.00019711586457920054, 0.00016386029242954867, 0.00012419676704937842, 0.00007891531672131619, 0.000029009383738234164, -0.000024342137184611088, -0.00007979314435225464, -0.0001358730574519546, -0.00019100097583334814, -0.00024355965476127581, -0.00029190178936381293, -0.0003344302124498643, -0.00036962883770277297, -0.00039611560711705693, -0.00041269318701138354, -0.0004183852499507708, -0.00041249179821738956, -0.0003945978397052112, -0.0003646302532886169, -0.00032285416030081534, -0.00026988665242490956, -0.00020671246100372262, -0.00013464208918430477, -0.000055323215412330015, 0.00002931794922226709, 0.0001171052743416949, 0.00020566413994787955, 0.00029249350400491035, 0.0003750141208561986, 0.0004506599119959301, 0.0005169373619811267, 0.0005715117180256151, 0.00061228349091545, 0.0006374453128719119, 0.0006455721137885246, 0.0006356604875175356, 0.0006071799378206807, 0.0005601252062773255, 0.000495014311378991, 0.0004129206109785137, 0.0003154557316698014, 0.0002047389778021251, 0.00008337898885071015, -0.00004560145744141743, -0.00017883039809039755, -0.00031265217157122984, -0.00044325463590371946, -0.0005667417231840965, -0.0006792584632287428, -0.000777109165785064, -0.0008568591271101397, -0.0009154512320146708, -0.0009503207712198178, -0.0009594657179665852, -0.0009415565364645168, -0.0008959867862209759, -0.0008229173935989571, -0.0007233199648734618, -0.0005989694888112213, -0.00045242654474226385, -0.0002869988301907985, -0.00010668059721194097, 0.00008395295226827905, 0.00027983393647885, 0.00047553907439135357, 0.0006654397745486944, 0.000843843754949596, 0.0010051567950007032, 0.00114407065509444, 0.001255698377647631, 0.0013357463876968929, 0.001380669423474658, 0.0013877913695961909, 0.001355419634589166, 0.0012829347392002784, 0.001170857079703668, 0.0010208587539186904, 0.0008357711398553729, 0.00061955643126457, 0.0003772148219011147, 0.00011469799913757213, -0.00016123053388576708, -0.00044315432978481455, -0.0007232052543806719, -0.0009932645781534457, -0.0012451786011040068, -0.0014710139934164534, -0.0016632810310614461, -0.0018151715774975129, -0.00192076844077557, -0.0019752631247864864, -0.001975134453443597, -0.0019182895067395296, -0.0018041876320646774, -0.001633913423352424, -0.0014102152408968088, -0.001137471712692101, -0.0008216330718947789, -0.00047011532069230985, -0.00009163860692195964, 0.000303959375080359, 0.0007059826944723511, 0.0011031322000193775, 0.0014838230983794044, 0.0018364968859816949, 0.002149959028270332, 0.0024137017159986582, 0.002618226673952322, 0.0027553645300578185, 0.0028185632193391155, 0.0028031399386233232, 0.002706467328171449, 0.0025281269906890775, 0.002270010778971365, 0.0019363836007384424, 0.0015338268915202368, 0.0010711414888523287, 0.0005591670516309547, 0.00001060247047841419, -0.0005602987374387867, -0.0011380941283709622, -0.0017065439770515773, -0.0022489925020944468, -0.002748834879937373, -0.0031900292357864976, -0.003557551903204754, -0.0038378055902346464, -0.004019111046679251, -0.004092137488933285, -0.004050192623721161, -0.0038895301449116456, -0.003609639243260837, -0.0032133304296573786, -0.00270677748493009, -0.002099568363742687, -0.0014045297042921403, -0.0006374761750023702, 0.00018300348309551812, 0.001036003435024269, 0.0018988018625642805, 0.002747304702323304, 0.0035567334141860967, 0.004302253788255174, 0.0049595751407287515, 0.0055057423147163425, 0.005919740331325667, 0.0061831377016482785, 0.0062807934471123565, 0.006201287513335089, 0.005937494296913871, 0.005486955829819391, 0.00485210809289013, 0.004040578223731828, 0.0030651107589346133, 0.0019435839993722022, 0.0006987931664710428, -0.0006419353954629319, -0.0020470841921403277, -0.003481657070350296, -0.00490771588075344, -0.006285254690754719, -0.00757300024779733, -0.008729301084187287, -0.009713152427235262, -0.010485029312708102, -0.011008015124781903, -0.011248546680132475, -0.011177481897113132, -0.010770736800837974, -0.010010158096755881, -0.008883989334289738, -0.007387469186990821, -0.005523068025688854, -0.003300745496327474, -0.0007379186159991232, 0.002140639292899578, 0.00530313355448898, 0.008711190109957655, 0.0123204891365314, 0.01608150520908936, 0.01994040105089521, 0.023840011526520984, 0.027720918726789442, 0.0315225925666045, 0.03518457238988549, 0.038647657653228605, 0.04185508482273692, 0.044753675079981466, 0.04729490694484793, 0.049435901982365436, 0.05114030892035841, 0.052379045788773726, 0.053130896987857175, 0.053382958142299285, 0.053130896987857175, 0.052379045788773726, 0.05114030892035841, 0.049435901982365436, 0.04729490694484793, 0.044753675079981466, 0.04185508482273692, 0.038647657653228605, 0.03518457238988549, 0.0315225925666045, 0.027720918726789442, 0.023840011526520984, 0.01994040105089521, 0.01608150520908936, 0.0123204891365314, 0.008711190109957655, 0.00530313355448898, 0.002140639292899578, -0.0007379186159991232, -0.003300745496327474, -0.005523068025688854, -0.007387469186990821, -0.008883989334289738, -0.010010158096755881, -0.010770736800837974, -0.011177481897113132, -0.011248546680132475, -0.011008015124781903, -0.010485029312708102, -0.009713152427235262, -0.008729301084187287, -0.00757300024779733, -0.006285254690754719, -0.00490771588075344, -0.003481657070350296, -0.0020470841921403277, -0.0006419353954629319, 0.0006987931664710428, 0.0019435839993722022, 0.0030651107589346133, 0.004040578223731828, 0.00485210809289013, 0.005486955829819391, 0.005937494296913871, 0.006201287513335089, 0.0062807934471123565, 0.0061831377016482785, 0.005919740331325667, 0.0055057423147163425, 0.0049595751407287515, 0.004302253788255174, 0.0035567334141860967, 0.002747304702323304, 0.0018988018625642805, 0.001036003435024269, 0.00018300348309551812, -0.0006374761750023702, -0.0014045297042921403, -0.002099568363742687, -0.00270677748493009, -0.0032133304296573786, -0.003609639243260837, -0.0038895301449116456, -0.004050192623721161, -0.004092137488933285, -0.004019111046679251, -0.0038378055902346464, -0.003557551903204754, -0.0031900292357864976, -0.002748834879937373, -0.0022489925020944468, -0.0017065439770515773, -0.0011380941283709622, -0.0005602987374387867, 0.00001060247047841419, 0.0005591670516309547, 0.0010711414888523287, 0.0015338268915202368, 0.0019363836007384424, 0.002270010778971365, 0.0025281269906890775, 0.002706467328171449, 0.0028031399386233232, 0.0028185632193391155, 0.0027553645300578185, 0.002618226673952322, 0.0024137017159986582, 0.002149959028270332, 0.0018364968859816949, 0.0014838230983794044, 0.0011031322000193775, 0.0007059826944723511, 0.000303959375080359, -0.00009163860692195964, -0.00047011532069230985, -0.0008216330718947789, -0.001137471712692101, -0.0014102152408968088, -0.001633913423352424, -0.0018041876320646774, -0.0019182895067395296, -0.001975134453443597, -0.0019752631247864864, -0.00192076844077557, -0.0018151715774975129, -0.0016632810310614461, -0.0014710139934164534, -0.0012451786011040068, -0.0009932645781534457, -0.0007232052543806719, -0.00044315432978481455, -0.00016123053388576708, 0.00011469799913757213, 0.0003772148219011147, 0.00061955643126457, 0.0008357711398553729, 0.0010208587539186904, 0.001170857079703668, 0.0012829347392002784, 0.001355419634589166, 0.0013877913695961909, 0.001380669423474658, 0.0013357463876968929, 0.001255698377647631, 0.00114407065509444, 0.0010051567950007032, 0.000843843754949596, 0.0006654397745486944, 0.00047553907439135357, 0.00027983393647885, 0.00008395295226827905, -0.00010668059721194097, -0.0002869988301907985, -0.00045242654474226385, -0.0005989694888112213, -0.0007233199648734618, -0.0008229173935989571, -0.0008959867862209759, -0.0009415565364645168, -0.0009594657179665852, -0.0009503207712198178, -0.0009154512320146708, -0.0008568591271101397, -0.000777109165785064, -0.0006792584632287428, -0.0005667417231840965, -0.00044325463590371946, -0.00031265217157122984, -0.00017883039809039755, -0.00004560145744141743, 0.00008337898885071015, 0.0002047389778021251, 0.0003154557316698014, 0.0004129206109785137, 0.000495014311378991, 0.0005601252062773255, 0.0006071799378206807, 0.0006356604875175356, 0.0006455721137885246, 0.0006374453128719119, 0.00061228349091545, 0.0005715117180256151, 0.0005169373619811267, 0.0004506599119959301, 0.0003750141208561986, 0.00029249350400491035, 0.00020566413994787955, 0.0001171052743416949, 0.00002931794922226709, -0.000055323215412330015, -0.00013464208918430477, -0.00020671246100372262, -0.00026988665242490956, -0.00032285416030081534, -0.0003646302532886169, -0.0003945978397052112, -0.00041249179821738956, -0.0004183852499507708, -0.00041269318701138354, -0.00039611560711705693, -0.00036962883770277297, -0.0003344302124498643, -0.00029190178936381293, -0.00024355965476127581, -0.00019100097583334814, -0.0001358730574519546, -0.00007979314435225464, -0.000024342137184611088, 0.000029009383738234164, 0.00007891531672131619, 0.00012419676704937842, 0.00016386029242954867, 0.00019711586457920054, 0.00022339916263349984, 0.00024234944561075662, 0.0002538462848586374, 0.00025796163603291, 0.0002549809478537094, 0.0002453517770850021, 0.00022969849532759564, 0.00020875809537386906, 0.00018338444785875874, 0.00015449607180095516, 0.00012306759645970273, 0.00009007562653717549, 0.00005649687929971302, 0.000023260672340825108, -0.00000876133822602926, -0.000038782938435978234, -0.00006611465374230917, -0.00009017969193987633, -0.00011052388056271511, -0.0001268190446981172, -0.00013886259748780043, -0.000146580744606288, -0.000150018341895562, -0.00014932995769211714, -0.00014476758540289084, -0.00013667294731229326, -0.00012545892879240573, -0.00011158939070902697, -0.00009557112119831485, -0.00007793217485231889, -0.00005920706964218722, -0.00003992062913931496, -0.000020575227175562262, -0.0000016413555153330923, 0.00001645471256452401, 0.00003334356571983411, 0.00004871192585529492, 0.00006231047583453306, 0.00007395372186247605, 0.00008352242039123624, 0.0000909600537916604, 0.00009626859110453859, 0.00009950354997327299, 0.00010077099406228367, 0.00010021766977046484, 0.00009802251663221825, 0.00009438985590103045, 0.00008954131982464572, 0.00008371202601526943, 0.0000771324566916655, 0.00007004411185309244, 0.00006263088530625951, 0.00005519205648330811, 0.000047645976665165004, 0.000040890011095128895, 0.000033019509640348576, 0.000029785565597257123, 0.00001565142600136805, 0.00003389476132831667, 0.000011223639487175034
39};
40const float fir32XHigh[512] = { 0.00001695726883388158, 0.000007675466747345142, 0.000009369969074343828, 0.000011279085806814155, 0.000013415806582636418, 0.00001579269222570207, 0.000018421887123570193, 0.00002131472780344219, 0.000024481596821410856, 0.000027931521966672674, 0.00003167253546774698, 0.00003571156802204514, 0.00004005385180859527, 0.00004470260388316558, 0.00004965901316017587, 0.00005492204008152043, 0.00006048845305842843, 0.00006635289665744708, 0.00007250665288501187, 0.0000789384885513108, 0.00008563367774264342, 0.00009257537368625661, 0.00009974252621593992, 0.00010711124658254552, 0.00011465337570751053, 0.00012233800287448705, 0.0001301305708291957, 0.00013799197926318244, 0.00014587929227876596, 0.00015374657372226684, 0.000161543746522965, 0.0001692168951984779, 0.00017670780599526637, 0.0001839550739841348, 0.00019089427588832468, 0.00019745677767765902, 0.00020357062514912954, 0.00020916210971675997, 0.0002141545274069432, 0.00021846768000518762, 0.00022202071352577454, 0.00022473075934779818, 0.00022651220405928228, 0.00022728022159501112, 0.0002269491553453425, 0.00022543136577234978, 0.00022264296187547415, 0.0002184968451898252, 0.00021291103136150344, 0.00020580302601570826, 0.00019709428929377538, 0.00018670887176183611, 0.00017457550213741742, 0.00016062706678436397, 0.0001448013951907719, 0.0001270421247034733, 0.00010729940118257597, 0.00008553038364340326, 0.00006169965119086659, 0.00003577991793585758, 0.000007752990690551504, -0.000022389783957090243, -0.00005464753929697829, -0.00008900834335751579, -0.0001254499161703673, -0.00016393632811230729, -0.0002044234554405178, -0.00024684930385593585, -0.000291146274450184, -0.0003372278537321366, -0.00038499799259658716, -0.00043434821843157495, -0.0004851539797413716, -0.000537279458928773, -0.0005905762825387684, -0.0006448805823763886, -0.0007000164290861944, -0.0007557967574505448, -0.0008120214850938284, -0.0008684784362018723, -0.000924945795118327, -0.0009811922513964621, -0.0010369764412132298, -0.0010920476659586364, -0.0011461469777671403, -0.0011990092591572569, -0.0012503626824092186, -0.001299930348337511, -0.0013474327014007098, -0.0013925895075579725, -0.0014351200205514354, -0.0014747442974922531, -0.0015111829899403478, -0.0015441601544571469, -0.0015734040663474662, -0.0015986504297413274, -0.0016196438588602622, -0.0016361410571864347, -0.0016479110521030553, -0.0016547353303458935, -0.0016564077630374632, -0.0016527363435263026, -0.0016435483225404998, -0.0016286956518505767, -0.0016080553748913375, -0.0015815237521207347, -0.0015490117157615478, -0.0015104528831698094, -0.001465823165002548, -0.0014151394219170251, -0.001358416974565312, -0.0012956736049528927, -0.0012270686956067616, -0.001152656073186285, -0.0010726190880063075, -0.0009871267066080157, -0.0008963952696138223, -0.0008006703533508123, -0.0007002299686741377, -0.0005953836139186328, -0.0004864723381871633, -0.0003738679720682553, -0.00025797228061734796, -0.00013921599931306062, -0.000018057446410729332, 0.00010501885598494471, 0.00022950336047164354, 0.00035486342787289485, 0.00048054572124056215, 0.0006059774135387564, 0.0007305691337782367, 0.0008537161333655127, 0.0009748030963864794, 0.0010932046990955392, 0.0012082904750566619, 0.0013194249851955161, 0.0014259733376771368, 0.001527303743896754, 0.0016227897956312704, 0.001711814456379326, 0.0017937737205012431, 0.0018680795987737412, 0.0019341641568400244, 0.0019914815935822066, 0.002039512595508008, 0.0020777684004774366, 0.002105792845115274, 0.002123165845077641, 0.0021295078285898787, 0.002124481676328226, 0.0021077949476114846, 0.0020792047994666095, 0.0020385191296750853, 0.001985598641791954, 0.0019203611905568305, 0.0018427823960180593, 0.001752897191883342, 0.001650804005569779, 0.0015366612332945767, 0.0014106942008412344, 0.0012731911711610418, 0.0011245069442879076, 0.000965061048379021, 0.0007953395838134734, 0.0006158938813574659, 0.00042733992000728975, 0.0002303572186353618, 0.00002568770969134724, -0.00018586576944706597, -0.0004034418532725961, -0.0006261231182970748, -0.0008529382097618675, -0.001082864585381697, -0.0013148322187650945, -0.0015477265108969297, -0.0017803934493191651, -0.0020116403615744647, -0.0022402481137775445, -0.0024649611350976417, -0.0026845145168539705, -0.002897612541591732, -0.003102955618072987, -0.003299236507882844, -0.003485141406000574, -0.003659365022139062, -0.00382061384161854, -0.003967606725436846, -0.00409908481082949, -0.004213819332243789, -0.004310614319980478, -0.004388311125579514, -0.0044457964607502705, -0.004482009484640724, -0.004495946449098401, -0.004486664669509397, -0.0044532875717221785, -0.004395011784304027, -0.004311110841123746, -0.004200939705466409, -0.004063938803328366, -0.003899639165275879, -0.003707665674118787, -0.003487740462849392, -0.003239684107664783, -0.0029634193257533606, -0.0026589735645932266, -0.002326482192074541, -0.0019661881728099805, -0.0015784424502644535, -0.00116370312050432, -0.0007225376030136994, -0.0002556238139940663, 0.00023625228811795294, 0.0007522007972834952, 0.0012912295603417525, 0.001852242743410755, 0.0024340423454804715, 0.0030353369924133143, 0.0036547491180886605, 0.004290809184794082, 0.004941956691402223, 0.0056065635462084805, 0.006282933872809339, 0.006969280103770163, 0.007663786822563651, 0.008364555769243442, 0.009069657908191059, 0.009777115146719485, 0.010484918318222649, 0.01119103094528153, 0.011893397969184564, 0.012589952875861865, 0.013278625621822146, 0.013957350283575759, 0.014624072800732947, 0.015276759320520217, 0.01591340432108944, 0.016532037930932563, 0.017130733477250897, 0.017707615434328205, 0.018260866419414552, 0.018788735128822624, 0.01928954158394141, 0.019761686205304364, 0.020203653861202073, 0.02061402322906247, 0.020991468166448164, 0.02133476634829793, 0.021642803093792518, 0.02191457536156588, 0.022149196775251796, 0.022345900484487417, 0.022504042427789885, 0.022623105143350686, 0.022702698044173436, 0.022742559681203454, 0.022742559681203454, 0.022702698044173436, 0.022623105143350686, 0.022504042427789885, 0.022345900484487417, 0.022149196775251796, 0.02191457536156588, 0.021642803093792518, 0.02133476634829793, 0.020991468166448164, 0.02061402322906247, 0.020203653861202073, 0.019761686205304364, 0.01928954158394141, 0.018788735128822624, 0.018260866419414552, 0.017707615434328205, 0.017130733477250897, 0.016532037930932563, 0.01591340432108944, 0.015276759320520217, 0.014624072800732947, 0.013957350283575759, 0.013278625621822146, 0.012589952875861865, 0.011893397969184564, 0.01119103094528153, 0.010484918318222649, 0.009777115146719485, 0.009069657908191059, 0.008364555769243442, 0.007663786822563651, 0.006969280103770163, 0.006282933872809339, 0.0056065635462084805, 0.004941956691402223, 0.004290809184794082, 0.0036547491180886605, 0.0030353369924133143, 0.0024340423454804715, 0.001852242743410755, 0.0012912295603417525, 0.0007522007972834952, 0.00023625228811795294, -0.0002556238139940663, -0.0007225376030136994, -0.00116370312050432, -0.0015784424502644535, -0.0019661881728099805, -0.002326482192074541, -0.0026589735645932266, -0.0029634193257533606, -0.003239684107664783, -0.003487740462849392, -0.003707665674118787, -0.003899639165275879, -0.004063938803328366, -0.004200939705466409, -0.004311110841123746, -0.004395011784304027, -0.0044532875717221785, -0.004486664669509397, -0.004495946449098401, -0.004482009484640724, -0.0044457964607502705, -0.004388311125579514, -0.004310614319980478, -0.004213819332243789, -0.00409908481082949, -0.003967606725436846, -0.00382061384161854, -0.003659365022139062, -0.003485141406000574, -0.003299236507882844, -0.003102955618072987, -0.002897612541591732, -0.0026845145168539705, -0.0024649611350976417, -0.0022402481137775445, -0.0020116403615744647, -0.0017803934493191651, -0.0015477265108969297, -0.0013148322187650945, -0.001082864585381697, -0.0008529382097618675, -0.0006261231182970748, -0.0004034418532725961, -0.00018586576944706597, 0.00002568770969134724, 0.0002303572186353618, 0.00042733992000728975, 0.0006158938813574659, 0.0007953395838134734, 0.000965061048379021, 0.0011245069442879076, 0.0012731911711610418, 0.0014106942008412344, 0.0015366612332945767, 0.001650804005569779, 0.001752897191883342, 0.0018427823960180593, 0.0019203611905568305, 0.001985598641791954, 0.0020385191296750853, 0.0020792047994666095, 0.0021077949476114846, 0.002124481676328226, 0.0021295078285898787, 0.002123165845077641, 0.002105792845115274, 0.0020777684004774366, 0.002039512595508008, 0.0019914815935822066, 0.0019341641568400244, 0.0018680795987737412, 0.0017937737205012431, 0.001711814456379326, 0.0016227897956312704, 0.001527303743896754, 0.0014259733376771368, 0.0013194249851955161, 0.0012082904750566619, 0.0010932046990955392, 0.0009748030963864794, 0.0008537161333655127, 0.0007305691337782367, 0.0006059774135387564, 0.00048054572124056215, 0.00035486342787289485, 0.00022950336047164354, 0.00010501885598494471, -0.000018057446410729332, -0.00013921599931306062, -0.00025797228061734796, -0.0003738679720682553, -0.0004864723381871633, -0.0005953836139186328, -0.0007002299686741377, -0.0008006703533508123, -0.0008963952696138223, -0.0009871267066080157, -0.0010726190880063075, -0.001152656073186285, -0.0012270686956067616, -0.0012956736049528927, -0.001358416974565312, -0.0014151394219170251, -0.001465823165002548, -0.0015104528831698094, -0.0015490117157615478, -0.0015815237521207347, -0.0016080553748913375, -0.0016286956518505767, -0.0016435483225404998, -0.0016527363435263026, -0.0016564077630374632, -0.0016547353303458935, -0.0016479110521030553, -0.0016361410571864347, -0.0016196438588602622, -0.0015986504297413274, -0.0015734040663474662, -0.0015441601544571469, -0.0015111829899403478, -0.0014747442974922531, -0.0014351200205514354, -0.0013925895075579725, -0.0013474327014007098, -0.001299930348337511, -0.0012503626824092186, -0.0011990092591572569, -0.0011461469777671403, -0.0010920476659586364, -0.0010369764412132298, -0.0009811922513964621, -0.000924945795118327, -0.0008684784362018723, -0.0008120214850938284, -0.0007557967574505448, -0.0007000164290861944, -0.0006448805823763886, -0.0005905762825387684, -0.000537279458928773, -0.0004851539797413716, -0.00043434821843157495, -0.00038499799259658716, -0.0003372278537321366, -0.000291146274450184, -0.00024684930385593585, -0.0002044234554405178, -0.00016393632811230729, -0.0001254499161703673, -0.00008900834335751579, -0.00005464753929697829, -0.000022389783957090243, 0.000007752990690551504, 0.00003577991793585758, 0.00006169965119086659, 0.00008553038364340326, 0.00010729940118257597, 0.0001270421247034733, 0.0001448013951907719, 0.00016062706678436397, 0.00017457550213741742, 0.00018670887176183611, 0.00019709428929377538, 0.00020580302601570826, 0.00021291103136150344, 0.0002184968451898252, 0.00022264296187547415, 0.00022543136577234978, 0.0002269491553453425, 0.00022728022159501112, 0.00022651220405928228, 0.00022473075934779818, 0.00022202071352577454, 0.00021846768000518762, 0.0002141545274069432, 0.00020916210971675997, 0.00020357062514912954, 0.00019745677767765902, 0.00019089427588832468, 0.0001839550739841348, 0.00017670780599526637, 0.0001692168951984779, 0.000161543746522965, 0.00015374657372226684, 0.00014587929227876596, 0.00013799197926318244, 0.0001301305708291957, 0.00012233800287448705, 0.00011465337570751053, 0.00010711124658254552, 0.00009974252621593992, 0.00009257537368625661, 0.00008563367774264342, 0.0000789384885513108, 0.00007250665288501187, 0.00006635289665744708, 0.00006048845305842843, 0.00005492204008152043, 0.00004965901316017587, 0.00004470260388316558, 0.00004005385180859527, 0.00003571156802204514, 0.00003167253546774698, 0.000027931521966672674, 0.000024481596821410856, 0.00002131472780344219, 0.000018421887123570193, 0.00001579269222570207, 0.000013415806582636418, 0.000011279085806814155, 0.000009369969074343828, 0.000007675466747345142, 0.00001695726883388158
41};
42const float fir64XHigh[1024] = { 0.000022913289467138396, 0.0000053659189590266235, 0.0000059874129268137184, 0.000006651966903409214, 0.000007360859185648702, 0.000008116254962232182, 0.000008919034969234169, 0.000009771649771624484, 0.00001067513223630924, 0.000011631201209261511, 0.000012641797347255405, 0.00001370786337628007, 0.000014831347439124435, 0.00001601386713533323, 0.00001725659281802051, 0.000018561209740219567, 0.00001992924403854817, 0.00002136207377464052, 0.000022860960742170415, 0.00002442737159197627, 0.000026062787460182665, 0.00002776823090942686, 0.00002954497152514943, 0.000031394387750225555, 0.0000333174817796639, 0.00003531515315607694, 0.000037388352711032095, 0.00003953809180607858, 0.000041765124869157065, 0.00004406996003435772, 0.00004645314118637872, 0.00004891512239763599, 0.000051456283434024254, 0.000054076836400090634, 0.00005677675565218903, 0.00005955600371707976, 0.00006241451652786996, 0.0000653520878490535, 0.00006836828400903681, 0.00007146257248874113, 0.00007463447593939765, 0.00007788334878376474, 0.00008120828768996651, 0.00008460822180317937, 0.00008808197111592392, 0.00009162826246394013, 0.00009524561718379787, 0.0000989323217880672, 0.00010268641529207459, 0.00010650572670297642, 0.00011038797758602729, 0.00011433071893118852, 0.00011833127277888537, 0.0001223867211507117, 0.0001264939791526471, 0.0001306498943438022, 0.00013485120459499745, 0.0001390945080465441, 0.0001433761787732808, 0.0001476923508970611, 0.0001520390228045441, 0.00015641203030453322, 0.0001608069510673283, 0.00016521898552431528, 0.0001696430686231646, 0.0001740740165774301, 0.00017850636200629103, 0.0001829343448175031, 0.00018735205242694257, 0.000191753562437378, 0.00019613295450734188, 0.00020048414321002534, 0.00020480094575553342, 0.00020907706346541747, 0.00021330607883745088, 0.00021748145118260308, 0.00022159611743123445, 0.0002256425365807074, 0.0002296129456080256, 0.00023349938436811445, 0.00023729369397980805, 0.00024098757818162363, 0.0002445732198467269, 0.00024804316088030066, 0.00025138980120093706, 0.00025460575109546185, 0.00025768336513093236, 0.000260614166491108, 0.00026338871874574443, 0.000265996883919168, 0.00026842872851524756, 0.0002706745796903796, 0.00027272653793114146, 0.0002745790007011535, 0.0002762259706331217, 0.0002776600678298683, 0.0002788693645809233, 0.0002798371088712506, 0.0002805501390130166, 0.0002810071637276198, 0.0002812218387032567, 0.0002811853995116189, 0.0002808065268305555, 0.000280197444464886, 0.00027926833477321045, 0.0002780409500002217, 0.0002765020258372484, 0.00027464338678576605, 0.00027245845620400524, 0.0002699387312629035, 0.0002670776879725044, 0.0002638682356241208, 0.00026030295633048156, 0.0002563760351381784, 0.00025208079324849864, 0.00024741089077219824, 0.00024236092911432053, 0.00023692535214431433, 0.00023109887243694582, 0.0002248766203312044, 0.00021825436568685826, 0.0002112279751888258, 0.00020379342129965214, 0.00019594765441000844, 0.00018768793613519225, 0.00017901156693343162, 0.0001699163889323255, 0.00016040086314937234, 0.00015046397564821766, 0.00014010492118016657, 0.00012932331202118152, 0.00011811939311034222, 0.00010649390448787931, 0.00009444816369190979, 0.00008198390428241564, 0.00006910334679829026, 0.00005580947004681174, 0.000042105866991998394, 0.000027996578416041823, 0.000013486064917873263, -0.0000014205550195404417, -0.000016717431552354825, -0.00003239824489309241, -0.00004845619470295486, -0.00006488392097284113, -0.00008167344072768395, -0.00009881608266779326, -0.00011630254584578235, -0.000134122927443183, -0.0001522667855569792, -0.00017072306915224178, -0.0001894800112434245, -0.00020852521704417434, -0.00022784574374784246, -0.00024742817471772824, -0.00026725858015049425, -0.00028732242720909374, -0.0003076045740274102, -0.00032808926773727473, -0.0003487602312779994, -0.0003696006180382817, -0.00039059290984859706, -0.00041171900064429, -0.00043296032505169577, -0.00045429794314525324, -0.0004757124161811035, -0.0004971838198071831, -0.0005186919510053738, -0.0005402162469729259, -0.0005617356366067017, -0.0005832284295812785, -0.0006046723908249317, -0.0006260449390330644, -0.0006473231692560336, -0.0006684839703829051, -0.0006895039843981559, -0.000710359669543136, -0.000731027532147202, -0.0007514837903863777, -0.000771704162227947, -0.0007916639719227004, -0.0008113383362587028, -0.0008307023010845163, -0.0008497307715244494, -0.0008683991132471614, -0.0008866831646045461, -0.0009045584634477986, -0.000922000299232565, -0.0009389835464993075, -0.0009554827702629912, -0.0009714727766152153, -0.000986929306593871, -0.0010018296635038234, -0.001016150958603644, -0.0010298692409237303, -0.0010429598373262593, -0.0010553976134962566, -0.001067160927893583, -0.0010782313132298208, -0.0010885880181663468, -0.001098205538071845, -0.0011070578885002702, -0.001115133482641312, -0.0011224205008357393, -0.0011288733610789721, -0.001134502525433292, -0.0011392722062450377, -0.001143172631327465, -0.0011461862709457055, -0.0011482970085184934, -0.0011494916928265647, -0.0011497552449535495, -0.001149075700165883, -0.0011474412643782891, -0.00114484006082293, -0.0011412629577426628, -0.001136700795386366, -0.0011311451534842774, -0.0011245894559787622, -0.0011170279740759658, -0.00110845587457712, -0.0010988693663578895, -0.0010882663676571244, -0.0010766458418348251, -0.0010640072735802143, -0.0010503518239957826, -0.0010356821468104041, -0.0010200018714693214, -0.0010033157303544313, -0.000985629760693179, -0.0009669515631450903, -0.0009472899718477435, -0.0009266549999954207, -0.0009050579826107043, -0.0008825115697880996, -0.0008590299683449941, -0.0008346286688776923, -0.0008093242093186422, -0.0007831344484904399, -0.0007560787238727222, -0.0007281777992737946, -0.0006994535909524986, -0.0006699292108326442, -0.0006396291849638128, -0.0006085793855511994, -0.0005768070388328386, -0.0005443406366124165, -0.0005112097970335273, -0.00047744526762494543, -0.00044307897054750035, -0.00040814409766798117, -0.0003726750006857615, -0.0003367070808797812, -0.00030027682371347247, -0.0002634218056255867, -0.00022618073814697159, -0.00018859337566807589, -0.0001507003780746852, -0.00011254324298833094, -0.00007416428731734924, -0.00003560670730199985, 0.000003085523548063785, 0.000041867710432921324, 0.00008069434503517607, 0.00011951910789599325, 0.00015829502033131527, 0.00019697472076561434, 0.00023551045567409698, 0.000273853967149023, 0.0003119566063859104, 0.0003497693944357311, 0.0003872430841974543, 0.0004243281073189398, 0.00046097456525713825, 0.0004971324209116283, 0.000532751652541773, 0.0005677825044850944, 0.0006021753837116698, 0.0006358806886685873, 0.0006688490401380291, 0.0007010312176003141, 0.0007323781414864676, 0.0007628410971964845, 0.0007923721224082782, 0.0008209242042168955, 0.000848450750988169, 0.0008749056596557243, 0.0009002434389593702, 0.0009244189680276405, 0.0009473882280306129, 0.0009691087604070867, 0.0009895395597688055, 0.0010086402935785192, 0.001026370720635107, 0.0010426918893056865, 0.0010575665723725415, 0.001070959957358151, 0.0010828391940482756, 0.0010931703343583935, 0.0011019202109286796, 0.0011090596487870318, 0.0011145630445275898, 0.0011184043786736124, 0.001120554074746838, 0.0011209917680571181, 0.0011197029937617083, 0.0011166562966771064, 0.0011118464276884984, 0.0011052512953704699, 0.0010968607244598726, 0.0010866638388056194, 0.0010746506726143957, 0.001060816695739025, 0.001045155823714897, 0.0010276670439197623, 0.001008351157157161, 0.0009872096007023739, 0.0009642482949221396, 0.0009394748128782626, 0.0009128984193201994, 0.0008845315727779604, 0.0008543893284299989, 0.0008224889133179016, 0.0007888494392687725, 0.0007534931574735429, 0.0007164452155151603, 0.0006777324637972142, 0.0006373842981041069, 0.0005954329812500334, 0.0005519133506181678, 0.0005068625728051466, 0.00046032000323413937, 0.0004123276053463404, 0.00036292989933373846, 0.00031217386261437, 0.00026010877383320427, 0.0002067859842737511, 0.00015225938436383264, 0.0000965854576875034, 0.00003982286749323625, -0.0000179677059230694, -0.00007672351611450484, -0.00013637955229787953, -0.00019686867752685767, -0.00025812174980963077, -0.0003200676217906621, -0.0003826333414430741, -0.0004457441136063003, -0.0005093232294712956, -0.0005732921654282367, -0.00063757077202539, -0.0007020774864868515, -0.0007667293014381896, -0.000831441760556577, -0.0008961290102706094, -0.0009607038567017785, -0.0010250779361669813, -0.0010891617777670183, -0.0011528648888359837, -0.0012160958997774157, -0.001278762708717709, -0.0013407725703934634, -0.0014020320140358438, -0.0014624469501256642, -0.0015219229140548082, -0.0015803651881932726, -0.0016376788121915474, -0.0016937685933671551, -0.0017485393883605888, -0.0018018962922161296, -0.001853744622258798, -0.0019039899562331246, -0.0019525381533939561, -0.001999295568971595, -0.0020441692691091497, -0.0020870671590057003, -0.0021278980935438433, -0.002166571859834074, -0.0022029993905251185, -0.002237092766198614, -0.0022687651100535395, -0.0022979310017697827, -0.002324506765063281, -0.002348410532134342, -0.0023695620904663124, -0.002387882877950405, -0.0024032962764901395, -0.002415727498004215, -0.0024251041062769677, -0.0024313565047816045, -0.002434417346479244, -0.002434221285942243, -0.0024307050845577974, -0.0024238084309784105, -0.0024134744272458933, -0.0023996490147598095, -0.0023822808507958644, -0.002361320552774569, -0.0023367219180767287, -0.0023084438037733195, -0.0022764477146557157, -0.0022406968577953325, -0.0022011577213322964, -0.002157802353593739, -0.0021106071299345493, -0.0020595468628108226, -0.0020046032562800113, -0.0019457662560451291, -0.0018830178785251698, -0.0018163568650903469, -0.0017457762721459498, -0.0016712774888046648, -0.0015928655517344435, -0.0015105465040104254, -0.0014243352289427366, -0.001334245183172585, -0.0012402971508224737, -0.001142515914146565, -0.001040927635788706, -0.0009355648118899454, -0.0008264637875103248, -0.0007136636835055012, -0.0005972078914059598, -0.00047714437051389635, -0.0003535251665308113, -0.00022640509673521253, -0.00009584304366831371, 0.00003809737583447662, 0.000175349189952471, 0.0003158420005530984, 0.00045950168388054715, 0.0006062501796784794, 0.0007560055720837391, 0.0009086826695053086, 0.0010641930047446363, 0.0012224448181092644, 0.001383342762009772, 0.0015467879147444098, 0.0017126784900794694, 0.0018809098064416602, 0.002051374038980255, 0.00222396027153397, 0.0023985546780390995, 0.00257504080294078, 0.002753299611825817, 0.0029332096760600742, 0.0031146471999652266, 0.00329748586141485, 0.0034815970640890118, 0.0036668502022383534, 0.0038531128164763875, 0.004040250654892737, 0.004228127702681014, 0.004416606372309768, 0.004605547604211298, 0.004794811008263008, 0.004984255005236749, 0.005173736922644052, 0.005363113237573505, 0.005552239713188401, 0.005740971456077898, 0.005929163001618124, 0.006116668526010137, 0.006303342137957434, 0.006489037895773713, 0.006673609810898314, 0.006856912040272674, 0.007038799176867838, 0.007219126469467923, 0.00739774981209459, 0.007574525856115118, 0.00774931217821552, 0.007921967422212448, 0.008092351521264793, 0.008260325786691655, 0.0084257530686515, 0.008588497916423984, 0.008748426684777003, 0.008905407631376806, 0.00905931090707958, 0.009210008945621842, 0.009357376767512868, 0.0095012918586961, 0.009641634222518982, 0.009778286439590446, 0.009911133869143742, 0.010040064826756685, 0.010164970855541414, 0.010285747084632053, 0.01040229168758197, 0.010514505774592219, 0.010622294054150362, 0.010725565119997272, 0.010824231613731668, 0.010918209734582957, 0.011007419162404072, 0.01109178352506284, 0.011171230745049823, 0.011245693678816775, 0.011315108689601935, 0.011379415321537538, 0.011438558592290933, 0.011492488522300438, 0.011541158942797008, 0.01158452699694985, 0.011622555335241312, 0.011655213312299231, 0.011682471044774176, 0.011704304362857888, 0.011720697805424401, 0.011731632913262123, 0.011737103714478897, 0.011737103714478897, 0.011731632913262123, 0.011720697805424401, 0.011704304362857888, 0.011682471044774176, 0.011655213312299231, 0.011622555335241312, 0.01158452699694985, 0.011541158942797008, 0.011492488522300438, 0.011438558592290933, 0.011379415321537538, 0.011315108689601935, 0.011245693678816775, 0.011171230745049823, 0.01109178352506284, 0.011007419162404072, 0.010918209734582957, 0.010824231613731668, 0.010725565119997272, 0.010622294054150362, 0.010514505774592219, 0.01040229168758197, 0.010285747084632053, 0.010164970855541414, 0.010040064826756685, 0.009911133869143742, 0.009778286439590446, 0.009641634222518982, 0.0095012918586961, 0.009357376767512868, 0.009210008945621842, 0.00905931090707958, 0.008905407631376806, 0.008748426684777003, 0.008588497916423984, 0.0084257530686515, 0.008260325786691655, 0.008092351521264793, 0.007921967422212448, 0.00774931217821552, 0.007574525856115118, 0.00739774981209459, 0.007219126469467923, 0.007038799176867838, 0.006856912040272674, 0.006673609810898314, 0.006489037895773713, 0.006303342137957434, 0.006116668526010137, 0.005929163001618124, 0.005740971456077898, 0.005552239713188401, 0.005363113237573505, 0.005173736922644052, 0.004984255005236749, 0.004794811008263008, 0.004605547604211298, 0.004416606372309768, 0.004228127702681014, 0.004040250654892737, 0.0038531128164763875, 0.0036668502022383534, 0.0034815970640890118, 0.00329748586141485, 0.0031146471999652266, 0.0029332096760600742, 0.002753299611825817, 0.00257504080294078, 0.0023985546780390995, 0.00222396027153397, 0.002051374038980255, 0.0018809098064416602, 0.0017126784900794694, 0.0015467879147444098, 0.001383342762009772, 0.0012224448181092644, 0.0010641930047446363, 0.0009086826695053086, 0.0007560055720837391, 0.0006062501796784794, 0.00045950168388054715, 0.0003158420005530984, 0.000175349189952471, 0.00003809737583447662, -0.00009584304366831371, -0.00022640509673521253, -0.0003535251665308113, -0.00047714437051389635, -0.0005972078914059598, -0.0007136636835055012, -0.0008264637875103248, -0.0009355648118899454, -0.001040927635788706, -0.001142515914146565, -0.0012402971508224737, -0.001334245183172585, -0.0014243352289427366, -0.0015105465040104254, -0.0015928655517344435, -0.0016712774888046648, -0.0017457762721459498, -0.0018163568650903469, -0.0018830178785251698, -0.0019457662560451291, -0.0020046032562800113, -0.0020595468628108226, -0.0021106071299345493, -0.002157802353593739, -0.0022011577213322964, -0.0022406968577953325, -0.0022764477146557157, -0.0023084438037733195, -0.0023367219180767287, -0.002361320552774569, -0.0023822808507958644, -0.0023996490147598095, -0.0024134744272458933, -0.0024238084309784105, -0.0024307050845577974, -0.002434221285942243, -0.002434417346479244, -0.0024313565047816045, -0.0024251041062769677, -0.002415727498004215, -0.0024032962764901395, -0.002387882877950405, -0.0023695620904663124, -0.002348410532134342, -0.002324506765063281, -0.0022979310017697827, -0.0022687651100535395, -0.002237092766198614, -0.0022029993905251185, -0.002166571859834074, -0.0021278980935438433, -0.0020870671590057003, -0.0020441692691091497, -0.001999295568971595, -0.0019525381533939561, -0.0019039899562331246, -0.001853744622258798, -0.0018018962922161296, -0.0017485393883605888, -0.0016937685933671551, -0.0016376788121915474, -0.0015803651881932726, -0.0015219229140548082, -0.0014624469501256642, -0.0014020320140358438, -0.0013407725703934634, -0.001278762708717709, -0.0012160958997774157, -0.0011528648888359837, -0.0010891617777670183, -0.0010250779361669813, -0.0009607038567017785, -0.0008961290102706094, -0.000831441760556577, -0.0007667293014381896, -0.0007020774864868515, -0.00063757077202539, -0.0005732921654282367, -0.0005093232294712956, -0.0004457441136063003, -0.0003826333414430741, -0.0003200676217906621, -0.00025812174980963077, -0.00019686867752685767, -0.00013637955229787953, -0.00007672351611450484, -0.0000179677059230694, 0.00003982286749323625, 0.0000965854576875034, 0.00015225938436383264, 0.0002067859842737511, 0.00026010877383320427, 0.00031217386261437, 0.00036292989933373846, 0.0004123276053463404, 0.00046032000323413937, 0.0005068625728051466, 0.0005519133506181678, 0.0005954329812500334, 0.0006373842981041069, 0.0006777324637972142, 0.0007164452155151603, 0.0007534931574735429, 0.0007888494392687725, 0.0008224889133179016, 0.0008543893284299989, 0.0008845315727779604, 0.0009128984193201994, 0.0009394748128782626, 0.0009642482949221396, 0.0009872096007023739, 0.001008351157157161, 0.0010276670439197623, 0.001045155823714897, 0.001060816695739025, 0.0010746506726143957, 0.0010866638388056194, 0.0010968607244598726, 0.0011052512953704699, 0.0011118464276884984, 0.0011166562966771064, 0.0011197029937617083, 0.0011209917680571181, 0.001120554074746838, 0.0011184043786736124, 0.0011145630445275898, 0.0011090596487870318, 0.0011019202109286796, 0.0010931703343583935, 0.0010828391940482756, 0.001070959957358151, 0.0010575665723725415, 0.0010426918893056865, 0.001026370720635107, 0.0010086402935785192, 0.0009895395597688055, 0.0009691087604070867, 0.0009473882280306129, 0.0009244189680276405, 0.0009002434389593702, 0.0008749056596557243, 0.000848450750988169, 0.0008209242042168955, 0.0007923721224082782, 0.0007628410971964845, 0.0007323781414864676, 0.0007010312176003141, 0.0006688490401380291, 0.0006358806886685873, 0.0006021753837116698, 0.0005677825044850944, 0.000532751652541773, 0.0004971324209116283, 0.00046097456525713825, 0.0004243281073189398, 0.0003872430841974543, 0.0003497693944357311, 0.0003119566063859104, 0.000273853967149023, 0.00023551045567409698, 0.00019697472076561434, 0.00015829502033131527, 0.00011951910789599325, 0.00008069434503517607, 0.000041867710432921324, 0.000003085523548063785, -0.00003560670730199985, -0.00007416428731734924, -0.00011254324298833094, -0.0001507003780746852, -0.00018859337566807589, -0.00022618073814697159, -0.0002634218056255867, -0.00030027682371347247, -0.0003367070808797812, -0.0003726750006857615, -0.00040814409766798117, -0.00044307897054750035, -0.00047744526762494543, -0.0005112097970335273, -0.0005443406366124165, -0.0005768070388328386, -0.0006085793855511994, -0.0006396291849638128, -0.0006699292108326442, -0.0006994535909524986, -0.0007281777992737946, -0.0007560787238727222, -0.0007831344484904399, -0.0008093242093186422, -0.0008346286688776923, -0.0008590299683449941, -0.0008825115697880996, -0.0009050579826107043, -0.0009266549999954207, -0.0009472899718477435, -0.0009669515631450903, -0.000985629760693179, -0.0010033157303544313, -0.0010200018714693214, -0.0010356821468104041, -0.0010503518239957826, -0.0010640072735802143, -0.0010766458418348251, -0.0010882663676571244, -0.0010988693663578895, -0.00110845587457712, -0.0011170279740759658, -0.0011245894559787622, -0.0011311451534842774, -0.001136700795386366, -0.0011412629577426628, -0.00114484006082293, -0.0011474412643782891, -0.001149075700165883, -0.0011497552449535495, -0.0011494916928265647, -0.0011482970085184934, -0.0011461862709457055, -0.001143172631327465, -0.0011392722062450377, -0.001134502525433292, -0.0011288733610789721, -0.0011224205008357393, -0.001115133482641312, -0.0011070578885002702, -0.001098205538071845, -0.0010885880181663468, -0.0010782313132298208, -0.001067160927893583, -0.0010553976134962566, -0.0010429598373262593, -0.0010298692409237303, -0.001016150958603644, -0.0010018296635038234, -0.000986929306593871, -0.0009714727766152153, -0.0009554827702629912, -0.0009389835464993075, -0.000922000299232565, -0.0009045584634477986, -0.0008866831646045461, -0.0008683991132471614, -0.0008497307715244494, -0.0008307023010845163, -0.0008113383362587028, -0.0007916639719227004, -0.000771704162227947, -0.0007514837903863777, -0.000731027532147202, -0.000710359669543136, -0.0006895039843981559, -0.0006684839703829051, -0.0006473231692560336, -0.0006260449390330644, -0.0006046723908249317, -0.0005832284295812785, -0.0005617356366067017, -0.0005402162469729259, -0.0005186919510053738, -0.0004971838198071831, -0.0004757124161811035, -0.00045429794314525324, -0.00043296032505169577, -0.00041171900064429, -0.00039059290984859706, -0.0003696006180382817, -0.0003487602312779994, -0.00032808926773727473, -0.0003076045740274102, -0.00028732242720909374, -0.00026725858015049425, -0.00024742817471772824, -0.00022784574374784246, -0.00020852521704417434, -0.0001894800112434245, -0.00017072306915224178, -0.0001522667855569792, -0.000134122927443183, -0.00011630254584578235, -0.00009881608266779326, -0.00008167344072768395, -0.00006488392097284113, -0.00004845619470295486, -0.00003239824489309241, -0.000016717431552354825, -0.0000014205550195404417, 0.000013486064917873263, 0.000027996578416041823, 0.000042105866991998394, 0.00005580947004681174, 0.00006910334679829026, 0.00008198390428241564, 0.00009444816369190979, 0.00010649390448787931, 0.00011811939311034222, 0.00012932331202118152, 0.00014010492118016657, 0.00015046397564821766, 0.00016040086314937234, 0.0001699163889323255, 0.00017901156693343162, 0.00018768793613519225, 0.00019594765441000844, 0.00020379342129965214, 0.0002112279751888258, 0.00021825436568685826, 0.0002248766203312044, 0.00023109887243694582, 0.00023692535214431433, 0.00024236092911432053, 0.00024741089077219824, 0.00025208079324849864, 0.0002563760351381784, 0.00026030295633048156, 0.0002638682356241208, 0.0002670776879725044, 0.0002699387312629035, 0.00027245845620400524, 0.00027464338678576605, 0.0002765020258372484, 0.0002780409500002217, 0.00027926833477321045, 0.000280197444464886, 0.0002808065268305555, 0.0002811853995116189, 0.0002812218387032567, 0.0002810071637276198, 0.0002805501390130166, 0.0002798371088712506, 0.0002788693645809233, 0.0002776600678298683, 0.0002762259706331217, 0.0002745790007011535, 0.00027272653793114146, 0.0002706745796903796, 0.00026842872851524756, 0.000265996883919168, 0.00026338871874574443, 0.000260614166491108, 0.00025768336513093236, 0.00025460575109546185, 0.00025138980120093706, 0.00024804316088030066, 0.0002445732198467269, 0.00024098757818162363, 0.00023729369397980805, 0.00023349938436811445, 0.0002296129456080256, 0.0002256425365807074, 0.00022159611743123445, 0.00021748145118260308, 0.00021330607883745088, 0.00020907706346541747, 0.00020480094575553342, 0.00020048414321002534, 0.00019613295450734188, 0.000191753562437378, 0.00018735205242694257, 0.0001829343448175031, 0.00017850636200629103, 0.0001740740165774301, 0.0001696430686231646, 0.00016521898552431528, 0.0001608069510673283, 0.00015641203030453322, 0.0001520390228045441, 0.0001476923508970611, 0.0001433761787732808, 0.0001390945080465441, 0.00013485120459499745, 0.0001306498943438022, 0.0001264939791526471, 0.0001223867211507117, 0.00011833127277888537, 0.00011433071893118852, 0.00011038797758602729, 0.00010650572670297642, 0.00010268641529207459, 0.0000989323217880672, 0.00009524561718379787, 0.00009162826246394013, 0.00008808197111592392, 0.00008460822180317937, 0.00008120828768996651, 0.00007788334878376474, 0.00007463447593939765, 0.00007146257248874113, 0.00006836828400903681, 0.0000653520878490535, 0.00006241451652786996, 0.00005955600371707976, 0.00005677675565218903, 0.000054076836400090634, 0.000051456283434024254, 0.00004891512239763599, 0.00004645314118637872, 0.00004406996003435772, 0.000041765124869157065, 0.00003953809180607858, 0.000037388352711032095, 0.00003531515315607694, 0.0000333174817796639, 0.000031394387750225555, 0.00002954497152514943, 0.00002776823090942686, 0.000026062787460182665, 0.00002442737159197627, 0.000022860960742170415, 0.00002136207377464052, 0.00001992924403854817, 0.000018561209740219567, 0.00001725659281802051, 0.00001601386713533323, 0.000014831347439124435, 0.00001370786337628007, 0.000012641797347255405, 0.000011631201209261511, 0.00001067513223630924, 0.000009771649771624484, 0.000008919034969234169, 0.000008116254962232182, 0.000007360859185648702, 0.000006651966903409214, 0.0000059874129268137184, 0.0000053659189590266235, 0.000022913289467138396
43};
44
45const float* firCoeffs[COEFFS_SIZE] = { fir2XLow, fir4XLow, fir8XLow, fir16XLow, fir32XLow, fir64XLow, fir2XHigh, fir4XHigh, fir8XHigh, fir16XHigh, fir32XHigh, fir64XHigh
46};
47
17const float shaper1[SHAPER1_TABLE_SIZE] = {0.333061f, 0.333022f, 0.332983f, 0.332944f, 0.332905f, 0.332866f, 0.332827f, 0.332788f, 0.332749f, 0.33271f, 0.332671f, 0.332632f, 0.332593f, 0.332554f, 0.332515f, 0.332475f, 0.332436f, 0.332397f, 0.332358f, 0.332319f,48const float shaper1[SHAPER1_TABLE_SIZE] = {0.333061f, 0.333022f, 0.332983f, 0.332944f, 0.332905f, 0.332866f, 0.332827f, 0.332788f, 0.332749f, 0.33271f, 0.332671f, 0.332632f, 0.332593f, 0.332554f, 0.332515f, 0.332475f, 0.332436f, 0.332397f, 0.332358f, 0.332319f,
180.33228f, 0.33224f, 0.332201f, 0.332162f, 0.332123f, 0.332083f, 0.332044f, 0.332005f, 0.331966f, 0.331926f, 0.331887f, 0.331848f, 0.331808f, 0.331769f, 0.33173f, 0.33169f, 0.331651f, 0.331611f, 0.331572f, 0.331533f,490.33228f, 0.33224f, 0.332201f, 0.332162f, 0.332123f, 0.332083f, 0.332044f, 0.332005f, 0.331966f, 0.331926f, 0.331887f, 0.331848f, 0.331808f, 0.331769f, 0.33173f, 0.33169f, 0.331651f, 0.331611f, 0.331572f, 0.331533f,
190.331493f, 0.331454f, 0.331414f, 0.331375f, 0.331335f, 0.331296f, 0.331256f, 0.331217f, 0.331177f, 0.331138f, 0.331098f, 0.331059f, 0.331019f, 0.330979f, 0.33094f, 0.3309f, 0.330861f, 0.330821f, 0.330781f, 0.330742f,500.331493f, 0.331454f, 0.331414f, 0.331375f, 0.331335f, 0.331296f, 0.331256f, 0.331217f, 0.331177f, 0.331138f, 0.331098f, 0.331059f, 0.331019f, 0.330979f, 0.33094f, 0.3309f, 0.330861f, 0.330821f, 0.330781f, 0.330742f,
LEAF/Src/leaf-utilities.c+2−2
@@ -12,14 +12,14 @@ · 11 unmodified lines
12#if _WIN32 || _WIN6412#if _WIN32 || _WIN64
13 13
14#include "..\Inc\leaf-utilities.h"14#include "..\Inc\leaf-utilities.h"
15#include "..\Inc\leaf-wavetables.h"15#include "..\Inc\leaf-tables.h"
16#include "..\leaf.h"16#include "..\leaf.h"
17#include "..\Inc\d_fft_mayer.h"17#include "..\Inc\d_fft_mayer.h"
18 18
19#else19#else
20 20
21#include "../Inc/leaf-utilities.h"21#include "../Inc/leaf-utilities.h"
22#include "../Inc/leaf-wavetables.h"22#include "../Inc/leaf-tables.h"
23#include "../leaf.h"23#include "../leaf.h"
24#include "../Externals/d_fft_mayer.h"24#include "../Externals/d_fft_mayer.h"
25 25
LEAF/leaf.h+2−2
@@ -36,7 +36,7 @@ · 35 unmodified lines
36#include ".\Inc\leaf-sample.h"36#include ".\Inc\leaf-sample.h"
37#include ".\Inc\leaf-crusher.h"37#include ".\Inc\leaf-crusher.h"
38#include ".\Inc\leaf-wavefolder.h"38#include ".\Inc\leaf-wavefolder.h"
39#include ".\Inc\leaf-wavetables.h"39#include ".\Inc\leaf-tables.h"
40 40
41#else41#else
42 42
@@ -57,7 +57,7 @@ · 14 unmodified lines
57#include "./Inc/leaf-sample.h"57#include "./Inc/leaf-sample.h"
58#include "./Inc/leaf-crusher.h"58#include "./Inc/leaf-crusher.h"
59#include "./Inc/leaf-wavefolder.h"59#include "./Inc/leaf-wavefolder.h"
60#include "./Inc/leaf-wavetables.h"60#include "./Inc/leaf-tables.h"
61 61
62#endif62#endif
63 63
LEAF_JUCEPlugin/LEAF.jucer+2−4
@@ -45,8 +45,7 @@ · 44 unmodified lines
45 <FILE id="bpUZCA" name="leaf-crusher.h" compile="0" resource="0" file="../LEAF/Inc/leaf-crusher.h"/>45 <FILE id="bpUZCA" name="leaf-crusher.h" compile="0" resource="0" file="../LEAF/Inc/leaf-crusher.h"/>
46 <FILE id="PRkOp2" name="leaf-wavefolder.h" compile="0" resource="0"46 <FILE id="PRkOp2" name="leaf-wavefolder.h" compile="0" resource="0"
47 file="../LEAF/Inc/leaf-wavefolder.h"/>47 file="../LEAF/Inc/leaf-wavefolder.h"/>
48 <FILE id="KpGzKv" name="leaf-wavetables.h" compile="0" resource="0"48 <FILE id="JvZKsP" name="leaf-tables.h" compile="0" resource="0" file="../LEAF/Inc/leaf-tables.h"/>
49 file="../LEAF/Inc/leaf-wavetables.h"/>
50 </GROUP>49 </GROUP>
51 <GROUP id="{A3AE8C8C-29BA-ADB3-DD7D-EEDC2F7B58F3}" name="Src">50 <GROUP id="{A3AE8C8C-29BA-ADB3-DD7D-EEDC2F7B58F3}" name="Src">
52 <FILE id="HbG7LO" name="leaf-808.c" compile="1" resource="0" file="../LEAF/Src/leaf-808.c"/>51 <FILE id="HbG7LO" name="leaf-808.c" compile="1" resource="0" file="../LEAF/Src/leaf-808.c"/>
@@ -70,8 +69,7 @@ · 17 unmodified lines
70 <FILE id="Oymcac" name="leaf-crusher.c" compile="1" resource="0" file="../LEAF/Src/leaf-crusher.c"/>69 <FILE id="Oymcac" name="leaf-crusher.c" compile="1" resource="0" file="../LEAF/Src/leaf-crusher.c"/>
71 <FILE id="LVoaGm" name="leaf-wavefolder.c" compile="1" resource="0"70 <FILE id="LVoaGm" name="leaf-wavefolder.c" compile="1" resource="0"
72 file="../LEAF/Src/leaf-wavefolder.c"/>71 file="../LEAF/Src/leaf-wavefolder.c"/>
73 <FILE id="HRk07h" name="leaf-wavetables.c" compile="1" resource="0"72 <FILE id="TxA1Gg" name="leaf-tables.c" compile="1" resource="0" file="../LEAF/Src/leaf-tables.c"/>
74 file="../LEAF/Src/leaf-wavetables.c"/>
75 <FILE id="BFkVGu" name="leaf.c" compile="1" resource="0" file="../LEAF/Src/leaf.c"/>73 <FILE id="BFkVGu" name="leaf.c" compile="1" resource="0" file="../LEAF/Src/leaf.c"/>
76 </GROUP>74 </GROUP>
77 <FILE id="dmljDQ" name="leaf.h" compile="0" resource="0" file="../LEAF/leaf.h"/>75 <FILE id="dmljDQ" name="leaf.h" compile="0" resource="0" file="../LEAF/leaf.h"/>
LEAF_JUCEPlugin/Source/MyTest.cpp+34−63
@@ -16,87 +16,58 @@ static void leaf_pool_report(void); · 15 unmodified lines
16static void leaf_pool_dump(void);16static void leaf_pool_dump(void);
17static void run_pool_test(void);17static void run_pool_test(void);
18 18
19float mix = 0.f;19tOversampler os;
20float fx = 1.f;20tNoise noise;
21tCycle sine;
21 22
22#define NUM_GRAINS 2023float gain;
23
24
25
26tTapeDelay delay;
27
28float feedback = 0.f;
29
30tBuffer buff;
31tSampler samp;
32
33tCycle osc;
34 24
35void LEAFTest_init (float sampleRate, int blockSize)25void LEAFTest_init (float sampleRate, int blockSize)
36{26{
37 LEAF_init(sampleRate, blockSize, &getRandomFloat);27 LEAF_init(sampleRate, blockSize, &getRandomFloat);
38 28
39 // Init and set record29 tOversampler_init(&os, 2, OFALSE);
40 tBuffer_init (&buff, leaf.sampleRate * 1.f); // init, 1 second buffer30 tNoise_init(&noise, WhiteNoise);
41 tBuffer_setRecordMode (&buff, RecordOneShot); // RecordOneShot records once through31 tCycle_init(&sine);
42 tBuffer_record(&buff); // starts recording32 tCycle_setFreq(&sine, 220);
43
44 // Init and set play
45 tSampler_init (&samp, &buff); // init, give address of record buffer
46 tSampler_setMode (&samp, PlayLoop); //set in Loop Mode
47 tSampler_setRate(&samp, 1.f); // Rate of 1.0
48 tSampler_play(&samp); // start spitting samples out
49
50 tCycle_init(&osc);
51 33
52 leaf_pool_report();34 leaf_pool_report();
53}35}
54 36
55float depth = 1.0f;37float nothing(float val) {
38 return val;
39}
56 40
57float LEAFTest_tick (float input)41float LEAFTest_tick (float input)
58{42{
59 float sample = 0.f;43 float sample = tCycle_tick(&sine);
60 44
61 tBuffer_tick(&buff, input); // ticking the buffer records in to buffer45 //sample *= gain*10.0f;
62
63 tSampler_setRate(&samp, tCycle_tick(&osc) * depth);
64
65 // dont tick sampler if buffer not active (not recording)
66 if (buff.active == 0)
67 {
68 sample = tSampler_tick(&samp); // ticking sampler loops sample
69 }
70 46
47 sample *= tOversampler_tick(&os, sample, nothing);
71 48
72 return sample;49 return sample * gain;
73}50}
74 51
52
53
75bool lastState = false, lastPlayState = false;54bool lastState = false, lastPlayState = false;
76void LEAFTest_block (void)55void LEAFTest_block (void)
77{56{
78 bool state = getButtonState("record");57 float val = getSliderValue("mod freq");
79 58
80 if (state)59 float freq = 200 + 1000 * val;
81 {60
82 setButtonState("record", false);61 tCycle_setFreq(&sine, freq);
83 tBuffer_record(&buff);62
84 }63 DBG("mod freq: " + String(freq));
85 64
86 float val = getSliderValue("mod freq");65 val = getSliderValue("mod depth");
87 66
88 float freq = 0.1 + 999.9 * val;67 gain = val;
89 68
90 tCycle_setFreq(&osc, freq);69
91 70
92 DBG("mod freq: " + String(freq));
93
94 val = getSliderValue("mod depth");
95
96 depth = 0.1 + val * 15.9f;
97
98 DBG("mod depth: " + String(depth));
99
100 71
101}72}
102 73
@@ -191,4 +162,4 @@ static void run_pool_test(void) · 88 unmodified lines
191 162
192 leaf_pool_dump();163 leaf_pool_dump();
193}164}
194 165

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t