The Imperial March
17 lines of code
by Paul Panov
JavaScript
var context = window.AudioContext ? new AudioContext() : new webkitAudioContext(), data = [440,250,0,250,440,250,0,250,440,250,0,250,349.228,187.5,0,125,523.251,62.5,0,125,440,250,0,250,349.228,187.5,0,125,523.251,62.5,0,125,440,500,0,500,659.255,250,0,250,659.255,250,0,250,659.255,250,0,250,698.456,187.5,0,125,523.251,62.5,0,125,415.305,250,0,250,349.228,187.5,0,125,523.251,62.5,0,125,440,500,0,500,880,250,0,250,440,187.5,0,125,440,62.5,0,125,880,250,0,250,830.609,187.5,0,125,783.991,62.5,0,125,698.456,62.5,0,62.5,698.456,62.5,0,62.5,698.456,62.5,0,437.5,466.164,125,0,125,622.254,250,0,250,587.33,187.5,0,125,523.251,62.5,0,125,523.251,62.5,0,62.5,493.883,62.5,0,62.5,523.251,62.5,0,437.5,261.626,125,0,125,329.628,250,0,250,261.626,187.5,0,125,391.995,62.5,0,125,311.127,250,0,250,261.626,187.5,0,125,391.995,62.5,0,125,329.628,500];
(function play(f, t) {
var osc = context.createOscillator();
osc.frequency.value = f;
osc.type = "sawtooth";
osc.connect(context.destination);
osc.start(0);
setTimeout(function() {
osc.disconnect(context.destination);
osc.stop(0);
var ff = data.shift();
var tt = data.shift();
if (ff !== undefined) {
play(ff, tt);
}
}, t);
})(0,0);