@musodojo/music-theory-data 26.5.0 → 28.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.
Files changed (140) hide show
  1. package/README.md +94 -12
  2. package/esm/src/data/chord-progressions/mod.d.ts +19 -64
  3. package/esm/src/data/chord-progressions/mod.d.ts.map +1 -1
  4. package/esm/src/data/chord-progressions/mod.js +149 -65
  5. package/esm/src/data/chords/mod.d.ts +5 -0
  6. package/esm/src/data/chords/mod.d.ts.map +1 -1
  7. package/esm/src/data/chords/mod.js +20 -0
  8. package/esm/src/data/chromatic.d.ts +24 -0
  9. package/esm/src/data/chromatic.d.ts.map +1 -0
  10. package/esm/src/data/chromatic.js +15 -0
  11. package/esm/src/data/colors/mod.d.ts +37 -26
  12. package/esm/src/data/colors/mod.d.ts.map +1 -1
  13. package/esm/src/data/colors/mod.js +31 -5
  14. package/esm/src/data/labels/note-label-collections.d.ts +13 -25
  15. package/esm/src/data/labels/note-label-collections.d.ts.map +1 -1
  16. package/esm/src/data/labels/note-label-collections.js +10 -10
  17. package/esm/src/data/labels/note-labels.d.ts +2 -1
  18. package/esm/src/data/labels/note-labels.d.ts.map +1 -1
  19. package/esm/src/data/mod.d.ts +1 -0
  20. package/esm/src/data/mod.d.ts.map +1 -1
  21. package/esm/src/data/mod.js +1 -0
  22. package/esm/src/data/note-collections/augmented-variants.d.ts +1 -0
  23. package/esm/src/data/note-collections/augmented-variants.d.ts.map +1 -1
  24. package/esm/src/data/note-collections/augmented-variants.js +25 -0
  25. package/esm/src/data/note-collections/mod.d.ts +2 -1
  26. package/esm/src/data/note-collections/mod.d.ts.map +1 -1
  27. package/esm/src/mod.d.ts +1 -1
  28. package/esm/src/mod.js +1 -1
  29. package/esm/src/utils/chord-progressions.d.ts +14 -16
  30. package/esm/src/utils/chord-progressions.d.ts.map +1 -1
  31. package/esm/src/utils/chord-progressions.js +49 -105
  32. package/esm/src/utils/chords.d.ts +1 -1
  33. package/esm/src/utils/chords.d.ts.map +1 -1
  34. package/esm/src/utils/chords.js +14 -9
  35. package/esm/src/utils/chromatic.d.ts +6 -0
  36. package/esm/src/utils/chromatic.d.ts.map +1 -0
  37. package/esm/src/utils/chromatic.js +24 -0
  38. package/esm/src/utils/colors.d.ts +5 -0
  39. package/esm/src/utils/colors.d.ts.map +1 -1
  40. package/esm/src/utils/colors.js +67 -32
  41. package/esm/src/utils/conversion-registry.d.ts +1 -1
  42. package/esm/src/utils/conversion-registry.d.ts.map +1 -1
  43. package/esm/src/utils/intervals.d.ts +34 -7
  44. package/esm/src/utils/intervals.d.ts.map +1 -1
  45. package/esm/src/utils/intervals.js +5 -55
  46. package/esm/src/utils/mod.d.ts +2 -0
  47. package/esm/src/utils/mod.d.ts.map +1 -1
  48. package/esm/src/utils/mod.js +2 -0
  49. package/esm/src/utils/note-colors.d.ts +10 -0
  50. package/esm/src/utils/note-colors.d.ts.map +1 -0
  51. package/esm/src/utils/note-colors.js +13 -0
  52. package/esm/src/utils/note-names.d.ts +7 -1
  53. package/esm/src/utils/note-names.d.ts.map +1 -1
  54. package/esm/src/utils/note-names.js +6 -24
  55. package/esm/src/utils/qualities.d.ts +10 -1
  56. package/esm/src/utils/qualities.d.ts.map +1 -1
  57. package/esm/src/utils/qualities.js +10 -27
  58. package/esm/tests/colors.test.d.ts.map +1 -0
  59. package/package.json +1 -1
  60. package/script/src/data/chord-progressions/mod.d.ts +19 -64
  61. package/script/src/data/chord-progressions/mod.d.ts.map +1 -1
  62. package/script/src/data/chord-progressions/mod.js +150 -70
  63. package/script/src/data/chords/mod.d.ts +5 -0
  64. package/script/src/data/chords/mod.d.ts.map +1 -1
  65. package/script/src/data/chords/mod.js +22 -1
  66. package/script/src/data/chromatic.d.ts +24 -0
  67. package/script/src/data/chromatic.d.ts.map +1 -0
  68. package/script/src/data/chromatic.js +18 -0
  69. package/script/src/data/colors/mod.d.ts +37 -26
  70. package/script/src/data/colors/mod.d.ts.map +1 -1
  71. package/script/src/data/colors/mod.js +35 -6
  72. package/script/src/data/labels/note-label-collections.d.ts +13 -25
  73. package/script/src/data/labels/note-label-collections.d.ts.map +1 -1
  74. package/script/src/data/labels/note-label-collections.js +10 -10
  75. package/script/src/data/labels/note-labels.d.ts +2 -1
  76. package/script/src/data/labels/note-labels.d.ts.map +1 -1
  77. package/script/src/data/mod.d.ts +1 -0
  78. package/script/src/data/mod.d.ts.map +1 -1
  79. package/script/src/data/mod.js +1 -0
  80. package/script/src/data/note-collections/augmented-variants.d.ts +1 -0
  81. package/script/src/data/note-collections/augmented-variants.d.ts.map +1 -1
  82. package/script/src/data/note-collections/augmented-variants.js +25 -0
  83. package/script/src/data/note-collections/mod.d.ts +2 -1
  84. package/script/src/data/note-collections/mod.d.ts.map +1 -1
  85. package/script/src/mod.d.ts +1 -1
  86. package/script/src/mod.js +1 -1
  87. package/script/src/utils/chord-progressions.d.ts +14 -16
  88. package/script/src/utils/chord-progressions.d.ts.map +1 -1
  89. package/script/src/utils/chord-progressions.js +51 -108
  90. package/script/src/utils/chords.d.ts +1 -1
  91. package/script/src/utils/chords.d.ts.map +1 -1
  92. package/script/src/utils/chords.js +14 -9
  93. package/script/src/utils/chromatic.d.ts +6 -0
  94. package/script/src/utils/chromatic.d.ts.map +1 -0
  95. package/script/src/utils/chromatic.js +30 -0
  96. package/script/src/utils/colors.d.ts +5 -0
  97. package/script/src/utils/colors.d.ts.map +1 -1
  98. package/script/src/utils/colors.js +72 -32
  99. package/script/src/utils/conversion-registry.d.ts +1 -1
  100. package/script/src/utils/conversion-registry.d.ts.map +1 -1
  101. package/script/src/utils/intervals.d.ts +34 -7
  102. package/script/src/utils/intervals.d.ts.map +1 -1
  103. package/script/src/utils/intervals.js +5 -55
  104. package/script/src/utils/mod.d.ts +2 -0
  105. package/script/src/utils/mod.d.ts.map +1 -1
  106. package/script/src/utils/mod.js +2 -0
  107. package/script/src/utils/note-colors.d.ts +10 -0
  108. package/script/src/utils/note-colors.d.ts.map +1 -0
  109. package/script/src/utils/note-colors.js +18 -0
  110. package/script/src/utils/note-names.d.ts +7 -1
  111. package/script/src/utils/note-names.d.ts.map +1 -1
  112. package/script/src/utils/note-names.js +6 -24
  113. package/script/src/utils/qualities.d.ts +10 -1
  114. package/script/src/utils/qualities.d.ts.map +1 -1
  115. package/script/src/utils/qualities.js +10 -27
  116. package/script/tests/colors.test.d.ts.map +1 -0
  117. package/esm/src/data/chord-progressions/basic.d.ts +0 -10
  118. package/esm/src/data/chord-progressions/basic.d.ts.map +0 -1
  119. package/esm/src/data/chord-progressions/basic.js +0 -164
  120. package/esm/src/data/chord-progressions/blues.d.ts +0 -5
  121. package/esm/src/data/chord-progressions/blues.d.ts.map +0 -1
  122. package/esm/src/data/chord-progressions/blues.js +0 -30
  123. package/esm/src/data/chord-progressions/jazz.d.ts +0 -8
  124. package/esm/src/data/chord-progressions/jazz.d.ts.map +0 -1
  125. package/esm/src/data/chord-progressions/jazz.js +0 -143
  126. package/esm/src/data/chord-progressions/pop.d.ts +0 -6
  127. package/esm/src/data/chord-progressions/pop.d.ts.map +0 -1
  128. package/esm/src/data/chord-progressions/pop.js +0 -42
  129. package/script/src/data/chord-progressions/basic.d.ts +0 -10
  130. package/script/src/data/chord-progressions/basic.d.ts.map +0 -1
  131. package/script/src/data/chord-progressions/basic.js +0 -167
  132. package/script/src/data/chord-progressions/blues.d.ts +0 -5
  133. package/script/src/data/chord-progressions/blues.d.ts.map +0 -1
  134. package/script/src/data/chord-progressions/blues.js +0 -33
  135. package/script/src/data/chord-progressions/jazz.d.ts +0 -8
  136. package/script/src/data/chord-progressions/jazz.d.ts.map +0 -1
  137. package/script/src/data/chord-progressions/jazz.js +0 -146
  138. package/script/src/data/chord-progressions/pop.d.ts +0 -6
  139. package/script/src/data/chord-progressions/pop.d.ts.map +0 -1
  140. package/script/src/data/chord-progressions/pop.js +0 -45
