I wrote the following script to fade out jukebox tracks so I can transition into new tracks without it sounding abrupt or choppy. Here is my code /* Custom Fade Out Track Function / Command by Kastion the Scriptomancer Profile: <a href="https://app.roll20.net/users/3173313/kastion" rel="nofollow">https://app.roll20.net/users/3173313/kastion</a> Syntax: !fade [track name] */ function fadeOutTrack(trackname) { var song = findObjs({ _type: 'jukeboxtrack', title: trackname, playing: true, })[0]; var trackID = song.get("_id"); if (!song.get("playing")) { sendChat('fadeOutTrack','/w gm In order to fade a track, it must be playing.'); return; } var level = song.get("volume"), prev_level = song.get("volume"), loops = song.get("loop"); var timer = setInterval(function(){ if (level >= 10) { level = level - 10; song.set({volume:level}); } else { song.set({softstop:true,loop:false}); clearTimeout(timer); setTimeout(function(){ song.set({volume:prev_level}); if (loops) song.set({loop:true}); }, 10000); } }, 2000 ); } on('ready',()=>{ on('chat:message',(msg)=>{ if('api' !== msg.type ) { return; } if (!state.fade_pid) state.fade_pid = "API"; if (msg.playerid !== "API") state.fade_pid = msg.playerid; else msg.playerid = state.fade_pid; var cmdName = "!fade"; var msgTxt = msg.content; if (msg.type == "api" && msgTxt.indexOf(cmdName) !== -1 && playerIsGM(msg.playerid)) { let args = msg.content.split(/\s+/); switch(args.shift().toLowerCase()){ case '!fade': { fadeOutTrack(args[0]); } break; } } }); log("-=> Fade command loaded (!fade) <=-") }); I'm having some strange behavior with the script. Each time I lower the volume, it doesn't apply the fade to the track even though the bar has been moved. Only at set specific points will it lower the volume. Also when I get to the 30% to 40% volume level it jumps all the way to in-between 0% and 10% and abruptly lowers the volume. Is there any way to force an update on a tracks volume bar so it will lower the volume at what ever percentage it is at? I can seriously go from 100% to 60% or 70% before a change in volume takes effect.