Youtube Music fix volume ratio

Makes the YouTube music volume slider exponential so it's easier to select lower volumes.

当前为 2021-06-20 提交的版本,查看 最新版本

// ==UserScript==
// @name         Youtube Music fix volume ratio
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  Makes the YouTube music volume slider exponential so it's easier to select lower volumes.
// @author       Marco Pfeiffer <[email protected]>
// @match        https://music.youtube.com/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // manipulation exponent, higher value = lower volume
    // higher values than 1.8 cause rounding issues somewhere within YouTubes logic (wich handles it as a percentage integer) or within the Browser ~ I don't know.
    // 5% is the lowest you can select in the UI
    const EXPONENT = 1.8;

    const {get, set} = Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype, 'volume');
    Object.defineProperty(HTMLMediaElement.prototype, 'volume', {
        get () {
            const volume = get.call(this);
            const newVolume = volume ** (1 / EXPONENT);
            console.log('manipulated volume from', volume, 'to  ', newVolume, 'on', this);
            return newVolume;
        },
        set (volume) {
            const newVolume = volume ** EXPONENT;
            console.log('manipulated volume to  ', newVolume, 'from', volume, 'on', this);
            return set.call(this, newVolume);
        }
    });
})();