summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDaniel Schürmann <daschuer@mixxx.org>2020-05-06 23:40:13 +0200
committerGitHub <noreply@github.com>2020-05-06 23:40:13 +0200
commite2b0fc574fca418825a239bc6cdfaef0449d3016 (patch)
treec0ef53c160ec1dbc07ae24ea9d1d1b113d110ba2 /src
parentc5e816431a07dc39f976947727dd4a1b8fe266d2 (diff)
parent6232a3364ee71dd0c6d8b77d5e919288faf1c434 (diff)
Merge pull request #2750 from ronso0/mic-ducking-strength
make mic ducking use strength the same way in Auto & Man mode
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;
}