parent
ba6cb260a4
commit
a2f4261b7a
@ -0,0 +1,33 @@
|
||||
#include <math.h>
|
||||
#include "filter.h"
|
||||
#include "psyn.h"
|
||||
|
||||
void filter_init_rc(struct filter_t *filter, double R, double C)
|
||||
{
|
||||
filter->k = 1.0 / (R * C) / _sample_rate;
|
||||
filter->r = 1.0;
|
||||
}
|
||||
|
||||
void filter_init_freq(struct filter_t *filter, double freq)
|
||||
{
|
||||
filter->k = (2.0 * M_PI * freq) / _sample_rate;
|
||||
filter->r = 1.0;
|
||||
}
|
||||
|
||||
void filter_run_lp(struct filter_t *filter, double left, double right)
|
||||
{
|
||||
filter->v_l += filter->k * (left - filter->last_out_l);
|
||||
filter->v_r += filter->k * (right - filter->last_out_r);
|
||||
filter->last_out_l = filter->v_l;
|
||||
filter->last_out_r = filter->v_r;
|
||||
filter->v_l *= filter->r;
|
||||
filter->v_r *= filter->r;
|
||||
}
|
||||
|
||||
void filter_run_hp(struct filter_t *filter, double left, double right)
|
||||
{
|
||||
filter->last_out_l = filter->k * (filter->last_out_l + left - filter->last_in_l);
|
||||
filter->last_out_r = filter->k * (filter->last_out_r + right - filter->last_in_r);
|
||||
filter->last_in_l = left;
|
||||
filter->last_in_r = right;
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
|
||||
struct filter_t {
|
||||
double k;
|
||||
double r;
|
||||
double v_l;
|
||||
double v_r;
|
||||
double last_in_l;
|
||||
double last_in_r;
|
||||
double last_out_l;
|
||||
double last_out_r;
|
||||
};
|
||||
|
||||
void filter_init_rc(struct filter_t *filter, double R, double C);
|
||||
void filter_init_freq(struct filter_t *filter, double freq);
|
||||
void filter_run_lp(struct filter_t *filter, double left, double right);
|
||||
void filter_run_hp(struct filter_t *filter, double left, double right);
|
@ -0,0 +1,10 @@
|
||||
|
||||
static inline double rng()
|
||||
{
|
||||
static double b = 19.1919191919191919191919;
|
||||
|
||||
b += 19.0;
|
||||
b *= b;
|
||||
b -= (int)b;
|
||||
return (b - 0.5) * 2.0;
|
||||
}
|
Loading…
Reference in new issue