Skip to content

Commit

Permalink
feat: midi sync
Browse files Browse the repository at this point in the history
  • Loading branch information
davay42 committed Mar 12, 2023
1 parent 2a06506 commit 86fd480
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 11 deletions.
2 changes: 1 addition & 1 deletion components/beat/control/transport.vue
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ g.transport(
g.btn.cursor-pointer(
transform="translate(0,150)"
v-if="!tempo.stopped"
@click="tempo.stopped = true"
@click="tempo.stopped = Date.now()"
)
rect.border(
v-tooltip.left="'Stop'"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { useStorage } from "@vueuse/core";
import { reactive } from 'vue'
import { reactive, Ref } from 'vue'

export const loops = useStorage('tempo-circle-loops', [
export const loops: Ref = useStorage('tempo-circle-loops', [
{
over: 8,
under: 8,
Expand Down
19 changes: 11 additions & 8 deletions use/tempo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -147,27 +147,27 @@ export function useTempo() {
}
metro.counter++

}, "8n").start(0);
}, "8n").start(0)

useRafFn(() => {
//@ts-expect-error
tempo.position = Transport.position;
tempo.ticks = Transport.ticks;
tempo.position = Transport.position
tempo.ticks = Transport.ticks
tempo.progress = metro.loop.progress
})

onKeyStroke(" ", (ev) => {
const elem = ev.target as HTMLElement
if (["TEXTAREA", "INPUT"].includes(elem.nodeName)) return;
if (["TEXTAREA", "INPUT"].includes(elem.nodeName)) return
ev.preventDefault()
tempo.playing = !tempo.playing;
tempo.playing = !tempo.playing
});

onKeyStroke("Enter", (ev) => {
const elem = ev.target as HTMLElement
if (["TEXTAREA", "INPUT"].includes(elem.nodeName)) return;
ev.preventDefault();
tempo.stopped = Date.now();
if (["TEXTAREA", "INPUT"].includes(elem.nodeName)) return
ev.preventDefault()
tempo.stopped = Date.now()
});

});
Expand Down Expand Up @@ -211,6 +211,9 @@ export function useTempo() {
}
);

watch(() => midi.playing, p => tempo.playing = p)
watch(() => midi.stopped, s => tempo.stopped = s)

tempo.initialized = true
return tempo;
}
Expand Down

0 comments on commit 86fd480

Please sign in to comment.