From 371ef06b3969895fc5e0b34df854fb7c19973f4d Mon Sep 17 00:00:00 2001 From: metamuffin Date: Sun, 16 Feb 2025 15:46:35 +0100 Subject: jsp: cubic scaled volume slider --- web/script/player/mod.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'web/script/player/mod.ts') 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) { -- cgit v1.2.3-70-g09d2