package/README.md CHANGED
@@ -26,12 +26,11 @@ Have a question, a suggestion, or want to report a bug? Get in touch!
26
26
  - ✅ Augmented Variants
27
27
  - ✅ Other Note Collections, including notes and dyads
28
28
 
29
- ## Available Chord Progression Templates
29
+ ## Available Chord Progressions
30
30
 
31
- - ✅ Basic Progressions
32
- - ✅ Pop Progressions
33
- - ✅ Blues Progressions
34
- - ✅ Jazz Progressions
31
+ - ✅ 4-bar foundational loops
32
+ - ✅ 8-bar loops
33
+ - ✅ 12-bar blues
35
34
 
36
35
  ## Features
37
36
 
@@ -177,23 +176,106 @@ console.log(Object.keys(music_theory_data.noteCollections));
177
176
  console.log(Object.keys(music_theory_data.groupedNoteCollections));
178
177
  // ["diatonicModes", "pentatonicVariants", ...]
179
178
 
180
- // Get a beginner-friendly chord progression template
181
- const oneFourFive = music_theory_data.chordProgressionTemplates.oneFourFive;
179
+ // Get a chord progression
180
+ const oneSixFourFive = music_theory_data.chordProgressions.oneSixFourFive;
182
181
 
183
- console.log(oneFourFive.primaryName);
184
- // "One Four Five"
182
+ console.log(oneSixFourFive.primaryName);
183
+ // "I | vi | IV | V"
184
+
185
+ console.log(oneSixFourFive.chords);
186
+ // [
187
+ // { degree: "1", quality: "M", durationInBars: 1 },
188
+ // { degree: "6", quality: "m", durationInBars: 1 },
189
+ // { degree: "4", quality: "M", durationInBars: 1 },
190
+ // { degree: "5", quality: "M", durationInBars: 1 },
191
+ // ]
185
192
 
