Skip to content
This repository was archived by the owner on Jun 3, 2025. It is now read-only.

Commit 435b674

Browse files
committed
feat: active instruments
1 parent 375e675 commit 435b674

File tree

6 files changed

+62
-1
lines changed

6 files changed

+62
-1
lines changed

vibe/bun.lock

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vibe/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"tauri": "tauri"
1212
},
1313
"dependencies": {
14+
"@formkit/auto-animate": "^0.8.2",
1415
"@primeuix/themes": "^1.1.1",
1516
"@tailwindcss/vite": "^4.1.7",
1617
"@tauri-apps/api": "^2.5.0",

vibe/src/App.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<template>
22
<div class="flex h-screen w-screen flex-col justify-between">
33
<PlayControlBar />
4+
<TracksBanner />
45

56
<main class="grow overflow-auto">
67
<RouterView />
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<template>
2+
<div class="border-surface h-16 max-h-16 min-h-16 border-b-4">
3+
<div class="flex h-full items-center gap-2 px-4 py-2">
4+
<div class="text-primary/80 text-xl">Currently Active:</div>
5+
<div v-auto-animate="{ duration: 75 }" class="flex gap-2">
6+
<div
7+
v-for="item in activeItems"
8+
:key="item"
9+
class="bg-primary text-primary-contrast rounded-md p-2 font-mono font-bold"
10+
>
11+
{{ item }}
12+
</div>
13+
</div>
14+
</div>
15+
</div>
16+
</template>
17+
18+
<script setup lang="ts">
19+
import { computed, inject } from "vue";
20+
import { PatternState, TrackState } from "../App.vue";
21+
import { get } from "@vueuse/core";
22+
23+
const { tracks } = inject<TrackState>("track-state")!;
24+
const { patterns } = inject<PatternState>("pattern-state")!;
25+
26+
const activeItems = computed(() => {
27+
let patternsInner = get(patterns) ?? {};
28+
return Object.values(get(tracks) ?? {})
29+
.filter((track) => track.active)
30+
.map((track) => track.patterns)
31+
.flat()
32+
.map((patName) =>
33+
[
34+
patternsInner[patName].messages.map((msg) => msg.payload.path),
35+
patternsInner[patName].midi_path,
36+
].flat(),
37+
)
38+
.flat()
39+
.filter((path) => path != "/" && path != "")
40+
.map((path) => path.split("/")[2])
41+
.map((item) => {
42+
switch (item) {
43+
case "hihat":
44+
case "kick":
45+
case "snare":
46+
return "drums";
47+
default:
48+
return item;
49+
}
50+
})
51+
.filter((path, index, self) => self.indexOf(path) === index)
52+
.sort();
53+
});
54+
</script>

vibe/src/main.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import Aura from "@primeuix/themes/aura";
66
import { definePreset } from "@primeuix/themes";
77
import ToastService from "primevue/toastservice";
88
import ConfirmationService from "primevue/confirmationservice";
9+
import { autoAnimatePlugin } from "@formkit/auto-animate/vue";
910

1011
import "./tailwind.css";
1112
import "primeicons/primeicons.css";
@@ -46,4 +47,5 @@ createApp(App)
4647
.use(router)
4748
.use(ToastService)
4849
.use(ConfirmationService)
50+
.use(autoAnimatePlugin)
4951
.mount("#app");

vibe/src/routes/SlidersView.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<BlockUI class="flex h-full w-full" :blocked="!connected">
33
<div class="flex h-full w-full flex-col justify-between">
44
<!-- LYN: Add Slider -->
5-
<div class="border-surface flex gap-2 border-t-4 border-dotted px-4 py-2">
5+
<div class="border-surface flex gap-2 border-b-4 border-dotted px-4 py-2">
66
<Button
77
@click="addSliderWrapper()"
88
label="Add New Slider"

0 commit comments

Comments
 (0)