@musodojo/music-theory-data 32.0.0 → 33.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 (91) hide show
  1. package/README.md +58 -7
  2. package/esm/deps/jsr.io/@std/internal/{1.0.13 → 1.0.14}/build_message.d.ts.map +1 -1
  3. package/{script/deps/jsr.io/@std/internal/1.0.13 → esm/deps/jsr.io/@std/internal/1.0.14}/diff.d.ts.map +1 -1
  4. package/{script/deps/jsr.io/@std/internal/1.0.13 → esm/deps/jsr.io/@std/internal/1.0.14}/diff_str.d.ts.map +1 -1
  5. package/{script/deps/jsr.io/@std/internal/1.0.13 → esm/deps/jsr.io/@std/internal/1.0.14}/format.d.ts.map +1 -1
  6. package/esm/deps/jsr.io/@std/internal/{1.0.13 → 1.0.14}/styles.d.ts.map +1 -1
  7. package/esm/deps/jsr.io/@std/internal/{1.0.13 → 1.0.14}/types.d.ts.map +1 -1
  8. package/esm/src/data/chord-progressions/mod.d.ts +28 -16
  9. package/esm/src/data/chord-progressions/mod.d.ts.map +1 -1
  10. package/esm/src/data/chord-progressions/mod.js +180 -65
  11. package/esm/src/data/chords/mod.d.ts +26 -1
  12. package/esm/src/data/chords/mod.d.ts.map +1 -1
  13. package/esm/src/data/chords/mod.js +70 -1
  14. package/esm/src/data/labels/mod.d.ts +1 -0
  15. package/esm/src/data/labels/mod.d.ts.map +1 -1
  16. package/esm/src/data/labels/mod.js +1 -0
  17. package/esm/src/data/labels/note-label-collections.d.ts +1 -25
  18. package/esm/src/data/labels/note-label-collections.d.ts.map +1 -1
  19. package/esm/src/data/labels/note-label-collections.js +1 -77
  20. package/esm/src/data/labels/note-labels.d.ts +1 -1
  21. package/esm/src/data/labels/note-labels.d.ts.map +1 -1
  22. package/esm/src/data/labels/solfege.d.ts +33 -0
  23. package/esm/src/data/labels/solfege.d.ts.map +1 -0
  24. package/esm/src/data/labels/solfege.js +165 -0
  25. package/esm/src/data/note-collections/mod.d.ts +15 -0
  26. package/esm/src/data/note-collections/mod.d.ts.map +1 -1
  27. package/esm/src/data/note-collections/mod.js +2 -2
  28. package/esm/src/utils/chord-progressions.d.ts +22 -5
  29. package/esm/src/utils/chord-progressions.d.ts.map +1 -1
  30. package/esm/src/utils/chord-progressions.js +70 -7
  31. package/esm/src/utils/chords.d.ts +7 -1
  32. package/esm/src/utils/chords.d.ts.map +1 -1
  33. package/esm/src/utils/chords.js +18 -1
  34. package/esm/src/utils/conversion-registry.d.ts +40 -20
  35. package/esm/src/utils/conversion-registry.d.ts.map +1 -1
  36. package/esm/src/utils/conversion-registry.js +95 -25
  37. package/esm/src/utils/intervals.d.ts +3 -0
  38. package/esm/src/utils/intervals.d.ts.map +1 -1
  39. package/esm/src/utils/intervals.js +23 -0
  40. package/esm/src/utils/midi.d.ts +7 -0
  41. package/esm/src/utils/midi.d.ts.map +1 -1
  42. package/esm/src/utils/midi.js +16 -0
  43. package/esm/src/utils/note-collections.d.ts +9 -1
  44. package/esm/src/utils/note-collections.d.ts.map +1 -1
  45. package/esm/src/utils/note-collections.js +22 -0
  46. package/esm/tests/solfege.test.d.ts.map +1 -0
  47. package/package.json +1 -1
  48. package/script/deps/jsr.io/@std/internal/{1.0.13 → 1.0.14}/build_message.d.ts.map +1 -1
  49. package/{esm/deps/jsr.io/@std/internal/1.0.13 → script/deps/jsr.io/@std/internal/1.0.14}/diff.d.ts.map +1 -1
  50. package/{esm/deps/jsr.io/@std/internal/1.0.13 → script/deps/jsr.io/@std/internal/1.0.14}/diff_str.d.ts.map +1 -1
  51. package/{esm/deps/jsr.io/@std/internal/1.0.13 → script/deps/jsr.io/@std/internal/1.0.14}/format.d.ts.map +1 -1
  52. package/script/deps/jsr.io/@std/internal/{1.0.13 → 1.0.14}/styles.d.ts.map +1 -1
  53. package/script/deps/jsr.io/@std/internal/{1.0.13 → 1.0.14}/types.d.ts.map +1 -1
  54. package/script/src/data/chord-progressions/mod.d.ts +28 -16
  55. package/script/src/data/chord-progressions/mod.d.ts.map +1 -1
  56. package/script/src/data/chord-progressions/mod.js +181 -66
  57. package/script/src/data/chords/mod.d.ts +26 -1
  58. package/script/src/data/chords/mod.d.ts.map +1 -1
  59. package/script/src/data/chords/mod.js +75 -2
  60. package/script/src/data/labels/mod.d.ts +1 -0
  61. package/script/src/data/labels/mod.d.ts.map +1 -1
  62. package/script/src/data/labels/mod.js +1 -0
  63. package/script/src/data/labels/note-label-collections.d.ts +1 -25
  64. package/script/src/data/labels/note-label-collections.d.ts.map +1 -1
  65. package/script/src/data/labels/note-label-collections.js +1 -77
  66. package/script/src/data/labels/note-labels.d.ts +1 -1
  67. package/script/src/data/labels/note-labels.d.ts.map +1 -1
  68. package/script/src/data/labels/solfege.d.ts +33 -0
  69. package/script/src/data/labels/solfege.d.ts.map +1 -0
  70. package/script/src/data/labels/solfege.js +173 -0
  71. package/script/src/data/note-collections/mod.d.ts +15 -0
  72. package/script/src/data/note-collections/mod.d.ts.map +1 -1
  73. package/script/src/utils/chord-progressions.d.ts +22 -5
  74. package/script/src/utils/chord-progressions.d.ts.map +1 -1
  75. package/script/src/utils/chord-progressions.js +72 -5
  76. package/script/src/utils/chords.d.ts +7 -1
  77. package/script/src/utils/chords.d.ts.map +1 -1
  78. package/script/src/utils/chords.js +19 -0
  79. package/script/src/utils/conversion-registry.d.ts +40 -20
  80. package/script/src/utils/conversion-registry.d.ts.map +1 -1
  81. package/script/src/utils/conversion-registry.js +98 -26
  82. package/script/src/utils/intervals.d.ts +3 -0
  83. package/script/src/utils/intervals.d.ts.map +1 -1
  84. package/script/src/utils/intervals.js +26 -0
  85. package/script/src/utils/midi.d.ts +7 -0
  86. package/script/src/utils/midi.d.ts.map +1 -1
  87. package/script/src/utils/midi.js +19 -0
  88. package/script/src/utils/note-collections.d.ts +9 -1
  89. package/script/src/utils/note-collections.d.ts.map +1 -1
  90. package/script/src/utils/note-collections.js +25 -0
  91. package/script/tests/solfege.test.d.ts.map +1 -0
