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
77 ==============================================================================*/
88
99 #ifndef LEAF_FILTER_H_INCLUDED
10−#define LEAF_FILTER_H_INCLUDED
11−
12−#ifdef __cplusplus
13−extern "C" {
10+#define LEAF_FILTER_H_INCLUDED
11+
12+#ifdef __cplusplus
13+extern "C" {
1414 #endif
1515
16−//==============================================================================
16+//==============================================================================
1717
1818 #include "leaf-globals.h"
19−#include "leaf-math.h"
20−
19+#include "leaf-math.h"
20+
2121 #include "leaf-delay.h"
2222
23−#include "leaf-wavetables.h"
24−
25−//==============================================================================
26−
27−/* tAllpass: Schroeder allpass. Comb-filter with feedforward and feedback. */
28−typedef struct _tAllpass
29−{
30− float gain;
31−
32− tDelayL delay;
33−
34− float lastOut;
35−
36−} tAllpass;
37−
38−void tAllpass_init (tAllpass* const, float initDelay, uint32_t maxDelay);
39−void tAllpass_free (tAllpass* const);
40−
41−float tAllpass_tick (tAllpass* const, float input);
42−void tAllpass_setGain (tAllpass* const, float gain);
43−void tAllpass_setDelay (tAllpass* const f, float delay);
44−
45−
46−//==============================================================================
23+#include "leaf-tables.h"
24+
25+//==============================================================================
26+
27+/* tAllpass: Schroeder allpass. Comb-filter with feedforward and feedback. */
28+typedef struct _tAllpass
29+{
30+ float gain;
31+
32+ tDelayL delay;
33+
34+ float lastOut;
35+
36+} tAllpass;
37+
38+void tAllpass_init (tAllpass* const, float initDelay, uint32_t maxDelay);
39+void tAllpass_free (tAllpass* const);
40+
41+float tAllpass_tick (tAllpass* const, float input);
42+void tAllpass_setGain (tAllpass* const, float gain);
43+void tAllpass_setDelay (tAllpass* const f, float delay);
44+
45+
46+//==============================================================================
4747
4848 /* tOnePole: OnePole filter, reimplemented from STK (Cook and Scavone). */
4949 typedef struct _tOnePole
5050 {
51− float gain;
52− float a0,a1;
53− float b0,b1;
54−
55− float coef;
56−
51+ float gain;
52+ float a0,a1;
53+ float b0,b1;
54+
55+ float coef;
56+
5757 float freq;
5858
5959 float lastIn, lastOut;
@@ -66,12 +66,12 @@ void tOnePole_free (tOnePole* const); · 6 unmodified lines
6666 float tOnePole_tick (tOnePole* const, float input);
6767 void tOnePole_setB0 (tOnePole* const, float b0);
6868 void tOnePole_setA1 (tOnePole* const, float a1);
69−void tOnePole_setPole (tOnePole* const, float thePole);
69+void tOnePole_setPole (tOnePole* const, float thePole);
7070 void tOnePole_setFreq (tOnePole* const, float freq);
7171 void tOnePole_setCoefficients(tOnePole* const, float b0, float a1);
7272 void tOnePole_setGain (tOnePole* const, float gain);
73−
74−//==============================================================================
73+
74+//==============================================================================
7575
7676 /* TwoPole filter, reimplemented from STK (Cook and Scavone). */
7777 typedef struct _tTwoPole
@@ -98,7 +98,7 @@ void tTwoPole_setResonance (tTwoPole* const, float freq, float radius, · 20 unmodified lines
9898 void tTwoPole_setCoefficients(tTwoPole* const, float b0, float a1, float a2);
9999 void tTwoPole_setGain (tTwoPole* const, float gain);
100100
101−//==============================================================================
101+//==============================================================================
102102
103103 /* OneZero filter, reimplemented from STK (Cook and Scavone). */
104104 typedef struct _tOneZero
@@ -118,8 +118,8 @@ void tOneZero_setZero (tOneZero* const, float theZero); · 13 unmodified lines
118118 void tOneZero_setCoefficients(tOneZero* const, float b0, float b1);
119119 void tOneZero_setGain (tOneZero* const, float gain);
120120 float tOneZero_getPhaseDelay(tOneZero *f, float frequency );
121−
122−//==============================================================================
121+
122+//==============================================================================
123123
124124 /* TwoZero filter, reimplemented from STK (Cook and Scavone). */
125125 typedef struct _tTwoZero
@@ -143,8 +143,8 @@ void tTwoZero_setB2 (tTwoZero* const, float b2); · 17 unmodified lines
143143 void tTwoZero_setNotch (tTwoZero* const, float frequency, float radius);
144144 void tTwoZero_setCoefficients(tTwoZero* const, float b0, float b1, float b2);
145145 void tTwoZero_setGain (tTwoZero* const, float gain);
146−
147−//==============================================================================
146+
147+//==============================================================================
148148
149149 /* PoleZero filter, reimplemented from STK (Cook and Scavone). */
150150 typedef struct _tPoleZero
@@ -168,8 +168,8 @@ void tPoleZero_setCoefficients (tPoleZero* const, float b0, float b1, · 17 unmodified lines
168168 void tPoleZero_setAllpass (tPoleZero* const, float coeff);
169169 void tPoleZero_setBlockZero (tPoleZero* const, float thePole);
170170 void tPoleZero_setGain (tPoleZero* const, float gain);
171−
172−//==============================================================================
171+
172+//==============================================================================
173173
174174 /* BiQuad filter, reimplemented from STK (Cook and Scavone). */
175175 typedef struct _tBiQuad
@@ -198,8 +198,8 @@ void tBiQuad_setNotch (tBiQuad* const, float freq, float radius); · 22 unmodified lines
198198 void tBiQuad_setResonance (tBiQuad* const, float freq, float radius, oBool normalize);
199199 void tBiQuad_setCoefficients(tBiQuad* const, float b0, float b1, float b2, float a1, float a2);
200200 void tBiQuad_setGain (tBiQuad* const, float gain);
201−
202−//==============================================================================
201+
202+//==============================================================================
203203
204204 /* State Variable Filter, algorithm from Andy Simper. */
205205 typedef enum SVFType
@@ -226,8 +226,8 @@ void tSVF_free (tSVF* const); · 20 unmodified lines
226226 float tSVF_tick (tSVF* const, float v0);
227227 int tSVF_setFreq (tSVF* const, float freq);
228228 int tSVF_setQ (tSVF* const, float Q);
229−
230−//==============================================================================
229+
230+//==============================================================================
231231
232232 /* Efficient State Variable Filter for 14-bit control input, [0, 4096). */
233233 typedef struct _tSVFE
@@ -245,8 +245,8 @@ void tSVFE_free (tSVFE* const); · 11 unmodified lines
245245 float tSVFE_tick (tSVFE* const, float v0);
246246 int tSVFE_setFreq (tSVFE* const, uint16_t controlFreq);
247247 int tSVFE_setQ (tSVFE* const, float Q);
248−
249−//==============================================================================
248+
249+//==============================================================================
250250
251251 /* Simple Highpass filter. */
252252 typedef struct _tHighpass
@@ -263,7 +263,7 @@ float tHighpass_tick (tHighpass* const, float x); · 10 unmodified lines
263263 void tHighpass_setFreq (tHighpass* const, float freq);
264264 float tHighpass_getFreq (tHighpass* const);
265265
266−//==============================================================================
266+//==============================================================================
267267
268268 // Butterworth Filter
269269 #define NUM_SVF_BW 16
@@ -287,8 +287,8 @@ float tButterworth_tick (tButterworth* const, float input); · 17 unmodified lines
287287 void tButterworth_setF1 (tButterworth* const, float in);
288288 void tButterworth_setF2 (tButterworth* const, float in);
289289 void tButterworth_setFreqs (tButterworth* const, float f1, float f2);
290−
291−//==============================================================================
290+
291+//==============================================================================
292292
293293 #define NUM_TAPS 29
294294 typedef struct _tFIR
@@ -306,11 +306,11 @@ float tFIR_tick (tFIR* const, float input); · 11 unmodified lines
306306 void tFIR_coeffs (tFIR* const, float in);
307307
308308 //==============================================================================
309−
310−#ifdef __cplusplus
311−}
312−#endif
313309
314−#endif // LEAF_FILTER_H_INCLUDED
315−
310+#ifdef __cplusplus
311+}
312+#endif
313+
314+#endif // LEAF_FILTER_H_INCLUDED
315+
316316 //==============================================================================
LEAF/Inc/leaf-globals.h+29−32
@@ -7,16 +7,16 @@ · 6 unmodified lines
77 ==============================================================================*/
88
99 #ifndef LEAF_GLOBALS_H_INCLUDED
10−#define LEAF_GLOBALS_H_INCLUDED
11−
12−#ifdef __cplusplus
13−extern "C" {
14−#endif
15−
10+#define LEAF_GLOBALS_H_INCLUDED
11+
12+#ifdef __cplusplus
13+extern "C" {
14+#endif
15+
1616 //==============================================================================
1717
18−#include "leaf-mempool.h"
19−
18+#include "leaf-mempool.h"
19+
2020 //==============================================================================
2121
2222 typedef struct _LEAF
@@ -24,29 +24,26 @@ typedef struct _LEAF · 1 unmodified line
2424 float sampleRate;
2525 float invSampleRate;
2626 int blockSize;
27−
27+
2828
2929 float* sinewave;
3030 float* sawtooth[11];
3131 float* square[11];
32− float* triangle[11];
32+ float* triangle[11];
3333
3434
3535 float (*random)(void);
36−} LEAF;
37−
36+} LEAF;
37+
3838 //==============================================================================
3939
40−extern LEAF leaf; // The global instance of LEAF.
41−
40+extern LEAF leaf; // The global instance of LEAF.
41+
4242 //==============================================================================
4343
44−#define SHAPER1_TABLE_SIZE 65536
45−extern const float shaper1[SHAPER1_TABLE_SIZE];
46−
4744 #define NUM_VOICES 8
4845 #define NUM_SHIFTERS 4
49−#define MPOLY_NUM_MAX_VOICES 8
46+#define POLY_NUM_MAX_VOICES 8
5047 #define NUM_OSC 4
5148 #define INV_NUM_OSC (1.0f / NUM_OSC)
5249 #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
5754 // Feel free to change to suit memory constraints or desired delay max length / functionality.
5855
5956
60−#define TALKBOX_BUFFER_LENGTH 1600 // Every talkbox instance introduces 5 buffers of this size
61−
62−union unholy_t { /* a union between a float and an integer */
63− float f;
64− int i;
65−};
66−
67−//==============================================================================
68−
69−#ifdef __cplusplus
70−}
71−#endif
57+#define TALKBOX_BUFFER_LENGTH 1600 // Every talkbox instance introduces 5 buffers of this size
58+
59+union unholy_t { /* a union between a float and an integer */
60+ float f;
61+ int i;
62+};
63+
64+//==============================================================================
65+
66+#ifdef __cplusplus
67+}
68+#endif
7269
73−#endif // LEAF_GLOBALS_H_INCLUDED
74−
70+#endif // LEAF_GLOBALS_H_INCLUDED
71+
7572 //==============================================================================
LEAF/Inc/leaf-oversampler.h+9−19
@@ -21,29 +21,19 @@ extern "C" { · 20 unmodified lines
2121 #include "leaf-filter.h"
2222
2323 //==============================================================================
24−typedef struct _tOversamplerFilter
25−{
26− float cutoff, Q;
27− float ic1eq,ic2eq;
28− float g,k,a1,a2,a3;
29−} tOversamplerFilter;
3024
31−typedef struct _tOversampler2x
25+typedef struct _tOversampler
3226 {
33− tOversamplerFilter filters[2];
34−} tOversampler2x;
35−
36−void tOversampler2x_init(tOversampler2x* const);
37−float tOversampler2x_tick(tOversampler2x* const, float input, float (*nonLinearTick)(float));
27+ tFIR firUp;
28+ tFIR firDown;
29+ int ratio;
30+} tOversampler;
3831
39−typedef struct _tOversampler4x
40−{
41− tOversamplerFilter filters[4];
42−} tOversampler4x;
32+void tOversampler_init(tOversampler* const, int order, oBool extraQuality);
33+void tOversampler_upsample(tOversampler* const, float input, float* output);
34+float tOversampler_downsample(tOversampler* const, float* input);
35+float tOversampler_tick(tOversampler* const, float input, float (*effectTick)(float));
4336
44−void tOversampler4x_init(tOversampler4x* const);
45−float tOversampler4x_tick(tOversampler4x* const, float input, float (*nonLinearTick)(float));
46−
4737 //==============================================================================
4838
4939 #ifdef __cplusplus
LEAF/Inc/leaf-tables.hrenamed from LEAF/Inc/leaf-wavetables.h+34−16
@@ -1,17 +1,17 @@
11 /*==============================================================================
22
3− leaf-wavetables.h
3+ leaf-tables.h
44 Created: 4 Dec 2016 9:42:41pm
55 Author: Michael R Mulshine
66
77 ==============================================================================*/
88
99 #ifndef LEAF_WAVETABLES_H_INCLUDED
10−#define LEAF_WAVETABLES_H_INCLUDED
11−
12−#ifdef __cplusplus
13−extern "C" {
14−#endif
10+#define LEAF_WAVETABLES_H_INCLUDED
11+
12+#ifdef __cplusplus
13+extern "C" {
14+#endif
1515
1616 //==============================================================================
1717
@@ -31,6 +31,24 @@ extern "C" { · 13 unmodified lines
3131 #define DECAY_COEFF_TABLE_SIZE 4096
3232 #define MTOF1_TABLE_SIZE 4096
3333 #define FILTERTAN_TABLE_SIZE 4096
34+
35+#define SHAPER1_TABLE_SIZE 65536
36+extern const float shaper1[SHAPER1_TABLE_SIZE];
37+
38+#define COEFFS_SIZE 32
39+extern const float* firCoeffs[COEFFS_SIZE];
40+extern const float fir2XLow[32];
41+extern const float fir4XLow[64];
42+extern const float fir8XLow[64];
43+extern const float fir16XLow[128];
44+extern const float fir32XLow[256];
45+extern const float fir64XLow[256];
46+extern const float fir2XHigh[128];
47+extern const float fir4XHigh[256];
48+extern const float fir8XHigh[281];
49+extern const float fir16XHigh[507];
50+extern const float fir32XHigh[512];
51+extern const float fir64XHigh[1024];
3452
3553 typedef enum TableName
3654 {
@@ -59,8 +77,8 @@ extern const float mtof1[MTOF1_TABLE_SIZE]; · 22 unmodified lines
5977 extern const float decayCoeffTable[DECAY_COEFF_TABLE_SIZE];
6078
6179 extern const float tanh1[TANH1_TABLE_SIZE];
62−
63−//==============================================================================
80+
81+//==============================================================================
6482
6583 /* Sine wave table ripped from http://aquaticus.info/pwm-sine-wave. */
6684 extern const float sinewave[SINE_TABLE_SIZE];
@@ -69,14 +87,14 @@ extern const float sawtooth[11][SAW_TABLE_SIZE]; · 2 unmodified lines
6987
7088 extern const float triangle[11][TRI_TABLE_SIZE];
7189
72−extern const float squarewave[11][SQR_TABLE_SIZE];
73−
74−//==============================================================================
75−
76−#ifdef __cplusplus
77−}
90+extern const float squarewave[11][SQR_TABLE_SIZE];
91+
92+//==============================================================================
93+
94+#ifdef __cplusplus
95+}
7896 #endif
7997
80−#endif // LEAF_WAVETABLES_H_INCLUDED
81−
98+#endif // LEAF_WAVETABLES_H_INCLUDED
99+
82100 //==============================================================================
LEAF/Src/leaf-filter.c+48−48
@@ -9,52 +9,52 @@ · 8 unmodified lines
99 #if _WIN32 || _WIN64
1010
1111 #include "..\Inc\leaf-filter.h"
12−#include "..\Inc\leaf-wavetables.h"
12+#include "..\Inc\leaf-tables.h"
1313 #include "..\leaf.h"
1414
1515 #else
1616
1717 #include "../Inc/leaf-filter.h"
18−#include "../Inc/leaf-wavetables.h"
18+#include "../Inc/leaf-tables.h"
1919 #include "../leaf.h"
2020
21−#endif
22−
23−// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ OnePole Filter ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
24−void tAllpass_init(tAllpass* const f, float initDelay, uint32_t maxDelay)
25−{
26− f->gain = 0.7f;
27−
28− f->lastOut = 0.0f;
29−
30− tDelayL_init(&f->delay, initDelay, maxDelay);
31−}
32−
33−void tAllpass_setDelay(tAllpass* const f, float delay)
34−{
35− tDelayL_setDelay(&f->delay, delay);
36−}
37−
38−void tAllpass_free(tAllpass* const f)
39−{
40− leaf_free(&f->delay);
41− leaf_free(f);
42−}
43−
44−void tAllpass_setGain(tAllpass* const f, float gain)
45−{
46− f->gain = gain;
47−}
48−
49−float tAllpass_tick(tAllpass* const f, float input)
50−{
51− float s1 = (-f->gain) * f->lastOut + input;
52−
53− float s2 = tDelayL_tick(&f->delay, s1) + (f->gain) * input;
54−
55− f->lastOut = s2;
56−
57− return f->lastOut;
21+#endif
22+
23+// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ OnePole Filter ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
24+void tAllpass_init(tAllpass* const f, float initDelay, uint32_t maxDelay)
25+{
26+ f->gain = 0.7f;
27+
28+ f->lastOut = 0.0f;
29+
30+ tDelayL_init(&f->delay, initDelay, maxDelay);
31+}
32+
33+void tAllpass_setDelay(tAllpass* const f, float delay)
34+{
35+ tDelayL_setDelay(&f->delay, delay);
36+}
37+
38+void tAllpass_free(tAllpass* const f)
39+{
40+ leaf_free(&f->delay);
41+ leaf_free(f);
42+}
43+
44+void tAllpass_setGain(tAllpass* const f, float gain)
45+{
46+ f->gain = gain;
47+}
48+
49+float tAllpass_tick(tAllpass* const f, float input)
50+{
51+ float s1 = (-f->gain) * f->lastOut + input;
52+
53+ float s2 = tDelayL_tick(&f->delay, s1) + (f->gain) * input;
54+
55+ f->lastOut = s2;
56+
57+ return f->lastOut;
5858 }
5959
6060 void 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
311311 else f->b0 = (1.0f + thePole);
312312
313313 f->a1 = -thePole;
314−}
315−
316−void tOnePole_setFreq (tOnePole* const f, float freq)
317−{
318− f->b0 = freq * TWO_PI * leaf.invSampleRate;
319−
320− f->b0 = LEAF_clip(0.0f, f->b0, 1.0f);
321−
322− f->a1 = 1.0f - f->b0;
314+}
315+
316+void tOnePole_setFreq (tOnePole* const f, float freq)
317+{
318+ f->b0 = freq * TWO_PI * leaf.invSampleRate;
319+
320+ f->b0 = LEAF_clip(0.0f, f->b0, 1.0f);
321+
322+ f->a1 = 1.0f - f->b0;
323323 }
324324
325325 void tOnePole_setCoefficients(tOnePole* const f, float b0, float a1)
LEAF/Src/leaf-math.c+101−101
@@ -9,67 +9,67 @@ · 8 unmodified lines
99 #if _WIN32 || _WIN64
1010
1111 #include "..\Inc\leaf-math.h"
12−#include "..\Inc\leaf-wavetables.h"
12+#include "..\Inc\leaf-tables.h"
1313
1414 #else
1515
1616 #include "../Inc/leaf-math.h"
17−#include "../Inc/leaf-wavetables.h"
17+#include "../Inc/leaf-tables.h"
1818
1919 #endif
2020
2121 // The C-embedded Audio Library.
2222 #define TWO_TO_16 65536.f
2323
24−#define EXPONENTIAL_TABLE_SIZE 65536
25−
26−float interpolate3max(float *buf, const int peakindex)
27−{
28− float a = buf[peakindex-1];
29− float b = buf[peakindex];
30− float c = buf[peakindex+1];
31− float realpeak;
32−
33− realpeak = b + (float)0.125 * (c - a) * (c - a) / ((float)2. * b - a - c);
34−
35− return(realpeak);
36−}
37−
38−float interpolate3phase(float *buf, const int peakindex)
39−{
40− float a = buf[peakindex-1];
41− float b = buf[peakindex];
42− float c = buf[peakindex+1];
43− float fraction;
44−
45− fraction = ((float)0.5 * (c - a)) / ((float)2. * b - a - c);
46−
47− return(fraction);
48−}
49−
50−// alternative implementation for abs()
51−// REQUIRES: 32 bit integers
52−int fastabs_int(int in){
53− unsigned int r;
54− int const mask = in >> 31;
55−
56− r = (in ^ mask) - mask;
57−
58− return (r);
59−}
60−
61−// alternative implementation for abs()
62−// REQUIRES: 32 bit floats
63−float fastabs(float f)
64−{
65− union
66− {
67− float f;
68− unsigned int ui;
69− }alias;
70−
71− alias.f = f;
72− alias.ui &= 0x7fffffff;
24+#define EXPONENTIAL_TABLE_SIZE 65536
25+
26+float interpolate3max(float *buf, const int peakindex)
27+{
28+ float a = buf[peakindex-1];
29+ float b = buf[peakindex];
30+ float c = buf[peakindex+1];
31+ float realpeak;
32+
33+ realpeak = b + (float)0.125 * (c - a) * (c - a) / ((float)2. * b - a - c);
34+
35+ return(realpeak);
36+}
37+
38+float interpolate3phase(float *buf, const int peakindex)
39+{
40+ float a = buf[peakindex-1];
41+ float b = buf[peakindex];
42+ float c = buf[peakindex+1];
43+ float fraction;
44+
45+ fraction = ((float)0.5 * (c - a)) / ((float)2. * b - a - c);
46+
47+ return(fraction);
48+}
49+
50+// alternative implementation for abs()
51+// REQUIRES: 32 bit integers
52+int fastabs_int(int in){
53+ unsigned int r;
54+ int const mask = in >> 31;
55+
56+ r = (in ^ mask) - mask;
57+
58+ return (r);
59+}
60+
61+// alternative implementation for abs()
62+// REQUIRES: 32 bit floats
63+float fastabs(float f)
64+{
65+ union
66+ {
67+ float f;
68+ unsigned int ui;
69+ }alias;
70+
71+ alias.f = f;
72+ alias.ui &= 0x7fffffff;
7373 return alias.f;
7474 }
7575
@@ -116,45 +116,45 @@ float LEAF_shaper(float input, float m_drive) · 40 unmodified lines
116116 float shaperOut = w*(c+ 0.05f*xc2)*(m_drive + 0.75f);
117117 shaperOut *= 0.5f; // post_scale
118118 return shaperOut;
119−}
120−
121−// reduce sample resolution
122−float hold = 0.f;
123−int reduct_count = 0;
124−
125−
126−float LEAF_reduct (float input, float ratio)
127−{
128− reduct_count++;
129− if (reduct_count > 1.f / ratio)
130− {
131− hold = input;
132− reduct_count = 0;
133− }
134−
135− return hold;
136−}
137−
138−// round input to nearest rnd
139−float LEAF_round (float input, float rnd)
140−{
141− rnd = fabsf(rnd);
142−
143− if (rnd <= 0.0000001f) return input;
144−
145− float scale = 1.f / rnd;
146−
147− return roundf(input * scale) / scale;
148−}
149−
150−union unholy_t unholy;
151−
152−float LEAF_bitwise_xor(float input, uint32_t op)
153−{
154− unholy.f = input;
155− unholy.i = (unholy.i ^ op);
156−
157− return unholy.f;
119+}
120+
121+// reduce sample resolution
122+float hold = 0.f;
123+int reduct_count = 0;
124+
125+
126+float LEAF_reduct (float input, float ratio)
127+{
128+ reduct_count++;
129+ if (reduct_count > 1.f / ratio)
130+ {
131+ hold = input;
132+ reduct_count = 0;
133+ }
134+
135+ return hold;
136+}
137+
138+// round input to nearest rnd
139+float LEAF_round (float input, float rnd)
140+{
141+ rnd = fabsf(rnd);
142+
143+ if (rnd <= 0.0000001f) return input;
144+
145+ float scale = 1.f / rnd;
146+
147+ return roundf(input * scale) / scale;
148+}
149+
150+union unholy_t unholy;
151+
152+float LEAF_bitwise_xor(float input, uint32_t op)
153+{
154+ unholy.f = input;
155+ unholy.i = (unholy.i ^ op);
156+
157+ return unholy.f;
158158 }
159159
160160 float LEAF_reedTable(float input, float offset, float slope)
@@ -195,17 +195,17 @@ float LEAF_clip(float min, float val, float max) · 34 unmodified lines
195195 } else {
196196 return val;
197197 }
198−}
199−
200−int LEAF_clipInt(int min, int val, int max)
201−{
202− if (val < min) {
203− return min;
204− } else if (val > max) {
205− return max;
206− } else {
207− return val;
208− }
198+}
199+
200+int LEAF_clipInt(int min, int val, int max)
201+{
202+ if (val < min) {
203+ return min;
204+ } else if (val > max) {
205+ return max;
206+ } else {
207+ return val;
208+ }
209209 }
210210
211211 oBool LEAF_isPrime(uint64_t number )
LEAF/Src/leaf-oscillator.c+2−2
@@ -8,13 +8,13 @@ · 7 unmodified lines
88
99 #if _WIN32 || _WIN64
1010
11−#include "..\Inc\leaf-wavetables.h"
11+#include "..\Inc\leaf-tables.h"
1212 #include "..\Inc\leaf-oscillator.h"
1313 #include "..\leaf.h"
1414
1515 #else
1616
17−#include "../Inc/leaf-wavetables.h"
17+#include "../Inc/leaf-tables.h"
1818 #include "../Inc/leaf-oscillator.h"
1919 #include "../leaf.h"
2020
LEAF/Src/leaf-oversampler.c+59−92
@@ -9,116 +9,83 @@ · 8 unmodified lines
99 #if _WIN32 || _WIN64
1010
1111 #include "..\Inc\leaf-oversampler.h"
12+#include "..\Inc\leaf-tables.h"
1213 #else
1314
15+
1416 #include "../Inc/leaf-oversampler.h"
17+#include "../Inc/leaf-tables.h"
1518
1619 #endif
1720
18−// Currently just using a double sample rate version of SVF from leaf-filter.c, may want to implement better filter for oversampling.
19−// Quick testing seems to indicate that this filter sufficiently handles most aliasing.
20−void 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−
41−float 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
54−void tOversampler2x_init(tOversampler2x* const os)
21+// Oversampler
22+void tOversampler_init(tOversampler* const os, int ratio, oBool extraQuality)
5523 {
56− tOversamplerFilter_init(&os->filters[0], leaf.sampleRate*0.5f, 0.1f, 2.f);
57− tOversamplerFilter_init(&os->filters[1], leaf.sampleRate*0.5f, 0.1f, 2.f);
24+ uint8_t offset = 0;
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+ }
5833 }
5934
60−float tOversampler2x_tick(tOversampler2x* const os, float input, float (*nonLinearTick)(float))
35+void tOversampler_upsample(tOversampler* const os, float input, float* output)
6136 {
62− float sample = input;
63− float oversample = 0.f;
64−
65− sample = tOversamplerFilter_tick(&os->filters[0], sample);
66− oversample = tOversamplerFilter_tick(&os->filters[0], oversample);
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;
37+ output[0] = input;
38+ for (int i = 0; i < os->ratio; ++i) {
39+ if (i > 0) output[i] = 0;
40+ output[i] = tFIR_tick(&os->firUp, output[i]);
41+ }
7542 }
7643
77−// 4X Oversampler
78−void tOversampler4x_init(tOversampler4x* const os)
44+float tOversampler_downsample(tOversampler* const os, float* input)
7945 {
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) - JS
81− tOversamplerFilter_init(&os->filters[1], leaf.sampleRate*0.25f, 0.1f, 4.f);
82− tOversamplerFilter_init(&os->filters[2], leaf.sampleRate*0.25f, 0.1f, 4.f);
83− tOversamplerFilter_init(&os->filters[3] , leaf.sampleRate*0.25f, 0.1f, 2.f);
46+ float output = tFIR_tick(&os->firDown, input[0]);
47+ for (int i = 1; i < os->ratio; ++i) {
48+ tFIR_tick(&os->firDown, input[i]);
49+ }
50+ return output;
8451 }
8552
86−float tOversampler4x_tick(tOversampler4x* const os, float input, float (*nonLinearTick)(float))
53+float tOversampler_tick(tOversampler* const os, float input, float (*effectTick)(float))
8754 {
88− float sample = input;
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)
55+ float buf[os->ratio];
10156
102− sample = tOversamplerFilter_tick(&os->filters[0], sample);
103− oversample2 = tOversamplerFilter_tick(&os->filters[0], oversample2);
57+ tOversampler_upsample(os, input, buf);
10458
105− sample = tOversamplerFilter_tick(&os->filters[1], sample);
106− oversample1 = tOversamplerFilter_tick(&os->filters[1], oversample1);
107− oversample2 = tOversamplerFilter_tick(&os->filters[1], oversample2);
108− oversample3 = tOversamplerFilter_tick(&os->filters[1], oversample3);
59+ for (int i = 0; i < os->ratio; ++i) {
60+ buf[i] = effectTick(buf[i]);
61+ }
10962
110− sample = nonLinearTick(sample);
111− oversample1 = nonLinearTick(oversample1);
112− oversample2 = nonLinearTick(oversample2);
113− oversample3 = nonLinearTick(oversample3);
63+ return tOversampler_downsample(os, buf);
11464
115− sample = tOversamplerFilter_tick(&os->filters[2], sample);
116− oversample1 = tOversamplerFilter_tick(&os->filters[2], oversample1);
117− oversample2 = tOversamplerFilter_tick(&os->filters[2], oversample2);
118− oversample3 = tOversamplerFilter_tick(&os->filters[2], oversample3);
119−
120− sample = tOversamplerFilter_tick(&os->filters[3], sample);
121− oversample2 = tOversamplerFilter_tick(&os->filters[3], oversample2);
122−
123− return sample;
65+// float samples[os->ratio];
66+// samples[0] = input;
67+// for (int i = 1; i < os->ratio; ++i) {
68+// samples[i]= 0.f;
69+// }
70+//
71+// int whichFilter = 0;
72+// int i = 0;
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+// }
12491 }
LEAF/Src/leaf-tables.crenamed from LEAF/Src/leaf-wavetables.c+33−2
@@ -2,11 +2,11 @@ · 1 unmodified line
22
33 #if _WIN32 || _WIN64
44
5−#include "..\Inc\leaf-wavetables.h"
5+#include "..\Inc\leaf-tables.h"
66 #include "..\Inc\leaf-globals.h"
77 #else
88
9−#include "../Inc/leaf-wavetables.h"
9+#include "../Inc/leaf-tables.h"
1010 #include "../Inc/leaf-globals.h"
1111
1212 #endif
@@ -14,6 +14,37 @@ · 1 unmodified line
1414
1515 #include "stdlib.h"
1616
17+const 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+};
20+const 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+};
22+const 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+};
24+const 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+
27+const 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+};
29+const 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+
32+const 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+};
34+const 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+};
36+const 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+};
38+const 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+};
40+const 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+};
42+const 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+
45+const float* firCoeffs[COEFFS_SIZE] = { fir2XLow, fir4XLow, fir8XLow, fir16XLow, fir32XLow, fir64XLow, fir2XHigh, fir4XHigh, fir8XHigh, fir16XHigh, fir32XHigh, fir64XHigh
46+};
47+
1748 const 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,
1849 0.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,
1950 0.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
1212 #if _WIN32 || _WIN64
1313
1414 #include "..\Inc\leaf-utilities.h"
15−#include "..\Inc\leaf-wavetables.h"
15+#include "..\Inc\leaf-tables.h"
1616 #include "..\leaf.h"
1717 #include "..\Inc\d_fft_mayer.h"
1818
1919 #else
2020
2121 #include "../Inc/leaf-utilities.h"
22−#include "../Inc/leaf-wavetables.h"
22+#include "../Inc/leaf-tables.h"
2323 #include "../leaf.h"
2424 #include "../Externals/d_fft_mayer.h"
2525
LEAF/leaf.h+2−2
@@ -36,7 +36,7 @@ · 35 unmodified lines
3636 #include ".\Inc\leaf-sample.h"
3737 #include ".\Inc\leaf-crusher.h"
3838 #include ".\Inc\leaf-wavefolder.h"
39−#include ".\Inc\leaf-wavetables.h"
39+#include ".\Inc\leaf-tables.h"
4040
4141 #else
4242
@@ -57,7 +57,7 @@ · 14 unmodified lines
5757 #include "./Inc/leaf-sample.h"
5858 #include "./Inc/leaf-crusher.h"
5959 #include "./Inc/leaf-wavefolder.h"
60−#include "./Inc/leaf-wavetables.h"
60+#include "./Inc/leaf-tables.h"
6161
6262 #endif
6363
LEAF_JUCEPlugin/LEAF.jucer+2−4
@@ -45,8 +45,7 @@ · 44 unmodified lines
4545 <FILE id="bpUZCA" name="leaf-crusher.h" compile="0" resource="0" file="../LEAF/Inc/leaf-crusher.h"/>
4646 <FILE id="PRkOp2" name="leaf-wavefolder.h" compile="0" resource="0"
4747 file="../LEAF/Inc/leaf-wavefolder.h"/>
48− <FILE id="KpGzKv" name="leaf-wavetables.h" compile="0" resource="0"
49− file="../LEAF/Inc/leaf-wavetables.h"/>
48+ <FILE id="JvZKsP" name="leaf-tables.h" compile="0" resource="0" file="../LEAF/Inc/leaf-tables.h"/>
5049 </GROUP>
5150 <GROUP id="{A3AE8C8C-29BA-ADB3-DD7D-EEDC2F7B58F3}" name="Src">
5251 <FILE id="HbG7LO" name="leaf-808.c" compile="1" resource="0" file="../LEAF/Src/leaf-808.c"/>
@@ -70,8 +69,7 @@ · 17 unmodified lines
7069 <FILE id="Oymcac" name="leaf-crusher.c" compile="1" resource="0" file="../LEAF/Src/leaf-crusher.c"/>
7170 <FILE id="LVoaGm" name="leaf-wavefolder.c" compile="1" resource="0"
7271 file="../LEAF/Src/leaf-wavefolder.c"/>
73− <FILE id="HRk07h" name="leaf-wavetables.c" compile="1" resource="0"
74− file="../LEAF/Src/leaf-wavetables.c"/>
72+ <FILE id="TxA1Gg" name="leaf-tables.c" compile="1" resource="0" file="../LEAF/Src/leaf-tables.c"/>
7573 <FILE id="BFkVGu" name="leaf.c" compile="1" resource="0" file="../LEAF/Src/leaf.c"/>
7674 </GROUP>
7775 <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
1616 static void leaf_pool_dump(void);
1717 static void run_pool_test(void);
1818
19−float mix = 0.f;
20−float fx = 1.f;
19+tOversampler os;
20+tNoise noise;
21+tCycle sine;
2122
22−#define NUM_GRAINS 20
23−
24−
25−
26−tTapeDelay delay;
27−
28−float feedback = 0.f;
29−
30−tBuffer buff;
31−tSampler samp;
32−
33−tCycle osc;
23+float gain;
3424
3525 void LEAFTest_init (float sampleRate, int blockSize)
3626 {
3727 LEAF_init(sampleRate, blockSize, &getRandomFloat);
3828
39− // Init and set record
40− tBuffer_init (&buff, leaf.sampleRate * 1.f); // init, 1 second buffer
41− tBuffer_setRecordMode (&buff, RecordOneShot); // RecordOneShot records once through
42− tBuffer_record(&buff); // starts recording
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);
29+ tOversampler_init(&os, 2, OFALSE);
30+ tNoise_init(&noise, WhiteNoise);
31+ tCycle_init(&sine);
32+ tCycle_setFreq(&sine, 220);
5133
5234 leaf_pool_report();
53−}
54−
55−float depth = 1.0f;
35+}
36+
37+float nothing(float val) {
38+ return val;
39+}
5640
5741 float LEAFTest_tick (float input)
5842 {
59− float sample = 0.f;
43+ float sample = tCycle_tick(&sine);
6044
61− tBuffer_tick(&buff, input); // ticking the buffer records in to buffer
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− }
45+ //sample *= gain*10.0f;
7046
47+ sample *= tOversampler_tick(&os, sample, nothing);
7148
72− return sample;
49+ return sample * gain;
7350 }
7451
52+
53+
7554 bool lastState = false, lastPlayState = false;
7655 void LEAFTest_block (void)
7756 {
78− bool state = getButtonState("record");
79−
80− if (state)
81− {
82− setButtonState("record", false);
83− tBuffer_record(&buff);
84− }
85−
86− float val = getSliderValue("mod freq");
87−
88− float freq = 0.1 + 999.9 * val;
89−
90− tCycle_setFreq(&osc, freq);
91−
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−
57+ float val = getSliderValue("mod freq");
58+
59+ float freq = 200 + 1000 * val;
60+
61+ tCycle_setFreq(&sine, freq);
62+
63+ DBG("mod freq: " + String(freq));
64+
65+ val = getSliderValue("mod depth");
66+
67+ gain = val;
68+
69+
70+
10071
10172 }
10273
@@ -191,4 +162,4 @@ static void run_pool_test(void) · 88 unmodified lines
191162
192163 leaf_pool_dump();
193164 }
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