Skip to content

Instantly share code, notes, and snippets.

@Tanete
Last active August 30, 2016 06:09
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 Tanete/7a6e5553d0c32ebb61fa29f55f8a7ac3 to your computer and use it in GitHub Desktop.
Save Tanete/7a6e5553d0c32ebb61fa29f55f8a7ac3 to your computer and use it in GitHub Desktop.
demo for playing music with ruff
'use strict';
// var f = [262, 294, 330, 349, 392, 440, 494, 523, 587, 659, 698, 784, 880, 988, 1047, 1175, 1319, 1397, 1568, 1760, 1976];
// var f = [1, 262, 294, 330, 349, 392, 440, 494];
var f = [1, 523, 587, 659, 698, 784, 880, 988, 1047]
var duration = 400;
var gap = 80;
var music = [1, 2, 3, 1, 1, 2, 3, 1, 3, 4, 5, 3, 4, 5,
5, 6, 5, 4, 3, 1, 5, 6, 5, 4, 3, 1, 1, 5, 1, 1, 5, 1]
var beat = [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 4, 4, 8,
3, 1, 3, 1, 4, 4, 3, 1, 3, 1, 4, 4, 4, 4, 8, 4, 4, 8]
// var f = [10, 30, 50, 70, 90, 110, 130, 150, 170, 190, 210, 230, 250, 270, 290, 310, 330, 350, 370, 390, 410, 430, 450, 470, 490, 510];
$.ready(function (error) {
if (error) {
console.log(error);
return;
}
// $('#buzzer').turnOn();
for (var i = 0; i < 3; i++) {
for (var j = 0; j < music.length; j++) {
$('#led-r').turnOn();
console.log('playing: ', f[music[j]]);
play(f[music[j]],beat[j]);
$('#buzzer').turnOff();
$('#led-r').turnOff();
delay(gap);
}
console.log('round: ', i);
}
$('#buzzer').turnOff();
})
function play(sound, beats) {
var start = Date.now();
var endAt = start + duration * beats / 4;
var now = 0;
var total = 1;
while (Date.now() < endAt) {
total++ % 2 ? $('#buzzer')._gpio.write(1) : $('#buzzer')._gpio.write(0);
// console.log($('#buzzer')._gpio.read());
delay((1 / sound) * 1000);
}
}
function delay(milliseconds) {
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds) {
break;
}
}
}
$.end(function () {
$('#led-r').turnOff();
$('#buzzer')._gpio.write(0)
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment