aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--desktop/core/io/midi.js6
-rw-r--r--desktop/sources/index.html5
-rw-r--r--desktop/sources/scripts/clock.js18
3 files changed, 24 insertions, 5 deletions
diff --git a/desktop/core/io/midi.js b/desktop/core/io/midi.js
index 3c831b4..a9f3608 100644
--- a/desktop/core/io/midi.js
+++ b/desktop/core/io/midi.js
@@ -117,7 +117,9 @@ function Midi (terminal) {
switch (msg.data[0]) {
case 0xF8:
this.count = (this.count + 1) % 6
- terminal.clock.tap()
+ if (this.count % 4 === 0) {
+ terminal.clock.tap()
+ }
break
case 0xFA:
console.log('Midi', 'Clock start.')
@@ -179,7 +181,7 @@ function Midi (terminal) {
for (let i = inputs.next(); i && !i.done; i = inputs.next()) {
terminal.io.midi.inputs.push(i.value)
}
- terminal.io.midi.selectInput(0)
+ terminal.io.midi.selectInput(-1)
}
// UI
diff --git a/desktop/sources/index.html b/desktop/sources/index.html
index e3532e1..9b84e40 100644
--- a/desktop/sources/index.html
+++ b/desktop/sources/index.html
@@ -48,8 +48,9 @@
terminal.controller.add("default","Clock","Reset Frame",() => { terminal.clock.resetFrame() },"CmdOrCtrl+Shift+N")
terminal.controller.add("default","Clock","Incr. Speed",() => { terminal.clock.mod(1) },">")
terminal.controller.add("default","Clock","Decr. Speed",() => { terminal.clock.mod(-1) },"<")
- terminal.controller.add("default","Clock","Incr. Speed(10x)",() => { terminal.clock.mod(10,true) },"cmdOrCtrl+>")
- terminal.controller.add("default","Clock","Decr. Speed(10x)",() => { terminal.clock.mod(-10,true) },"cmdOrCtrl+<")
+ terminal.controller.add("default","Clock","Incr. Speed(10x)",() => { terminal.clock.mod(10,true) },"CmdOrCtrl+>")
+ terminal.controller.add("default","Clock","Decr. Speed(10x)",() => { terminal.clock.mod(-10,true) },"CmdOrCtrl+<")
+ terminal.controller.add("default","Clock","Tap",() => { terminal.clock.tap() },"CmdOrCtrl+T")
terminal.controller.add("default","View","Zoom In",() => { terminal.modZoom(0.25) },"CmdOrCtrl+=")
terminal.controller.add("default","View","Zoom Out",() => { terminal.modZoom(-0.25) },"CmdOrCtrl+-")
diff --git a/desktop/sources/scripts/clock.js b/desktop/sources/scripts/clock.js
index 6607fcf..ccdf1d7 100644
--- a/desktop/sources/scripts/clock.js
+++ b/desktop/sources/scripts/clock.js
@@ -60,8 +60,24 @@ function Clock (terminal) {
this.clearTimer()
}
+ this.intervals = []
+ this.lastTap = 0
+
this.tap = function () {
- console.log('Clock', 'Tapped..')
+ if (this.intervals.length > 8) {
+ this.intervals.shift()
+ }
+ if (this.intervals.length === 8) {
+ const sum = this.intervals.reduce((sum, interval) => { return sum + interval })
+ const bpm = parseInt((1000 / sum) * 60)
+ if (Math.abs(bpm - this.speed.target) > 3) {
+ this.speed.target = bpm
+ }
+ }
+
+ const now = performance.now()
+ this.intervals.push(now - this.lastTap)
+ this.lastTap = now
}
// Timer