aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--desktop/core/io/udp.js4
-rw-r--r--desktop/sources/index.html8
-rw-r--r--desktop/sources/scripts/clock.js52
-rw-r--r--desktop/sources/scripts/keyboard.js4
4 files changed, 33 insertions, 35 deletions
diff --git a/desktop/core/io/udp.js b/desktop/core/io/udp.js
index 494df67..88dc3e3 100644
--- a/desktop/core/io/udp.js
+++ b/desktop/core/io/udp.js
@@ -81,9 +81,9 @@ function Udp (terminal) {
} else if (key === 'f' && Number.isInteger(int)) {
terminal.orca.f = int
} else if (key === 'b' && Number.isInteger(int)) {
- terminal.clock.setSpeed(int, false)
+ terminal.clock.set(int, int, true)
} else if (key === 'a' && Number.isInteger(int)) {
- terminal.clock.setSpeed(int, true)
+ terminal.clock.set(null, int)
} else if (key === 'w' && val.length >= 4 && val.indexOf(':') > -1) {
const pos = val.substr(1).split(':')
terminal.orca.write(parseInt(pos[0]), parseInt(pos[1]), val.substr(0, 1))
diff --git a/desktop/sources/index.html b/desktop/sources/index.html
index 59eae2f..50a88f6 100644
--- a/desktop/sources/index.html
+++ b/desktop/sources/index.html
@@ -50,10 +50,10 @@
terminal.controller.add("default","Clock","Play/Pause",() => { terminal.clock.togglePlay() },"Space")
terminal.controller.add("default","Clock","Reset Frame",() => { terminal.clock.resetFrame() },"CmdOrCtrl+Shift+N")
- terminal.controller.add("default","Clock","Incr. Speed",() => { terminal.clock.modSpeed(1) },">")
- terminal.controller.add("default","Clock","Decr. Speed",() => { terminal.clock.modSpeed(-1) },"<")
- terminal.controller.add("default","Clock","Incr. Speed(10x)",() => { terminal.clock.modSpeed(10,true) },"cmdOrCtrl+>")
- terminal.controller.add("default","Clock","Decr. Speed(10x)",() => { terminal.clock.modSpeed(-10,true) },"cmdOrCtrl+<")
+ 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","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 b53db1f..52d0af4 100644
--- a/desktop/sources/scripts/clock.js
+++ b/desktop/sources/scripts/clock.js
@@ -12,17 +12,31 @@ function Clock (terminal) {
}
this.update = function () {
- if (this.speed.target === this.speed.value) { return }
+ this.animate()
+ }
- this.setTimer(this.speed.value)
+ this.set = function (value, target = null, setTimer = false) {
+ if (value) { this.speed.value = clamp(value, 60, 300) }
+ if (target) { this.speed.target = clamp(target, 60, 300) }
+ if (setTimer === true) { this.setTimer(this.speed.value) }
+ }
- if (this.speed.value < this.speed.target) { this.speed.value++ }
- if (this.speed.value > this.speed.target) { this.speed.value-- }
+ this.mod = function (mod = 0, animate = false) {
+ if (animate === true) {
+ this.set(null, this.speed.target + mod)
+ } else {
+ this.set(this.speed.value + mod, this.speed.value + mod, true)
+ terminal.update()
+ }
+ }
- this.speed.value = clamp(this.speed.value, 60, 300)
- this.speed.target = clamp(this.speed.target, 60, 300)
+ this.animate = function () {
+ if (this.speed.target === this.speed.value) { return }
+ this.set(this.speed.value + (this.speed.value < this.speed.target ? 1 : -1), null, true)
}
+ // Controls
+
this.togglePlay = function () {
if (this.isPaused === true) {
this.play()
@@ -35,7 +49,7 @@ function Clock (terminal) {
if (!this.isPaused) { console.warn('Already playing'); return }
console.log('Play')
this.isPaused = false
- this.setTimer(this.speed.target)
+ this.set(this.speed.target, this.speed.target, true)
}
this.stop = function () {
@@ -46,6 +60,8 @@ function Clock (terminal) {
this.clearTimer()
}
+ // Timer
+
this.clearTimer = function () {
if (this.timer) {
clearInterval(this.timer)
@@ -53,34 +69,16 @@ function Clock (terminal) {
}
this.setTimer = function (bpm) {
- this.speed.value = bpm
this.clearTimer()
this.timer = setInterval(() => { terminal.run(); this.update() }, (60000 / bpm) / 4)
}
- this.setSpeed = function (bpm, animate = false) {
- if (animate === true) {
- this.speed.target = bpm
- } else {
- this.speed.target = bpm
- this.setTimer(bpm)
- }
- }
-
- this.modSpeed = function (mod = 0, animate = false) {
- if (animate === true) {
- this.speed.target += mod
- } else {
- this.setTimer(this.speed.value + mod)
- this.speed.target = this.speed.value
- terminal.update()
- }
- }
-
this.resetFrame = function () {
terminal.orca.f = 0
}
+ // UI
+
this.toString = function () {
const diff = this.speed.target - this.speed.value
const _offset = diff > 0 ? `+${diff}` : diff < 0 ? diff : ''
diff --git a/desktop/sources/scripts/keyboard.js b/desktop/sources/scripts/keyboard.js
index 90a6139..45cc773 100644
--- a/desktop/sources/scripts/keyboard.js
+++ b/desktop/sources/scripts/keyboard.js
@@ -36,8 +36,8 @@ function Keyboard (terminal) {
if (event.key === '[') { terminal.modGrid(-1, 0); event.preventDefault(); return }
if (event.key === '}') { terminal.modGrid(0, 1); event.preventDefault(); return }
if (event.key === '{') { terminal.modGrid(0, -1); event.preventDefault(); return }
- if (event.key === '>') { terminal.clock.modSpeed(1); event.preventDefault(); return }
- if (event.key === '<') { terminal.clock.modSpeed(-1); event.preventDefault(); return }
+ if (event.key === '>') { terminal.clock.mod(1); event.preventDefault(); return }
+ if (event.key === '<') { terminal.clock.mod(-1); event.preventDefault(); return }
if (event.key.length === 1) {
terminal.cursor.write(event.key)