aboutsummaryrefslogtreecommitdiffstats
path: root/mumd/src/audio
diff options
context:
space:
mode:
Diffstat (limited to 'mumd/src/audio')
-rw-r--r--mumd/src/audio/input.rs1
-rw-r--r--mumd/src/audio/transformers.rs6
2 files changed, 6 insertions, 1 deletions
diff --git a/mumd/src/audio/input.rs b/mumd/src/audio/input.rs
index b84cefb..7a7ff0f 100644
--- a/mumd/src/audio/input.rs
+++ b/mumd/src/audio/input.rs
@@ -102,7 +102,6 @@ impl DefaultAudioInputDevice {
opus::Application::Voip,
)
.unwrap();
- // 4 blocks @ 2.5 ms meaning 10 ms total
let buffer_size = (sample_rate.0 * frame_size / 400) as usize;
let transformers = vec![Box::new(NoiseGate::new(50)) as Box<dyn Transformer + Send + 'static>];
diff --git a/mumd/src/audio/transformers.rs b/mumd/src/audio/transformers.rs
index 6994a40..25e28b8 100644
--- a/mumd/src/audio/transformers.rs
+++ b/mumd/src/audio/transformers.rs
@@ -1,7 +1,11 @@
+/// A trait that represents a transform of a audio buffer in some way.
pub trait Transformer {
+ /// Do the transform. Returning `None` is interpreted as "the buffer is unwanted".
+ /// The implementor is free to modify the buffer however it wants to.
fn transform<'a>(&mut self, buf: &'a mut [f32]) -> Option<&'a mut [f32]>;
}
+/// A struct representing a noise gate transform.
pub struct NoiseGate {
alltime_high: f32,
open: usize,
@@ -9,6 +13,8 @@ pub struct NoiseGate {
}
impl NoiseGate {
+ /// Create a new noise gate. `deactivation_delay` is defined in terms of
+ /// how many quiet frames it receives before closing the noise gate.
pub fn new(deactivation_delay: usize) -> Self {
Self {
alltime_high: 0.0,