From 071a7a7e683a649b9f75fdc92b9f56804cd0af87 Mon Sep 17 00:00:00 2001 From: bengwalker <63957296+bengwalker@users.noreply.github.com> Date: Wed, 17 Nov 2021 20:46:18 +0100 Subject: [PATCH] add support for Bangle.js 2 --- apps.json | 2 +- apps/metronome/ChangeLog | 1 + apps/metronome/metronome.js | 73 +++++++++++++++++++++++-------------- 3 files changed, 48 insertions(+), 28 deletions(-) diff --git a/apps.json b/apps.json index 116f1488d..55cb1b7b1 100644 --- a/apps.json +++ b/apps.json @@ -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", diff --git a/apps/metronome/ChangeLog b/apps/metronome/ChangeLog index 894d62940..9bd33ca4e 100644 --- a/apps/metronome/ChangeLog +++ b/apps/metronome/ChangeLog @@ -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 \ No newline at end of file diff --git a/apps/metronome/metronome.js b/apps/metronome/metronome.js index e5e45559e..7f4667ce1 100644 --- a/apps/metronome/metronome.js +++ b/apps/metronome/metronome.js @@ -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();