// // Created by david on 15.03.2026. // #ifndef PASADASUPERPROJECT_STEP_DETECTOR_H #define PASADASUPERPROJECT_STEP_DETECTOR_H #include "iir_filter.h" #include "ssf_filter.h" #include class StepListener { public: virtual ~StepListener() {} virtual void playBeat() = 0; }; /** * Step detector from accelerometer signal. * * Settling time is 3.0 sec (defined in SsfStepDetector.LEN_INIT), * no steps are detected before. */ class StepDetector { protected: StepListener *listener; IirFilter f_highpass; Filt f_neg; SsfFilter f_ssf; SsfStepDetector f_ssd; RunningQualityFilter f_sqi; bool debug; std::vector buf_ssd; std::vector buf_sqi; std::vector buf_out; public: StepDetector(StepListener *listener, bool debug = false); void filter(std::vector values); std::vector getBufSsd(); std::vector getBufSqi(); std::vector getBufOut(); /** * Prime the filters using the given input signal. * Used for debugging (non-realtime processing) to align the signal. */ void primeFilters(std::vector sig); }; #endif //PASADASUPERPROJECT_STEP_DETECTOR_H