#include #include #include #include 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 pickup_timedomain; // Length 1024 boxcar filter (fst 0 ~at +48Hz !) float nom_f; float lock_phi; float pd_delayed; std::vector> lockin_filter; unsigned int filter_index = 0; std::complex filter_sum; };