JSFiddle - React, Tailwind, and code Playground
by langsamu
JavaScript
var sound = [
/* 430 DATA */ 3950, 3, 4967, 1, 5918, 4, 4697, 4, 3950, 4, 2959, 8, 2348, 3, 2636, 1, 2959, 4, 4697, 4, 4184, 4, 3950, 7, 0, 1,
/* 440 DATA */ 3950, 1, 0, 1, 3950, 1, 0, 1, 2348, 6, 2636, 2, 2959, 4, 3134, 8, 3516, 3, 3134, 1, 2959, 3, 0, 1, 2959, 4, 3950, 4, 4697, 4, 5918, 4, 10, 1,
/* 450 DATA */ 2348, 1, 0, 1, 2348, 1, 0, 1, 2348, 4, 2216, 4, 1975, 3, 0, 1, 1975, 8, 2216, 2, 2348, 2, 2636, 4, 2348, 4, 2216, 3, 0, 1, 2216, 7, 0, 1,
/* 460 DATA */ 2216, 4, 2348, 6, 2636, 2, 2959, 4, 3134, 8, 3516, 3, 3134, 1, 2959, 4, 4697, 4, 4184, 4, 3950, 7, 0, 1,
/* 470 DATA */ 3950, 4, 2959, 3, 0, 1, 2959, 3, 0, 1, 2959, 2, 3134, 2, 3516, 3, 0, 1, 3516, 3, 0, 1, 3516, 4, 2636, 4, 2216, 2, 2348, 2, 2636, 2, 2959, 1, 0, 1, 2959, 4, 3134, 8,
/* 480 DATA */ 3950, 1, 0, 1, 3950, 2, 2959, 6, 2636, 2, 2348, 2, 2216, 2, 1975, 16, 2959, 2, 2636, 2, 2348, 8, 2216, 3, 2636, 6, 2959, 16, 100, 0
];
var audio = new AudioContext();
audio.suspend();
var oscillator = audio.createOscillator();
oscillator.type = "square";
oscillator.connect(audio.destination);
var M = 7;
for (var time = 0, repeat = true, i = 0; i < sound.length; i += 2) {
var N = sound[i];
var L = sound[i + 1];
if (N === 10 && L === 1) {
if (repeat) {
repeat = false;
i = -2;
}
continue;
}
if (N === 100) {
oscillator.frequency.setValueAtTime(0, time);
break;
}
var correctedPitch = N === 0 ? 0 : 1100000 / N;
var correctedLength = L / M;
oscillator.frequency.setValueAtTime(correctedPitch, time);
time += correctedLength;
}
oscillator.start();
audio.resume();