Original source
0+ 1+ 2+ 3+ 4+ 5+ 6+ 7+ 8+ 9+ 10+ 11+ bits/original byte

Attempt method hashing and renaming for 2D canvas context WebGL canvas context AudioContext
Assume global variable is a (as in js1k shim)
Reassign variable names to produce consecutive character blocks, except for variables
Enable ES6 features.
Options impacting performance Encapsulate with(Math)
Refactor to run with setInterval(). Use variable for time (leave empty to assign one. Time variable should be zero on the first loop and nonzero afterwards).
RegPack v5.0.1 Score = *gain + *length + *copies     Tiebreaker =
Default settings match built-in formulas for both JS Crush and First Crush. 2/1/0 sometimes achieve better results.

Preprocessed :

Crushed : base64

RegPack'ed: base64