diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-03-25 01:57:55 +1100 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-03-25 01:57:55 +1100 |
commit | 6b8c4729787daa0c584447f9014bf32320d82789 (patch) | |
tree | d450f79ef6757ea96c69a5a4b5cda2d90f37d383 /source/frontend/StarVoice.cpp | |
parent | 5da4b1a4e3493427567583c90c4cbe03c5d3979c (diff) |
nicer volume sliders
Diffstat (limited to 'source/frontend/StarVoice.cpp')
-rw-r--r-- | source/frontend/StarVoice.cpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/source/frontend/StarVoice.cpp b/source/frontend/StarVoice.cpp index b2c4695..0d56089 100644 --- a/source/frontend/StarVoice.cpp +++ b/source/frontend/StarVoice.cpp @@ -6,6 +6,7 @@ #include "StarRoot.hpp" #include "StarLogging.hpp" #include "StarInterpolation.hpp" +#include "StarAudio.hpp" #include "opus/opus.h" #include "SDL2/SDL.h" @@ -196,9 +197,11 @@ void Voice::loadJson(Json const& config, bool skipSave) { && change(m_deviceName, config.optString("deviceName"), changed)) resetDevice(); - m_threshold = config.getFloat("threshold", m_threshold); - m_inputVolume = config.getFloat("inputVolume", m_inputVolume); - m_outputVolume = config.getFloat("outputVolume", m_outputVolume); + m_threshold = config.getFloat("threshold", m_threshold); + m_inputAmplitude = perceptualToAmplitude( + m_inputVolume = config.getFloat("inputVolume", m_inputVolume)); + m_outputAmplitude = perceptualToAmplitude( + m_outputVolume = config.getFloat("outputVolume", m_outputVolume)); if (change(m_loopback, config.getBool("loopback", m_loopback), changed)) m_clientSpeaker->playing = false; @@ -321,7 +324,7 @@ void Voice::readAudioData(uint8_t* stream, int len) { } } - m_clientSpeaker->decibelLevel = getAudioLoudness((int16_t*)stream, sampleCount, m_inputVolume); + m_clientSpeaker->decibelLevel = getAudioLoudness((int16_t*)stream, sampleCount, m_inputAmplitude); if (!m_loopback) { if (active && !m_clientSpeaker->playing) @@ -411,7 +414,7 @@ void Voice::mix(int16_t* buffer, size_t frameCount, unsigned channels) { if (mix) { finalBuffer.resize(sharedBuffer.size(), 0); - float vol = m_outputVolume; + float vol = m_outputAmplitude; for (size_t i = 0; i != sharedBuffer.size(); ++i) finalBuffer[i] = (int16_t)clamp<int>(sharedBuffer[i] * vol, INT16_MIN, INT16_MAX); @@ -678,9 +681,9 @@ void Voice::thread() { } m_capturedChunksFrames -= VOICE_FRAME_SIZE; - if (m_inputVolume != 1.0f) { + if (m_inputAmplitude != 1.0f) { for (size_t i = 0; i != samples.size(); ++i) - samples[i] *= m_inputVolume; + samples[i] *= m_inputAmplitude; } if (int encodedSize = opus_encode(m_encoder.get(), samples.data(), VOICE_FRAME_SIZE, (unsigned char*)encoded.ptr(), encoded.size())) { |