still-alive
Version:
the "still alive" song from portal
26 lines (23 loc) • 727 B
JavaScript
var notes = require('audio-notes');
var music = require('./music.json');
var bps = 120 / 60;
module.exports = function (t) {
var note = music[Math.floor(t * bps * 2) % music.length];
var sum = 0;
for (var i = 0, l = note.length; i < l; i++) {
var x = notes[note[i]] || 0;
sum += 0
+ sin(x / 2) * 0.2
+ sin(x / 2 + 2) * 0.2
+ sin(x) * 0.3 + sin(x + 8) * 0.15
+ sin(x * 2 + sin(400 * x)) * 0.15
+ sin(x * 2 + 4) * 0.1
+ sin(x * 3) * 0.25
+ sin(x * 4 + sin(100 * x)) * 0.1
;
}
return l ? sum / Math.sqrt(l) : 0;
function sin (x) {
return Math.sin(2 * Math.PI * (t % 4) * x);
}
};