Pen Settings

HTML

CSS

CSS Base

Vendor Prefixing

Add External Stylesheets/Pens

Any URLs added here will be added as <link>s in order, and before the CSS in the editor. You can use the CSS from another Pen by using its URL and the proper URL extension.

+ add another resource

JavaScript

Babel includes JSX processing.

Add External Scripts/Pens

Any URL's added here will be added as <script>s in order, and run before the JavaScript in the editor. You can use the URL of any other Pen and it will include the JavaScript from that Pen.

+ add another resource

Packages

Add Packages

Search for and use JavaScript packages from npm here. By selecting a package, an import statement will be added to the top of the JavaScript editor for this package.

Behavior

Auto Save

If active, Pens will autosave every 30 seconds after being saved once.

Auto-Updating Preview

If enabled, the preview panel updates automatically as you code. If disabled, use the "Run" button to update.

Format on Save

If enabled, your code will be formatted when you actively save your Pen. Note: your code becomes un-folded during formatting.

Editor Settings

Code Indentation

Want to change your Syntax Highlighting theme, Fonts and more?

Visit your global Editor Settings.

HTML

              
                    <div class="mixerContainer">
        <div id="master" class="controllerBox">
            <h3 class="title">Master</h3>
            <div class="box">
                <div class="row a">
                    <div class="radialSlider volumeContainer">
                        <input type="range" min="0" max="11" step="0.1" value="10" id="master-volume">
                        <label for="master-volume">Volume</label>
                        <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 83.73 83.82">
                            <g class="jogContainer">
                                <circle class="jog" cx="41.42" cy="41.42" r="33.84" />
                                <circle class="thumb" cx="42" cy="22" r="4.29" />
                            </g>
                            <path class="bar" d="M12.66,70.19c-3.69-3.68-6.67-8.07-8.73-12.94S0.72,47.04,0.72,41.43s1.14-10.96,3.2-15.83
                         s5.04-9.25,8.73-12.94s8.07-6.67,12.94-8.73S35.8,0.72,41.41,0.72s10.96,1.14,15.83,3.2s9.25,5.04,12.94,8.73
                         s6.67,8.07,8.73,12.94c2.06,4.87,3.21,10.22,3.21,15.83s-1.14,10.96-3.2,15.83c-2.06,4.87-5.04,9.25-8.73,12.94" />
                            <path class="barActive" d="M12.66,70.19c-3.69-3.68-6.67-8.07-8.73-12.94S0.72,47.04,0.72,41.43s1.14-10.96,3.2-15.83
                         s5.04-9.25,8.73-12.94s8.07-6.67,12.94-8.73S35.8,0.72,41.41,0.72s10.96,1.14,15.83,3.2s9.25,5.04,12.94,8.73
                         s6.67,8.07,8.73,12.94c2.06,4.87,3.21,10.22,3.21,15.83s-1.14,10.96-3.2,15.83c-2.06,4.87-5.04,9.25-8.73,12.94" />
                        </svg>
                        <div class="dotDisplay">--</div>
                    </div>
                    <a href="https://github.com/EkoLabs/sonorous" target="_blank" class="sonorousLink">Sonorous</a>
                    <div class="radialSlider rateContainer">
                        <input type="range" min="0.5" max="1.5" step="0.1" value="1" id="master-rate">
                        <label for="master-rate">Speed</label>
                        <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 83.73 83.82">
                            <g class="jogContainer">
                                <circle class="jog" cx="41.42" cy="41.42" r="33.84" />
                                <circle class="thumb" cx="42" cy="22" r="4.29" />
                            </g>
                            <path class="bar" d="M12.66,70.19c-3.69-3.68-6.67-8.07-8.73-12.94S0.72,47.04,0.72,41.43s1.14-10.96,3.2-15.83
                         s5.04-9.25,8.73-12.94s8.07-6.67,12.94-8.73S35.8,0.72,41.41,0.72s10.96,1.14,15.83,3.2s9.25,5.04,12.94,8.73
                         s6.67,8.07,8.73,12.94c2.06,4.87,3.21,10.22,3.21,15.83s-1.14,10.96-3.2,15.83c-2.06,4.87-5.04,9.25-8.73,12.94" />
                            <path class="barActive" d="M12.66,70.19c-3.69-3.68-6.67-8.07-8.73-12.94S0.72,47.04,0.72,41.43s1.14-10.96,3.2-15.83
                         s5.04-9.25,8.73-12.94s8.07-6.67,12.94-8.73S35.8,0.72,41.41,0.72s10.96,1.14,15.83,3.2s9.25,5.04,12.94,8.73
                         s6.67,8.07,8.73,12.94c2.06,4.87,3.21,10.22,3.21,15.83s-1.14,10.96-3.2,15.83c-2.06,4.87-5.04,9.25-8.73,12.94" />
                        </svg>
                        <div class="dotDisplay">--</div>
                    </div>
                </div>
                <div class="dotDisplay songName"><a href="http://tillian.band" target="_blank">Tillian / Reborn &gt;&gt;&gt; Click to hear more</a></div>
                <div class="progressSlider">
                    <span class="timeElapsed">--:--</span>
                    <input type="range" min="0" max="100" step="1" value="0" id="master-progress">
                    <span class="timeLeft">--:--</span>
                </div>
                <div class="row">
                    <div class="buttonContainer">
                        <button class="play" id="play-btn">
                            <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 10 10"  xml:space="preserve">
                                <path class="st0" d="M0,0.81v8.03c0,0.63,0.67,1,1.22,0.7l6.84-4.03c0.52-0.3,0.52-1.07,0-1.39L1.22,0.09C0.67-0.19,0,0.2,0,0.81z"></path>
                            </svg>
                        </button>
                        <button class="stop" id="stop-btn">
                            <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 10.69 10.69"  xml:space="preserve">
                                <path class="st0" d="M8.8,10.34H1.9c-0.85,0-1.55-0.7-1.55-1.55V1.9c0-0.85,0.7-1.55,1.55-1.55h6.9c0.85,0,1.55,0.7,1.55,1.55v6.9C10.34,9.67,9.65,10.34,8.8,10.34z"/>
                            </svg>
                        </button>
                        <button class="loop" id="master-loop">
                            <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 17.25 13.54"  xml:space="preserve">
                                    <g>
                                        <path d="M10.96,11.08c-0.71,0.39-1.5,0.59-2.3,0.59C5.95,11.69,3.74,9.5,3.73,6.8l0-0.18L5,6.61c0.22,0,0.42-0.11,0.51-0.31
                                            c0.11-0.18,0.09-0.42-0.02-0.6L3.27,2.28C3.16,2.12,2.97,2.01,2.77,2.01c-0.2,0-0.38,0.11-0.49,0.27l-2.2,3.44
                                            c-0.11,0.18-0.12,0.4-0.01,0.6c0.11,0.18,0.29,0.31,0.51,0.31l1.27-0.01l0,0.18c0.02,3.74,3.07,6.75,6.81,6.73
                                            c1.11-0.01,2.21-0.28,3.17-0.82c0.45-0.24,0.63-0.82,0.37-1.27C11.97,11.02,11.41,10.84,10.96,11.08z"/>
                                        <path d="M17.18,7.21c-0.11-0.18-0.29-0.31-0.51-0.31L15.4,6.91l0-0.18C15.38,2.99,12.33-0.02,8.59,0C7.48,0.01,6.38,0.28,5.42,0.82
                                            C4.96,1.05,4.79,1.64,5.04,2.09C5.28,2.54,5.86,2.7,6.32,2.46C7,2.08,7.8,1.87,8.6,1.87c2.7-0.01,4.91,2.17,4.93,4.87l0,0.18
                                            l-1.27,0.01c-0.22,0-0.42,0.11-0.51,0.31c-0.11,0.18-0.09,0.42,0.02,0.6l2.22,3.42c0.11,0.16,0.29,0.27,0.49,0.27
                                            c0.2,0,0.38-0.11,0.49-0.27l2.2-3.44C17.27,7.63,17.29,7.41,17.18,7.21z"/>
                                    </g>
                            </svg>
                        </button>
                    </div>
                    <div class="toggleContainer">
                        <div class="title">Mute all</div>
                        <input type="checkbox" id="master-mute" class="toggle">
                        <label for="master-mute"></label>
                    </div>                  
                </div>
              <div class="shoutout">Trivia bit: <a href="http://tillian.band" target="_blank">Tillian's</a> guitarist is an <a href="https://eko.engineering" target="_blank">eko dev</a>!</div>
            </div>
        </div>
        <div id="track-vocals" class="controllerBox track">
            <h3 class="title">Vocals</h3>
            <div class="box">
                <div class="radialSlider">
                    <input type="range" min="0" max="11" step="0.1" value="10" id="track-vocals-volume">
                    <label for="track-vocals-volume">Volume</label>
                    <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 83.73 83.82">
                        <g class="jogContainer">
                            <circle class="jog" cx="41.42" cy="41.42" r="33.84" />
                            <circle class="thumb" cx="42" cy="22" r="4.29" />
                        </g>
                        <path class="bar" d="M12.66,70.19c-3.69-3.68-6.67-8.07-8.73-12.94S0.72,47.04,0.72,41.43s1.14-10.96,3.2-15.83
                         s5.04-9.25,8.73-12.94s8.07-6.67,12.94-8.73S35.8,0.72,41.41,0.72s10.96,1.14,15.83,3.2s9.25,5.04,12.94,8.73
                         s6.67,8.07,8.73,12.94c2.06,4.87,3.21,10.22,3.21,15.83s-1.14,10.96-3.2,15.83c-2.06,4.87-5.04,9.25-8.73,12.94" />
                        <path class="barActive" d="M12.66,70.19c-3.69-3.68-6.67-8.07-8.73-12.94S0.72,47.04,0.72,41.43s1.14-10.96,3.2-15.83
                         s5.04-9.25,8.73-12.94s8.07-6.67,12.94-8.73S35.8,0.72,41.41,0.72s10.96,1.14,15.83,3.2s9.25,5.04,12.94,8.73
                         s6.67,8.07,8.73,12.94c2.06,4.87,3.21,10.22,3.21,15.83s-1.14,10.96-3.2,15.83c-2.06,4.87-5.04,9.25-8.73,12.94" />
                    </svg>
                    <div class="dotDisplay">--</div>
                </div>
                <div class="toggleContainer">
                    <div class="title">Solo</div>
                    <input type="checkbox" id="track-vocals-solo" class="toggle">
                    <label for="track-vocals-solo"></label>
                </div>
                <div class="toggleContainer">
                    <div class="title">Mute</div>
                    <input type="checkbox" id="track-vocals-mute" class="toggle">
                    <label for="track-vocals-mute"></label>
                </div>
                <div class="buttonContainer">
                    <button class="fadeIn" id="track-vocals-fadeIn" title="Fade in">
                        <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 14 13.54"  xml:space="preserve">
                                    			<path d="M12.11,0.87c0.33,0,0.6,0.25,0.6,0.56c0,0.31-0.27,0.56-0.6,0.56c-3.36,0-5.38,1.57-7.06,4.69
                                                        C4.69,7.36,3.66,9.56,3.5,9.88c-0.58,1.12-1.09,1.74-1.81,2c-0.07,0.03-0.14,0.04-0.22,0.04c-0.24,0-0.47-0.14-0.56-0.36
                                                        c-0.12-0.29,0.03-0.61,0.34-0.73c0.34-0.12,0.71-0.57,1.16-1.44C2.57,9.1,3.6,6.89,3.98,6.18C5.84,2.72,8.22,0.87,12.11,0.87
                                                        C12.11,0.87,12.11,0.87,12.11,0.87 M12.11,0L12.11,0C8.1,0,5.36,1.78,3.22,5.77C2.96,6.24,2.44,7.34,2.06,8.13
                                                        C1.86,8.55,1.7,8.89,1.65,8.99c-0.46,0.88-0.68,1.02-0.7,1.04c-0.36,0.13-0.66,0.41-0.82,0.77c-0.16,0.35-0.16,0.74-0.01,1.1
                                                        c0.22,0.55,0.76,0.9,1.36,0.9c0.17,0,0.35-0.03,0.51-0.09c1.11-0.4,1.75-1.4,2.29-2.42c0.06-0.12,0.25-0.51,0.48-0.98
                                                        C5.11,8.54,5.6,7.5,5.82,7.1c1.62-3.01,3.44-4.23,6.29-4.23c0.38,0,0.74-0.14,1.02-0.4c0.29-0.27,0.45-0.64,0.45-1.03
                                                        C13.58,0.64,12.92,0,12.11,0L12.11,0z"/>
                            </svg>
                    </button>
                    <button class="fadeOut" id="track-vocals-fadeOut" title="Fade out">
                        <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 14 13.54"  xml:space="preserve">
                                                <path d="M1.47,0.87c3.89,0,6.27,1.85,8.13,5.3c0.38,0.7,1.42,2.92,1.57,3.21c0.46,0.87,0.82,1.32,1.16,1.44
                                                    c0.31,0.11,0.46,0.44,0.34,0.73c-0.09,0.22-0.32,0.36-0.56,0.36c-0.07,0-0.14-0.01-0.22-0.04c-0.71-0.26-1.23-0.88-1.81-2
                                                    c-0.17-0.32-1.2-2.53-1.56-3.2c-1.68-3.12-3.7-4.69-7.06-4.69c0,0,0,0,0,0c0,0,0,0,0,0c-0.33,0-0.6-0.25-0.6-0.56
                                                    C0.87,1.12,1.14,0.87,1.47,0.87C1.47,0.87,1.47,0.87,1.47,0.87 M1.47,0L1.47,0L1.47,0C1.09,0,0.73,0.14,0.45,0.4
                                                    C0.16,0.67,0,1.04,0,1.43c0,0.79,0.66,1.43,1.47,1.43c2.85,0,4.68,1.23,6.29,4.23c0.22,0.4,0.71,1.44,1.08,2.2
                                                    c0.23,0.48,0.41,0.86,0.48,0.99c0.53,1.02,1.18,2.02,2.29,2.42c0.16,0.06,0.34,0.09,0.51,0.09c0.6,0,1.14-0.35,1.37-0.9
                                                    c0.15-0.36,0.14-0.75-0.02-1.1c-0.16-0.36-0.46-0.64-0.84-0.77c0-0.01-0.23-0.15-0.69-1.03c-0.05-0.1-0.21-0.43-0.41-0.85
                                                    c-0.38-0.8-0.91-1.89-1.16-2.37C8.22,1.78,5.48,0,1.47,0L1.47,0z"/>
                            </svg>
                    </button>
                </div>

            </div>
        </div>
        <div id="track-guitars" class="controllerBox track">
            <h3 class="title">guitars</h3>
            <div class="box">
                <div class="radialSlider">
                    <input type="range" min="0" max="11" step="0.1" value="10" id="track-guitars-volume">
                    <label for="track-guitars-volume">Volume</label>
                    <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 83.73 83.82">
                        <g class="jogContainer">
                            <circle class="jog" cx="41.42" cy="41.42" r="33.84" />
                            <circle class="thumb" cx="42" cy="22" r="4.29" />
                        </g>
                        <path class="bar" d="M12.66,70.19c-3.69-3.68-6.67-8.07-8.73-12.94S0.72,47.04,0.72,41.43s1.14-10.96,3.2-15.83
                         s5.04-9.25,8.73-12.94s8.07-6.67,12.94-8.73S35.8,0.72,41.41,0.72s10.96,1.14,15.83,3.2s9.25,5.04,12.94,8.73
                         s6.67,8.07,8.73,12.94c2.06,4.87,3.21,10.22,3.21,15.83s-1.14,10.96-3.2,15.83c-2.06,4.87-5.04,9.25-8.73,12.94" />
                        <path class="barActive" d="M12.66,70.19c-3.69-3.68-6.67-8.07-8.73-12.94S0.72,47.04,0.72,41.43s1.14-10.96,3.2-15.83
                         s5.04-9.25,8.73-12.94s8.07-6.67,12.94-8.73S35.8,0.72,41.41,0.72s10.96,1.14,15.83,3.2s9.25,5.04,12.94,8.73
                         s6.67,8.07,8.73,12.94c2.06,4.87,3.21,10.22,3.21,15.83s-1.14,10.96-3.2,15.83c-2.06,4.87-5.04,9.25-8.73,12.94" />
                    </svg>
                    <div class="dotDisplay">--</div>
                </div>
                <div class="toggleContainer">
                    <div class="title">Solo</div>
                    <input type="checkbox" id="track-guitars-solo" class="toggle">
                    <label for="track-guitars-solo"></label>
                </div>
                <div class="toggleContainer">
                    <div class="title">Mute</div>
                    <input type="checkbox" id="track-guitars-mute" class="toggle">
                    <label for="track-guitars-mute"></label>
                </div>
                <div class="buttonContainer">
                    <button class="fadeIn" id="track-guitars-fadeIn" title="Fade in">
                        <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 14 13.54"  xml:space="preserve">
                                    			<path d="M12.11,0.87c0.33,0,0.6,0.25,0.6,0.56c0,0.31-0.27,0.56-0.6,0.56c-3.36,0-5.38,1.57-7.06,4.69
                                                        C4.69,7.36,3.66,9.56,3.5,9.88c-0.58,1.12-1.09,1.74-1.81,2c-0.07,0.03-0.14,0.04-0.22,0.04c-0.24,0-0.47-0.14-0.56-0.36
                                                        c-0.12-0.29,0.03-0.61,0.34-0.73c0.34-0.12,0.71-0.57,1.16-1.44C2.57,9.1,3.6,6.89,3.98,6.18C5.84,2.72,8.22,0.87,12.11,0.87
                                                        C12.11,0.87,12.11,0.87,12.11,0.87 M12.11,0L12.11,0C8.1,0,5.36,1.78,3.22,5.77C2.96,6.24,2.44,7.34,2.06,8.13
                                                        C1.86,8.55,1.7,8.89,1.65,8.99c-0.46,0.88-0.68,1.02-0.7,1.04c-0.36,0.13-0.66,0.41-0.82,0.77c-0.16,0.35-0.16,0.74-0.01,1.1
                                                        c0.22,0.55,0.76,0.9,1.36,0.9c0.17,0,0.35-0.03,0.51-0.09c1.11-0.4,1.75-1.4,2.29-2.42c0.06-0.12,0.25-0.51,0.48-0.98
                                                        C5.11,8.54,5.6,7.5,5.82,7.1c1.62-3.01,3.44-4.23,6.29-4.23c0.38,0,0.74-0.14,1.02-0.4c0.29-0.27,0.45-0.64,0.45-1.03
                                                        C13.58,0.64,12.92,0,12.11,0L12.11,0z"/>
                            </svg>
                    </button>
                    <button class="fadeOut" id="track-guitars-fadeOut" title="Fade out">
                        <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 14 13.54"  xml:space="preserve">
                                                <path d="M1.47,0.87c3.89,0,6.27,1.85,8.13,5.3c0.38,0.7,1.42,2.92,1.57,3.21c0.46,0.87,0.82,1.32,1.16,1.44
                                                    c0.31,0.11,0.46,0.44,0.34,0.73c-0.09,0.22-0.32,0.36-0.56,0.36c-0.07,0-0.14-0.01-0.22-0.04c-0.71-0.26-1.23-0.88-1.81-2
                                                    c-0.17-0.32-1.2-2.53-1.56-3.2c-1.68-3.12-3.7-4.69-7.06-4.69c0,0,0,0,0,0c0,0,0,0,0,0c-0.33,0-0.6-0.25-0.6-0.56
                                                    C0.87,1.12,1.14,0.87,1.47,0.87C1.47,0.87,1.47,0.87,1.47,0.87 M1.47,0L1.47,0L1.47,0C1.09,0,0.73,0.14,0.45,0.4
                                                    C0.16,0.67,0,1.04,0,1.43c0,0.79,0.66,1.43,1.47,1.43c2.85,0,4.68,1.23,6.29,4.23c0.22,0.4,0.71,1.44,1.08,2.2
                                                    c0.23,0.48,0.41,0.86,0.48,0.99c0.53,1.02,1.18,2.02,2.29,2.42c0.16,0.06,0.34,0.09,0.51,0.09c0.6,0,1.14-0.35,1.37-0.9
                                                    c0.15-0.36,0.14-0.75-0.02-1.1c-0.16-0.36-0.46-0.64-0.84-0.77c0-0.01-0.23-0.15-0.69-1.03c-0.05-0.1-0.21-0.43-0.41-0.85
                                                    c-0.38-0.8-0.91-1.89-1.16-2.37C8.22,1.78,5.48,0,1.47,0L1.47,0z"/>
                            </svg>
                    </button>
                </div>

            </div>
        </div>
        <div id="track-cello" class="controllerBox track">
            <h3 class="title">cello</h3>
            <div class="box">
                <div class="radialSlider">
                    <input type="range" min="0" max="11" step="0.1" value="10" id="track-cello-volume">
                    <label for="track-cello-volume">Volume</label>
                    <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 83.73 83.82">
                        <g class="jogContainer">
                            <circle class="jog" cx="41.42" cy="41.42" r="33.84" />
                            <circle class="thumb" cx="42" cy="22" r="4.29" />
                        </g>
                        <path class="bar" d="M12.66,70.19c-3.69-3.68-6.67-8.07-8.73-12.94S0.72,47.04,0.72,41.43s1.14-10.96,3.2-15.83
                         s5.04-9.25,8.73-12.94s8.07-6.67,12.94-8.73S35.8,0.72,41.41,0.72s10.96,1.14,15.83,3.2s9.25,5.04,12.94,8.73
                         s6.67,8.07,8.73,12.94c2.06,4.87,3.21,10.22,3.21,15.83s-1.14,10.96-3.2,15.83c-2.06,4.87-5.04,9.25-8.73,12.94" />
                        <path class="barActive" d="M12.66,70.19c-3.69-3.68-6.67-8.07-8.73-12.94S0.72,47.04,0.72,41.43s1.14-10.96,3.2-15.83
                         s5.04-9.25,8.73-12.94s8.07-6.67,12.94-8.73S35.8,0.72,41.41,0.72s10.96,1.14,15.83,3.2s9.25,5.04,12.94,8.73
                         s6.67,8.07,8.73,12.94c2.06,4.87,3.21,10.22,3.21,15.83s-1.14,10.96-3.2,15.83c-2.06,4.87-5.04,9.25-8.73,12.94" />
                    </svg>
                    <div class="dotDisplay">--</div>
                </div>
                <div class="toggleContainer">
                    <div class="title">Solo</div>
                    <input type="checkbox" id="track-cello-solo" class="toggle">
                    <label for="track-cello-solo"></label>
                </div>
                <div class="toggleContainer">
                    <div class="title">Mute</div>
                    <input type="checkbox" id="track-cello-mute" class="toggle">
                    <label for="track-cello-mute"></label>
                </div>
                <div class="buttonContainer">
                    <button class="fadeIn" id="track-cello-fadeIn" title="Fade in">
                        <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 14 13.54"  xml:space="preserve">
                                    			<path d="M12.11,0.87c0.33,0,0.6,0.25,0.6,0.56c0,0.31-0.27,0.56-0.6,0.56c-3.36,0-5.38,1.57-7.06,4.69
                                                        C4.69,7.36,3.66,9.56,3.5,9.88c-0.58,1.12-1.09,1.74-1.81,2c-0.07,0.03-0.14,0.04-0.22,0.04c-0.24,0-0.47-0.14-0.56-0.36
                                                        c-0.12-0.29,0.03-0.61,0.34-0.73c0.34-0.12,0.71-0.57,1.16-1.44C2.57,9.1,3.6,6.89,3.98,6.18C5.84,2.72,8.22,0.87,12.11,0.87
                                                        C12.11,0.87,12.11,0.87,12.11,0.87 M12.11,0L12.11,0C8.1,0,5.36,1.78,3.22,5.77C2.96,6.24,2.44,7.34,2.06,8.13
                                                        C1.86,8.55,1.7,8.89,1.65,8.99c-0.46,0.88-0.68,1.02-0.7,1.04c-0.36,0.13-0.66,0.41-0.82,0.77c-0.16,0.35-0.16,0.74-0.01,1.1
                                                        c0.22,0.55,0.76,0.9,1.36,0.9c0.17,0,0.35-0.03,0.51-0.09c1.11-0.4,1.75-1.4,2.29-2.42c0.06-0.12,0.25-0.51,0.48-0.98
                                                        C5.11,8.54,5.6,7.5,5.82,7.1c1.62-3.01,3.44-4.23,6.29-4.23c0.38,0,0.74-0.14,1.02-0.4c0.29-0.27,0.45-0.64,0.45-1.03
                                                        C13.58,0.64,12.92,0,12.11,0L12.11,0z"/>
                            </svg>
                    </button>
                    <button class="fadeOut" id="track-cello-fadeOut" title="Fade out">
                        <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 14 13.54"  xml:space="preserve">
                                                <path d="M1.47,0.87c3.89,0,6.27,1.85,8.13,5.3c0.38,0.7,1.42,2.92,1.57,3.21c0.46,0.87,0.82,1.32,1.16,1.44
                                                    c0.31,0.11,0.46,0.44,0.34,0.73c-0.09,0.22-0.32,0.36-0.56,0.36c-0.07,0-0.14-0.01-0.22-0.04c-0.71-0.26-1.23-0.88-1.81-2
                                                    c-0.17-0.32-1.2-2.53-1.56-3.2c-1.68-3.12-3.7-4.69-7.06-4.69c0,0,0,0,0,0c0,0,0,0,0,0c-0.33,0-0.6-0.25-0.6-0.56
                                                    C0.87,1.12,1.14,0.87,1.47,0.87C1.47,0.87,1.47,0.87,1.47,0.87 M1.47,0L1.47,0L1.47,0C1.09,0,0.73,0.14,0.45,0.4
                                                    C0.16,0.67,0,1.04,0,1.43c0,0.79,0.66,1.43,1.47,1.43c2.85,0,4.68,1.23,6.29,4.23c0.22,0.4,0.71,1.44,1.08,2.2
                                                    c0.23,0.48,0.41,0.86,0.48,0.99c0.53,1.02,1.18,2.02,2.29,2.42c0.16,0.06,0.34,0.09,0.51,0.09c0.6,0,1.14-0.35,1.37-0.9
                                                    c0.15-0.36,0.14-0.75-0.02-1.1c-0.16-0.36-0.46-0.64-0.84-0.77c0-0.01-0.23-0.15-0.69-1.03c-0.05-0.1-0.21-0.43-0.41-0.85
                                                    c-0.38-0.8-0.91-1.89-1.16-2.37C8.22,1.78,5.48,0,1.47,0L1.47,0z"/>
                            </svg>
                    </button>
                </div>

            </div>
        </div>
        <div id="track-keys" class="controllerBox track">
            <h3 class="title">keys</h3>
            <div class="box">
                <div class="radialSlider">
                    <input type="range" min="0" max="11" step="0.1" value="10" id="track-keys-volume">
                    <label for="track-keys-volume">Volume</label>
                    <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 83.73 83.82">
                        <g class="jogContainer">
                            <circle class="jog" cx="41.42" cy="41.42" r="33.84" />
                            <circle class="thumb" cx="42" cy="22" r="4.29" />
                        </g>
                        <path class="bar" d="M12.66,70.19c-3.69-3.68-6.67-8.07-8.73-12.94S0.72,47.04,0.72,41.43s1.14-10.96,3.2-15.83
                         s5.04-9.25,8.73-12.94s8.07-6.67,12.94-8.73S35.8,0.72,41.41,0.72s10.96,1.14,15.83,3.2s9.25,5.04,12.94,8.73
                         s6.67,8.07,8.73,12.94c2.06,4.87,3.21,10.22,3.21,15.83s-1.14,10.96-3.2,15.83c-2.06,4.87-5.04,9.25-8.73,12.94" />
                        <path class="barActive" d="M12.66,70.19c-3.69-3.68-6.67-8.07-8.73-12.94S0.72,47.04,0.72,41.43s1.14-10.96,3.2-15.83
                         s5.04-9.25,8.73-12.94s8.07-6.67,12.94-8.73S35.8,0.72,41.41,0.72s10.96,1.14,15.83,3.2s9.25,5.04,12.94,8.73
                         s6.67,8.07,8.73,12.94c2.06,4.87,3.21,10.22,3.21,15.83s-1.14,10.96-3.2,15.83c-2.06,4.87-5.04,9.25-8.73,12.94" />
                    </svg>
                    <div class="dotDisplay">--</div>
                </div>
                <div class="toggleContainer">
                    <div class="title">Solo</div>
                    <input type="checkbox" id="track-keys-solo" class="toggle">
                    <label for="track-keys-solo"></label>
                </div>
                <div class="toggleContainer">
                    <div class="title">Mute</div>
                    <input type="checkbox" id="track-keys-mute" class="toggle">
                    <label for="track-keys-mute"></label>
                </div>
                <div class="buttonContainer">
                    <button class="fadeIn" id="track-keys-fadeIn" title="Fade in">
                        <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 14 13.54"  xml:space="preserve">
                                    			<path d="M12.11,0.87c0.33,0,0.6,0.25,0.6,0.56c0,0.31-0.27,0.56-0.6,0.56c-3.36,0-5.38,1.57-7.06,4.69
                                                        C4.69,7.36,3.66,9.56,3.5,9.88c-0.58,1.12-1.09,1.74-1.81,2c-0.07,0.03-0.14,0.04-0.22,0.04c-0.24,0-0.47-0.14-0.56-0.36
                                                        c-0.12-0.29,0.03-0.61,0.34-0.73c0.34-0.12,0.71-0.57,1.16-1.44C2.57,9.1,3.6,6.89,3.98,6.18C5.84,2.72,8.22,0.87,12.11,0.87
                                                        C12.11,0.87,12.11,0.87,12.11,0.87 M12.11,0L12.11,0C8.1,0,5.36,1.78,3.22,5.77C2.96,6.24,2.44,7.34,2.06,8.13
                                                        C1.86,8.55,1.7,8.89,1.65,8.99c-0.46,0.88-0.68,1.02-0.7,1.04c-0.36,0.13-0.66,0.41-0.82,0.77c-0.16,0.35-0.16,0.74-0.01,1.1
                                                        c0.22,0.55,0.76,0.9,1.36,0.9c0.17,0,0.35-0.03,0.51-0.09c1.11-0.4,1.75-1.4,2.29-2.42c0.06-0.12,0.25-0.51,0.48-0.98
                                                        C5.11,8.54,5.6,7.5,5.82,7.1c1.62-3.01,3.44-4.23,6.29-4.23c0.38,0,0.74-0.14,1.02-0.4c0.29-0.27,0.45-0.64,0.45-1.03
                                                        C13.58,0.64,12.92,0,12.11,0L12.11,0z"/>
                            </svg>
                    </button>
                    <button class="fadeOut" id="track-keys-fadeOut" title="Fade out">
                        <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 14 13.54"  xml:space="preserve">
                                                <path d="M1.47,0.87c3.89,0,6.27,1.85,8.13,5.3c0.38,0.7,1.42,2.92,1.57,3.21c0.46,0.87,0.82,1.32,1.16,1.44
                                                    c0.31,0.11,0.46,0.44,0.34,0.73c-0.09,0.22-0.32,0.36-0.56,0.36c-0.07,0-0.14-0.01-0.22-0.04c-0.71-0.26-1.23-0.88-1.81-2
                                                    c-0.17-0.32-1.2-2.53-1.56-3.2c-1.68-3.12-3.7-4.69-7.06-4.69c0,0,0,0,0,0c0,0,0,0,0,0c-0.33,0-0.6-0.25-0.6-0.56
                                                    C0.87,1.12,1.14,0.87,1.47,0.87C1.47,0.87,1.47,0.87,1.47,0.87 M1.47,0L1.47,0L1.47,0C1.09,0,0.73,0.14,0.45,0.4
                                                    C0.16,0.67,0,1.04,0,1.43c0,0.79,0.66,1.43,1.47,1.43c2.85,0,4.68,1.23,6.29,4.23c0.22,0.4,0.71,1.44,1.08,2.2
                                                    c0.23,0.48,0.41,0.86,0.48,0.99c0.53,1.02,1.18,2.02,2.29,2.42c0.16,0.06,0.34,0.09,0.51,0.09c0.6,0,1.14-0.35,1.37-0.9
                                                    c0.15-0.36,0.14-0.75-0.02-1.1c-0.16-0.36-0.46-0.64-0.84-0.77c0-0.01-0.23-0.15-0.69-1.03c-0.05-0.1-0.21-0.43-0.41-0.85
                                                    c-0.38-0.8-0.91-1.89-1.16-2.37C8.22,1.78,5.48,0,1.47,0L1.47,0z"/>
                            </svg>
                    </button>
                </div>

            </div>
        </div>
        <div id="track-drums" class="controllerBox track">
            <h3 class="title">drums</h3>
            <div class="box">
                <div class="radialSlider">
                    <input type="range" min="0" max="11" step="0.1" value="10" id="track-drums-volume">
                    <label for="track-drums-volume">Volume</label>
                    <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 83.73 83.82">
                        <g class="jogContainer">
                            <circle class="jog" cx="41.42" cy="41.42" r="33.84" />
                            <circle class="thumb" cx="42" cy="22" r="4.29" />
                        </g>
                        <path class="bar" d="M12.66,70.19c-3.69-3.68-6.67-8.07-8.73-12.94S0.72,47.04,0.72,41.43s1.14-10.96,3.2-15.83
                         s5.04-9.25,8.73-12.94s8.07-6.67,12.94-8.73S35.8,0.72,41.41,0.72s10.96,1.14,15.83,3.2s9.25,5.04,12.94,8.73
                         s6.67,8.07,8.73,12.94c2.06,4.87,3.21,10.22,3.21,15.83s-1.14,10.96-3.2,15.83c-2.06,4.87-5.04,9.25-8.73,12.94" />
                        <path class="barActive" d="M12.66,70.19c-3.69-3.68-6.67-8.07-8.73-12.94S0.72,47.04,0.72,41.43s1.14-10.96,3.2-15.83
                         s5.04-9.25,8.73-12.94s8.07-6.67,12.94-8.73S35.8,0.72,41.41,0.72s10.96,1.14,15.83,3.2s9.25,5.04,12.94,8.73
                         s6.67,8.07,8.73,12.94c2.06,4.87,3.21,10.22,3.21,15.83s-1.14,10.96-3.2,15.83c-2.06,4.87-5.04,9.25-8.73,12.94" />
                    </svg>
                    <div class="dotDisplay">--</div>
                </div>
                <div class="toggleContainer">
                    <div class="title">Solo</div>
                    <input type="checkbox" id="track-drums-solo" class="toggle">
                    <label for="track-drums-solo"></label>
                </div>
                <div class="toggleContainer">
                    <div class="title">Mute</div>
                    <input type="checkbox" id="track-drums-mute" class="toggle">
                    <label for="track-drums-mute"></label>
                </div>
                <div class="buttonContainer">
                    <button class="fadeIn" id="track-drums-fadeIn" title="Fade in">
                        <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 14 13.54"  xml:space="preserve">
                                    			<path d="M12.11,0.87c0.33,0,0.6,0.25,0.6,0.56c0,0.31-0.27,0.56-0.6,0.56c-3.36,0-5.38,1.57-7.06,4.69
                                                        C4.69,7.36,3.66,9.56,3.5,9.88c-0.58,1.12-1.09,1.74-1.81,2c-0.07,0.03-0.14,0.04-0.22,0.04c-0.24,0-0.47-0.14-0.56-0.36
                                                        c-0.12-0.29,0.03-0.61,0.34-0.73c0.34-0.12,0.71-0.57,1.16-1.44C2.57,9.1,3.6,6.89,3.98,6.18C5.84,2.72,8.22,0.87,12.11,0.87
                                                        C12.11,0.87,12.11,0.87,12.11,0.87 M12.11,0L12.11,0C8.1,0,5.36,1.78,3.22,5.77C2.96,6.24,2.44,7.34,2.06,8.13
                                                        C1.86,8.55,1.7,8.89,1.65,8.99c-0.46,0.88-0.68,1.02-0.7,1.04c-0.36,0.13-0.66,0.41-0.82,0.77c-0.16,0.35-0.16,0.74-0.01,1.1
                                                        c0.22,0.55,0.76,0.9,1.36,0.9c0.17,0,0.35-0.03,0.51-0.09c1.11-0.4,1.75-1.4,2.29-2.42c0.06-0.12,0.25-0.51,0.48-0.98
                                                        C5.11,8.54,5.6,7.5,5.82,7.1c1.62-3.01,3.44-4.23,6.29-4.23c0.38,0,0.74-0.14,1.02-0.4c0.29-0.27,0.45-0.64,0.45-1.03
                                                        C13.58,0.64,12.92,0,12.11,0L12.11,0z"/>
                            </svg>
                    </button>
                    <button class="fadeOut" id="track-drums-fadeOut" title="Fade out">
                        <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 14 13.54"  xml:space="preserve">
                                                <path d="M1.47,0.87c3.89,0,6.27,1.85,8.13,5.3c0.38,0.7,1.42,2.92,1.57,3.21c0.46,0.87,0.82,1.32,1.16,1.44
                                                    c0.31,0.11,0.46,0.44,0.34,0.73c-0.09,0.22-0.32,0.36-0.56,0.36c-0.07,0-0.14-0.01-0.22-0.04c-0.71-0.26-1.23-0.88-1.81-2
                                                    c-0.17-0.32-1.2-2.53-1.56-3.2c-1.68-3.12-3.7-4.69-7.06-4.69c0,0,0,0,0,0c0,0,0,0,0,0c-0.33,0-0.6-0.25-0.6-0.56
                                                    C0.87,1.12,1.14,0.87,1.47,0.87C1.47,0.87,1.47,0.87,1.47,0.87 M1.47,0L1.47,0L1.47,0C1.09,0,0.73,0.14,0.45,0.4
                                                    C0.16,0.67,0,1.04,0,1.43c0,0.79,0.66,1.43,1.47,1.43c2.85,0,4.68,1.23,6.29,4.23c0.22,0.4,0.71,1.44,1.08,2.2
                                                    c0.23,0.48,0.41,0.86,0.48,0.99c0.53,1.02,1.18,2.02,2.29,2.42c0.16,0.06,0.34,0.09,0.51,0.09c0.6,0,1.14-0.35,1.37-0.9
                                                    c0.15-0.36,0.14-0.75-0.02-1.1c-0.16-0.36-0.46-0.64-0.84-0.77c0-0.01-0.23-0.15-0.69-1.03c-0.05-0.1-0.21-0.43-0.41-0.85
                                                    c-0.38-0.8-0.91-1.89-1.16-2.37C8.22,1.78,5.48,0,1.47,0L1.47,0z"/>
                            </svg>
                    </button>
                </div>

            </div>
        </div>
    </div>
    <svg>
        <linearGradient id="jogGradient" gradientUnits="userSpaceOnUse" x1="22.9189" y1="76.1371" x2="90.5909" y2="76.1371" gradientTransform="matrix(1 -2.775030e-04 2.775030e-04 1 -15.3562 -34.7017)">
            <stop offset="0" style="stop-color:#232323" />
            <stop offset="0.4624" style="stop-color:#100E0F" />
            <stop offset="0.7146" style="stop-color:#121011" />
            <stop offset="0.8573" style="stop-color:#1A1919" />
            <stop offset="0.9723" style="stop-color:#272627" />
            <stop offset="1" style="stop-color:#2B2B2B" />
        </linearGradient>
    </svg>

