// ==UserScript== // @name Youtube Music fix volume ratio // @namespace http://tampermonkey.net/ // @version 0.2 // @description Makes the YouTube music volume slider exponential so it's easier to select lower volumes. // @author Marco Pfeiffer // @match https://music.youtube.com/* // @grant none // @downloadURL none // ==/UserScript== (function() { 'use strict'; const EXPONENT = 1.8; // manipulation exponent, higher value = lower volume tryManipulate(100); function tryManipulate(retries) { const success = manipulate(); if (!success && retries > 0) { setTimeout(() => tryManipulate(retries - 1), 10); } } function manipulate () { // if the element wasn't found, try again const player = document.querySelector('ytmusic-player-bar'); if (!player) { return false; } // if the player isn't ready yet, try again const {setVolume, getVolume} = player.playerApi_; if (!setVolume || !getVolume) { return false; } player.playerApi_.setVolume = function (volume) { const newVolume = Math.ceil((volume / 100) ** EXPONENT * 100); console.log('manipulated setVolume to ', newVolume, 'from', volume); return setVolume.call(this, newVolume); }; player.playerApi_.getVolume = function () { const volume = getVolume.call(this); const newVolume = Math.floor((volume / 100) ** (1 / EXPONENT) * 100); console.log('manipulated getVolume from', volume, 'to ', newVolume); return newVolume; }; return true; } })();