Skip to content

Instantly share code, notes, and snippets.

@santiago26
Created November 27, 2013 13:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save santiago26/7675470 to your computer and use it in GitHub Desktop.
Save santiago26/7675470 to your computer and use it in GitHub Desktop.
var ctx = new(window.audioContext || window.webkitAudioContext);
// это всё опасно читать и тут маппинг нот во времени, и для того, чтобы было меньше строк кода - всё тут.
var do_1 = 261.63, dod_1 = 277.18, re_1 = 293.66, red_1 = 311.13, mi_1 = 329.63, fa_1 = 349.23, fad_1 = 369.99, sol_1 = 392.00, sold_1 = 415.30, la_1 = 440.00, lad_1 = 466.16, si_1 = 493.88;
var do_2 = 523.25, dod_2 = 554.36, re_2 = 587.32, red_2 = 622.26, mi_2 = 659.26, fa_2 = 698.46, fad_2 = 739.98, sol_2 = 784.00, sold_2 = 830.60, la_2 = 880.00, lad_2 = 932.32, si_2 = 987.75;
var map = [[sol_1, 500],[0, 250],[sol_1, 500],[0, 250],[sol_1, 500],[0, 250],[red_1, 500],[lad_1, 250],[sol_1, 500],[0, 250],[red_1, 500],[lad_1, 250],[sol_1, 1000],[0, 250],[re_1, 500],[0, 250],[re_1, 500],[0, 250],[re_1, 500],[0, 250],[red_2, 500],[lad_1, 250],[fad_1, 500],[0, 250],[red_1, 500],[lad_1, 250],[sol_1, 1000],[0, 250],[sol_2, 500],[0, 250],[sol_1, 500],[0, 50],[sol_1,250],[sol_2, 550],[0, 200],[fad_2, 400],[0, 50],[fa_2, 200],[0, 50],[mi_2, 150],[red_2, 150],[mi_2, 150],[0, 800],[sold_1, 350],[dod_2, 550],[0, 250],[do_2, 450],[0, 50],[si_1, 250],[0, 50],[lad_1, 150],[la_1, 150],[lad_1, 150],[0, 800],[red_1, 350],[fad_1, 800],[red_1, 450],[fad_1, 300],[lad_1, 700],[fad_1, 400],[lad_1, 300],[red_2, 700],[0, 800],[sol_2, 500],[0, 250],[sol_1, 500],[0, 50],[sol_1, 250],[sol_2, 550],[0, 200],[fad_2, 400],[0, 50],[fa_2, 200],[0, 50],[mi_2, 150],[red_2, 150],[mi_2, 150],[0, 800],[sold_1, 350],[dod_2, 550],[0, 250],[do_2, 450],[0, 50],[si_1, 250],[0, 50],[lad_1, 150],[la_1, 150],[lad_1, 150],[0, 800],[red_1, 350],[fad_1, 800],[red_1, 450],[lad_1, 300],[sol_1, 700],[red_1, 400],[lad_1, 300],[sol_1, 700],[0, 800],];
// дальше можно читать =)
function nextNote(i){
var osc = ctx.createOscillator();
osc.connect(ctx.destination);
osc.frequency.value = map[i][0];
osc.noteOn(0);
setTimeout(function () {
osc.noteOff(map[i]);
//finishedCallback();
if(i == -1) return;
else nextNote(i+1);
}, map[i][1]);
}
nextNote(0);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment