summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorronso0 <ronso0@mixxx.org>2020-05-05 07:28:31 +0200
committerronso0 <ronso0@mixxx.org>2020-05-06 14:48:27 +0200
commit6232a3364ee71dd0c6d8b77d5e919288faf1c434 (patch)
treef42e61133f7fa1442b0e67830617e4d9d6f7b5f8 /src
parent212b1988402b810d92d9049966b4a6008ded2d1f (diff)
make mic ducking use strength the same way in Auto & Man mode
Previously, engine/enginetalkoverducking returned opposite values for 'strength' in Auto and Manual mode. This commit removes the inversion from Auto mode, thus the Strength knob always affects the music volume in the same way with both modes, much like a Muisc Volume knob: * fully left: music muted completely * fully right: music volume unchanged
Diffstat (limited to 'src')
-rw-r--r--src/engine/enginesidechaincompressor.cpp31
1 files changed, 15 insertions, 16 deletions
diff --git a/src/engine/enginesidechaincompressor.cpp b/src/engine/enginesidechaincompressor.cpp
index 4f9b6fc634..7ef6793994 100644
--- a/src/engine/enginesidechaincompressor.cpp
+++ b/src/engine/enginesidechaincompressor.cpp
@@ -3,10 +3,10 @@
#include "engine/enginesidechaincompressor.h"
EngineSideChainCompressor::EngineSideChainCompressor(const char* group)
- : m_compressRatio(0.0),
+ : m_compressRatio(1.0),
m_bAboveThreshold(false),
m_threshold(1.0),
- m_strength(0.0),
+ m_strength(1.0),
m_attackTime(0),
m_decayTime(0),
m_attackPerFrame(0.0),
@@ -54,28 +54,27 @@ void EngineSideChainCompressor::processKey(const CSAMPLE* pIn, const int iBuffer
double EngineSideChainCompressor::calculateCompressedGain(int frames) {
if (m_bAboveThreshold) {
- if (m_compressRatio < m_strength) {
- m_compressRatio += m_attackPerFrame * frames;
- if (m_compressRatio > m_strength) {
+ if (m_compressRatio > m_strength) {
+ m_compressRatio -= m_attackPerFrame * frames;
+ if (m_compressRatio < m_strength) {
// If we overshot, clamp.
m_compressRatio = m_strength;
}
- } else if (m_compressRatio > m_strength) {
+ } else if (m_compressRatio < m_strength) {
// If the strength param was changed, we might be compressing too much.
- m_compressRatio -= m_decayPerFrame * frames;
+ m_compressRatio += m_decayPerFrame * frames;
}
} else {
- if (m_compressRatio > 0) {
- m_compressRatio -= m_decayPerFrame * frames;
- if (m_compressRatio < 0) {
+ VERIFY_OR_DEBUG_ASSERT(m_compressRatio >= 0) {
+ qWarning() << "Programming error, below-zero compression detected.";
+ }
+ if (m_compressRatio < 1) {
+ m_compressRatio += m_decayPerFrame * frames;
+ if (m_compressRatio > 1) {
// If we overshot, clamp.
- m_compressRatio = 0;
+ m_compressRatio = 1;
}
- } else if (m_compressRatio < 0) {
- // Complain loudly.
- qWarning() << "Programming error, below-zero compression detected.";
- m_compressRatio += m_attackPerFrame * frames;
}
}
- return (1. - m_compressRatio);
+ return m_compressRatio;
}