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