package/README.md CHANGED
@@ -13,14 +13,14 @@ helpers, and naming utilities.
13
13
  collections, grouped into families such as diatonic modes, pentatonic
14
14
  variants, major/minor/dominant variants, harmonic minor modes, melodic minor
15
15
  modes, diminished variants, and augmented variants.
16
- - **Chord progressions:** 4-bar foundational loops, 8-bar loops, and 12-bar
17
- blues progressions with roman symbols, scale degrees, qualities, and bar
18
- durations.
16
+ - **Chord progressions:** foundational loops, blues changes, and jazz-standard
17
+ forms with musical categories, scale degrees, chord collection keys, bar
18
+ durations, derived roman symbols, and optional analysis labels.
19
19
  - **Labels and theory primitives:** note names, root notes, intervals, chromatic
20
20
  indexes, roman numerals, chord qualities, and conversion helpers.
21
21
  - **Application helpers:** note-name generation, interval transforms, chord
22
- progression resolution, chord spelling, MIDI helpers, note colors, contrast
23
- helpers, and string instrument tunings.
22
+ progression resolution, chord spelling, a UI-friendly conversion registry,
23
+ MIDI helpers, note colors, contrast helpers, and string instrument tunings.
24
24
  - **TypeScript-first API:** exported data, utility functions, and types are
25
25
  designed to work well with autocomplete and compile-time checking.
26
26
 
@@ -79,6 +79,44 @@ console.log(fMajor);
79
79
  // ["F", "G", "A", "B♭", "C", "D", "E", "F"]
80
80
  ```
81
81
 
82
+ ### Use The Conversion Registry
83
+
84
+ ```ts
85
+ import {
86
+ conversions,
87
+ getAvailableRootAndNoteCollectionConversions,
88
+ } from "jsr:@musodojo/music-theory-data";
89
+
90
+ const options = {
91
+ fillChromatic: true,
92
+ rotateToRootInteger0: true,
93
+ } as const;
94
+
95
+ const noteNames = conversions.rootAndNoteCollection.noteNames.get(
96
+ "C",
97
+ "ionian",
98
+ options,
99
+ );
100
+
101
+ console.log(noteNames);
102
+ // ["C", "D♭", "D", "E♭", "E", "F", "G♭", "G", "A♭", "A", "B♭", "B"]
103
+
104
+ const availableForMajorChord = getAvailableRootAndNoteCollectionConversions(
105
+ "C",
106
+ "major",
107
+ );
108
+
109
+ console.log(availableForMajorChord.map((entry) => entry.id));
110
+ // ["note-names", "intervals", "extensions", "compound-intervals"]
111
+ ```
112
+
113
+ The conversion registry is useful when an app needs selectable display layers
114
+ for the same root and note collection. Each entry includes UI metadata such as
115
+ `name`, `shortName`, `description`, `outputShape`, and whether empty chromatic
116
+ slots can appear. Authored harmony conversions are exposed for modal collections
117
+ such as `ionian`, but are filtered out for collections that do not define modal
118
+ harmony, such as the `major` triad.
119
+
82
120
  ### Inspect A Note Collection
83
121
 
84
122
  ```ts
