From ab4a2b8b4121fbe640bd13a6468618f463544ec2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?kleines=20Filmr=C3=B6llchen?= Date: Thu, 2 Sep 2021 19:43:10 +0200 Subject: [PATCH] LibDSP+LibAudio: Use logarithmic scaling in delay effect With logarithmic volume scaling, the delay effect can sound more natural. --- Userland/Libraries/LibAudio/Buffer.h | 2 +- Userland/Libraries/LibDSP/Effects.cpp | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Userland/Libraries/LibAudio/Buffer.h b/Userland/Libraries/LibAudio/Buffer.h index 1a518784e7..82f5a6304b 100644 --- a/Userland/Libraries/LibAudio/Buffer.h +++ b/Userland/Libraries/LibAudio/Buffer.h @@ -78,7 +78,7 @@ struct Frame { return *this; } - ALWAYS_INLINE Frame log_multiplied(double const volume_change) + ALWAYS_INLINE Frame log_multiplied(double const volume_change) const { Frame new_frame { left, right }; new_frame.log_multiply(volume_change); diff --git a/Userland/Libraries/LibDSP/Effects.cpp b/Userland/Libraries/LibDSP/Effects.cpp index 38c0232c34..d4c47a55da 100644 --- a/Userland/Libraries/LibDSP/Effects.cpp +++ b/Userland/Libraries/LibDSP/Effects.cpp @@ -39,9 +39,8 @@ Signal Delay::process_impl(Signal const& input_signal) Sample const& in = input_signal.get(); Sample out; - // FIXME: Once we have log scaling, change these to use it instead - out += in.scaled(static_cast(m_dry_gain)); - out += m_delay_buffer[m_delay_index].scaled(m_delay_decay); + out += in.log_multiplied(static_cast(m_dry_gain)); + out += m_delay_buffer[m_delay_index].log_multiplied(m_delay_decay); // This is also convenient for disabling the delay effect by setting the buffer size to 0 if (m_delay_buffer.size() >= 1)