38 lines
723 B
C++
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;
|
|
};
|