forked from FOSS/BangleApps
59 lines
1.1 KiB
JavaScript
59 lines
1.1 KiB
JavaScript
// made using https://www.espruino.com/Making+Music
|
|
// Manic Monday tone by The Bangles
|
|
|
|
var s = require('Storage').readJSON('setting.json',1)||{};
|
|
/* Normally we'd just use Bangle.beep which works automatically
|
|
but because we're going lower level we need to account for the
|
|
different pin. */
|
|
if (s.beep=="vib") {
|
|
function freq(f) {
|
|
if (f===0) digitalWrite(D13, 0);
|
|
else analogWrite(D13, 0.1, {freq: f});
|
|
}
|
|
} else {
|
|
function freq(f) {
|
|
if (f===0) digitalWrite(D18, 0);
|
|
else analogWrite(D18, 0.5, {freq: f});
|
|
}
|
|
}
|
|
|
|
|
|
freq(1000);
|
|
freq(1500);
|
|
freq(0);
|
|
|
|
var pitches = {
|
|
'G': 207.65,
|
|
'a': 220.00,
|
|
'b': 246.94,
|
|
'c': 261.63,
|
|
'd': 293.66,
|
|
'e': 329.63,
|
|
'f': 369.99,
|
|
'g': 392.00,
|
|
'A': 440.00,
|
|
'B': 493.88,
|
|
'C': 523.25,
|
|
'D': 587.33,
|
|
'E': 659.26,
|
|
'F': 698.46
|
|
};
|
|
|
|
function step() {
|
|
var ch = tune[pos];
|
|
if (ch !== undefined) pos++;
|
|
if (ch in pitches) freq(pitches[ch]);
|
|
else freq(0); // off
|
|
}
|
|
|
|
var tune = "aggffefed";
|
|
var pos = 0;
|
|
|
|
setWatch(() => {
|
|
pos = 0;
|
|
var playing = setInterval(step, 500);
|
|
if(playing === 0) clearInterval(playing);
|
|
}, BTN1);
|
|
|
|
E.showMessage('BTN1 to start', 'Manic Monday');
|