Skip to content

Instantly share code, notes, and snippets.

@emkay
Created October 11, 2015 03:41
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 emkay/3fc1e0374ce4480b17f4 to your computer and use it in GitHub Desktop.
Save emkay/3fc1e0374ce4480b17f4 to your computer and use it in GitHub Desktop.
var Song = require('nesly-sound')
var song = Song()
var sq1 = song.square1
var sq2 = song.square2
var tri = song.triangle
var noi = song.noise
var time = 1/4
var drumTime = 1/8
function loop(n, fn) {
for (var i = 0; i <= n; i++) {
fn();
}
}
function randNum(min, max) {
return (Math.floor(Math.random() * (max - min + 1)) + min) - 1
}
var notes = [
'C2', 'E2', 'G2', 'rest',
'C3', 'E3', 'G3', 'rest',
'C4', 'E4', 'G4', 'rest',
'C5', 'E5', 'G5', 'rest',
'C6', 'E6', 'G6', 'rest'
]
var drums = ['rest', '$00', '$02', '$04', 'rest', '$06', '$08', '$0A', 'rest', '$0C', '$0E', '$10', '$12', '$14', 'rest']
sq1(['rest']).duty(25).timing(time)
sq2(['rest']).duty(25).timing(time)
tri(['rest']).timing(time)
function one() {
var n = randNum(1, notes.length)
var n2 = randNum(1, notes.length)
var n3 = randNum(1, notes.length)
sq1([notes[n]])
tri([notes[n2]])
sq2([notes[n3]])
sq1(['rest'])
tri(['rest'])
sq2(['rest'])
var what = randNum(0, 3)
if (what === 0) {
two()
}
}
function two() {
var time = Date.now() / 1000 | 0
var d = time.toString().split('')
d.forEach(function (a) {
var num = parseInt(a, 10)
if (drums[num]) {
if (drums[num] === 'rest') {
noi([drums[num]]).volumeEnvelope('ve_off')
} else {
noi([drums[num]]).volumeEnvelope('ve_drum_decay')
}
}
});
}
loop(10, one)
sq1(['rest']).duty(50)
loop(10, one)
sq1(['rest']).duty(0)
loop(10, one)
sq1(['rest']).duty(-25)
loop(20, one)
loop(10, one)
song.write()
song.done()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment