aboutsummaryrefslogtreecommitdiff
path: root/web
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-02-16 15:46:35 +0100
committermetamuffin <metamuffin@disroot.org>2025-02-16 15:46:35 +0100
commit371ef06b3969895fc5e0b34df854fb7c19973f4d (patch)
treeb03146858e907799c6c6116cc0281ac5634ab134 /web
parent705cee366eb961abf4409f3871a65b1bc37b0ea4 (diff)
downloadjellything-371ef06b3969895fc5e0b34df854fb7c19973f4d.tar
jellything-371ef06b3969895fc5e0b34df854fb7c19973f4d.tar.bz2
jellything-371ef06b3969895fc5e0b34df854fb7c19973f4d.tar.zst
jsp: cubic scaled volume slider
Diffstat (limited to 'web')
-rw-r--r--web/script/player/mod.ts13
1 files changed, 7 insertions, 6 deletions
diff --git a/web/script/player/mod.ts b/web/script/player/mod.ts
index fc2a90b..15c37da 100644
--- a/web/script/player/mod.ts
+++ b/web/script/player/mod.ts
@@ -118,9 +118,10 @@ function initialize_player(el: HTMLElement, node_id: string) {
slider.min = "0"
slider.max = "1"
slider.step = "any"
- slider.valueAsNumber = player.video.volume
- slider.onchange = () => player.video.volume = slider.valueAsNumber
- slider.onmousemove = () => player.video.volume = slider.valueAsNumber
+ slider.valueAsNumber = Math.cbrt(player.video.volume)
+ const slider_mapping = (x: number) => x * x * x
+ slider.onchange = () => player.video.volume = slider_mapping(slider.valueAsNumber)
+ slider.onmousemove = () => player.video.volume = slider_mapping(slider.valueAsNumber)
return [e("div", { class: ["jsp-controlgroup", "jsp-volumecontrol"] },
e("label", `Volume`),
e("span", { class: "jsp-volume" }, player.volume.map(v => show_volume(v))),
@@ -265,8 +266,8 @@ function initialize_player(el: HTMLElement, node_id: string) {
else if (k.code == "KeyS") screenshot_video(player.video)
else if (k.code == "KeyJ") step_track_kind("subtitles")
else if (k.code == "KeyM") toggle_mute()
- else if (k.code == "Digit9") (player.volume.value -= 0.05), logger.log(`Volume decreased to ${show_volume(player.volume.value)}`)
- else if (k.code == "Digit0") (player.volume.value += 0.05), logger.log(`Volume increased to ${show_volume(player.volume.value)}`)
+ else if (k.code == "Digit9") (player.volume.value /= 1.2), logger.log(`Volume decreased to ${show_volume(player.volume.value)}`)
+ else if (k.code == "Digit0") (player.volume.value *= 1.2), logger.log(`Volume increased to ${show_volume(player.volume.value)}`)
else if (k.key == "#") step_track_kind("audio")
else if (k.key == "_") step_track_kind("video")
else if (k.code == "KeyV") show_stats.value = !show_stats.value
@@ -345,7 +346,7 @@ export function show_profile(profile: EncodingProfile): string {
return `???`
}
export function show_volume(v: number): string {
- return `${(v * 100).toFixed(2)}% | ${v == 0 ? "-∞" : (Math.log10(v) * 10).toFixed(2)}dB`
+ return `${v == 0 ? "-∞" : (Math.log10(v) * 10).toFixed(2)}dB | ${(v * 100).toFixed(2)}%`
}
function find_closest_chaps(player: Player) {