mirror of
https://github.com/radio95-rnt/fm95.git
synced 2026-02-27 03:23:54 +01:00
idk
This commit is contained in:
@@ -18,23 +18,24 @@ float hard_clip(float sample, float threshold) {
|
|||||||
void init_lpf(FIR *filter, float cutoff, int sample_rate) {
|
void init_lpf(FIR *filter, float cutoff, int sample_rate) {
|
||||||
float a = tanf(M_PI*cutoff/sample_rate);
|
float a = tanf(M_PI*cutoff/sample_rate);
|
||||||
float a2 = a*a;
|
float a2 = a*a;
|
||||||
float r;
|
float r, e;
|
||||||
|
|
||||||
for(int i = 0; i < FIR_ORDER; i++) {
|
for(int i = 0; i < FIR_ORDER; i++) {
|
||||||
r = sinf(M_PI*(2.0f*i+1.0f)/(4.0f*FIR_ORDER));
|
r = sinf(M_PI*(2.0f*i+1.0f)/(4.0f*FIR_ORDER));
|
||||||
sample_rate = a2+2.0f*a*r+1.0f;
|
e = a2+2.0f*a*r+1.0f;
|
||||||
filter->A[i] = a2 / sample_rate;
|
filter->A[i] = a2 / e;
|
||||||
filter->d1[i] = 2.0f*(1.0f-a2)/sample_rate;
|
filter->d1[i] = 2.0f*(1.0f-a2)/e;
|
||||||
filter->d2[i] = -(a2 - 2.0f * a * r + 1.0f) / sample_rate;
|
filter->d2[i] = -(a2 - 2.0f * a * r + 1.0f) / e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float process_lpf(FIR *filter, float x) {
|
float process_lpf(FIR *filter, float x) {
|
||||||
|
float output;
|
||||||
for(int i = 0; i < FIR_ORDER; i++) {
|
for(int i = 0; i < FIR_ORDER; i++) {
|
||||||
filter->w0[i] = filter->d1[i]*filter->w1[i] + filter->d2[i]*filter->w2[i] + x;
|
filter->w0[i] = filter->d1[i]*filter->w1[i] + filter->d2[i]*filter->w2[i] + x;
|
||||||
x = filter->A[i] * (filter->w0[i] + 2.0f * filter->w1[i] + filter->w2[i]);
|
output = filter->A[i] * (filter->w0[i] + 2.0f * filter->w1[i] + filter->w2[i]);
|
||||||
filter->w2[i] = filter->w1[i];
|
filter->w2[i] = filter->w1[i];
|
||||||
filter->w1[i] = filter->w0[i];
|
filter->w1[i] = filter->w0[i];
|
||||||
}
|
}
|
||||||
return x;
|
return output;
|
||||||
}
|
}
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
#include "constants.h"
|
#include "constants.h"
|
||||||
#include "oscillator.h"
|
#include "oscillator.h"
|
||||||
|
|
||||||
#define FIR_ORDER 10
|
#define FIR_ORDER 21
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user