@@ -107,20 +145,33 @@ source files for complete schemas.
107
145
 
108
146
  ```ts
109
147
  import {
148
+ chordProgressionCategoryGroups,
110
149
  chordProgressions,
111
150
  getChordProgressionChordNames,
151
+ getChordProgressionKeysForCategory,
112
152
  getChordProgressionRomanSymbols,
113
153
  getChordProgressionTotalDurationInBars,
114
154
  } from "jsr:@musodojo/music-theory-data";
115
155
 
116
156
  const oneSixFourFive = chordProgressions.oneSixFourFive;
117
157
 
118
- console.log(oneSixFourFive.chords.map((chord) => chord.romanSymbol));
119
- // ["I", "vi", "IV", "V"]
158
+ console.log(
159
+ oneSixFourFive.chords.map((chord) => [
160
+ chord.degree,
161
+ chord.chordCollectionKey,
162
+ ]),
163
+ );
164
+ // [["1", "major"], ["6", "minor"], ["4", "major"], ["5", "major"]]
120
165
 
121
166
  console.log(getChordProgressionRomanSymbols("oneSixFourFive"));
122
167
  // ["I", "vi", "IV", "V"]
123
168
 
169
+ console.log(chordProgressionCategoryGroups.map((group) => group.name));
170
+ // ["Fundamentals", "Popular Loops", "Jazz & Turnarounds", "Blues"]
171
+
172
+ console.log(getChordProgressionKeysForCategory("jazz"));
173
+ // ["oneSixTwoFive", "sixTwoFiveOne", "majorTwoFiveOne", ...]
174
+
124
175
  console.log(getChordProgressionChordNames("C", "oneSixFourFive"));
125
176
  // ["CM", "Am", "FM", "GM"]
126
177
 
@@ -1 +1 @@
1
- {"version":3,"file":"build_message.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/internal/1.0.13/build_message.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEvD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,QAAQ;AAClB;;;GAGG;AACH,UAAU,UAAQ,GACjB,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAWvB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CASrD;AAED,4CAA4C;AAC5C,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,YAAY,CAC1B,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAC7C,OAAO,GAAE,mBAAwB,EACjC,YAAY,CAAC,EAAE,CACb,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAC7C,UAAU,EAAE,OAAO,EACnB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,KAC1B,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GACrC,MAAM,EAAE,CA8BV"}
1
+ {"version":3,"file":"build_message.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/internal/1.0.14/build_message.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEvD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,QAAQ;AAClB;;;GAGG;AACH,UAAU,UAAQ,GACjB,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAWvB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CASrD;AAED,4CAA4C;AAC5C,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,YAAY,CAC1B,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAC7C,OAAO,GAAE,mBAAwB,EACjC,YAAY,CAAC,EAAE,CACb,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAC7C,UAAU,EAAE,OAAO,EACnB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,KAC1B,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GACrC,MAAM,EAAE,CA8BV"}
@@ -1 +1 @@
1
- {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/internal/1.0.13/diff.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEvD,2DAA2D;AAC3D,MAAM,WAAW,aAAa;IAC5B,qCAAqC;IACrC,CAAC,EAAE,MAAM,CAAC;IACV,2BAA2B;IAC3B,EAAE,EAAE,MAAM,CAAC;CACZ;AAMD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAanD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,aAAa,CAWvE;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,SAAS,CAAC,CAAC,EACzB,CAAC,EAAE,CAAC,EAAE,EACN,CAAC,EAAE,CAAC,EAAE,EACN,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,WAAW,EACnB,kBAAkB,EAAE,MAAM,GACzB,KAAK,CAAC;IACP,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,CAAC,CAAC;CACV,CAAC,CAgCD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,QAAQ,CACtB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,WAAW,EACnB,kBAAkB,EAAE,MAAM,EAC1B,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,aAAa,EACrB,IAAI,CAAC,EAAE,aAAa,GACnB,aAAa,CAsBf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAwEvD"}
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/internal/1.0.14/diff.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEvD,2DAA2D;AAC3D,MAAM,WAAW,aAAa;IAC5B,qCAAqC;IACrC,CAAC,EAAE,MAAM,CAAC;IACV,2BAA2B;IAC3B,EAAE,EAAE,MAAM,CAAC;CACZ;AAMD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAanD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,aAAa,CAWvE;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,SAAS,CAAC,CAAC,EACzB,CAAC,EAAE,CAAC,EAAE,EACN,CAAC,EAAE,CAAC,EAAE,EACN,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,WAAW,EACnB,kBAAkB,EAAE,MAAM,GACzB,KAAK,CAAC;IACP,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,CAAC,CAAC;CACV,CAAC,CAiCD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,QAAQ,CACtB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,WAAW,EACnB,kBAAkB,EAAE,MAAM,EAC1B,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,aAAa,EACrB,IAAI,CAAC,EAAE,aAAa,GACnB,aAAa,CAsBf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAwEvD"}
@@ -1 +1 @@
1
- {"version":3,"file":"diff_str.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/internal/1.0.13/diff_str.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAqB,UAAU,EAAE,MAAM,YAAY,CAAC;AAGhE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAY/C;AAKD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,MAAM,EAAE,CAiBnE;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,EACxB,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,GAC3B,UAAU,CAAC,MAAM,CAAC,EAAE,CAetB;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,CAkDlE"}
1
+ {"version":3,"file":"diff_str.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/internal/1.0.14/diff_str.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAqB,UAAU,EAAE,MAAM,YAAY,CAAC;AAGhE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAY/C;AAKD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,MAAM,EAAE,CAiBnE;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,EACxB,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,GAC3B,UAAU,CAAC,MAAM,CAAC,EAAE,CAetB;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,CAkDlE"}
@@ -1 +1 @@
1
- {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/internal/1.0.13/format.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,SAAS,GAAG,CACtB,CAAC,EAAE,OAAO,EACV,OAAO,EAAE;IACP,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,KACE,MAAM,CAAC;AAEZ;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAmBzC"}
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/internal/1.0.14/format.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,SAAS,GAAG,CACtB,CAAC,EAAE,OAAO,EACV,OAAO,EAAE;IACP,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,KACE,MAAM,CAAC;AAEZ;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAmBzC"}
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/internal/1.0.13/styles.ts"],"names":[],"mappings":"AAqCA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE1C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE3C;AAWD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpD"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/internal/1.0.14/styles.ts"],"names":[],"mappings":"AAqCA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE1C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE3C;AAWD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpD"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/internal/1.0.13/types.ts"],"names":[],"mappings":"AAGA,kDAAkD;AAClD,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD;;;GAGG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAEvE;;;GAGG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;IAChC,IAAI,EAAE,QAAQ,GAAG,YAAY,CAAC;IAC9B,KAAK,EAAE,CAAC,CAAC;CACV,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI;IACjC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;IAC1B,KAAK,EAAE,CAAC,CAAC;IACT,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;CAC3B,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/internal/1.0.14/types.ts"],"names":[],"mappings":"AAGA,kDAAkD;AAClD,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD;;;GAGG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAEvE;;;GAGG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;IAChC,IAAI,EAAE,QAAQ,GAAG,YAAY,CAAC;IAC9B,KAAK,EAAE,CAAC,CAAC;CACV,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI;IACjC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;IAC1B,KAAK,EAAE,CAAC,CAAC;IACT,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;CAC3B,CAAC"}
@@ -1,25 +1,37 @@
1
- import type { ChordProgression, ChordProgressionBarGroup } from "../../types/chord-progressions";
1
+ import type { ChordProgression, ChordProgressionBarGroup, ChordProgressionCategoryGroup, ChordProgressionCategoryKey, ChordProgressionCategoryMetadata } from "../../types/chord-progressions";
2
+ type BuiltInChordProgression = ChordProgression & {
3
+ readonly category: ChordProgressionCategoryKey;
4
+ };
5
+ /** Category display metadata for built-in chord progressions. */
6
+ export declare const chordProgressionCategories: Record<ChordProgressionCategoryKey, ChordProgressionCategoryMetadata>;
7
+ /** Built-in chord progression category keys in recommended display order. */
8
+ export declare const chordProgressionCategoryKeys: readonly ChordProgressionCategoryKey[];
2
9
  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;
10
+ readonly oneOneFiveFive: BuiltInChordProgression;
11
+ readonly oneOneFiveFiveDominant7: BuiltInChordProgression;
12
+ readonly oneOneFourFour: BuiltInChordProgression;
13
+ readonly oneOneFourFive: BuiltInChordProgression;
14
+ readonly oneFourOneFive: BuiltInChordProgression;
15
+ readonly oneSixFourFive: BuiltInChordProgression;
16
+ readonly oneFiveSixFour: BuiltInChordProgression;
17
+ readonly oneSixTwoFive: BuiltInChordProgression;
18
+ readonly sixTwoFiveOne: BuiltInChordProgression;
19
+ readonly majorTwoFiveOne: BuiltInChordProgression;
20
+ readonly minorTwoFiveOne: BuiltInChordProgression;
21
+ readonly oneFourOneFiveSplitReturn: BuiltInChordProgression;
22
+ readonly autumnLeavesA: BuiltInChordProgression;
23
+ readonly autumnLeavesB: BuiltInChordProgression;
24
+ readonly twelveBarBlues: BuiltInChordProgression;
25
+ readonly twelveBarBluesQuickChange: BuiltInChordProgression;
26
+ readonly rhythmChanges: BuiltInChordProgression;
17
27
  };
18
28
  /** A key for one of the built-in chord progression templates. */
19
29
  export type ChordProgressionKey = keyof typeof _chordProgressions;
20
30
  /** Built-in chord progression templates keyed by progression id. */
21
- export declare const chordProgressions: Record<ChordProgressionKey, ChordProgression>;
31
+ export declare const chordProgressions: Record<ChordProgressionKey, BuiltInChordProgression>;
22
32
  /** Built-in chord progression keys grouped by total duration in bars. */
23
33
  export declare const chordProgressionBarGroups: readonly ChordProgressionBarGroup<ChordProgressionKey>[];
34
+ /** Built-in chord progression keys grouped by musical category. */
35
+ export declare const chordProgressionCategoryGroups: readonly ChordProgressionCategoryGroup<ChordProgressionKey>[];
24
36
  export {};
25
37
  //# 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":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,wBAAwB,EAEzB,MAAM,gCAAgC,CAAC;AAqJxC,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;CAed,CAAC;AAEX,iEAAiE;AACjE,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,kBAAkB,CAAC;AAElE,oEAAoE;AACpE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,CACxD,CAAC;AAiBrB,yEAAyE;AACzE,eAAO,MAAM,yBAAyB,EAAE,SAAS,wBAAwB,CACvE,mBAAmB,CACpB,EAM0C,CAAC"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../src/src/data/chord-progressions/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,wBAAwB,EACxB,6BAA6B,EAC7B,2BAA2B,EAC3B,gCAAgC,EAEjC,MAAM,gCAAgC,CAAC;AAExC,KAAK,uBAAuB,GAAG,gBAAgB,GAAG;IAChD,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC;CAChD,CAAC;AAgDF,iEAAiE;AACjE,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAC7C,2BAA2B,EAC3B,gCAAgC,CACH,CAAC;AAEhC,6EAA6E;AAC7E,eAAO,MAAM,4BAA4B,EACvC,SAAS,2BAA2B,EAKnC,CAAC;AAsNJ,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;CAkBd,CAAC;AAEX,iEAAiE;AACjE,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,kBAAkB,CAAC;AAElE,oEAAoE;AACpE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CACpC,mBAAmB,EACnB,uBAAuB,CACH,CAAC;AAiBvB,yEAAyE;AACzE,eAAO,MAAM,yBAAyB,EAAE,SAAS,wBAAwB,CACvE,mBAAmB,CACpB,EAM0C,CAAC;AAE5C,mEAAmE;AACnE,eAAO,MAAM,8BAA8B,EACzC,SAAS,6BAA6B,CAAC,mBAAmB,CAAC,EAQtD,CAAC"}
@@ -1,128 +1,234 @@
1
- function chord(romanSymbol, degree, quality, durationInBars) {
2
- return {
3
- romanSymbol,
1
+ function chord(degree, chordCollectionKey, durationInBars, analysis) {
2
+ const progressionChord = {
4
3
  degree,
5
- quality,
4
+ chordCollectionKey,
6
5
  durationInBars,
7
6
  };
7
+ if (analysis === undefined)
8
+ return progressionChord;
9
+ return {
10
+ ...progressionChord,
11
+ analysis,
12
+ };
8
13
  }
14
+ const _chordProgressionCategories = {
15
+ fundamentals: {
16
+ name: "Fundamentals",
17
+ description: "Small tonic, subdominant, and dominant patterns for core harmonic motion.",
18
+ },
19
+ popular: {
20
+ name: "Popular Loops",
21
+ description: "Common diatonic loops used widely in popular, rock, folk, and songwriting contexts.",
22
+ },
23
+ jazz: {
24
+ name: "Jazz & Turnarounds",
25
+ description: "ii-V motion, turnarounds, and jazz-standard forms with richer chord collections.",
26
+ },
27
+ blues: {
28
+ name: "Blues",
29
+ description: "Blues forms built from dominant-function tonic, subdominant, and dominant areas.",
30
+ },
31
+ };
32
+ /** Category display metadata for built-in chord progressions. */
33
+ export const chordProgressionCategories = _chordProgressionCategories;
34
+ /** Built-in chord progression category keys in recommended display order. */
35
+ export const chordProgressionCategoryKeys = [
36
+ "fundamentals",
37
+ "popular",
38
+ "jazz",
39
+ "blues",
40
+ ];
9
41
  const oneOneFiveFive = {
42
+ category: "fundamentals",
10
43
  chords: [
11
- chord("I", "1", "M", 2),
12
- chord("V", "5", "M", 2),
44
+ chord("1", "major", 2),
45
+ chord("5", "major", 2),
13
46
  ],
14
47
  };
15
48
  const oneOneFiveFiveDominant7 = {
49
+ category: "fundamentals",
16
50
  chords: [
17
- chord("I", "1", "M", 2),
18
- chord("V", "5", "M", 1),
19
- chord("V7", "5", "7", 1),
51
+ chord("1", "major", 2),
52
+ chord("5", "major", 1),
53
+ chord("5", "dominant7", 1),
20
54
  ],
21
55
  };
22
56
  const oneOneFourFour = {
57
+ category: "fundamentals",
23
58
  chords: [
24
- chord("I", "1", "M", 2),
25
- chord("IV", "4", "M", 2),
59
+ chord("1", "major", 2),
60
+ chord("4", "major", 2),
26
61
  ],
27
62
  };
28
63
  const oneOneFourFive = {
64
+ category: "fundamentals",
29
65
  chords: [
30
- chord("I", "1", "M", 2),
31
- chord("IV", "4", "M", 1),
32
- chord("V", "5", "M", 1),
66
+ chord("1", "major", 2),
67
+ chord("4", "major", 1),
68
+ chord("5", "major", 1),
33
69
  ],
34
70
  };
35
71
  const oneFourOneFive = {
72
+ category: "fundamentals",
36
73
  chords: [
37
- chord("I", "1", "M", 1),
38
- chord("IV", "4", "M", 1),
39
- chord("I", "1", "M", 1),
40
- chord("V", "5", "M", 1),
74
+ chord("1", "major", 1),
75
+ chord("4", "major", 1),
76
+ chord("1", "major", 1),
77
+ chord("5", "major", 1),
41
78
  ],
42
79
  };
43
80
  const oneSixFourFive = {
81
+ category: "popular",
44
82
  chords: [
45
- chord("I", "1", "M", 1),
46
- chord("vi", "6", "m", 1),
47
- chord("IV", "4", "M", 1),
48
- chord("V", "5", "M", 1),
83
+ chord("1", "major", 1),
84
+ chord("6", "minor", 1),
85
+ chord("4", "major", 1),
86
+ chord("5", "major", 1),
49
87
  ],
50
88
  };
51
89
  const oneFiveSixFour = {
90
+ category: "popular",
52
91
  chords: [
53
- chord("I", "1", "M", 1),
54
- chord("V", "5", "M", 1),
55
- chord("vi", "6", "m", 1),
56
- chord("IV", "4", "M", 1),
92
+ chord("1", "major", 1),
93
+ chord("5", "major", 1),
94
+ chord("6", "minor", 1),
95
+ chord("4", "major", 1),
57
96
  ],
58
97
  };
59
98
  const oneSixTwoFive = {
99
+ category: "jazz",
60
100
  chords: [
61
- chord("I", "1", "M", 1),
62
- chord("vi", "6", "m", 1),
63
- chord("ii", "2", "m", 1),
64
- chord("V", "5", "M", 1),
101
+ chord("1", "major", 1),
102
+ chord("6", "minor", 1),
103
+ chord("2", "minor", 1),
104
+ chord("5", "major", 1),
65
105
  ],
66
106
  };
67
107
  const sixTwoFiveOne = {
108
+ category: "jazz",
68
109
  chords: [
69
- chord("vi", "6", "m", 1),
70
- chord("ii", "2", "m", 1),
71
- chord("V", "5", "M", 1),
72
- chord("I", "1", "M", 1),
110
+ chord("6", "minor", 1),
111
+ chord("2", "minor", 1),
112
+ chord("5", "major", 1),
113
+ chord("1", "major", 1),
73
114
  ],
74
115
  };
75
116
  const majorTwoFiveOne = {
117
+ category: "jazz",
76
118
  chords: [
77
- chord("iim7", "2", "m7", 1),
78
- chord("V7", "5", "7", 1),
79
- chord("IM7", "1", "M7", 2),
119
+ chord("2", "minor7", 1),
120
+ chord("5", "dominant7", 1),
121
+ chord("1", "major7", 2),
80
122
  ],
81
123
  };
82
124
  const minorTwoFiveOne = {
125
+ category: "jazz",
126
+ chords: [
127
+ chord("2", "halfDiminished7", 1),
128
+ chord("5", "dominant7", 1),
129
+ chord("1", "minor", 2),
130
+ ],
131
+ };
132
+ const autumnLeavesA = {
133
+ commonName: "Autumn Leaves A Section",
134
+ category: "jazz",
83
135
  chords: [
84
- chord("iiø7", "2", "ø7", 1),
85
- chord("V7", "5", "7", 1),
86
- chord("i", "1", "m", 2),
136
+ chord("2", "minor7", 1),
137
+ chord("5", "dominant7", 1),
138
+ chord("1", "major7", 1),
139
+ chord("4", "major7", 1),
140
+ chord("7", "halfDiminished7", 1, { romanSymbol: "iiø7/vi" }),
141
+ chord("3", "dominant7", 1, { romanSymbol: "V7/vi" }),
142
+ chord("6", "minor", 2),
143
+ ],
144
+ };
145
+ const autumnLeavesB = {
146
+ commonName: "Autumn Leaves B Section",
147
+ category: "jazz",
148
+ chords: [
149
+ chord("7", "halfDiminished7", 1, { romanSymbol: "iiø7/vi" }),
150
+ chord("3", "dominant7", 1, { romanSymbol: "V7/vi" }),
151
+ chord("6", "minor", 2),
152
+ chord("2", "minor7", 1),
153
+ chord("5", "dominant7", 1),
154
+ chord("1", "major7", 1),
155
+ chord("4", "major7", 1),
87
156
  ],
88
157
  };
89
158
  const oneFourOneFiveSplitReturn = {
159
+ category: "fundamentals",
90
160
  chords: [
91
- chord("I", "1", "M", 1),
92
- chord("IV", "4", "M", 1),
93
- chord("I", "1", "M", 1),
94
- chord("V", "5", "M", 1),
95
- chord("I", "1", "M", 1),
96
- chord("IV", "4", "M", 1),
97
- chord("I", "1", "M", 0.5),
98
- chord("V", "5", "M", 0.5),
99
- chord("I", "1", "M", 1),
161
+ chord("1", "major", 1),
162
+ chord("4", "major", 1),
163
+ chord("1", "major", 1),
164
+ chord("5", "major", 1),
165
+ chord("1", "major", 1),
166
+ chord("4", "major", 1),
167
+ chord("1", "major", 0.5),
168
+ chord("5", "major", 0.5),
169
+ chord("1", "major", 1),
100
170
  ],
101
171
  };
102
172
  const twelveBarBlues = {
103
173
  commonName: "12 Bar Blues",
174
+ category: "blues",
104
175
  chords: [
105
- chord("I7", "1", "7", 4),
106
- chord("IV7", "4", "7", 2),
107
- chord("I7", "1", "7", 2),
108
- chord("V7", "5", "7", 1),
109
- chord("IV7", "4", "7", 1),
110
- chord("I7", "1", "7", 1),
111
- chord("V7", "5", "7", 1),
176
+ chord("1", "dominant7", 4),
177
+ chord("4", "dominant7", 2),
178
+ chord("1", "dominant7", 2),
179
+ chord("5", "dominant7", 1),
180
+ chord("4", "dominant7", 1),
181
+ chord("1", "dominant7", 1),
182
+ chord("5", "dominant7", 1),
112
183
  ],
113
184
  };
114
185
  const twelveBarBluesQuickChange = {
115
186
  commonName: "12 Bar Blues Quick Change",
187
+ category: "blues",
188
+ chords: [
189
+ chord("1", "dominant7", 1),
190
+ chord("4", "dominant7", 1),
191
+ chord("1", "dominant7", 2),
192
+ chord("4", "dominant7", 2),
193
+ chord("1", "dominant7", 2),
194
+ chord("5", "dominant7", 1),
195
+ chord("4", "dominant7", 1),
196
+ chord("1", "dominant7", 1),
197
+ chord("5", "dominant7", 1),
198
+ ],
199
+ };
200
+ const rhythmChangesAChords = [
201
+ chord("1", "major", 0.5),
202
+ chord("6", "dominant7", 0.5),
203
+ chord("2", "minor7", 0.5),
204
+ chord("5", "dominant7", 0.5),
205
+ chord("3", "minor7", 0.5),
206
+ chord("6", "dominant7", 0.5),
207
+ chord("2", "minor7", 0.5),
208
+ chord("5", "dominant7", 0.5),
209
+ chord("1", "major", 0.5),
210
+ chord("1", "dominant7", 0.5),
211
+ chord("4", "major", 0.5),
212
+ chord("♯4", "diminished7", 0.5),
213
+ chord("1", "major", 0.5),
214
+ chord("6", "dominant7", 0.5),
215
+ chord("2", "minor7", 0.5),
216
+ chord("5", "dominant7", 0.5),
217
+ ];
218
+ const rhythmChangesBridgeChords = [
219
+ chord("3", "dominant7", 2),
220
+ chord("6", "dominant7", 2),
221
+ chord("2", "dominant7", 2),
222
+ chord("5", "dominant7", 2),
223
+ ];
224
+ const rhythmChanges = {
225
+ commonName: "Rhythm Changes",
226
+ category: "jazz",
116
227
  chords: [
117
- chord("I7", "1", "7", 1),
118
- chord("IV7", "4", "7", 1),
119
- chord("I7", "1", "7", 2),
120
- chord("IV7", "4", "7", 2),
121
- chord("I7", "1", "7", 2),
122
- chord("V7", "5", "7", 1),
123
- chord("IV7", "4", "7", 1),
124
- chord("I7", "1", "7", 1),
125
- chord("V7", "5", "7", 1),
228
+ ...rhythmChangesAChords,
229
+ ...rhythmChangesAChords,
230
+ ...rhythmChangesBridgeChords,
231
+ ...rhythmChangesAChords,
126
232
  ],
127
233
  };
128
234
  const _chordProgressions = {
@@ -138,8 +244,11 @@ const _chordProgressions = {
138
244
  majorTwoFiveOne,
139
245
  minorTwoFiveOne,
140
246
  oneFourOneFiveSplitReturn,
247
+ autumnLeavesA,
248
+ autumnLeavesB,
141
249
  twelveBarBlues,
142
250
  twelveBarBluesQuickChange,
251
+ rhythmChanges,
143
252
  };
144
253
  /** Built-in chord progression templates keyed by progression id. */
145
254
  export const chordProgressions = _chordProgressions;
@@ -160,3 +269,9 @@ export const chordProgressionBarGroups = Array.from(chordProgressionsByTotalBars
160
269
  totalBars,
161
270
  progressionKeys,
162
271
  })).sort((a, b) => a.totalBars - b.totalBars);
272
+ /** Built-in chord progression keys grouped by musical category. */
273
+ export const chordProgressionCategoryGroups = chordProgressionCategoryKeys.map((category) => ({
274
+ category,
275
+ ...chordProgressionCategories[category],
276
+ progressionKeys: Object.entries(chordProgressions).flatMap(([key, progression]) => progression.category === category ? [key] : []),
277
+ }));
@@ -1,4 +1,4 @@
1
- import type { NoteCollectionKey } from "../note-collections/mod.js";
1
+ import type { ChordCollectionKey, NoteCollectionKey } from "../note-collections/mod.js";
2
2
  declare const _triadChordQualities: readonly ["M", "m", "°", "+"];
3
3
  declare const _seventhChordQualities: readonly ["M7", "m7", "7", "ø7", "m7♭5", "°7", "m(M7)", "+M7", "M7♯5"];
4
4
  declare const _upperCaseRomanNumerals: readonly ["I", "II", "III", "IV", "V", "VI", "VII"];
@@ -26,16 +26,33 @@ export interface ChordQualityRomanRendering {
26
26
  readonly numeralCase: RomanNumeralCase;
27
27
  readonly suffix: string;
28
28
  }
29
+ /** Rendering metadata for converting a chord collection into chord/roman symbols. */
30
+ export interface ChordCollectionSymbolRendering {
31
+ /** The suffix used after a root note in a chord symbol, e.g. "m7" in "Dm7". */
32
+ readonly chordSuffix: string;
33
+ /** The suffix used after a roman numeral, e.g. "ø7" in "iiø7". */
34
+ readonly romanSuffix: string;
35
+ /** The preferred roman numeral case for this chord collection. */
36
+ readonly numeralCase: RomanNumeralCase;
37
+ }
38
+ export type ChordCollectionChordSuffix = string;
39
+ export type ChordCollectionRomanSuffix = string;
29
40
  /** The complete set of supported triad chord qualities. */
30
41
  export declare const triadChordQualities: readonly Triad[];
31
42
  /** The complete set of supported seventh chord qualities. */
32
43
  export declare const seventhChordQualities: readonly SeventhChord[];
33
44
  /** The complete set of supported chord suffix qualities. */
34
45
  export declare const chordQualities: readonly ChordQuality[];
46
+ /** Maps each supported chord quality to its matching chord collection key. */
47
+ export type ChordQualityChordCollectionKeyMap = Record<ChordQuality, ChordCollectionKey>;
48
+ /** Chord collection keys for every supported chord quality. */
49
+ export declare const chordQualityChordCollectionKeys: ChordQualityChordCollectionKeyMap;
35
50
  /** Maps each supported chord quality to its matching note-collection key. */
36
51
  export type ChordQualityNoteCollectionKeyMap = Record<ChordQuality, NoteCollectionKey>;
37
52
  /** Note-collection keys for every supported chord quality. */
38
53
  export declare const chordQualityNoteCollectionKeys: ChordQualityNoteCollectionKeyMap;
54
+ /** Symbol rendering metadata for every built-in chord collection. */
55
+ export declare const chordCollectionSymbolRenderings: Record<ChordCollectionKey, ChordCollectionSymbolRendering>;
39
56
  /** Roman numeral rendering metadata for each supported chord quality. */
40
57
  export declare const chordQualityRomanRenderings: ReadonlyMap<ChordQuality, ChordQualityRomanRendering>;
41
58
  /** An ordered array containing the fundamental triad qualities of the diatonic major scale. */
@@ -56,5 +73,13 @@ export declare const upperCaseRomanNumerals: readonly UpperCaseRomanNumeral[];
56
73
  export declare const lowerCaseRomanNumerals: readonly LowerCaseRomanNumeral[];
57
74
  /** Returns the note-collection key that describes the notes in a chord quality. */
58
75
  export declare function getChordQualityNoteCollectionKey(quality: ChordQuality): NoteCollectionKey;
76
+ /** Returns the chord-collection key that describes the notes in a chord quality. */
77
+ export declare function getChordQualityChordCollectionKey(quality: ChordQuality): ChordCollectionKey;
78
+ /** Returns symbol rendering metadata for a chord collection. */
79
+ export declare function getChordCollectionSymbolRendering(chordCollectionKey: ChordCollectionKey): ChordCollectionSymbolRendering;
80
+ /** Returns the chord-symbol suffix for a chord collection. */
81
+ export declare function getChordCollectionChordSuffix(chordCollectionKey: ChordCollectionKey): ChordCollectionChordSuffix;
82
+ /** Returns the roman-symbol suffix for a chord collection. */
83
+ export declare function getChordCollectionRomanSuffix(chordCollectionKey: ChordCollectionKey): ChordCollectionRomanSuffix;
59
84
  export {};
60
85
  //# 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,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,8CAA8C;AAC9C,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,gDAAgD;AAChD,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE,0CAA0C;AAC1C,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,YAAY,CAAC;AAEhD,sEAAsE;AACtE,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7E,qEAAqE;AACrE,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7E,uDAAuD;AACvD,MAAM,MAAM,YAAY,GAAG,qBAAqB,GAAG,qBAAqB,CAAC;AAEzE,0EAA0E;AAC1E,MAAM,MAAM,UAAU,GAAG,GAAG,YAAY,EAAE,GAAG,GAAG,YAAY,GAAG,KAAK,EAAE,CAAC;AAEvE,0EAA0E;AAC1E,MAAM,MAAM,iBAAiB,GAAG,GAAG,YAAY,GAAG,YAAY,EAAE,CAAC;AAEjE,wEAAwE;AACxE,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,OAAO,CAAC;AAEjD,6EAA6E;AAC7E,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,6EAA6E;AAC7E,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,mFAAmF;AACnF,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,YAAY,GACpB,iBAAiB,CAEnB"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../src/src/data/chords/mod.ts"],"names":[],"mappings":"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"}