feat: voice compressor with RMS+peak leveling, sliding window envelope, rate-limited gain
This commit is contained in:
1 parent
7004b110ae
commit
f1b599f0c0
8 files changed
+406
-9
No files matched your search
@@ -9,6 +9,7 @@
|
||||
#include "invite_link.h"
|
||||
#include "sound_manager.h"
|
||||
#include "audiorecorder.h"
|
||||
#include "audiocompressor.h"
|
||||
#include "voicemessageencoder.h"
|
||||
#include "animtimer.h"
|
||||
#include "../db/db_manager.h"
|
||||
@@ -25,6 +26,7 @@
|
||||
#include <QFile>
|
||||
#include <QTextStream>
|
||||
#include <QDir>
|
||||
#include <cmath>
|
||||
|
||||
extern "C" {
|
||||
#include "../transport/chat_core.h"
|
||||
@@ -207,9 +209,22 @@ void MainWindow::setupSoundFromConfig() {
|
||||
if (m_db && m_db->isOpen()) {
|
||||
m_recorder->setCaptureDeviceIndex(m_db->getUiStateInt("audio_input_device", -1));
|
||||
VoiceEncoder::setPreset(m_db->getUiStateInt("opus_codec_preset", 1));
|
||||
|
||||
int compEnabled = m_db->getUiStateInt("compressor_enabled", 0);
|
||||
m_recorder->setCompressorEnabled(compEnabled != 0);
|
||||
if (m_recorder->compressor()) {
|
||||
AudioCompressor::Config compCfg;
|
||||
compCfg.maxGainDb = (float)m_db->getUiStateInt("compressor_max_gain_db", 30);
|
||||
compCfg.lookbackMs = m_db->getUiStateInt("compressor_lookback_ms", 200);
|
||||
compCfg.lookaheadMs = m_db->getUiStateInt("compressor_lookahead_ms", 100);
|
||||
compCfg.riseRatePer500ms = (float)m_db->getUiStateInt("compressor_rise_rate_tenths", 20) / 10.0f;
|
||||
compCfg.targetLevel = powf(10.0f, (float)m_db->getUiStateInt("compressor_target_level_db", -12) / 20.0f);
|
||||
m_recorder->compressor()->configure(compCfg);
|
||||
}
|
||||
}
|
||||
qDebug("MainWindow: AudioRecorder initialized (captureDevice=%d, opusPreset=%d)",
|
||||
m_recorder->captureDeviceIndex(), VoiceEncoder::preset());
|
||||
qDebug("MainWindow: AudioRecorder initialized (captureDevice=%d, opusPreset=%d, compressor=%d)",
|
||||
m_recorder->captureDeviceIndex(), VoiceEncoder::preset(),
|
||||
m_recorder->isCompressorEnabled() ? 1 : 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user