diff options
author | metamuffin <metamuffin@disroot.org> | 2025-02-16 15:46:35 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-02-16 15:46:35 +0100 |
commit | 371ef06b3969895fc5e0b34df854fb7c19973f4d (patch) | |
tree | b03146858e907799c6c6116cc0281ac5634ab134 /web | |
parent | 705cee366eb961abf4409f3871a65b1bc37b0ea4 (diff) | |
download | jellything-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.ts | 13 |
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) { |