23class BasicFilterComponent {
25 BasicFilterComponent() { reset(); }
27 [[gnu::always_inline]]
inline q31_t doFilter(q31_t input, q31_t moveability) {
28 q31_t a = multiply_32x32_rshift32_rounded(input - memory, moveability) << 1;
33 [[gnu::always_inline]]
inline int32_t doAPF(q31_t input, int32_t moveability) {
34 q31_t a = multiply_32x32_rshift32_rounded(input - memory, moveability) << 1;
39 [[gnu::always_inline]]
inline void affectFilter(q31_t input, int32_t moveability) {
40 memory += multiply_32x32_rshift32_rounded(input - memory, moveability) << 2;
42 [[gnu::always_inline]]
inline void reset() { memory = 0; }
43 [[gnu::always_inline]]
inline q31_t getFeedbackOutput(int32_t feedbackAmount) {
44 return multiply_32x32_rshift32_rounded(memory, feedbackAmount) << 2;
46 [[gnu::always_inline]]
inline q31_t getFeedbackOutputWithoutLshift(int32_t feedbackAmount) {
47 return multiply_32x32_rshift32_rounded(memory, feedbackAmount);