<a href="https://github.com/EkoLabs/sonorous" class="github-corner" aria-label="Sonorous on GitHub" target="_blank"><svg width="80" height="80" viewBox="0 0 250 250" style="fill:#151513; color:#fff; position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
              
            
!

CSS

              
                html, body{
    width: 100%;
    height: 100%;
    padding: 0;
    margin: 0;
}

body{
    background : #606060;
    display: flex;
    align-items: center;
    justify-content: center;
}

body > svg{
    display: none;
}

@font-face {
    font-family: 'ChessType';
    font-style: normal;
    font-weight: normal;
    src: local('ChessType'), url('https://video.eko.com/s/sonorous/demos/track_mixer/ChessType.woff') format('woff');
}

.controllerBox{
    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
    --main-color: #f6b018;
    --secondary-color: #fff686;
    display: flex;
    flex-direction: column;
}

.controllerBox h3.title {
    box-sizing: border-box;
    font-size: 18px;
    background: #161616;
    border-radius: 5px 5px 0px 0px;
    color: #8E8E8E;
    margin: 0;
    padding: 10px;
    padding-bottom: 9px;
    text-transform: uppercase;
    background-repeat: no-repeat;
    background-position: right 10px top 10px;
    background-size: 16px;
}

.controllerBox .box {
    box-sizing: border-box;
    flex-grow: 1;
    padding: 18px 18px 10px 18px;
    background : linear-gradient(90deg, rgba(43, 43, 43, 1) 0%, rgba(31, 31, 31, 1) 100%);
    border-radius : 0 0 6px 6px;
    box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
    display: flex;
    flex-direction: column;
    align-items: center;
}

