pub fn apply_lpf_i16_sp(data: &mut [i16], sample_rate_hz: u16, cutoff_frequency_hz: u16) {
let rc = 1.0 / (cutoff_frequency_hz as f32 * 2.0 * core::f32::consts::PI);
let dt = 1.0 / sample_rate_hz as f32;
let alpha = dt / (rc + dt);
data[0] = (alpha * data[0] as f32) as i16;
for i in 1..data.len() {
data[i] = (data[i - 1] as f32 + alpha * (data[i] as f32 - data[i - 1] as f32)) as i16;
}
}
pub fn apply_lpf_i32_sp(data: &mut [i32], sample_rate_hz: u16, cutoff_frequency_hz: u16) {
let rc = 1.0 / (cutoff_frequency_hz as f32 * 2.0 * core::f32::consts::PI);
let dt = 1.0 / sample_rate_hz as f32;
let alpha = dt / (rc + dt);
data[0] = (alpha * data[0] as f32) as i32;
for i in 1..data.len() {
data[i] = (data[i - 1] as f32 + alpha * (data[i] as f32 - data[i - 1] as f32)) as i32;
}
}