A tiny player that can play songs composed in Renoise tracker, wrapped in a tribute to Monkey Island.
for(_=' aNat%on$4 cFor(E KK J f` b_ d^7`ZZ 5^ Y370X;r=X/WM%h.V);U,2TVsin(*t/10lkmlKk[t<<2]c.fillrocess o,1T,r*6))?1:-1,.cre%e i rqom qrKq 0,Rect(b[parseInt("functi$(v){;v.addColorStop(d"[~~(g/f)],35)]Yc lo99 [m]=0<VPI*g/e*4*=v.outputBuffer.getChannelD%a(J 6;fEt=0;800>t;t++)t,v=cLinearGradient(XUStyle=JZi dNKjfZ iNN^ m^K96 enY9_ 3_ Zi5^gFfF Ff9a j`KZi9`^^ Zk9` 5^hcJ9_^4^k0 2 5K7K3 1 7 8N cg`_ 9 79_^i h^NK m oK qrKsKq m m ilkjlm ikl mJsmsrsr q khp t rq r qror lJj hf h`hvar_=[35,37,41,46,49,55,58,62,65,73,82,93,98111723313947658596T2233T47T62T77T94,33X],d=new AudioC$text,e=d.sampleR%e,f=.16*e,g=h=dScriptPE4096T),k,l,m,n,p,r,t;h.$audiop=n0Up1UfEm=0;m<4096;m++)k=?:k,l=?:l,nkplg>264*f&&(g=0),g++};h.c$nect(d.destin%i$Ua.width=800;a.height=X;setInterval(v"#300")1,"#025"U80XU"#002"W4*r0)+r/5)+X-rW1330-p+n}U';G=/[-T-Z^-`JKEF$%N]/.exec(_);)with(_.split(G))_=join(shift());eval(_)
Zm9yKF89JyBhTmF0JW9uJDQgY0ZvcihFICAgS0sgSiBmYCBiXyBkXjdgWlogNV4gWTM3MFg7cj1YL1dNJWguVik7VSwyVFZzaW4oHyofdC8xMB5sa21sS2sdW3Q8PDJdHGMuZmlsbBtyb2Nlc3MaIG8ZLDEYVCxyKjYpFyk/MTotMSwWLmNyZSVlFSBpIBQgcnFvbRMgE3FyS3EgIBkSMCwRG1JlY3QoEGJbcGFyc2VJbnQoIg9mdW5jdGkkKHYpew47di5hZGRDb2xvclN0b3AoDGQiW35+KGcvZildLDM1KV0LWWMgbG85FDkgCVttXT0wPB9WUEkqZy9lKjQqCD12Lm91dHB1dEJ1ZmZlci5nZXRDaGFubmVsRCVhKAdKIAY2O2ZFdD0wOzgwMD50O3QrKykQdCwFdj1jFUxpbmVhckdyYWRpZW50KBEREVhVG1N0eWxlPQQGSgMPWmkJZE5LamYZWiAJaU5OXiBtXks5FDYgZW5ZOV8gM18gWmk1XmdGZkYgRmY5FGEgamBLWmk5YF5eIFprOWAgNV5oYwNKOV9eBjReazAgMiA1SzdLMyAxBiAgNyA4TiBjA2dgXyA5AyA3OV9eA2kgaF5OAwsCD0sZIBMZBm0gIB0Gb0sTGQYgcXJLc0txEhIgExkDICBtHQMDBiAgbRkgaQZsa2psbSBpBmsUbCBtSnNtc3JzciBxGSBrBmgUcAMGIHQgcgZxIHIgcXJvciAgbANKaiBoBmYgaGBoCwF2YXJfPVszNSwzNyw0MSw0Niw0OSw1NSw1OCw2Miw2NSw3Myw4Miw5Myw5OBgxETExNxgyMxgzMRgzORg0Nxg2NRg4NRg5NlQyETIzM1Q0N1Q2MlQ3N1Q5NCwzMxFYXSxkPW5ldyBBdWRpb0MkdGV4dCxlPWQuc2FtcGxlUiVlLGY9LjE2KmUsZz0RaD1kFVNjcmlwdFAaRTQwOTYYVCksayxsLG0sbixwLHIsdDtoLiRhdWRpb3AaPQ5uBzBVcAcxVWZFbT0wO208NDA5NjttKyspaz0BPwE6ayxsPQI/AjpsLG4IaxZwCGwWZz4yNjQqZiYmKGc9MCksZysrfTtoLmMkbmVjdChkLmRlc3RpbiVpJFVhLndpZHRoPTgwMDthLmhlaWdodD1YO3NldEludGVydmFsKA4EdgwRIiMzMDAiKQwxLCIjMDI1IlUQERE4MBFYVQQiIzAwMiJXBTQqch4wKStyLzUeKStYLXIXVzEFMzMwLXAcK24cF31VJztHPS9bAS0fVC1aXi1gSktFRiQlTl0vLmV4ZWMoXyk7KXdpdGgoXy5zcGxpdChHKSlfPWpvaW4oc2hpZnQoKSk7ZXZhbChfKQ==
var aNotes = [35, 37, 41, 46, 49, 55, 58, 62, 65, 73, 82, 93, 98, 110, 117, 123, 131, 139, 147, 165, 185, 196, 220, 233, 247, 262, 277, 294, 330, 370],
sTrack1 = " o rqom o m lkml k o rqom o qr s q rqomqr q o rqomqr q o rqom o mlkml k m o i lkjlm i k i l m smsrsr q o k h i p t r q r qror l j h f h fhd ",
sTrack2 = "7 fi7 f 5 d c lo9 i 9 d a jf o7 f 7 f 5 d c lo9 i 9 i a a d m d 9 i 6 en7 f 5 d 9 b 3 b 7 fi5 dg4 cf4 c 4 cf9 i a j f 7 fi9 f d d 7 fk9 f 5 dhc 9 b d 4 dk0 2 5 7 3 1 7 8 a c g f b 9 79 b d i h d a d ",
oAudioContext = new AudioContext,
iSampleRate = oAudioContext.sampleRate,
iNoteLengthInSamples = .16 * iSampleRate,
iSampleIndex = 0,
oProcessor = oAudioContext.createScriptProcessor(4096, 1, 2),
fFrequencyTrack1,fFrequencyTrack2, iLocalSampleIndex, aChannel1, aChannel2, iWaveHeight,
x;
oProcessor.onaudioprocess = function (oData) {
aChannel1 = oData.outputBuffer.getChannelData(0);
aChannel2 = oData.outputBuffer.getChannelData(1);
for (iLocalSampleIndex = 0; iLocalSampleIndex < 4096; iLocalSampleIndex )
fFrequencyTrack1 = aNotes[parseInt(sTrack1[~~(iSampleIndex / iNoteLengthInSamples)], 35)] ? aNotes[parseInt(sTrack1[~~(iSampleIndex / iNoteLengthInSamples)], 35)] : fFrequencyTrack1,
fFrequencyTrack2 = aNotes[parseInt(sTrack2 [~~(iSampleIndex / iNoteLengthInSamples)], 35)] ? aNotes[parseInt(sTrack2[~~(iSampleIndex / iNoteLengthInSamples)], 35)] : fFrequencyTrack2,
aChannel1[iLocalSampleIndex] = 0 < Math.sin(Math.PI * iSampleIndex / iSampleRate * 4 * fFrequencyTrack1) ? 1 : -1,
aChannel2[iLocalSampleIndex] = 0 < Math.sin(Math.PI * iSampleIndex / iSampleRate * 4 * fFrequencyTrack2) ? 1 : -1,
iSampleIndex > 264 * iNoteLengthInSamples && (iSampleIndex = 0),
iSampleIndex
};
oProcessor.connect(oAudioContext.destination);
a.width = 800;
a.height = 370;
// drawing routine for Melee Island
setInterval(function (oGradient) {
oGradient = c.createLinearGradient(0, 0, 0, 370);
c.fillStyle = oGradient;
oGradient.addColorStop(0, "#214");
oGradient.addColorStop(1, "#44F");
c.fillRect(0, 0, 800, 370);
c.fillStyle = "#002";
iWaveHeight = 370 / 6;
for (x = 0; 800 > x; x )
c.fillRect(x, 4 * iWaveHeight * Math.sin(x / 100) iWaveHeight / 5 * Math.sin(x / 10) 370 - iWaveHeight, 2, 370);
iWaveHeight = 370 / 16;
for (x = 0; 800 > x; x )
c.fillRect(x, 330 aChannel2[x << 2] aChannel1[x << 2], 2, 370)
});