.controllerBox .dotDisplay,
.controllerBox .progressSlider,
.controllerBox .buttonContainer,
.controllerBox .toggle + label
{
    border-top: 3px solid #100e0f;
    border-bottom: 2px solid #3b393a;
    background: #100e0f;
    padding: 6px 10px;
    margin: 10px;
    border-radius: 6px;
}

.controllerBox .dotDisplay{
    position: relative;
    font-family: ChessType;
    color: var(--main-color);
    text-transform: lowercase;
    display: inline-block;
}

.songName{
    overflow: hidden;
    white-space: nowrap;
    max-width: 300px;
}

.songName a{
    display: block;
    animation: scroll 10s steps(14, end) infinite;
    text-decoration: none;
    color: var(--main-color);
    transition: all 0.3s linear;

}

.songName a:hover{
    color: var(--secondary-color);
}

@keyframes scroll {
    0% { transform: translateX(0%); }
    50% { transform: translateX(0%); }
    100% { transform: translateX(-100%); }
}

.controllerBox .progressSlider{
    display: flex;
    padding: 4px 10px;
    padding-bottom: 5px;
    border-radius: 12px;
    margin-top: 0;

}

.progressSlider span{
    display: inline-block;
    color: #7a7a7a;
    font-size: 10px;
    margin-top: 1px;
}

