diff --git a/src/nowplaying.js b/src/nowplaying.js index 1615545..d7dd8fa 100644 --- a/src/nowplaying.js +++ b/src/nowplaying.js @@ -56,7 +56,7 @@ export function syncNowPlaying() { const volSlider = document.getElementById('np-vol-slider'); if(shuffleBtn) shuffleBtn.classList.toggle('active', S.shuffle); if(repeatBtn) repeatBtn.classList.toggle('active', S.repeat !== false); - if(volSlider) volSlider.value = Math.round(S.audio.volume * 100); + if(volSlider) volSlider.value = Math.round(Math.sqrt(S.audio.volume) * 100); const playing = !S.audio.paused; const npIcon = document.getElementById('np-play-icon'); if(npIcon) npIcon.innerHTML = playing diff --git a/src/player.js b/src/player.js index 702ac64..f9a4227 100644 --- a/src/player.js +++ b/src/player.js @@ -637,7 +637,9 @@ function _initBarScrub(bar, fill, onMove) { } export function setVolume(v) { - const vol = v / 100; + // Square curve: slider 50 → actual 0.25, slider 30 → actual 0.09 + // Matches how ears perceive loudness (logarithmic) so low values feel genuinely quiet. + const vol = Math.pow(v / 100, 2); S.audio.volume = vol; S.previewAudio.volume = vol; const absAudio = document.getElementById('abs-audio');