VIANC/pw_plugin_II/pickup_cancel.h

38 lines
723 B
C++

#include <cmath>
#include <complex>
#include <array>
#include <vector>
class pickup_cancel {
public:
pickup_cancel(float fst_f, float eps);
float do_sample(float x_input);
bool is_in_sync();
float act_f;
float act_phi;
const float max_f;
const float min_f;
/* PLL filter time constant */
const float decay_cst;
float error_filter = 0.0f;
float cos_power = 0.0f;
float sin_power = 0.0f;
float mu = 1e-1f;
// One revolution is 2048 samples
std::array<float, 2048> pickup_timedomain;
// Length 1024 boxcar filter (fst 0 ~at +48Hz !)
float nom_f;
float lock_phi;
float pd_delayed;
std::vector<std::complex<float>> lockin_filter;
unsigned int filter_index = 0;
std::complex<float> filter_sum;
};