.progressSlider input[type=range] {
    flex: 1;
    margin: 0 10px;
    border: 1px solid #565656;
}

.progressSlider input[type=range] {
    -webkit-appearance: none;
    -moz-apperance: none;
    border-radius: 6px;
    height: 10px;
    --progress-percent: 0%;

    background-image: linear-gradient(90deg,
    var(--main-color) var(--progress-percent),
    black var(--progress-percent)
    );

    transition: all 0.3s linear;
    cursor: pointer;
}

.progressSlider input[type="range"]::-moz-range-track {
    /*border: none;*/
    background: none;
    outline: none;
}

.progressSlider input[type=range]:focus {
    outline: none;
    /*border: none;*/
}

.progressSlider input[type=range]::-webkit-slider-thumb {
    -webkit-appearance: none !important;
    background-color: #df7164;
    height: 13px;
    width: 13px;
    border-radius: 50%;
    visibility: hidden;
}

.progressSlider .progressSlider input[type=range]::-moz-range-thumb {
    -moz-appearance: none !important;
    background-color: #df7164;
    border: none;
    height: 13px;
    width: 13px;
    border-radius: 50%;
    visibility: hidden;
}

/*radial slider*/


.radialSlider {
    position: relative;
    width: 100px;
    min-width: 100px;
    display: flex;
    flex-direction: column;
}

