summaryrefslogtreecommitdiff
path: root/src/audio
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2024-04-12 15:11:56 +1000
committerjacqueline <me@jacqueline.id.au>2024-04-12 15:11:56 +1000
commit166e8feb3cbd84fb849d4e4376ae329a6221529a (patch)
tree0e17ca54b035fc4743359c47cdefdbd9c7823053 /src/audio
parentade00945951ff49481a161479f7d9798cc4c564f (diff)
downloadtangara-fw-166e8feb3cbd84fb849d4e4376ae329a6221529a.tar.gz
copy audacious' math it looks good
Diffstat (limited to 'src/audio')
-rw-r--r--src/audio/bt_audio_output.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/audio/bt_audio_output.cpp b/src/audio/bt_audio_output.cpp
index 1b8866c1..8f2b8cf3 100644
--- a/src/audio/bt_audio_output.cpp
+++ b/src/audio/bt_audio_output.cpp
@@ -29,6 +29,8 @@
namespace audio {
+static constexpr uint16_t kVolumeRange = 60;
+
BluetoothAudioOutput::BluetoothAudioOutput(StreamBufferHandle_t s,
drivers::Bluetooth& bt,
tasks::WorkerPool& p)
@@ -51,7 +53,8 @@ auto BluetoothAudioOutput::SetVolumeImbalance(int_fast8_t balance) -> void {
auto BluetoothAudioOutput::SetVolume(uint16_t v) -> void {
volume_ = std::clamp<uint16_t>(v, 0, 100);
bg_worker_.Dispatch<void>([&]() {
- float factor = volume_ / 100.;
+ float factor =
+ pow(10, static_cast<double>(kVolumeRange) * (volume_ - 100) / 100 / 20);
bluetooth_.SetVolumeFactor(factor);
});
}