From acd75dcb0dff9e61ea82aa4b6d29d122afdcd323 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 21 Nov 2022 10:58:37 -0700 Subject: [PATCH] Improve volume curve --- src/scheme.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/scheme.rs b/src/scheme.rs index 0dd1c63209..8a64a6ae5b 100644 --- a/src/scheme.rs +++ b/src/scheme.rs @@ -45,8 +45,10 @@ impl AudioScheme { let mut i = 0; while i < mix_buffer.len() { if let Some(sample) = buffer.pop_front() { - let left = ((sample.0 as i32 * self.volume) / 100) as i16; - let right = ((sample.1 as i32 * self.volume) / 100) as i16; + // Multiply each sample by volume squared divided by 100 squared + // This feels better than just multiplying by volume divided by 100 + let left = ((sample.0 as i32 * self.volume * self.volume) / 10000) as i16; + let right = ((sample.1 as i32 * self.volume * self.volume) / 10000) as i16; mix_buffer[i].0 = mix_buffer[i].0.saturating_add(left); mix_buffer[i].1 = mix_buffer[i].1.saturating_add(right); } else {