.radialSlider svg{
    pointer-events: none;
}

.radialSlider .jogContainer {
    transform-origin: center;
    cursor: pointer;
    pointer-events: all;
    touch-action: none;
}

.radialSlider input { display: none}

.radialSlider label{
    display: block;
    color: #8E8E8E;
    margin: 0;
    padding: 0px;
    text-align: center;
    text-transform: uppercase;
    font-size: 16px;
}

.radialSlider svg {
    margin-top: 8px;
}

.radialSlider .jog {
    fill: url(#jogGradient);
    stroke: #545454;
    stroke-width: 1.3855;
    stroke-miterlimit: 10;
}

.radialSlider .bar,  .radialSlider .barActive{
    fill: none;
    stroke: #FFA412;
    stroke-width: 1.4431;
    stroke-miterlimit: 10;
    stroke-dasharray: 191;
}

.radialSlider .bar{
    stroke: #7A7A7A;
}

.radialSlider .thumb{
    fill: #FFA412;
}

.radialSlider .dotDisplay {
    align-self: center;
    margin-top: 3px;
    text-align: center;
    width: 30px;
}

/*main button container*/

.controllerBox .buttonContainer {
    display: inline-flex;
    padding: 0px 3px 3px 4px;
    height: 36px;
    margin: 0;
}

.buttonContainer button{
    border: 0;
    width: 36px;
    height: 36px;
    background : linear-gradient(180deg, rgba(35, 35, 35, 1) 0%, rgba(16, 14, 15, 1) 46.24%, rgba(18, 16, 17, 1) 71.46%, rgba(26, 25, 25, 1) 85.73%, rgba(39, 38, 39, 1) 97.23%, rgba(43, 43, 43, 1) 100%);
    border-radius: 6px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-right: 2px;
    cursor: pointer;
    transition: all 0.2s ease-out;
}

.buttonContainer button:hover{
    background: var(--secondary-color);
}

.buttonContainer button.active{
    background: var(--main-color);
}

.buttonContainer button.active path, .buttonContainer button:hover path  {
    stroke: none;
    fill: black;
}


.buttonContainer button svg{
    width: 60%;
    height: 60%;
}

.buttonContainer button path{
    fill:none;
    stroke:#666666;
    stroke-width:0.7003;
    stroke-miterlimit:10;
}

button.loop svg {
    width: 100%;
    height: 100%;
}

button.fadeIn svg, button.fadeOut svg{
    width: 90%;
    height: 90%;
}


.controllerBox .toggle {
    display: none;
}

.controllerBox .toggle {
    display: none;
}

.row{
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    margin: 15px 0;
}

.row.a{
    margin-top: 0;
    margin-bottom: 0;
}

.toggleContainer{
    display: flex;
    flex-direction: column;
}

.toggleContainer .title{
    color: #8E8E8E;
    margin: 0;
    padding: 0px;
    text-align: center;
    text-transform: uppercase;
}

.controllerBox .toggle + label{
    display: inline-block;
    position: relative;
    width: 80px;
    height: 27px;
    border-radius: 50px;
    cursor: pointer;
    margin: 0;
    margin-top: 8px;
}

.toggle + label:before{
    position: absolute;
    top: 0;
    left: 3px;
    content: "";
    width: 57px;
    height:  36px;
    background : linear-gradient(90deg, rgba(35, 35, 35, 1) 0%, rgba(16, 14, 15, 1) 46.24%, rgba(18, 16, 17, 1) 71.46%, rgba(26, 25, 25, 1) 85.73%, rgba(39, 38, 39, 1) 97.23%, rgba(43, 43, 43, 1) 100%);
    border-radius : 50px;
    transition: all 0.2s ease-out;
}

.toggle:checked + label:before{
    left: 39px;
    background: var(--main-color);
}


/*layout */

.mixerContainer{
    display: flex;
    align-items: stretch;
}

.track {
    margin-left: 10px;
    display: flex;
    flex-direction: column;
}

.track .toggleContainer{
    margin-top: 20px;
}

.track .buttonContainer {
    margin-top: 20px;
}

#track-vocals > .title{
    background-image: url(https://eko.com/s/sonorous/demos/track_mixer/vocals.svg);
}

#track-guitars > .title{
    background-image: url(https://eko.com/s/sonorous/demos/track_mixer/guitars.svg);
    background-size: 20px;
}

#track-cello > .title{
    background-image: url(https://eko.com/s/sonorous/demos/track_mixer/cello.svg);
    background-size: 20px;
}

#track-keys > .title{
    background-image: url(https://eko.com/s/sonorous/demos/track_mixer/keys.svg);
    background-size: 20px;
}

#track-drums > .title{
    background-image: url(https://eko.com/s/sonorous/demos/track_mixer/drums.svg);
    background-size: 20px;
}

#master .box{
    align-items: stretch;
}

