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);