@musodojo/music-theory-data 26.4.1 → 27.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -0
- package/esm/src/data/chord-progressions/basic.js +19 -19
- package/esm/src/data/chord-progressions/blues.js +12 -12
- package/esm/src/data/chord-progressions/jazz.js +50 -50
- package/esm/src/data/chord-progressions/mod.d.ts +5 -0
- package/esm/src/data/chord-progressions/mod.d.ts.map +1 -1
- package/esm/src/data/chord-progressions/mod.js +10 -0
- package/esm/src/data/chord-progressions/pop.js +8 -8
- package/esm/src/data/chromatic.d.ts +24 -0
- package/esm/src/data/chromatic.d.ts.map +1 -0
- package/esm/src/data/chromatic.js +15 -0
- package/esm/src/data/colors/mod.d.ts +37 -26
- package/esm/src/data/colors/mod.d.ts.map +1 -1
- package/esm/src/data/colors/mod.js +31 -5
- package/esm/src/data/labels/note-label-collections.d.ts +13 -25
- package/esm/src/data/labels/note-label-collections.d.ts.map +1 -1
- package/esm/src/data/labels/note-label-collections.js +10 -10
- package/esm/src/data/labels/note-labels.d.ts +2 -1
- package/esm/src/data/labels/note-labels.d.ts.map +1 -1
- package/esm/src/data/mod.d.ts +1 -0
- package/esm/src/data/mod.d.ts.map +1 -1
- package/esm/src/data/mod.js +1 -0
- package/esm/src/utils/chords.d.ts +1 -1
- package/esm/src/utils/chords.d.ts.map +1 -1
- package/esm/src/utils/chords.js +14 -9
- package/esm/src/utils/chromatic.d.ts +6 -0
- package/esm/src/utils/chromatic.d.ts.map +1 -0
- package/esm/src/utils/chromatic.js +24 -0
- package/esm/src/utils/colors.d.ts +5 -0
- package/esm/src/utils/colors.d.ts.map +1 -1
- package/esm/src/utils/colors.js +67 -32
- package/esm/src/utils/conversion-registry.d.ts +1 -1
- package/esm/src/utils/conversion-registry.d.ts.map +1 -1
- package/esm/src/utils/intervals.d.ts +34 -7
- package/esm/src/utils/intervals.d.ts.map +1 -1
- package/esm/src/utils/intervals.js +5 -55
- package/esm/src/utils/mod.d.ts +2 -0
- package/esm/src/utils/mod.d.ts.map +1 -1
- package/esm/src/utils/mod.js +2 -0
- package/esm/src/utils/note-colors.d.ts +10 -0
- package/esm/src/utils/note-colors.d.ts.map +1 -0
- package/esm/src/utils/note-colors.js +13 -0
- package/esm/src/utils/note-names.d.ts +7 -1
- package/esm/src/utils/note-names.d.ts.map +1 -1
- package/esm/src/utils/note-names.js +6 -24
- package/esm/src/utils/qualities.d.ts +10 -1
- package/esm/src/utils/qualities.d.ts.map +1 -1
- package/esm/src/utils/qualities.js +10 -27
- package/esm/tests/colors.test.d.ts.map +1 -0
- package/package.json +1 -1
- package/script/src/data/chord-progressions/basic.js +19 -19
- package/script/src/data/chord-progressions/blues.js +12 -12
- package/script/src/data/chord-progressions/jazz.js +50 -50
- package/script/src/data/chord-progressions/mod.d.ts +5 -0
- package/script/src/data/chord-progressions/mod.d.ts.map +1 -1
- package/script/src/data/chord-progressions/mod.js +11 -1
- package/script/src/data/chord-progressions/pop.js +8 -8
- package/script/src/data/chromatic.d.ts +24 -0
- package/script/src/data/chromatic.d.ts.map +1 -0
- package/script/src/data/chromatic.js +18 -0
- package/script/src/data/colors/mod.d.ts +37 -26
- package/script/src/data/colors/mod.d.ts.map +1 -1
- package/script/src/data/colors/mod.js +35 -6
- package/script/src/data/labels/note-label-collections.d.ts +13 -25
- package/script/src/data/labels/note-label-collections.d.ts.map +1 -1
- package/script/src/data/labels/note-label-collections.js +10 -10
- package/script/src/data/labels/note-labels.d.ts +2 -1
- package/script/src/data/labels/note-labels.d.ts.map +1 -1
- package/script/src/data/mod.d.ts +1 -0
- package/script/src/data/mod.d.ts.map +1 -1
- package/script/src/data/mod.js +1 -0
- package/script/src/utils/chords.d.ts +1 -1
- package/script/src/utils/chords.d.ts.map +1 -1
- package/script/src/utils/chords.js +14 -9
- package/script/src/utils/chromatic.d.ts +6 -0
- package/script/src/utils/chromatic.d.ts.map +1 -0
- package/script/src/utils/chromatic.js +30 -0
- package/script/src/utils/colors.d.ts +5 -0
- package/script/src/utils/colors.d.ts.map +1 -1
- package/script/src/utils/colors.js +72 -32
- package/script/src/utils/conversion-registry.d.ts +1 -1
- package/script/src/utils/conversion-registry.d.ts.map +1 -1
- package/script/src/utils/intervals.d.ts +34 -7
- package/script/src/utils/intervals.d.ts.map +1 -1
- package/script/src/utils/intervals.js +5 -55
- package/script/src/utils/mod.d.ts +2 -0
- package/script/src/utils/mod.d.ts.map +1 -1
- package/script/src/utils/mod.js +2 -0
- package/script/src/utils/note-colors.d.ts +10 -0
- package/script/src/utils/note-colors.d.ts.map +1 -0
- package/script/src/utils/note-colors.js +18 -0
- package/script/src/utils/note-names.d.ts +7 -1
- package/script/src/utils/note-names.d.ts.map +1 -1
- package/script/src/utils/note-names.js +6 -24
- package/script/src/utils/qualities.d.ts +10 -1
- package/script/src/utils/qualities.d.ts.map +1 -1
- package/script/src/utils/qualities.js +10 -27
- package/script/tests/colors.test.d.ts.map +1 -0
package/README.md
CHANGED
|
@@ -194,6 +194,58 @@ console.log(
|
|
|
194
194
|
// ["CM", "FM", "GM"]
|
|
195
195
|
```
|
|
196
196
|
|
|
197
|
+
## Note Colors And Chromatic Indexes
|
|
198
|
+
|
|
199
|
+
Note color collections use 12 chromatic slots. In absolute mode, each index is a
|
|
200
|
+
pitch class where index `0` is C and index `7` is G. In relative mode, each
|
|
201
|
+
index is measured from a musical root where index `0` is the root and index `7`
|
|
202
|
+
is the fifth.
|
|
203
|
+
|
|
204
|
+
`noteLabelCollections.noteNamesFlat` is the default label set for absolute note
|
|
205
|
+
colors, and `noteLabelCollections.intervalsFlat` is the default label set for
|
|
206
|
+
relative note colors. `ChromaticIndex` is the shared `0`-to-`11` pitch-class
|
|
207
|
+
shape used by chromatic tuples, note labels, root-note integers, and filled
|
|
208
|
+
chromatic interval helpers. `ChromaticMode` is the shared `"absolute"` or
|
|
209
|
+
`"relative"` mode used by note colors and label collections.
|
|
210
|
+
|
|
211
|
+
Chromatic indexes must be integers. Helpers such as `normalizeChromaticIndex`
|
|
212
|
+
wrap negative or large semitone values into the `0`-to-`11` range, but reject
|
|
213
|
+
fractional or non-finite values.
|
|
214
|
+
|
|
215
|
+
```ts
|
|
216
|
+
import {
|
|
217
|
+
colorCollections,
|
|
218
|
+
getNoteColorIndex,
|
|
219
|
+
getNoteColorLabels,
|
|
220
|
+
} from "jsr:@musodojo/music-theory-data";
|
|
221
|
+
|
|
222
|
+
const absoluteIndex = getNoteColorIndex({
|
|
223
|
+
midi: 67,
|
|
224
|
+
mode: "absolute",
|
|
225
|
+
});
|
|
226
|
+
console.log(absoluteIndex);
|
|
227
|
+
// 7, the pitch class G
|
|
228
|
+
|
|
229
|
+
const relativeIndex = getNoteColorIndex({
|
|
230
|
+
midi: 69,
|
|
231
|
+
mode: "relative",
|
|
232
|
+
rootPitchClass: 2,
|
|
233
|
+
});
|
|
234
|
+
console.log(relativeIndex);
|
|
235
|
+
// 7, A as the fifth above D
|
|
236
|
+
|
|
237
|
+
console.log(getNoteColorLabels(colorCollections.musoDojoRootAndFifth));
|
|
238
|
+
// ["1", "♭2", "2", "♭3", "3", "4", "♭5", "5", "♭6", "6", "♭7", "7"]
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
Color values may be hex strings or `null`. A `null` value means there is
|
|
242
|
+
intentionally no semantic color for that pitch or degree; consuming apps should
|
|
243
|
+
choose their own visual fallback through theme or UI settings.
|
|
244
|
+
|
|
245
|
+
Regular note collection interval arrays remain variable length because chords,
|
|
246
|
+
dyads, arpeggios, and scales have different natural sizes. Helpers that opt into
|
|
247
|
+
`fillChromatic: true` return a fixed 12-slot chromatic tuple.
|
|
248
|
+
|
|
197
249
|
## API Documentation
|
|
198
250
|
|
|
199
251
|
For a full list of all available data, types, and utility functions, please see
|
|
@@ -15,9 +15,9 @@ const oneFourFive = {
|
|
|
15
15
|
{
|
|
16
16
|
name: "Main",
|
|
17
17
|
chords: [
|
|
18
|
-
{ interval: "1", quality: "M" },
|
|
19
|
-
{ interval: "4", quality: "M" },
|
|
20
|
-
{ interval: "5", quality: "M" },
|
|
18
|
+
{ interval: "1", quality: "M", noteCollectionKey: "major" },
|
|
19
|
+
{ interval: "4", quality: "M", noteCollectionKey: "major" },
|
|
20
|
+
{ interval: "5", quality: "M", noteCollectionKey: "major" },
|
|
21
21
|
],
|
|
22
22
|
},
|
|
23
23
|
],
|
|
@@ -39,8 +39,8 @@ const oneFive = {
|
|
|
39
39
|
{
|
|
40
40
|
name: "Main",
|
|
41
41
|
chords: [
|
|
42
|
-
{ interval: "1", quality: "M" },
|
|
43
|
-
{ interval: "5", quality: "M" },
|
|
42
|
+
{ interval: "1", quality: "M", noteCollectionKey: "major" },
|
|
43
|
+
{ interval: "5", quality: "M", noteCollectionKey: "major" },
|
|
44
44
|
],
|
|
45
45
|
},
|
|
46
46
|
],
|
|
@@ -62,8 +62,8 @@ const oneFour = {
|
|
|
62
62
|
{
|
|
63
63
|
name: "Main",
|
|
64
64
|
chords: [
|
|
65
|
-
{ interval: "1", quality: "M" },
|
|
66
|
-
{ interval: "4", quality: "M" },
|
|
65
|
+
{ interval: "1", quality: "M", noteCollectionKey: "major" },
|
|
66
|
+
{ interval: "4", quality: "M", noteCollectionKey: "major" },
|
|
67
67
|
],
|
|
68
68
|
},
|
|
69
69
|
],
|
|
@@ -85,10 +85,10 @@ const oneOneFiveFive = {
|
|
|
85
85
|
{
|
|
86
86
|
name: "Main",
|
|
87
87
|
chords: [
|
|
88
|
-
{ interval: "1", quality: "M" },
|
|
89
|
-
{ interval: "1", quality: "M" },
|
|
90
|
-
{ interval: "5", quality: "M" },
|
|
91
|
-
{ interval: "5", quality: "M" },
|
|
88
|
+
{ interval: "1", quality: "M", noteCollectionKey: "major" },
|
|
89
|
+
{ interval: "1", quality: "M", noteCollectionKey: "major" },
|
|
90
|
+
{ interval: "5", quality: "M", noteCollectionKey: "major" },
|
|
91
|
+
{ interval: "5", quality: "M", noteCollectionKey: "major" },
|
|
92
92
|
],
|
|
93
93
|
},
|
|
94
94
|
],
|
|
@@ -121,10 +121,10 @@ const oneOneFiveFiveSeven = {
|
|
|
121
121
|
{
|
|
122
122
|
name: "Main",
|
|
123
123
|
chords: [
|
|
124
|
-
{ interval: "1", quality: "M" },
|
|
125
|
-
{ interval: "1", quality: "M" },
|
|
126
|
-
{ interval: "5", quality: "M" },
|
|
127
|
-
{ interval: "5", quality: "7" },
|
|
124
|
+
{ interval: "1", quality: "M", noteCollectionKey: "major" },
|
|
125
|
+
{ interval: "1", quality: "M", noteCollectionKey: "major" },
|
|
126
|
+
{ interval: "5", quality: "M", noteCollectionKey: "major" },
|
|
127
|
+
{ interval: "5", quality: "7", noteCollectionKey: "dominant7" },
|
|
128
128
|
],
|
|
129
129
|
},
|
|
130
130
|
],
|
|
@@ -146,10 +146,10 @@ const oneFourOneFive = {
|
|
|
146
146
|
{
|
|
147
147
|
name: "Main",
|
|
148
148
|
chords: [
|
|
149
|
-
{ interval: "1", quality: "M" },
|
|
150
|
-
{ interval: "4", quality: "M" },
|
|
151
|
-
{ interval: "1", quality: "M" },
|
|
152
|
-
{ interval: "5", quality: "M" },
|
|
149
|
+
{ interval: "1", quality: "M", noteCollectionKey: "major" },
|
|
150
|
+
{ interval: "4", quality: "M", noteCollectionKey: "major" },
|
|
151
|
+
{ interval: "1", quality: "M", noteCollectionKey: "major" },
|
|
152
|
+
{ interval: "5", quality: "M", noteCollectionKey: "major" },
|
|
153
153
|
],
|
|
154
154
|
},
|
|
155
155
|
],
|
|
@@ -9,18 +9,18 @@ const twelveBarBlues = {
|
|
|
9
9
|
{
|
|
10
10
|
name: "Main",
|
|
11
11
|
chords: [
|
|
12
|
-
{ interval: "1", quality: "7" },
|
|
13
|
-
{ interval: "1", quality: "7" },
|
|
14
|
-
{ interval: "1", quality: "7" },
|
|
15
|
-
{ interval: "1", quality: "7" },
|
|
16
|
-
{ interval: "4", quality: "7" },
|
|
17
|
-
{ interval: "4", quality: "7" },
|
|
18
|
-
{ interval: "1", quality: "7" },
|
|
19
|
-
{ interval: "1", quality: "7" },
|
|
20
|
-
{ interval: "5", quality: "7" },
|
|
21
|
-
{ interval: "4", quality: "7" },
|
|
22
|
-
{ interval: "1", quality: "7" },
|
|
23
|
-
{ interval: "5", quality: "7" },
|
|
12
|
+
{ interval: "1", quality: "7", noteCollectionKey: "dominant7" },
|
|
13
|
+
{ interval: "1", quality: "7", noteCollectionKey: "dominant7" },
|
|
14
|
+
{ interval: "1", quality: "7", noteCollectionKey: "dominant7" },
|
|
15
|
+
{ interval: "1", quality: "7", noteCollectionKey: "dominant7" },
|
|
16
|
+
{ interval: "4", quality: "7", noteCollectionKey: "dominant7" },
|
|
17
|
+
{ interval: "4", quality: "7", noteCollectionKey: "dominant7" },
|
|
18
|
+
{ interval: "1", quality: "7", noteCollectionKey: "dominant7" },
|
|
19
|
+
{ interval: "1", quality: "7", noteCollectionKey: "dominant7" },
|
|
20
|
+
{ interval: "5", quality: "7", noteCollectionKey: "dominant7" },
|
|
21
|
+
{ interval: "4", quality: "7", noteCollectionKey: "dominant7" },
|
|
22
|
+
{ interval: "1", quality: "7", noteCollectionKey: "dominant7" },
|
|
23
|
+
{ interval: "5", quality: "7", noteCollectionKey: "dominant7" },
|
|
24
24
|
],
|
|
25
25
|
},
|
|
26
26
|
],
|
|
@@ -15,9 +15,9 @@ const twoFiveOneMajor = {
|
|
|
15
15
|
{
|
|
16
16
|
name: "Main",
|
|
17
17
|
chords: [
|
|
18
|
-
{ interval: "2", quality: "m7" },
|
|
19
|
-
{ interval: "5", quality: "7" },
|
|
20
|
-
{ interval: "1", quality: "M7" },
|
|
18
|
+
{ interval: "2", quality: "m7", noteCollectionKey: "minor7" },
|
|
19
|
+
{ interval: "5", quality: "7", noteCollectionKey: "dominant7" },
|
|
20
|
+
{ interval: "1", quality: "M7", noteCollectionKey: "major7" },
|
|
21
21
|
],
|
|
22
22
|
},
|
|
23
23
|
],
|
|
@@ -33,9 +33,9 @@ const minorTwoFiveOne = {
|
|
|
33
33
|
{
|
|
34
34
|
name: "Main",
|
|
35
35
|
chords: [
|
|
36
|
-
{ interval: "2", quality: "ø7" },
|
|
37
|
-
{ interval: "5", quality: "7" },
|
|
38
|
-
{ interval: "1", quality: "m" },
|
|
36
|
+
{ interval: "2", quality: "ø7", noteCollectionKey: "halfDiminished7" },
|
|
37
|
+
{ interval: "5", quality: "7", noteCollectionKey: "dominant7" },
|
|
38
|
+
{ interval: "1", quality: "m", noteCollectionKey: "minor" },
|
|
39
39
|
],
|
|
40
40
|
},
|
|
41
41
|
],
|
|
@@ -57,53 +57,53 @@ const rhythmChanges = {
|
|
|
57
57
|
{
|
|
58
58
|
name: "A1",
|
|
59
59
|
chords: [
|
|
60
|
-
{ interval: "1", quality: "M7" },
|
|
61
|
-
{ interval: "6", quality: "m7" },
|
|
62
|
-
{ interval: "2", quality: "m7" },
|
|
63
|
-
{ interval: "5", quality: "7" },
|
|
64
|
-
{ interval: "3", quality: "m7" },
|
|
65
|
-
{ interval: "6", quality: "7" },
|
|
66
|
-
{ interval: "2", quality: "m7" },
|
|
67
|
-
{ interval: "5", quality: "7" },
|
|
60
|
+
{ interval: "1", quality: "M7", noteCollectionKey: "major7" },
|
|
61
|
+
{ interval: "6", quality: "m7", noteCollectionKey: "minor7" },
|
|
62
|
+
{ interval: "2", quality: "m7", noteCollectionKey: "minor7" },
|
|
63
|
+
{ interval: "5", quality: "7", noteCollectionKey: "dominant7" },
|
|
64
|
+
{ interval: "3", quality: "m7", noteCollectionKey: "minor7" },
|
|
65
|
+
{ interval: "6", quality: "7", noteCollectionKey: "dominant7" },
|
|
66
|
+
{ interval: "2", quality: "m7", noteCollectionKey: "minor7" },
|
|
67
|
+
{ interval: "5", quality: "7", noteCollectionKey: "dominant7" },
|
|
68
68
|
],
|
|
69
69
|
},
|
|
70
70
|
{
|
|
71
71
|
name: "A2",
|
|
72
72
|
chords: [
|
|
73
|
-
{ interval: "1", quality: "M7" },
|
|
74
|
-
{ interval: "6", quality: "m7" },
|
|
75
|
-
{ interval: "2", quality: "m7" },
|
|
76
|
-
{ interval: "5", quality: "7" },
|
|
77
|
-
{ interval: "3", quality: "m7" },
|
|
78
|
-
{ interval: "6", quality: "7" },
|
|
79
|
-
{ interval: "2", quality: "m7" },
|
|
80
|
-
{ interval: "5", quality: "7" },
|
|
73
|
+
{ interval: "1", quality: "M7", noteCollectionKey: "major7" },
|
|
74
|
+
{ interval: "6", quality: "m7", noteCollectionKey: "minor7" },
|
|
75
|
+
{ interval: "2", quality: "m7", noteCollectionKey: "minor7" },
|
|
76
|
+
{ interval: "5", quality: "7", noteCollectionKey: "dominant7" },
|
|
77
|
+
{ interval: "3", quality: "m7", noteCollectionKey: "minor7" },
|
|
78
|
+
{ interval: "6", quality: "7", noteCollectionKey: "dominant7" },
|
|
79
|
+
{ interval: "2", quality: "m7", noteCollectionKey: "minor7" },
|
|
80
|
+
{ interval: "5", quality: "7", noteCollectionKey: "dominant7" },
|
|
81
81
|
],
|
|
82
82
|
},
|
|
83
83
|
{
|
|
84
84
|
name: "B",
|
|
85
85
|
chords: [
|
|
86
|
-
{ interval: "3", quality: "7" },
|
|
87
|
-
{ interval: "3", quality: "7" },
|
|
88
|
-
{ interval: "6", quality: "7" },
|
|
89
|
-
{ interval: "6", quality: "7" },
|
|
90
|
-
{ interval: "2", quality: "7" },
|
|
91
|
-
{ interval: "2", quality: "7" },
|
|
92
|
-
{ interval: "5", quality: "7" },
|
|
93
|
-
{ interval: "5", quality: "7" },
|
|
86
|
+
{ interval: "3", quality: "7", noteCollectionKey: "dominant7" },
|
|
87
|
+
{ interval: "3", quality: "7", noteCollectionKey: "dominant7" },
|
|
88
|
+
{ interval: "6", quality: "7", noteCollectionKey: "dominant7" },
|
|
89
|
+
{ interval: "6", quality: "7", noteCollectionKey: "dominant7" },
|
|
90
|
+
{ interval: "2", quality: "7", noteCollectionKey: "dominant7" },
|
|
91
|
+
{ interval: "2", quality: "7", noteCollectionKey: "dominant7" },
|
|
92
|
+
{ interval: "5", quality: "7", noteCollectionKey: "dominant7" },
|
|
93
|
+
{ interval: "5", quality: "7", noteCollectionKey: "dominant7" },
|
|
94
94
|
],
|
|
95
95
|
},
|
|
96
96
|
{
|
|
97
97
|
name: "A3",
|
|
98
98
|
chords: [
|
|
99
|
-
{ interval: "1", quality: "M7" },
|
|
100
|
-
{ interval: "6", quality: "m7" },
|
|
101
|
-
{ interval: "2", quality: "m7" },
|
|
102
|
-
{ interval: "5", quality: "7" },
|
|
103
|
-
{ interval: "3", quality: "m7" },
|
|
104
|
-
{ interval: "6", quality: "7" },
|
|
105
|
-
{ interval: "2", quality: "m7" },
|
|
106
|
-
{ interval: "5", quality: "7" },
|
|
99
|
+
{ interval: "1", quality: "M7", noteCollectionKey: "major7" },
|
|
100
|
+
{ interval: "6", quality: "m7", noteCollectionKey: "minor7" },
|
|
101
|
+
{ interval: "2", quality: "m7", noteCollectionKey: "minor7" },
|
|
102
|
+
{ interval: "5", quality: "7", noteCollectionKey: "dominant7" },
|
|
103
|
+
{ interval: "3", quality: "m7", noteCollectionKey: "minor7" },
|
|
104
|
+
{ interval: "6", quality: "7", noteCollectionKey: "dominant7" },
|
|
105
|
+
{ interval: "2", quality: "m7", noteCollectionKey: "minor7" },
|
|
106
|
+
{ interval: "5", quality: "7", noteCollectionKey: "dominant7" },
|
|
107
107
|
],
|
|
108
108
|
},
|
|
109
109
|
],
|
|
@@ -119,18 +119,18 @@ const jazzBluesBasic = {
|
|
|
119
119
|
{
|
|
120
120
|
name: "Main",
|
|
121
121
|
chords: [
|
|
122
|
-
{ interval: "1", quality: "7" },
|
|
123
|
-
{ interval: "4", quality: "7" },
|
|
124
|
-
{ interval: "1", quality: "7" },
|
|
125
|
-
{ interval: "1", quality: "7" },
|
|
126
|
-
{ interval: "4", quality: "7" },
|
|
127
|
-
{ interval: "♯4", quality: "°7" },
|
|
128
|
-
{ interval: "1", quality: "7" },
|
|
129
|
-
{ interval: "6", quality: "7" },
|
|
130
|
-
{ interval: "2", quality: "m7" },
|
|
131
|
-
{ interval: "5", quality: "7" },
|
|
132
|
-
{ interval: "1", quality: "7" },
|
|
133
|
-
{ interval: "5", quality: "7" },
|
|
122
|
+
{ interval: "1", quality: "7", noteCollectionKey: "dominant7" },
|
|
123
|
+
{ interval: "4", quality: "7", noteCollectionKey: "dominant7" },
|
|
124
|
+
{ interval: "1", quality: "7", noteCollectionKey: "dominant7" },
|
|
125
|
+
{ interval: "1", quality: "7", noteCollectionKey: "dominant7" },
|
|
126
|
+
{ interval: "4", quality: "7", noteCollectionKey: "dominant7" },
|
|
127
|
+
{ interval: "♯4", quality: "°7", noteCollectionKey: "diminished7" },
|
|
128
|
+
{ interval: "1", quality: "7", noteCollectionKey: "dominant7" },
|
|
129
|
+
{ interval: "6", quality: "7", noteCollectionKey: "dominant7" },
|
|
130
|
+
{ interval: "2", quality: "m7", noteCollectionKey: "minor7" },
|
|
131
|
+
{ interval: "5", quality: "7", noteCollectionKey: "dominant7" },
|
|
132
|
+
{ interval: "1", quality: "7", noteCollectionKey: "dominant7" },
|
|
133
|
+
{ interval: "5", quality: "7", noteCollectionKey: "dominant7" },
|
|
134
134
|
],
|
|
135
135
|
},
|
|
136
136
|
],
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { ChordProgressionTemplateCategory, ChordProgressionTemplateType } from "../../types/chord-progressions";
|
|
2
|
+
import type { ChordQuality } from "../../types/chords";
|
|
3
|
+
import type { NoteCollectionKey } from "../note-collections/mod.js";
|
|
2
4
|
export { basicChordProgressionTemplates } from "./basic.js";
|
|
3
5
|
export { bluesChordProgressionTemplates } from "./blues.js";
|
|
4
6
|
export { jazzChordProgressionTemplates } from "./jazz.js";
|
|
@@ -19,6 +21,9 @@ export declare const chordProgressionTemplates: {
|
|
|
19
21
|
readonly oneFourOneFive: import("../../mod.js").ChordProgressionTemplate;
|
|
20
22
|
};
|
|
21
23
|
export type ChordProgressionTemplateKey = keyof typeof chordProgressionTemplates;
|
|
24
|
+
export type ChordProgressionStepNoteCollectionKeyMap = Partial<Record<ChordQuality, NoteCollectionKey>>;
|
|
25
|
+
/** Canonical chord/arpeggio collection keys for chord qualities used by progression steps. */
|
|
26
|
+
export declare const chordProgressionStepNoteCollectionKeys: ChordProgressionStepNoteCollectionKeyMap;
|
|
22
27
|
export declare const groupedChordProgressionTemplates: {
|
|
23
28
|
readonly basicChordProgressionTemplates: {
|
|
24
29
|
readonly oneFourFive: import("../../mod.js").ChordProgressionTemplate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../src/src/data/chord-progressions/mod.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,gCAAgC,EAChC,4BAA4B,EAC7B,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../src/src/data/chord-progressions/mod.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,gCAAgC,EAChC,4BAA4B,EAC7B,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,OAAO,EAAE,8BAA8B,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,8BAA8B,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AAExD,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;CAK5B,CAAC;AAEX,MAAM,MAAM,2BAA2B,GACrC,MAAM,OAAO,yBAAyB,CAAC;AAEzC,MAAM,MAAM,wCAAwC,GAAG,OAAO,CAC5D,MAAM,CAAC,YAAY,EAAE,iBAAiB,CAAC,CACxC,CAAC;AAEF,8FAA8F;AAC9F,eAAO,MAAM,sCAAsC,EACjD,wCAQU,CAAC;AAEb,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;CAKnC,CAAC;AAEX,MAAM,MAAM,gCAAgC,GAC1C,MAAM,OAAO,gCAAgC,CAAC;AAEhD,kGAAkG;AAClG,eAAO,MAAM,sCAAsC,EAAE,MAAM,CACzD,gCAAgC,EAChC;IACE,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,CAsBO,CAAC;AAEX,4FAA4F;AAC5F,eAAO,MAAM,wCAAwC,EAAE,MAAM,CAC3D,gCAAgC,EAChC;IACE,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,CAMO,CAAC;AAEX,gGAAgG;AAChG,eAAO,MAAM,oCAAoC,EAAE,MAAM,CACvD,4BAA4B,EAC5B;IACE,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,CAgBO,CAAC"}
|
|
@@ -12,6 +12,16 @@ export const chordProgressionTemplates = {
|
|
|
12
12
|
...bluesChordProgressionTemplates,
|
|
13
13
|
...jazzChordProgressionTemplates,
|
|
14
14
|
};
|
|
15
|
+
/** Canonical chord/arpeggio collection keys for chord qualities used by progression steps. */
|
|
16
|
+
export const chordProgressionStepNoteCollectionKeys = {
|
|
17
|
+
M: "major",
|
|
18
|
+
m: "minor",
|
|
19
|
+
"7": "dominant7",
|
|
20
|
+
M7: "major7",
|
|
21
|
+
m7: "minor7",
|
|
22
|
+
"ø7": "halfDiminished7",
|
|
23
|
+
"°7": "diminished7",
|
|
24
|
+
};
|
|
15
25
|
export const groupedChordProgressionTemplates = {
|
|
16
26
|
basicChordProgressionTemplates,
|
|
17
27
|
popChordProgressionTemplates,
|
|
@@ -9,10 +9,10 @@ const dooWop = {
|
|
|
9
9
|
{
|
|
10
10
|
name: "Main",
|
|
11
11
|
chords: [
|
|
12
|
-
{ interval: "1", quality: "M" },
|
|
13
|
-
{ interval: "6", quality: "m" },
|
|
14
|
-
{ interval: "4", quality: "M" },
|
|
15
|
-
{ interval: "5", quality: "M" },
|
|
12
|
+
{ interval: "1", quality: "M", noteCollectionKey: "major" },
|
|
13
|
+
{ interval: "6", quality: "m", noteCollectionKey: "minor" },
|
|
14
|
+
{ interval: "4", quality: "M", noteCollectionKey: "major" },
|
|
15
|
+
{ interval: "5", quality: "M", noteCollectionKey: "major" },
|
|
16
16
|
],
|
|
17
17
|
},
|
|
18
18
|
],
|
|
@@ -28,10 +28,10 @@ const axisProgression = {
|
|
|
28
28
|
{
|
|
29
29
|
name: "Main",
|
|
30
30
|
chords: [
|
|
31
|
-
{ interval: "1", quality: "M" },
|
|
32
|
-
{ interval: "5", quality: "M" },
|
|
33
|
-
{ interval: "6", quality: "m" },
|
|
34
|
-
{ interval: "4", quality: "M" },
|
|
31
|
+
{ interval: "1", quality: "M", noteCollectionKey: "major" },
|
|
32
|
+
{ interval: "5", quality: "M", noteCollectionKey: "major" },
|
|
33
|
+
{ interval: "6", quality: "m", noteCollectionKey: "minor" },
|
|
34
|
+
{ interval: "4", quality: "M", noteCollectionKey: "major" },
|
|
35
35
|
],
|
|
36
36
|
},
|
|
37
37
|
],
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export declare const CHROMATIC_NOTE_COUNT: 12;
|
|
2
|
+
/** A zero-indexed chromatic pitch-class or relative degree slot. */
|
|
3
|
+
export type ChromaticIndex = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11;
|
|
4
|
+
/** How a chromatic index should be interpreted. */
|
|
5
|
+
export type ChromaticMode = "absolute" | "relative";
|
|
6
|
+
/** A fixed 12-slot tuple indexed by chromatic pitch class or relative degree. */
|
|
7
|
+
export type ChromaticTuple<T> = readonly [
|
|
8
|
+
T,
|
|
9
|
+
T,
|
|
10
|
+
T,
|
|
11
|
+
T,
|
|
12
|
+
T,
|
|
13
|
+
T,
|
|
14
|
+
T,
|
|
15
|
+
T,
|
|
16
|
+
T,
|
|
17
|
+
T,
|
|
18
|
+
T,
|
|
19
|
+
T
|
|
20
|
+
];
|
|
21
|
+
export declare const CHROMATIC_INDEXES: ChromaticTuple<ChromaticIndex>;
|
|
22
|
+
/** A variable-length set of chromatic indexes, such as the pitch classes in a scale or dyad. */
|
|
23
|
+
export type ChromaticIndexSet = readonly ChromaticIndex[];
|
|
24
|
+
//# sourceMappingURL=chromatic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chromatic.d.ts","sourceRoot":"","sources":["../../../src/src/data/chromatic.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,EAAG,EAAW,CAAC;AAEhD,oEAAoE;AACpE,MAAM,MAAM,cAAc,GACtB,CAAC,GACD,CAAC,GACD,CAAC,GACD,CAAC,GACD,CAAC,GACD,CAAC,GACD,CAAC,GACD,CAAC,GACD,CAAC,GACD,CAAC,GACD,EAAE,GACF,EAAE,CAAC;AAEP,mDAAmD;AACnD,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,UAAU,CAAC;AAEpD,iFAAiF;AACjF,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,SAAS;IACvC,CAAC;IACD,CAAC;IACD,CAAC;IACD,CAAC;IACD,CAAC;IACD,CAAC;IACD,CAAC;IACD,CAAC;IACD,CAAC;IACD,CAAC;IACD,CAAC;IACD,CAAC;CACF,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,cAAc,CAAC,cAAc,CAanD,CAAC;AAEX,gGAAgG;AAChG,MAAM,MAAM,iBAAiB,GAAG,SAAS,cAAc,EAAE,CAAC"}
|
|
@@ -1,51 +1,62 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
Color,
|
|
14
|
-
Color
|
|
15
|
-
];
|
|
16
|
-
export interface ColorCollection {
|
|
17
|
-
name: string;
|
|
18
|
-
description: string;
|
|
19
|
-
relative: boolean;
|
|
20
|
-
colors: ColorGroup;
|
|
1
|
+
import { type NoteLabelCollectionKey, type NoteLabelGroup } from "../labels/note-label-collections.js";
|
|
2
|
+
import type { ChromaticMode, ChromaticTuple } from "../chromatic.js";
|
|
3
|
+
export type NoteColorMode = ChromaticMode;
|
|
4
|
+
export type NoteColorValue = string | null;
|
|
5
|
+
export type NoteColorTuple = ChromaticTuple<NoteColorValue>;
|
|
6
|
+
export interface NoteColorCollection {
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly shortName?: string;
|
|
9
|
+
readonly description: string;
|
|
10
|
+
readonly mode: NoteColorMode;
|
|
11
|
+
readonly labelCollectionKey?: NoteLabelCollectionKey;
|
|
12
|
+
readonly colors: NoteColorTuple;
|
|
21
13
|
}
|
|
14
|
+
export type Color = NoteColorValue;
|
|
15
|
+
export type ColorGroup = NoteColorTuple;
|
|
16
|
+
export type ColorCollection = NoteColorCollection;
|
|
17
|
+
export type DefaultNoteColorLabelCollectionKeys = Readonly<Record<NoteColorMode, NoteLabelCollectionKey>> & Readonly<{
|
|
18
|
+
absolute: "noteNamesFlat";
|
|
19
|
+
relative: "intervalsFlat";
|
|
20
|
+
}>;
|
|
21
|
+
export declare const defaultNoteColorLabelCollectionKeys: DefaultNoteColorLabelCollectionKeys;
|
|
22
|
+
export declare function getDefaultNoteColorLabelCollectionKey(mode: NoteColorMode): NoteLabelCollectionKey;
|
|
23
|
+
export declare function getNoteColorLabelCollectionKey(collection: NoteColorCollection): NoteLabelCollectionKey;
|
|
24
|
+
export declare function getNoteColorLabels(collection: NoteColorCollection): NoteLabelGroup;
|
|
22
25
|
declare const _colorCollections: {
|
|
23
26
|
readonly musoDojo: {
|
|
24
27
|
readonly name: "Muso Dojo Colors";
|
|
25
|
-
readonly
|
|
26
|
-
readonly
|
|
28
|
+
readonly shortName: "Muso Dojo";
|
|
29
|
+
readonly description: "A custom absolute chromatic palette designed by Muso Dojo.";
|
|
30
|
+
readonly mode: "absolute";
|
|
31
|
+
readonly labelCollectionKey: "noteNamesFlat";
|
|
27
32
|
readonly colors: readonly ["#ED2929", "#9F000F", "#78C7C7", "#00008B", "#FF9933", "#EBEB19", "#286704", "#99CC33", "#660099", "#CC00FF", "#BF6A1F", "#FF9EE6"];
|
|
28
33
|
};
|
|
29
34
|
readonly musoDojoRoot: {
|
|
30
35
|
readonly name: "Muso Dojo Root";
|
|
36
|
+
readonly shortName: "Root";
|
|
31
37
|
readonly description: "Use the red color from Muso Dojo's colors on just the root note.";
|
|
32
|
-
readonly
|
|
38
|
+
readonly mode: "relative";
|
|
39
|
+
readonly labelCollectionKey: "intervalsFlat";
|
|
33
40
|
readonly colors: readonly ["#ED2929", null, null, null, null, null, null, null, null, null, null, null];
|
|
34
41
|
};
|
|
35
42
|
readonly musoDojoRootAndFifth: {
|
|
36
43
|
readonly name: "Muso Dojo Root and Fifth";
|
|
44
|
+
readonly shortName: "Root and Fifth";
|
|
37
45
|
readonly description: "Use the red-and-green colors from Muso Dojo's colors on the root-and-fifth notes.";
|
|
38
|
-
readonly
|
|
46
|
+
readonly mode: "relative";
|
|
47
|
+
readonly labelCollectionKey: "intervalsFlat";
|
|
39
48
|
readonly colors: readonly ["#ED2929", null, null, null, null, null, null, "#99CC33", null, null, null, null];
|
|
40
49
|
};
|
|
41
50
|
readonly boomwhackers: {
|
|
42
51
|
readonly name: "Boomwhackers";
|
|
52
|
+
readonly shortName: "Boomwhackers";
|
|
43
53
|
readonly description: "The colors used by Boomwhackers.";
|
|
44
|
-
readonly
|
|
54
|
+
readonly mode: "absolute";
|
|
55
|
+
readonly labelCollectionKey: "noteNamesFlat";
|
|
45
56
|
readonly colors: readonly ["#E21C48", "#F26622", "#F99D1C", "#FFCC33", "#FFF32B", "#BCD85F", "#62BC47", "#009C95", "#0071BB", "#5E50A1", "#8D5BA6", "#CF3E96"];
|
|
46
57
|
};
|
|
47
58
|
};
|
|
48
59
|
export type ColorCollectionKey = keyof typeof _colorCollections;
|
|
49
|
-
export declare const colorCollections: Record<ColorCollectionKey,
|
|
60
|
+
export declare const colorCollections: Record<ColorCollectionKey, NoteColorCollection>;
|
|
50
61
|
export {};
|
|
51
62
|
//# sourceMappingURL=mod.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../src/src/data/colors/mod.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../src/src/data/colors/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,sBAAsB,EAE3B,KAAK,cAAc,EACpB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAErE,MAAM,MAAM,aAAa,GAAG,aAAa,CAAC;AAC1C,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,IAAI,CAAC;AAC3C,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;AAE5D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,sBAAsB,CAAC;IACrD,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;CACjC;AAED,MAAM,MAAM,KAAK,GAAG,cAAc,CAAC;AACnC,MAAM,MAAM,UAAU,GAAG,cAAc,CAAC;AACxC,MAAM,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAElD,MAAM,MAAM,mCAAmC,GAC3C,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC,GACvD,QAAQ,CAAC;IACT,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE,eAAe,CAAC;CAC3B,CAAC,CAAC;AAEL,eAAO,MAAM,mCAAmC,EAC9C,mCAGC,CAAC;AAEJ,wBAAgB,qCAAqC,CACnD,IAAI,EAAE,aAAa,GAClB,sBAAsB,CAExB;AAED,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,mBAAmB,GAC9B,sBAAsB,CAMxB;AAED,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,mBAAmB,GAC9B,cAAc,CAGhB;AAED,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuFb,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAEhE,eAAO,MAAM,gBAAgB,EAAE,MAAM,CACnC,kBAAkB,EAClB,mBAAmB,CACA,CAAC"}
|
|
@@ -1,8 +1,28 @@
|
|
|
1
|
+
import { noteLabelCollections, } from "../labels/note-label-collections.js";
|
|
2
|
+
export const defaultNoteColorLabelCollectionKeys = {
|
|
3
|
+
absolute: "noteNamesFlat",
|
|
4
|
+
relative: "intervalsFlat",
|
|
5
|
+
};
|
|
6
|
+
export function getDefaultNoteColorLabelCollectionKey(mode) {
|
|
7
|
+
return defaultNoteColorLabelCollectionKeys[mode];
|
|
8
|
+
}
|
|
9
|
+
export function getNoteColorLabelCollectionKey(collection) {
|
|
10
|
+
if (collection.labelCollectionKey) {
|
|
11
|
+
return collection.labelCollectionKey;
|
|
12
|
+
}
|
|
13
|
+
return getDefaultNoteColorLabelCollectionKey(collection.mode);
|
|
14
|
+
}
|
|
15
|
+
export function getNoteColorLabels(collection) {
|
|
16
|
+
return noteLabelCollections[getNoteColorLabelCollectionKey(collection)]
|
|
17
|
+
.labels;
|
|
18
|
+
}
|
|
1
19
|
const _colorCollections = {
|
|
2
20
|
musoDojo: {
|
|
3
21
|
name: "Muso Dojo Colors",
|
|
4
|
-
|
|
5
|
-
|
|
22
|
+
shortName: "Muso Dojo",
|
|
23
|
+
description: "A custom absolute chromatic palette designed by Muso Dojo.",
|
|
24
|
+
mode: "absolute",
|
|
25
|
+
labelCollectionKey: "noteNamesFlat",
|
|
6
26
|
colors: [
|
|
7
27
|
"#ED2929",
|
|
8
28
|
"#9F000F",
|
|
@@ -20,8 +40,10 @@ const _colorCollections = {
|
|
|
20
40
|
},
|
|
21
41
|
musoDojoRoot: {
|
|
22
42
|
name: "Muso Dojo Root",
|
|
43
|
+
shortName: "Root",
|
|
23
44
|
description: "Use the red color from Muso Dojo's colors on just the root note.",
|
|
24
|
-
|
|
45
|
+
mode: "relative",
|
|
46
|
+
labelCollectionKey: "intervalsFlat",
|
|
25
47
|
colors: [
|
|
26
48
|
"#ED2929",
|
|
27
49
|
null,
|
|
@@ -39,8 +61,10 @@ const _colorCollections = {
|
|
|
39
61
|
},
|
|
40
62
|
musoDojoRootAndFifth: {
|
|
41
63
|
name: "Muso Dojo Root and Fifth",
|
|
64
|
+
shortName: "Root and Fifth",
|
|
42
65
|
description: "Use the red-and-green colors from Muso Dojo's colors on the root-and-fifth notes.",
|
|
43
|
-
|
|
66
|
+
mode: "relative",
|
|
67
|
+
labelCollectionKey: "intervalsFlat",
|
|
44
68
|
colors: [
|
|
45
69
|
"#ED2929",
|
|
46
70
|
null,
|
|
@@ -58,8 +82,10 @@ const _colorCollections = {
|
|
|
58
82
|
},
|
|
59
83
|
boomwhackers: {
|
|
60
84
|
name: "Boomwhackers",
|
|
85
|
+
shortName: "Boomwhackers",
|
|
61
86
|
description: "The colors used by Boomwhackers.",
|
|
62
|
-
|
|
87
|
+
mode: "absolute",
|
|
88
|
+
labelCollectionKey: "noteNamesFlat",
|
|
63
89
|
colors: [
|
|
64
90
|
"#E21C48",
|
|
65
91
|
"#F26622",
|