.sonorousLink{
    display: block;
    width: 100px;
    background-image: url(https://eko.com/s/sonorous/demos/track_mixer/sonorous.svg);
    background-repeat: no-repeat;
    background-position: top center;
    text-align: center;
    text-decoration: none;
    color: #626262;
    margin: 0 20px;
    font-weight: bold;
    font-size: 12px;
    text-transform: uppercase;
    padding-top: 48px;
    align-self: center;
}

.shoutout{
  color: #bbbbbb;
  text-align: center;
  font-size: 12px;
  margin-top: auto;
}

.shoutout a{
  color: #cccccc;
}
              
            
!

JS

              
                

// UI logic

let progressInput = document.querySelector("#master-progress");
let timeElapsed = document.querySelector(".timeElapsed");
let timeLeft = document.querySelector(".timeLeft");

function addMasterControls() {
    // master volume
    setupRadialSlider(document.querySelector(`#master .volumeContainer`),
        // volume is 0-11, map it to 0-1
        value =>  { Sonorous.masterVolume = value/11 });

    setupRadialSlider(document.querySelector(`#master .rateContainer`),
        // rate is 0.5 to 2
        value =>  {
            Sonorous.sonors.forEach(sonor =>  sonor.playbackRate = value);
        });

    // play
    document.getElementById('play-btn').addEventListener('click', e => {
        let isPlaying = e.currentTarget.classList.contains('active');
        if (isPlaying) {
            e.currentTarget.classList.remove('active');
            Sonorous.sonors.forEach(sonor => {
                sonor.pause();
            });
        } else {
            e.currentTarget.classList.add('active');
            Sonorous.sonors.forEach(sonor => {
                sonor.play();
                sonor.volume = parseFloat(document.getElementById(`${sonor.id}-volume`).value) / 11;
            });
        }
    });

    // stop
    document.getElementById('stop-btn').addEventListener('click', () => {
        document.querySelector("#play-btn").classList.remove('active');
        Sonorous.sonors.forEach( sonor => {
            sonor.stop();
        });
    });

    // loop
    document.getElementById(`master-loop`).addEventListener('click', e => {
        Sonorous.sonors.forEach(sonor => sonor.loop = !sonor.loop);
        e.currentTarget .classList.toggle('active');
    });

    //master mute
    document.getElementById('master-mute').addEventListener('click', () => {
      console.log(Sonorous.muteAll);
        Sonorous.muteAll = !Sonorous.muteAll;
    });

    let progressSonor = Sonorous.get('track-vocals');
    // update progress on playback
    setInterval(()=>{
        if (progressSonor.isPlaying && progressSonor.duration !== 0) {
            let currentTime = progressSonor.playbackPosition;
            let percentComplete = currentTime / progressSonor.duration;
            updateProgressUI(percentComplete, progressSonor.duration);
        } else {
            updateProgressUI(0, null);
        }
    }, 100);

    // progress bar seeking
    progressInput.addEventListener('change', e=>{
        let newValue = e.currentTarget.value;
        if (progressSonor.isPlaying) {
            Sonorous.sonors.forEach(sonor => {
                sonor.seek(sonor.duration * newValue / 100)
            })
        }
    });

}

function setupTrackControls(sonor, trackId) {
    // Create volume listener
    setupRadialSlider(document.getElementById(`${trackId}`),
        // volume is 0-11, map it to 0-1
        value =>  { sonor.volume = value/11 });

    // Create mute listener
    document.getElementById(`${trackId}-mute`).addEventListener('click', () => {
        // when other tracks are soloed, mute has no immediate effect
        if (getSoloToggles().length == 0) {
            sonor.muted = !sonor.muted;
        }
    });

    // Create solo listener
    document.getElementById(`${trackId}-solo`).addEventListener('click', () => {
        //get an array of track ids for all checked solo toggles
        let soloToggles = getSoloToggles();

        // we have at least one soloed track, ignore mutes
        if (soloToggles.length > 0){
            Sonorous.sonors.forEach(sonor => sonor.muted = !soloToggles.includes(sonor.id));
        } else {
        // no soloed track, revert mute status
            Sonorous.sonors.forEach(
                sonor => sonor.muted = document.querySelector(`#${sonor.id}-mute:checked`) !== null
            );
        }
    });


    // Create fadeIn listener
    document.getElementById(`${trackId}-fadeIn`).addEventListener('click', () => {
        let volumeInput = document.getElementById(`${trackId}-volume`);
        let fadeStartTime = Date.now();
        let fadeStartVolume = sonor.volume;

        // we want to update the knobs with the fade
        // note: this is a temp hacky way
        let fadeInterval = setInterval(()=>{
            let volumePercent = (Date.now() - fadeStartTime) / 1000;
            if(volumePercent >= 0 && volumePercent <= 1){
                volumeInput.value = fadeStartVolume * 11 + volumePercent * ( 10 - fadeStartVolume * 11);
                volumeInput.dispatchEvent(new Event('change'));
            } else if (volumePercent >= 0) {
                volumeInput.value = 10;
                volumeInput.dispatchEvent(new Event('change'));
                clearInterval(fadeInterval)
            }

        }, 30);

        sonor.fade(10/11, 1);
    });

    // Create fadeOut listener
    document.getElementById(`${trackId}-fadeOut`).addEventListener('click', () => {
        let volumeInput = document.getElementById(`${trackId}-volume`);
        let fadeStartTime = Date.now();
        let fadeStartVolume = sonor.volume;

        // we want to update the knobs with the fade
        // note: this is a temp hacky way
        let fadeInterval = setInterval(()=>{
            let volumePercent = 1 - (Date.now() - fadeStartTime) / 1000;
            if(volumePercent >= 0 && volumePercent <= 1){
                volumeInput.value = volumePercent * fadeStartVolume * 11;
                volumeInput.dispatchEvent(new Event('change'));
            } else if (volumePercent < 0) {
                volumeInput.value = 0;
                volumeInput.dispatchEvent(new Event('change'));
                clearInterval(fadeInterval)
            }

        }, 30);
    });

    sonor.fade(0, 1);
}

function setupRadialSlider(parentElement, onChange) {
    let input = parentElement.querySelector('input[type=range]');
    let knobJog = parentElement.querySelector('.jogContainer');
    let barActive = parentElement.querySelector('.barActive');
    let text = parentElement.querySelector('.dotDisplay');

    let rangeStart = parseFloat(input.getAttribute("min"));
    let rangeEnd = parseFloat(input.getAttribute("max"));

    knob(input, knobJog, {
        rangeInDegrees: 270,
        rangeStartDegree: 220,
        onUpdate: value => {
            let progress = (value - rangeStart) / (rangeEnd - rangeStart);
            let degrees = progress * 270 + 220;
            knobJog.style.transform = `rotate(${degrees}deg)`;
            // this magic number is the path length. Why recalculate it when it's constant?
            barActive.style.strokeDashoffset = (1 - progress) * 191;
            text.innerHTML = value.toFixed(1);
            onChange(value);
        }
    });
}



function updateProgressUI(percentComplete, duration){
    let timeElapsedNumber;
    let timeLeftNumber;
    if (duration) {
        // luckily our audio demo is shorter than one minute
        timeElapsedNumber = String(parseInt(percentComplete * duration)).padStart(2, '0');
        timeLeftNumber = String(parseInt(duration - duration * percentComplete)).padStart(2, '0');
        timeElapsed.innerHTML = `00:${timeElapsedNumber}`;
        timeLeft.innerHTML = `-00:${timeLeftNumber}`;
    } else {
        timeElapsed.innerHTML  = '--:--';
        timeLeft.innerHTML = '--:--';
    }

    progressInput.style.setProperty('--progress-percent', `${percentComplete*100}%`);
}

// returns an array of track ids for all checked solo toggles
function getSoloToggles(){
    return Array.from(document.querySelectorAll('input[id$="solo"]:checked'))
        .map(el => el.id.substring(0, el.id.length-5));
}

if (Sonorous && Sonorous.isSupported()) {
    let trackMap = {
        'track-vocals': 'https://video.eko.com/s/sonorous/demos/track_mixer/Tillian_Reborn_Vocals.mp3',
        'track-guitars': 'https://video.eko.com/s/sonorous/demos/track_mixer/Tillian_Reborn_Guitars.mp3',
        'track-keys': 'https://video.eko.com/s/sonorous/demos/track_mixer/Tillian_Reborn_Keys.mp3',
        'track-cello': 'https://video.eko.com/s/sonorous/demos/track_mixer/Tillian_Reborn_Cello.mp3',
        'track-drums': 'https://video.eko.com/s/sonorous/demos/track_mixer/Tillian_Reborn_Drums.mp3',
    };

    Object.keys(trackMap).forEach((trackId) => {
        let sonor = Sonorous.addSonor(trackMap[trackId], { id: trackId });
        setupTrackControls(sonor, trackId);
    });

    addMasterControls();
}

              
            
!
999px

Console