186
193
  console.log(
187
- music_theory_data.getChordProgressionTemplateRomanNames("oneFourFive"),
194
+ music_theory_data.getChordProgressionChordNames(
195
+ "C",
196
+ "oneSixFourFive",
197
+ ),
188
198
  );
189
- // ["I", "IV", "V"]
199
+ // ["CM", "Am", "FM", "GM"]
190
200
 
191
201
  console.log(
192
- music_theory_data.getChordProgressionTemplateChordNames("C", "oneFourFive"),
202
+ music_theory_data.getChordProgressionUniqueChordNames(
203
+ "C",
204
+ "oneFourOneFiveSplitReturn",
205
+ ),
193
206
  );
194
207
  // ["CM", "FM", "GM"]
208
+
209
+ console.log(
210
+ music_theory_data.getChordProgressionUniqueChordReferences(
211
+ "C",
212
+ "oneFourOneFiveSplitReturn",
213
+ ),
214
+ );
215
+ // [
216
+ // { rootNote: "C", chordName: "CM", noteCollectionKey: "major" },
217
+ // { rootNote: "C", chordName: "FM", noteCollectionKey: "major" },
218
+ // { rootNote: "C", chordName: "GM", noteCollectionKey: "major" },
219
+ // ]
220
+
221
+ console.log(
222
+ music_theory_data.getChordProgressionTotalDurationInBars("twelveBarBlues"),
223
+ );
224
+ // 12
225
+ ```
226
+
227
+ ## Note Colors And Chromatic Indexes
228
+
229
+ Note color collections use 12 chromatic slots. In absolute mode, each index is a
230
+ pitch class where index `0` is C and index `7` is G. In relative mode, each
231
+ index is measured from a musical root where index `0` is the root and index `7`
232
+ is the fifth.
233
+
234
+ `noteLabelCollections.noteNamesFlat` is the default label set for absolute note
235
+ colors, and `noteLabelCollections.intervalsFlat` is the default label set for
236
+ relative note colors. `ChromaticIndex` is the shared `0`-to-`11` pitch-class
237
+ shape used by chromatic tuples, note labels, root-note integers, and filled
238
+ chromatic interval helpers. `ChromaticMode` is the shared `"absolute"` or
239
+ `"relative"` mode used by note colors and label collections.
240
+
241
+ Chromatic indexes must be integers. Helpers such as `normalizeChromaticIndex`
242
+ wrap negative or large semitone values into the `0`-to-`11` range, but reject
243
+ fractional or non-finite values.
244
+
245
+ ```ts
246
+ import {
247
+ colorCollections,
248
+ getNoteColorIndex,
249
+ getNoteColorLabels,
250
+ } from "jsr:@musodojo/music-theory-data";
251
+
252
+ const absoluteIndex = getNoteColorIndex({
253
+ midi: 67,
254
+ mode: "absolute",
255
+ });
256
+ console.log(absoluteIndex);
257
+ // 7, the pitch class G
258
+
259
+ const relativeIndex = getNoteColorIndex({
260
+ midi: 69,
261
+ mode: "relative",
262
+ rootPitchClass: 2,
263
+ });
264
+ console.log(relativeIndex);
265
+ // 7, A as the fifth above D
266
+
267
+ console.log(getNoteColorLabels(colorCollections.musoDojoRootAndFifth));
268
+ // ["1", "♭2", "2", "♭3", "3", "4", "♭5", "5", "♭6", "6", "♭7", "7"]
195
269
  ```
196
270
 
271
+ Color values may be hex strings or `null`. A `null` value means there is
272
+ intentionally no semantic color for that pitch or degree; consuming apps should
273
+ choose their own visual fallback through theme or UI settings.
274
+
275
+ Regular note collection interval arrays remain variable length because chords,
276
+ dyads, arpeggios, and scales have different natural sizes. Helpers that opt into
277
+ `fillChromatic: true` return a fixed 12-slot chromatic tuple.
278
+
197
279
  ## API Documentation
198
280
 
199
281
  For a full list of all available data, types, and utility functions, please see
@@ -1,66 +1,21 @@
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";
4
- export { basicChordProgressionTemplates } from "./basic.js";
5
- export { bluesChordProgressionTemplates } from "./blues.js";
6
- export { jazzChordProgressionTemplates } from "./jazz.js";
7
- export { popChordProgressionTemplates } from "./pop.js";
8
- export declare const chordProgressionTemplates: {
9
- readonly twoFiveOneMajor: import("../../mod.js").ChordProgressionTemplate;
10
- readonly minorTwoFiveOne: import("../../mod.js").ChordProgressionTemplate;
11
- readonly rhythmChanges: import("../../mod.js").ChordProgressionTemplate;
12
- readonly jazzBluesBasic: import("../../mod.js").ChordProgressionTemplate;
13
- readonly twelveBarBlues: import("../../mod.js").ChordProgressionTemplate;
14
- readonly dooWop: import("../../mod.js").ChordProgressionTemplate;
15
- readonly axisProgression: import("../../mod.js").ChordProgressionTemplate;
16
- readonly oneFourFive: import("../../mod.js").ChordProgressionTemplate;
17
- readonly oneFive: import("../../mod.js").ChordProgressionTemplate;
18
- readonly oneFour: import("../../mod.js").ChordProgressionTemplate;
19
- readonly oneOneFiveFive: import("../../mod.js").ChordProgressionTemplate;
20
- readonly oneOneFiveFiveSeven: import("../../mod.js").ChordProgressionTemplate;
21
- readonly oneFourOneFive: import("../../mod.js").ChordProgressionTemplate;
1
+ import type { ChordProgression } from "../../types/chord-progressions";
2
+ declare const _chordProgressions: {
3
+ readonly oneOneFiveFive: ChordProgression;
4
+ readonly oneOneFiveFiveDominant7: ChordProgression;
5
+ readonly oneOneFourFour: ChordProgression;
6
+ readonly oneOneFourFive: ChordProgression;
7
+ readonly oneFourOneFive: ChordProgression;
8
+ readonly oneSixFourFive: ChordProgression;
9
+ readonly oneFiveSixFour: ChordProgression;
10
+ readonly oneSixTwoFive: ChordProgression;
11
+ readonly sixTwoFiveOne: ChordProgression;
12
+ readonly majorTwoFiveOne: ChordProgression;
13
+ readonly minorTwoFiveOne: ChordProgression;
14
+ readonly oneFourOneFiveSplitReturn: ChordProgression;
15
+ readonly twelveBarBlues: ChordProgression;
16
+ readonly twelveBarBluesQuickChange: ChordProgression;
22
17
  };
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;
27
- export declare const groupedChordProgressionTemplates: {
28
- readonly basicChordProgressionTemplates: {
29
- readonly oneFourFive: import("../../mod.js").ChordProgressionTemplate;
30
- readonly oneFive: import("../../mod.js").ChordProgressionTemplate;
31
- readonly oneFour: import("../../mod.js").ChordProgressionTemplate;
32
- readonly oneOneFiveFive: import("../../mod.js").ChordProgressionTemplate;
33
- readonly oneOneFiveFiveSeven: import("../../mod.js").ChordProgressionTemplate;
34
- readonly oneFourOneFive: import("../../mod.js").ChordProgressionTemplate;
35
- };
36
- readonly popChordProgressionTemplates: {
37
- readonly dooWop: import("../../mod.js").ChordProgressionTemplate;
38
- readonly axisProgression: import("../../mod.js").ChordProgressionTemplate;
39
- };
40
- readonly bluesChordProgressionTemplates: {
41
- readonly twelveBarBlues: import("../../mod.js").ChordProgressionTemplate;
42
- };
43
- readonly jazzChordProgressionTemplates: {
44
- readonly twoFiveOneMajor: import("../../mod.js").ChordProgressionTemplate;
45
- readonly minorTwoFiveOne: import("../../mod.js").ChordProgressionTemplate;
46
- readonly rhythmChanges: import("../../mod.js").ChordProgressionTemplate;
47
- readonly jazzBluesBasic: import("../../mod.js").ChordProgressionTemplate;
48
- };
49
- };
50
- export type ChordProgressionTemplateGroupKey = keyof typeof groupedChordProgressionTemplates;
51
- /** Human-readable DisplayName and Description metadata for top-level chord progression groups. */
52
- export declare const chordProgressionTemplateGroupsMetadata: Record<ChordProgressionTemplateGroupKey, {
53
- displayName: string;
54
- description: string;
55
- }>;
56
- /** Human-readable DisplayName and Description metadata for chord progression categories. */
57
- export declare const chordProgressionTemplateCategoryMetadata: Record<ChordProgressionTemplateCategory, {
58
- displayName: string;
59
- description: string;
60
- }>;
61
- /** Human-readable DisplayName and Description metadata for chord progression template types. */
62
- export declare const chordProgressionTemplateTypeMetadata: Record<ChordProgressionTemplateType, {
63
- displayName: string;
64
- description: string;
65
- }>;
18
+ export type ChordProgressionKey = keyof typeof _chordProgressions;
19
+ export declare const chordProgressions: Record<ChordProgressionKey, ChordProgression>;
20
+ export {};
66
21
  //# sourceMappingURL=mod.d.ts.map
@@ -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;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"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../src/src/data/chord-progressions/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAEjB,MAAM,gCAAgC,CAAC;AA+JxC,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;CAed,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,kBAAkB,CAAC;AAElE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,CACxD,CAAC"}
@@ -1,71 +1,155 @@
1
- import { basicChordProgressionTemplates } from "./basic.js";
2
- import { bluesChordProgressionTemplates } from "./blues.js";
3
- import { jazzChordProgressionTemplates } from "./jazz.js";
4
- import { popChordProgressionTemplates } from "./pop.js";
5
- export { basicChordProgressionTemplates } from "./basic.js";
6
- export { bluesChordProgressionTemplates } from "./blues.js";
7
- export { jazzChordProgressionTemplates } from "./jazz.js";
8
- export { popChordProgressionTemplates } from "./pop.js";
9
- export const chordProgressionTemplates = {
10
- ...basicChordProgressionTemplates,
11
- ...popChordProgressionTemplates,
12
- ...bluesChordProgressionTemplates,
13
- ...jazzChordProgressionTemplates,
1
+ function chord(degree, quality, durationInBars) {
2
+ return {
3
+ degree,
4
+ quality,
5
+ durationInBars,
6
+ };
7
+ }
8
+ const oneOneFiveFive = {
9
+ primaryName: "I | I | V | V",
10
+ chords: [
11
+ chord("1", "M", 2),
12
+ chord("5", "M", 2),
13
+ ],
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",
15
+ const oneOneFiveFiveDominant7 = {
16
+ primaryName: "I | I | V | V7",
17
+ chords: [
18
+ chord("1", "M", 2),
19
+ chord("5", "M", 1),
20
+ chord("5", "7", 1),
21
+ ],
24
22
  };
25
- export const groupedChordProgressionTemplates = {
26
- basicChordProgressionTemplates,
27
- popChordProgressionTemplates,
28
- bluesChordProgressionTemplates,
29
- jazzChordProgressionTemplates,
23
+ const oneOneFourFour = {
24
+ primaryName: "I | I | IV | IV",
25
+ chords: [
26
+ chord("1", "M", 2),
27
+ chord("4", "M", 2),
28
+ ],
30
29
  };
31
- /** Human-readable DisplayName and Description metadata for top-level chord progression groups. */
32
- export const chordProgressionTemplateGroupsMetadata = {
33
- basicChordProgressionTemplates: {
34
- displayName: "Basic",
35
- description: "Simple beginner-friendly formulas and playable loops built from foundational harmonic movement.",
36
- },
37
- popChordProgressionTemplates: {
38
- displayName: "Pop",
39
- description: "Common songwriting loops used across pop, rock, folk, and related styles.",
40
- },
41
- bluesChordProgressionTemplates: {
42
- displayName: "Blues",
43
- description: "Blues forms and dominant-chord progressions, including twelve-bar templates.",
44
- },
45
- jazzChordProgressionTemplates: {
46
- displayName: "Jazz",
47
- description: "Functional harmony templates, turnarounds, cadences, and standard jazz forms.",
48
- },
30
+ const oneOneFourFive = {
31
+ primaryName: "I | I | IV | V",
32
+ chords: [
33
+ chord("1", "M", 2),
34
+ chord("4", "M", 1),
35
+ chord("5", "M", 1),
36
+ ],
49
37
  };
50
- /** Human-readable DisplayName and Description metadata for chord progression categories. */
51
- export const chordProgressionTemplateCategoryMetadata = {
52
- basic: chordProgressionTemplateGroupsMetadata.basicChordProgressionTemplates,
53
- pop: chordProgressionTemplateGroupsMetadata.popChordProgressionTemplates,
54
- blues: chordProgressionTemplateGroupsMetadata.bluesChordProgressionTemplates,
55
- jazz: chordProgressionTemplateGroupsMetadata.jazzChordProgressionTemplates,
38
+ const oneFourOneFive = {
39
+ primaryName: "I | IV | I | V",
40
+ chords: [
41
+ chord("1", "M", 1),
42
+ chord("4", "M", 1),
43
+ chord("1", "M", 1),
44
+ chord("5", "M", 1),
45
+ ],
56
46
  };
57
- /** Human-readable DisplayName and Description metadata for chord progression template types. */
58
- export const chordProgressionTemplateTypeMetadata = {
59
- formula: {
60
- displayName: "Formula",
61
- description: "A reusable harmonic relationship, not necessarily a complete playable loop or song form.",
62
- },
63
- loop: {
64
- displayName: "Loop",
65
- description: "A short playable chord progression intended to repeat.",
66
- },
67
- form: {
68
- displayName: "Form",
69
- description: "A longer structured progression with named sections or a conventional song form.",
70
- },
47
+ const oneSixFourFive = {
48
+ primaryName: "I | vi | IV | V",
49
+ chords: [
50
+ chord("1", "M", 1),
51
+ chord("6", "m", 1),
52
+ chord("4", "M", 1),
53
+ chord("5", "M", 1),
54
+ ],
71
55
  };
56
+ const oneFiveSixFour = {
57
+ primaryName: "I | V | vi | IV",
58
+ chords: [
59
+ chord("1", "M", 1),
60
+ chord("5", "M", 1),
61
+ chord("6", "m", 1),
62
+ chord("4", "M", 1),
63
+ ],
64
+ };
65
+ const oneSixTwoFive = {
66
+ primaryName: "I | vi | ii | V",
67
+ chords: [
68
+ chord("1", "M", 1),
69
+ chord("6", "m", 1),
70
+ chord("2", "m", 1),
71
+ chord("5", "M", 1),
72
+ ],
73
+ };
74
+ const sixTwoFiveOne = {
75
+ primaryName: "vi | ii | V | I",
76
+ chords: [
77
+ chord("6", "m", 1),
78
+ chord("2", "m", 1),
79
+ chord("5", "M", 1),
80
+ chord("1", "M", 1),
81
+ ],
82
+ };
83
+ const majorTwoFiveOne = {
84
+ primaryName: "iim7 | V7 | Imaj7 | Imaj7",
85
+ chords: [
86
+ chord("2", "m7", 1),
87
+ chord("5", "7", 1),
88
+ chord("1", "M7", 2),
89
+ ],
90
+ };
91
+ const minorTwoFiveOne = {
92
+ primaryName: "iiø7 | V7 | i | i",
93
+ chords: [
94
+ chord("2", "ø7", 1),
95
+ chord("5", "7", 1),
96
+ chord("1", "m", 2),
97
+ ],
98
+ };
99
+ const oneFourOneFiveSplitReturn = {
100
+ primaryName: "I | IV | I | V | I | IV | I V | I",
101
+ chords: [
102
+ chord("1", "M", 1),
103
+ chord("4", "M", 1),
104
+ chord("1", "M", 1),
105
+ chord("5", "M", 1),
106
+ chord("1", "M", 1),
107
+ chord("4", "M", 1),
108
+ chord("1", "M", 0.5),
109
+ chord("5", "M", 0.5),
110
+ chord("1", "M", 1),
111
+ ],
112
+ };
113
+ const twelveBarBlues = {
114
+ primaryName: "12 Bar Blues",
115
+ chords: [
116
+ chord("1", "7", 4),
117
+ chord("4", "7", 2),
118
+ chord("1", "7", 2),
119
+ chord("5", "7", 1),
120
+ chord("4", "7", 1),
121
+ chord("1", "7", 1),
122
+ chord("5", "7", 1),
123
+ ],
124
+ };
125
+ const twelveBarBluesQuickChange = {
126
+ primaryName: "12 Bar Blues Quick Change",
127
+ chords: [
128
+ chord("1", "7", 1),
129
+ chord("4", "7", 1),
130
+ chord("1", "7", 2),
131
+ chord("4", "7", 2),
132
+ chord("1", "7", 2),
133
+ chord("5", "7", 1),
134
+ chord("4", "7", 1),
135
+ chord("1", "7", 1),
136
+ chord("5", "7", 1),
137
+ ],
138
+ };
139
+ const _chordProgressions = {
140
+ oneOneFiveFive,
141
+ oneOneFiveFiveDominant7,
142
+ oneOneFourFour,
143
+ oneOneFourFive,
144
+ oneFourOneFive,
145
+ oneSixFourFive,
146
+ oneFiveSixFour,
147
+ oneSixTwoFive,
148
+ sixTwoFiveOne,
149
+ majorTwoFiveOne,
150
+ minorTwoFiveOne,
151
+ oneFourOneFiveSplitReturn,
152
+ twelveBarBlues,
153
+ twelveBarBluesQuickChange,
154
+ };
155
+ export const chordProgressions = _chordProgressions;
@@ -1,3 +1,4 @@
1
+ import type { NoteCollectionKey } from "../note-collections/mod.js";
1
2
  declare const _triadChordQualities: readonly ["M", "m", "°", "+"];
2
3
  declare const _seventhChordQualities: readonly ["M7", "m7", "7", "ø7", "m7♭5", "°7", "m(M7)", "+M7", "M7♯5"];
3
4
  declare const _upperCaseRomanNumerals: readonly ["I", "II", "III", "IV", "V", "VI", "VII"];
@@ -21,6 +22,9 @@ export declare const triadChordQualities: readonly Triad[];
21
22
  export declare const seventhChordQualities: readonly SeventhChord[];
22
23
  /** The complete set of supported chord suffix qualities. */
23
24
  export declare const chordQualities: readonly ChordQuality[];
25
+ export type ChordQualityNoteCollectionKeyMap = Record<ChordQuality, NoteCollectionKey>;
26
+ /** Note-collection keys for every supported chord quality. */
27
+ export declare const chordQualityNoteCollectionKeys: ChordQualityNoteCollectionKeyMap;
24
28
  /** Roman numeral rendering metadata for each supported chord quality. */
25
29
  export declare const chordQualityRomanRenderings: ReadonlyMap<ChordQuality, ChordQualityRomanRendering>;
26
30
  /** An ordered array containing the fundamental triad qualities of the diatonic major scale. */
@@ -39,5 +43,6 @@ export declare const melodicMinorSeventhChords: SeventhChord[];
39
43
  export declare const upperCaseRomanNumerals: readonly UpperCaseRomanNumeral[];
40
44
  /** An array mapping 7 index scale degrees to their corresponding lower-case Roman numerals. */
41
45
  export declare const lowerCaseRomanNumerals: readonly LowerCaseRomanNumeral[];
46
+ export declare function getChordQualityNoteCollectionKey(quality: ChordQuality): NoteCollectionKey;
42
47
  export {};
43
48
  //# sourceMappingURL=mod.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../src/src/data/chords/mod.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,oBAAoB,+BAAgC,CAAC;AAE3D,QAAA,MAAM,sBAAsB,wEAUlB,CAAC;AAEX,QAAA,MAAM,uBAAuB,qDAQnB,CAAC;AAEX,QAAA,MAAM,uBAAuB,qDAQnB,CAAC;AAEX,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1D,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AACnE,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,YAAY,CAAC;AAEhD,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7E,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7E,MAAM,MAAM,YAAY,GAAG,qBAAqB,GAAG,qBAAqB,CAAC;AAEzE,MAAM,MAAM,UAAU,GAAG,GAAG,YAAY,EAAE,GAAG,GAAG,YAAY,GAAG,KAAK,EAAE,CAAC;AACvE,MAAM,MAAM,iBAAiB,GAAG,GAAG,YAAY,GAAG,YAAY,EAAE,CAAC;AACjE,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,OAAO,CAAC;AAEjD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,2DAA2D;AAC3D,eAAO,MAAM,mBAAmB,EAAE,SAAS,KAAK,EAAyB,CAAC;AAE1E,6DAA6D;AAC7D,eAAO,MAAM,qBAAqB,EAAE,SAAS,YAAY,EACjC,CAAC;AAEzB,4DAA4D;AAC5D,eAAO,MAAM,cAAc,EAAE,SAAS,YAAY,EAGjD,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,2BAA2B,EAAE,WAAW,CACnD,YAAY,EACZ,0BAA0B,CAe1B,CAAC;AAEH,+FAA+F;AAC/F,eAAO,MAAM,cAAc,EAAE,KAAK,EAQxB,CAAC;AAEX,uGAAuG;AACvG,eAAO,MAAM,qBAAqB,EAAE,YAAY,EAQtC,CAAC;AAEX,+FAA+F;AAC/F,eAAO,MAAM,mBAAmB,EAAE,KAAK,EAQ7B,CAAC;AAEX,uGAAuG;AACvG,eAAO,MAAM,0BAA0B,EAAE,YAAY,EAQ3C,CAAC;AAEX,8FAA8F;AAC9F,eAAO,MAAM,kBAAkB,EAAE,KAAK,EAQ5B,CAAC;AAEX,sGAAsG;AACtG,eAAO,MAAM,yBAAyB,EAAE,YAAY,EAQ1C,CAAC;AAEX,+FAA+F;AAC/F,eAAO,MAAM,sBAAsB,EAAE,SAAS,qBAAqB,EAC1C,CAAC;AAE1B,+FAA+F;AAC/F,eAAO,MAAM,sBAAsB,EAAE,SAAS,qBAAqB,EAC1C,CAAC"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../src/src/data/chords/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,QAAA,MAAM,oBAAoB,+BAAgC,CAAC;AAE3D,QAAA,MAAM,sBAAsB,wEAUlB,CAAC;AAEX,QAAA,MAAM,uBAAuB,qDAQnB,CAAC;AAEX,QAAA,MAAM,uBAAuB,qDAQnB,CAAC;AAEX,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1D,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AACnE,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,YAAY,CAAC;AAEhD,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7E,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7E,MAAM,MAAM,YAAY,GAAG,qBAAqB,GAAG,qBAAqB,CAAC;AAEzE,MAAM,MAAM,UAAU,GAAG,GAAG,YAAY,EAAE,GAAG,GAAG,YAAY,GAAG,KAAK,EAAE,CAAC;AACvE,MAAM,MAAM,iBAAiB,GAAG,GAAG,YAAY,GAAG,YAAY,EAAE,CAAC;AACjE,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,OAAO,CAAC;AAEjD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAkBD,2DAA2D;AAC3D,eAAO,MAAM,mBAAmB,EAAE,SAAS,KAAK,EAAyB,CAAC;AAE1E,6DAA6D;AAC7D,eAAO,MAAM,qBAAqB,EAAE,SAAS,YAAY,EACjC,CAAC;AAEzB,4DAA4D;AAC5D,eAAO,MAAM,cAAc,EAAE,SAAS,YAAY,EAGjD,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG,MAAM,CACnD,YAAY,EACZ,iBAAiB,CAClB,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,8BAA8B,EAAE,gCACZ,CAAC;AAElC,yEAAyE;AACzE,eAAO,MAAM,2BAA2B,EAAE,WAAW,CACnD,YAAY,EACZ,0BAA0B,CAe1B,CAAC;AAEH,+FAA+F;AAC/F,eAAO,MAAM,cAAc,EAAE,KAAK,EAQxB,CAAC;AAEX,uGAAuG;AACvG,eAAO,MAAM,qBAAqB,EAAE,YAAY,EAQtC,CAAC;AAEX,+FAA+F;AAC/F,eAAO,MAAM,mBAAmB,EAAE,KAAK,EAQ7B,CAAC;AAEX,uGAAuG;AACvG,eAAO,MAAM,0BAA0B,EAAE,YAAY,EAQ3C,CAAC;AAEX,8FAA8F;AAC9F,eAAO,MAAM,kBAAkB,EAAE,KAAK,EAQ5B,CAAC;AAEX,sGAAsG;AACtG,eAAO,MAAM,yBAAyB,EAAE,YAAY,EAQ1C,CAAC;AAEX,+FAA+F;AAC/F,eAAO,MAAM,sBAAsB,EAAE,SAAS,qBAAqB,EAC1C,CAAC;AAE1B,+FAA+F;AAC/F,eAAO,MAAM,sBAAsB,EAAE,SAAS,qBAAqB,EAC1C,CAAC;AAE1B,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,YAAY,GACpB,iBAAiB,CAEnB"}
@@ -28,6 +28,21 @@ const _lowerCaseRomanNumerals = [
28
28
  "vi",
29
29
  "vii",
30
30
  ];
31
+ const _chordQualityNoteCollectionKeys = {
32
+ M: "major",
33
+ m: "minor",
34
+ "°": "diminishedTriad",
35
+ "+": "augmentedTriad",
36
+ M7: "major7",
37
+ m7: "minor7",
38
+ "7": "dominant7",
39
+ "ø7": "halfDiminished7",
40
+ "m7♭5": "halfDiminished7",
41
+ "°7": "diminished7",
42
+ "m(M7)": "minorMajor7",
43
+ "+M7": "augmentedMajor7",
44
+ "M7♯5": "augmentedMajor7",
45
+ };
31
46
  /** The complete set of supported triad chord qualities. */
32
47
  export const triadChordQualities = _triadChordQualities;
33
48
  /** The complete set of supported seventh chord qualities. */
@@ -37,6 +52,8 @@ export const chordQualities = [
37
52
  ...triadChordQualities,
38
53
  ...seventhChordQualities,
39
54
  ];
55
+ /** Note-collection keys for every supported chord quality. */
56
+ export const chordQualityNoteCollectionKeys = _chordQualityNoteCollectionKeys;
40
57
  /** Roman numeral rendering metadata for each supported chord quality. */
41
58
  export const chordQualityRomanRenderings = new Map([
42
59
  ["M", { numeralCase: "upper", suffix: "" }],
@@ -117,3 +134,6 @@ export const melodicMinorSeventhChords = [
117
134
  export const upperCaseRomanNumerals = _upperCaseRomanNumerals;
118
135
  /** An array mapping 7 index scale degrees to their corresponding lower-case Roman numerals. */
119
136
  export const lowerCaseRomanNumerals = _lowerCaseRomanNumerals;
137
+ export function getChordQualityNoteCollectionKey(quality) {
138
+ return chordQualityNoteCollectionKeys[quality];
139
+ }
@@ -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"}
@@ -0,0 +1,15 @@
1
+ export const CHROMATIC_NOTE_COUNT = 12;
2
+ export const CHROMATIC_INDEXES = [
3
+ 0,
4
+ 1,
5
+ 2,
6
+ 3,
7
+ 4,
8
+ 5,
9
+ 6,
10
+ 7,
11
+ 8,
12
+ 9,
13
+ 10,
14
+ 11,
15
+ ];
@@ -1,51 +1,62 @@
1
- export type Color = string | null;
2
- export type ColorGroup = readonly [
3
- Color,
4
- Color,
5
- Color,
6
- Color,
7
- Color,
8
- Color,
9
- Color,
10
- Color,
11
- Color,
12
- Color,
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 description: "A custom set of colors, designed by Muso Dojo.";
26
- readonly relative: false;
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 relative: true;
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 relative: true;
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 relative: false;
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, ColorCollection>;
60
+ export declare const colorCollections: Record<ColorCollectionKey, NoteColorCollection>;
50
61
  export {};
51
62
  //# sourceMappingURL=mod.d.ts.map