add support for Bangle.js 2
parent
5fc5b83102
commit
071a7a7e68
|
|
@ -1553,7 +1553,7 @@
|
|||
"id": "metronome",
|
||||
"name": "Metronome",
|
||||
"icon": "metronome_icon.png",
|
||||
"version": "0.06",
|
||||
"version": "0.07",
|
||||
"readme": "README.md",
|
||||
"description": "Makes the watch blinking and vibrating with a given rate",
|
||||
"tags": "tool",
|
||||
|
|
|
|||
|
|
@ -4,3 +4,4 @@
|
|||
0.04: App shows instructions, Widgets remain visible, color changed
|
||||
0.05: Buzz intensity and beats per bar can be changed via settings-app
|
||||
0.06: Correct string position
|
||||
0.07: Add support for Bangle.sjs2
|
||||
|
|
@ -5,7 +5,7 @@ var time_diffs = [1000, 1000, 1000]; //array to calculate mean bpm
|
|||
var tindex=0; //index to iterate through time_diffs
|
||||
|
||||
|
||||
Bangle.setLCDTimeout(undefined); //do not deaktivate display while running this app
|
||||
Bangle.setLCDTimeout(undefined); //do not deactivate display while running this app
|
||||
|
||||
const storage = require("Storage");
|
||||
const SETTINGS_FILE = 'metronome.settings.json';
|
||||
|
|
@ -15,7 +15,7 @@ function setting(key) {
|
|||
//define default settings
|
||||
const DEFAULTS = {
|
||||
'beatsperbar': 4,
|
||||
'buzzintens': 0.75,
|
||||
'buzzintens': 1.0,
|
||||
};
|
||||
if (!settings) { loadSettings(); }
|
||||
return (key in settings) ? settings[key] : DEFAULTS[key];
|
||||
|
|
@ -54,39 +54,57 @@ function updateScreen() {
|
|||
changecolor();
|
||||
try {
|
||||
Bangle.buzz(50, setting('buzzintens'));
|
||||
Bangle.beep(); // TODO: make optional
|
||||
} catch(err) {
|
||||
}
|
||||
g.setFont("Vector",40).setFontAlign(0,0);
|
||||
g.drawString(Math.floor(bpm)+"bpm", g.getWidth()/2, 100);
|
||||
}
|
||||
|
||||
Bangle.on('touch', function(button) {
|
||||
Bangle.on('touch', function(zone, e) {
|
||||
// setting bpm by tapping the screen. Uses the mean time difference between several tappings.
|
||||
if (tindex < time_diffs.length) {
|
||||
if (Date.now()-tStart < 5000) {
|
||||
time_diffs[tindex] = Date.now()-tStart;
|
||||
}
|
||||
} else {
|
||||
tindex=0;
|
||||
time_diffs[tindex] = Date.now()-tStart;
|
||||
}
|
||||
tindex += 1;
|
||||
mean_time = 0.0;
|
||||
for(count = 0; count < time_diffs.length; count++) {
|
||||
mean_time += time_diffs[count];
|
||||
}
|
||||
time_diff = mean_time/count;
|
||||
if ((process.env.HWVERSION==2 && e.x > 39 && e.x < 136) || process.env.HWVERSION==1){
|
||||
if (tindex < time_diffs.length) {
|
||||
if (Date.now()-tStart < 5000) {
|
||||
time_diffs[tindex] = Date.now()-tStart;
|
||||
}
|
||||
} else {
|
||||
tindex=0;
|
||||
time_diffs[tindex] = Date.now()-tStart;
|
||||
}
|
||||
tindex += 1;
|
||||
mean_time = 0.0;
|
||||
for (count = 0; count < time_diffs.length; count++) {
|
||||
mean_time += time_diffs[count];
|
||||
}
|
||||
time_diff = mean_time/count;
|
||||
|
||||
tStart = Date.now();
|
||||
clearInterval(time_diff);
|
||||
bpm = (60 * 1000/(time_diff));
|
||||
updateScreen();
|
||||
clearInterval(interval);
|
||||
interval = setInterval(updateScreen, 60000 / bpm);
|
||||
return bpm;
|
||||
tStart = Date.now();
|
||||
clearInterval(time_diff);
|
||||
bpm = (60 * 1000/(time_diff));
|
||||
updateScreen();
|
||||
clearInterval(interval);
|
||||
interval = setInterval(updateScreen, 60000 / bpm);
|
||||
return bpm;
|
||||
}
|
||||
else if (e.x < 39) {
|
||||
if (bpm > 1) {
|
||||
bpm -= 1;
|
||||
clearInterval(interval);
|
||||
interval = setInterval(updateScreen, 60000 / bpm);
|
||||
}
|
||||
}
|
||||
else if (e.x > 136) {
|
||||
if (bpm > 1) {
|
||||
bpm += 1;
|
||||
clearInterval(interval);
|
||||
interval = setInterval(updateScreen, 60000 / bpm);
|
||||
}}
|
||||
});
|
||||
|
||||
// enable bpm finetuning via buttons.
|
||||
// enable bpm finetuning via
|
||||
|
||||
if ((process.env.HWVERSION==1)) {
|
||||
setWatch(() => {
|
||||
bpm += 1;
|
||||
clearInterval(interval);
|
||||
|
|
@ -101,10 +119,11 @@ setWatch(() => {
|
|||
}
|
||||
}, BTN3, {repeat:true});
|
||||
|
||||
}
|
||||
interval = setInterval(updateScreen, 60000 / bpm);
|
||||
|
||||
g.clear(1).setFont("6x8");
|
||||
g.drawString('Touch the screen to set tempo.\nUse BTN1 to increase, and\nBTN3 to decrease bpm value by 1.', 25, 200);
|
||||
g.clear(1).setFont("6x8");
|
||||
g.drawString('Touch the screen to set tempo.\nUse BTN1 to increase, and\nBTN3 to decrease bpm value by 1.', 25, 200);
|
||||
|
||||
Bangle.loadWidgets();
|
||||
Bangle.drawWidgets();
|
||||
|
|
|
|||
Loading…
Reference in New Issue