From 3cb2c612fb030278aaf5e4d49d42cf689bdc9cc0 Mon Sep 17 00:00:00 2001 From: Eskil Queseth Date: Sat, 12 Jun 2021 15:58:44 +0200 Subject: re-add noise gate --- mumd/src/audio/transformers.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 mumd/src/audio/transformers.rs (limited to 'mumd/src/audio/transformers.rs') diff --git a/mumd/src/audio/transformers.rs b/mumd/src/audio/transformers.rs new file mode 100644 index 0000000..5c9681b --- /dev/null +++ b/mumd/src/audio/transformers.rs @@ -0,0 +1,17 @@ +use dasp_ring_buffer::Bounded; + + +pub fn create_noise_gate(chunks: usize, mute_percentage: f32) -> impl FnMut(&mut [f32]) -> Option<&mut [f32]> { + let mut peaks = Bounded::from_full(vec![0.0; chunks]); + let mut alltime_high: f32 = 0.0; + move |buf: &mut [f32]| { + let max = buf.iter().map(|e| e.abs()).max_by(|a, b| a.partial_cmp(b).unwrap()).unwrap(); + peaks.push(max); + alltime_high = alltime_high.max(max); + if peaks.iter().any(|e| *e >= alltime_high * mute_percentage) { + Some(buf) + } else { + None + } + } +} -- cgit v1.2.1