您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Makes the YouTube music volume slider logarithmic.
当前为
- // ==UserScript==
- // @name Youtube Music Logarithmic/Exponential volume
- // @namespace http://tampermonkey.net/
- // @version 0.3.2
- // @description Makes the YouTube music volume slider logarithmic.
- // @author Andrew Rosiclair <git@arosiclair>
- // @match https://music.youtube.com/*
- // @icon https://www.google.com/s2/favicons?sz=64&domain=youtube.com
- // @grant none
- // @license MIT
- // ==/UserScript==
- (function() {
- 'use strict';
- const useExpScale = false; // set to true for exponential scaling
- const expScalePower = 2;
- const sliderWidth = '200px'; // default: 100px
- function scaleExp (volume) {
- const newVolume = (volume / 1) ** expScalePower;
- return newVolume;
- }
- function scaleLog (volume) {
- if (volume === 0) {
- return 0;
- }
- var minp = 0;
- var maxp = 1;
- // The result should be between 1 an 100
- var minv = Math.log(1);
- var maxv = Math.log(100);
- // calculate adjustment factor
- var scale = (maxv-minv) / (maxp-minp);
- const newVolume = Math.exp(minv + scale*(volume-minp)) / 100;
- return newVolume;
- }
- const {get, set} = Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype, 'volume');
- Object.defineProperty(HTMLMediaElement.prototype, 'volume', {
- get () {
- const volume = get.call(this);
- const newVolume = useExpScale ? scaleExp(volume) : scaleLog(volume);
- console.log(`[YoutubeMusic Volume Fix] volume: ${volume} newVolume ${newVolume.toFixed(2)}`);
- return newVolume;
- },
- set (volume) {
- const newVolume = useExpScale ? scaleExp(volume) : scaleLog(volume);
- console.log(`[YoutubeMusic Volume Fix] volume: ${volume} newVolume ${newVolume.toFixed(2)}`);
- return set.call(this, newVolume);
- }
- });
- const volumeSlider = document.querySelector("#volume-slider");
- if (volumeSlider) {
- volumeSlider.style.width = sliderWidth;
- } else {
- console.error("[YoutubeMusic Volume Fix] couldn't find the slider element");
- }
- })();