-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathScaleChords.svelte
More file actions
32 lines (28 loc) · 1022 Bytes
/
Copy pathScaleChords.svelte
File metadata and controls
32 lines (28 loc) · 1022 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<script>
import { Mode } from "tonal";
import Chord from "$frets/Chord.svelte";
let { scale } = $props();
let chords = $derived(
Mode.triads(scale.type, scale.tonic)
.map((chord) => chord.replace("E#", "F").replace("B#", "C"))
.sort((a, b) => {
const aIsDim = a.includes("dim") || a.includes("°") || a.includes("o");
const bIsDim = b.includes("dim") || b.includes("°") || b.includes("o");
if (aIsDim && !bIsDim) return 1;
if (!aIsDim && bIsDim) return -1;
return 0;
}),
);
$effect(() => {
console.log("ScaleChords chords:", chords);
});
</script>
<div
class="text-xs text-gray-500 grid grid-cols-4 md:grid-cols-7 gap-5 dark:text-gray-400">
{#each chords as chord}
<div
class="bg-gray-50 border border-transparent hover:bg-gray-100 hover:border-gray-200 transition-all dark:bg-blue-900/20 dark:border dark:border-blue-900/50 dark:hover:bg-blue-900/40 rounded">
<Chord chordName={chord} />
</div>
{/each}
</div>