@musodojo/music-theory-data 27.0.0 → 29.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 (58) hide show
  1. package/README.md +57 -12
  2. package/esm/src/data/chord-progressions/mod.d.ts +20 -64
  3. package/esm/src/data/chord-progressions/mod.d.ts.map +1 -1
  4. package/esm/src/data/chord-progressions/mod.js +154 -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/note-collections/augmented-variants.d.ts +1 -0
  9. package/esm/src/data/note-collections/augmented-variants.d.ts.map +1 -1
  10. package/esm/src/data/note-collections/augmented-variants.js +25 -0
  11. package/esm/src/data/note-collections/mod.d.ts +2 -1
  12. package/esm/src/data/note-collections/mod.d.ts.map +1 -1
  13. package/esm/src/mod.d.ts +1 -1
  14. package/esm/src/mod.js +1 -1
  15. package/esm/src/utils/chord-progressions.d.ts +16 -16
  16. package/esm/src/utils/chord-progressions.d.ts.map +1 -1
  17. package/esm/src/utils/chord-progressions.js +55 -101
  18. package/package.json +1 -1
  19. package/script/src/data/chord-progressions/mod.d.ts +20 -64
  20. package/script/src/data/chord-progressions/mod.d.ts.map +1 -1
  21. package/script/src/data/chord-progressions/mod.js +155 -70
  22. package/script/src/data/chords/mod.d.ts +5 -0
  23. package/script/src/data/chords/mod.d.ts.map +1 -1
  24. package/script/src/data/chords/mod.js +22 -1
  25. package/script/src/data/note-collections/augmented-variants.d.ts +1 -0
  26. package/script/src/data/note-collections/augmented-variants.d.ts.map +1 -1
  27. package/script/src/data/note-collections/augmented-variants.js +25 -0
  28. package/script/src/data/note-collections/mod.d.ts +2 -1
  29. package/script/src/data/note-collections/mod.d.ts.map +1 -1
  30. package/script/src/mod.d.ts +1 -1
  31. package/script/src/mod.js +1 -1
  32. package/script/src/utils/chord-progressions.d.ts +16 -16
  33. package/script/src/utils/chord-progressions.d.ts.map +1 -1
  34. package/script/src/utils/chord-progressions.js +61 -106
  35. package/esm/src/data/chord-progressions/basic.d.ts +0 -10
  36. package/esm/src/data/chord-progressions/basic.d.ts.map +0 -1
  37. package/esm/src/data/chord-progressions/basic.js +0 -164
  38. package/esm/src/data/chord-progressions/blues.d.ts +0 -5
  39. package/esm/src/data/chord-progressions/blues.d.ts.map +0 -1
  40. package/esm/src/data/chord-progressions/blues.js +0 -30
  41. package/esm/src/data/chord-progressions/jazz.d.ts +0 -8
  42. package/esm/src/data/chord-progressions/jazz.d.ts.map +0 -1
  43. package/esm/src/data/chord-progressions/jazz.js +0 -143
  44. package/esm/src/data/chord-progressions/pop.d.ts +0 -6
  45. package/esm/src/data/chord-progressions/pop.d.ts.map +0 -1
  46. package/esm/src/data/chord-progressions/pop.js +0 -42
  47. package/script/src/data/chord-progressions/basic.d.ts +0 -10
  48. package/script/src/data/chord-progressions/basic.d.ts.map +0 -1
  49. package/script/src/data/chord-progressions/basic.js +0 -167
  50. package/script/src/data/chord-progressions/blues.d.ts +0 -5
  51. package/script/src/data/chord-progressions/blues.d.ts.map +0 -1
  52. package/script/src/data/chord-progressions/blues.js +0 -33
  53. package/script/src/data/chord-progressions/jazz.d.ts +0 -8
  54. package/script/src/data/chord-progressions/jazz.d.ts.map +0 -1
  55. package/script/src/data/chord-progressions/jazz.js +0 -146
  56. package/script/src/data/chord-progressions/pop.d.ts +0 -6
  57. package/script/src/data/chord-progressions/pop.d.ts.map +0 -1
  58. 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,21 +176,67 @@ 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.chords.map((chord) => chord.romanSymbol));
183
+ // ["I", "vi", "IV", "V"]
184
+
185
+ console.log(oneSixFourFive.chords);
186
+ // [
187
+ // { romanSymbol: "I", degree: "1", quality: "M", durationInBars: 1 },
188
+ // { romanSymbol: "vi", degree: "6", quality: "m", durationInBars: 1 },
189
+ // { romanSymbol: "IV", degree: "4", quality: "M", durationInBars: 1 },
190
+ // { romanSymbol: "V", degree: "5", quality: "M", durationInBars: 1 },
191
+ // ]
192
+
193
+ console.log(
194
+ music_theory_data.getChordProgressionRomanSymbols("oneSixFourFive"),
195
+ );
196
+ // ["I", "vi", "IV", "V"]
185
197
 
186
198
  console.log(
187
- music_theory_data.getChordProgressionTemplateRomanNames("oneFourFive"),
199
+ music_theory_data.getChordProgressionChordNames(
200
+ "C",
201
+ "oneSixFourFive",
202
+ ),
188
203
  );
189
- // ["I", "IV", "V"]
204
+ // ["CM", "Am", "FM", "GM"]
190
205
 
191
206
  console.log(
192
- music_theory_data.getChordProgressionTemplateChordNames("C", "oneFourFive"),
207
+ music_theory_data.getChordProgressionUniqueChordNames(
208
+ "C",
209
+ "oneFourOneFiveSplitReturn",
210
+ ),
193
211
  );
194
212
  // ["CM", "FM", "GM"]
213
+
214
+ console.log(
215
+ music_theory_data.getChordProgressionUniqueChordReferences(
216
+ "C",
217
+ "oneFourOneFiveSplitReturn",
218
+ ),
219
+ );
220
+ // [
221
+ // { rootNote: "C", chordName: "CM", noteCollectionKey: "major" },
222
+ // { rootNote: "C", chordName: "FM", noteCollectionKey: "major" },
223
+ // { rootNote: "C", chordName: "GM", noteCollectionKey: "major" },
224
+ // ]
225
+
226
+ console.log(
227
+ music_theory_data.getChordProgressionTotalDurationInBars("twelveBarBlues"),
228
+ );
229
+ // 12
230
+
231
+ console.log(music_theory_data.chordProgressionBarGroups);
232
+ // [
233
+ // { totalBars: 4, progressionKeys: ["oneOneFiveFive", ...] },
234
+ // { totalBars: 8, progressionKeys: ["oneFourOneFiveSplitReturn"] },
235
+ // { totalBars: 12, progressionKeys: ["twelveBarBlues", "twelveBarBluesQuickChange"] },
236
+ // ]
237
+
238
+ console.log(music_theory_data.getChordProgressionKeysForTotalBars(12));
239
+ // ["twelveBarBlues", "twelveBarBluesQuickChange"]
195
240
  ```
196
241
 
197
242
  ## Note Colors And Chromatic Indexes
@@ -1,66 +1,22 @@
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, ChordProgressionBarGroup } 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 declare const chordProgressionBarGroups: readonly ChordProgressionBarGroup<ChordProgressionKey>[];
21
+ export {};
66
22
  //# 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,EAChB,wBAAwB,EAEzB,MAAM,gCAAgC,CAAC;AAqJxC,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;AAiBrB,eAAO,MAAM,yBAAyB,EAAE,SAAS,wBAAwB,CACvE,mBAAmB,CACpB,EAM0C,CAAC"}
@@ -1,71 +1,160 @@
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(romanSymbol, degree, quality, durationInBars) {
2
+ return {
3
+ romanSymbol,
4
+ degree,
5
+ quality,
6
+ durationInBars,
7
+ };
8
+ }
9
+ const oneOneFiveFive = {
10
+ chords: [
11
+ chord("I", "1", "M", 2),
12
+ chord("V", "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
+ chords: [
17
+ chord("I", "1", "M", 2),
18
+ chord("V", "5", "M", 1),
19
+ chord("V7", "5", "7", 1),
20
+ ],
24
21
  };
25
- export const groupedChordProgressionTemplates = {
26
- basicChordProgressionTemplates,
27
- popChordProgressionTemplates,
28
- bluesChordProgressionTemplates,
29
- jazzChordProgressionTemplates,
22
+ const oneOneFourFour = {
23
+ chords: [
24
+ chord("I", "1", "M", 2),
25
+ chord("IV", "4", "M", 2),
26
+ ],
30
27
  };
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
- },
28
+ const oneOneFourFive = {
29
+ chords: [
30
+ chord("I", "1", "M", 2),
31
+ chord("IV", "4", "M", 1),
32
+ chord("V", "5", "M", 1),
33
+ ],
49
34
  };
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,
35
+ const oneFourOneFive = {
36
+ 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),
41
+ ],
56
42
  };
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
- },
43
+ const oneSixFourFive = {
44
+ 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),
49
+ ],
71
50
  };
51
+ const oneFiveSixFour = {
52
+ 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),
57
+ ],
58
+ };
59
+ const oneSixTwoFive = {
60
+ 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),
65
+ ],
66
+ };
67
+ const sixTwoFiveOne = {
68
+ 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),
73
+ ],
74
+ };
75
+ const majorTwoFiveOne = {
76
+ chords: [
77
+ chord("iim7", "2", "m7", 1),
78
+ chord("V7", "5", "7", 1),
79
+ chord("IM7", "1", "M7", 2),
80
+ ],
81
+ };
82
+ const minorTwoFiveOne = {
83
+ chords: [
84
+ chord("iiø7", "2", "ø7", 1),
85
+ chord("V7", "5", "7", 1),
86
+ chord("i", "1", "m", 2),
87
+ ],
88
+ };
89
+ const oneFourOneFiveSplitReturn = {
90
+ 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),
100
+ ],
101
+ };
102
+ const twelveBarBlues = {
103
+ commonName: "12 Bar Blues",
104
+ 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),
112
+ ],
113
+ };
114
+ const twelveBarBluesQuickChange = {
115
+ commonName: "12 Bar Blues Quick Change",
116
+ 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),
126
+ ],
127
+ };
128
+ const _chordProgressions = {
129
+ oneOneFiveFive,
130
+ oneOneFiveFiveDominant7,
131
+ oneOneFourFour,
132
+ oneOneFourFive,
133
+ oneFourOneFive,
134
+ oneSixFourFive,
135
+ oneFiveSixFour,
136
+ oneSixTwoFive,
137
+ sixTwoFiveOne,
138
+ majorTwoFiveOne,
139
+ minorTwoFiveOne,
140
+ oneFourOneFiveSplitReturn,
141
+ twelveBarBlues,
142
+ twelveBarBluesQuickChange,
143
+ };
144
+ export const chordProgressions = _chordProgressions;
145
+ const chordProgressionsByTotalBars = Object.entries(chordProgressions)
146
+ .reduce((groups, [key, progression]) => {
147
+ const totalBars = progression.chords.reduce((total, chord) => total + chord.durationInBars, 0);
148
+ const progressionKeys = groups.get(totalBars);
149
+ if (progressionKeys) {
150
+ progressionKeys.push(key);
151
+ }
152
+ else {
153
+ groups.set(totalBars, [key]);
154
+ }
155
+ return groups;
156
+ }, new Map());
157
+ export const chordProgressionBarGroups = Array.from(chordProgressionsByTotalBars, ([totalBars, progressionKeys]) => ({
158
+ totalBars,
159
+ progressionKeys,
160
+ })).sort((a, b) => a.totalBars - b.totalBars);
@@ -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
+ }
@@ -2,6 +2,7 @@ import type { ChordCollection } from "../../types/note-collections";
2
2
  export declare const _augmentedVariants: {
3
3
  readonly augmentedTriad: ChordCollection;
4
4
  readonly augmented7: ChordCollection;
5
+ readonly augmentedMajor7: ChordCollection;
5
6
  };
6
7
  export type AugmentedVariantKey = keyof typeof _augmentedVariants;
7
8
  export declare const augmentedVariants: Record<AugmentedVariantKey, ChordCollection>;
@@ -1 +1 @@
1
- {"version":3,"file":"augmented-variants.d.ts","sourceRoot":"","sources":["../../../../src/src/data/note-collections/augmented-variants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AA4BpE,eAAO,MAAM,kBAAkB;;;CAGrB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,kBAAkB,CAAC;AAElE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,EAAE,eAAe,CACvD,CAAC"}
1
+ {"version":3,"file":"augmented-variants.d.ts","sourceRoot":"","sources":["../../../../src/src/data/note-collections/augmented-variants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAqDpE,eAAO,MAAM,kBAAkB;;;;CAIrB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,kBAAkB,CAAC;AAElE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,EAAE,eAAe,CACvD,CAAC"}
@@ -22,8 +22,33 @@ const augmented7 = {
22
22
  pattern: ["major third", "major third", "major second"],
23
23
  patternShort: ["M3", "M3", "M2"],
24
24
  };
25
+ const augmentedMajor7 = {
26
+ category: "chord",
27
+ mostSimilarScale: "ionianSharp5",
28
+ primaryName: "+M7",
29
+ names: [
30
+ "+M7",
31
+ "M7♯5",
32
+ "maj7♯5",
33
+ "Augmented Major 7th",
34
+ "Augmented Major Seventh",
35
+ ],
36
+ intervals: ["1", "3", "♯5", "7"],
37
+ integers: [0, 4, 8, 11],
38
+ type: ["augmented", "major", "chord", "arpeggio", "tetrad"],
39
+ characteristics: [
40
+ "dreamy",
41
+ "unstable",
42
+ "lush",
43
+ "bright",
44
+ "used in jazz and film harmony",
45
+ ],
46
+ pattern: ["major third", "major third", "minor third"],
47
+ patternShort: ["M3", "M3", "m3"],
48
+ };
25
49
  export const _augmentedVariants = {
26
50
  augmentedTriad,
27
51
  augmented7,
52
+ augmentedMajor7,
28
53
  };
29
54
  export const augmentedVariants = _augmentedVariants;
@@ -19,6 +19,7 @@ export declare const noteCollections: {
19
19
  readonly wholeTone: import("../../mod.js").NoteCollection;
20
20
  readonly augmentedTriad: import("../../mod.js").ChordCollection;
21
21
  readonly augmented7: import("../../mod.js").ChordCollection;
22
+ readonly augmentedMajor7: import("../../mod.js").ChordCollection;
22
23
  readonly diminishedTriad: import("../../mod.js").NoteCollection;
23
24
  readonly diminished7: import("../../mod.js").NoteCollection;
24
25
  readonly halfDiminished7: import("../../mod.js").NoteCollection;
@@ -81,7 +82,7 @@ export declare const groupedNoteCollections: {
81
82
  readonly harmonicMinorModes: Record<"harmonicMinor" | "locrianNatural6" | "ionianSharp5" | "dorianSharp4" | "phrygianDominant" | "lydianSharp2" | "superLocrianDoubleFlat7", import("../../mod.js").ModalScaleCollection>;
82
83
  readonly melodicMinorModes: Record<"melodicMinor" | "dorianFlat2" | "lydianAugmented" | "lydianDominant" | "mixolydianFlat6" | "aeolianFlat5" | "altered", import("../../mod.js").ModalScaleCollection>;
83
84
  readonly diminishedVariants: Record<"diminishedTriad" | "diminished7" | "halfDiminished7" | "wholeHalfDiminished" | "halfWholeDiminished", import("../../mod.js").NoteCollection>;
84
- readonly augmentedVariants: Record<"augmentedTriad" | "augmented7", import("../../mod.js").ChordCollection>;
85
+ readonly augmentedVariants: Record<"augmentedTriad" | "augmented7" | "augmentedMajor7", import("../../mod.js").ChordCollection>;
85
86
  readonly otherNoteCollections: Record<"root" | "rootAndFifth" | "rootAndFourth" | "rootAndTritone" | "bluesPentatonic" | "chromatic" | "wholeTone", import("../../mod.js").NoteCollection>;
86
87
  };
87
88
  /** A strictly typed generic string representing the key of a top-level note collection category array. */
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../src/src/data/note-collections/mod.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,oIAAoI;AACpI,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWlB,CAAC;AAEX,0HAA0H;AAC1H,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,eAAe,CAAC;AAE7D,qIAAqI;AACrI,eAAO,MAAM,sBAAsB;;;;;;;;;;;CAWzB,CAAC;AAEX,0GAA0G;AAC1G,MAAM,MAAM,sBAAsB,GAAG,MAAM,OAAO,sBAAsB,CAAC;AAEzE,sHAAsH;AACtH,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAC/C,sBAAsB,EACtB;IACE,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,CAkDO,CAAC"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../src/src/data/note-collections/mod.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,oIAAoI;AACpI,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWlB,CAAC;AAEX,0HAA0H;AAC1H,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,eAAe,CAAC;AAE7D,qIAAqI;AACrI,eAAO,MAAM,sBAAsB;;;;;;;;;;;CAWzB,CAAC;AAEX,0GAA0G;AAC1G,MAAM,MAAM,sBAAsB,GAAG,MAAM,OAAO,sBAAsB,CAAC;AAEzE,sHAAsH;AACtH,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAC/C,sBAAsB,EACtB;IACE,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,CAkDO,CAAC"}
package/esm/src/mod.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * A comprehensive library of music theory data, including notes, dyads, scales, chord pitch collections, and chord progression templates.
2
+ * A comprehensive library of music theory data, including notes, dyads, scales, chord pitch collections, and chord progressions.
3
3
  *
4
4
  * This package provides a collection of datasets and utility functions
5
5
  * to work with fundamental concepts of music theory. It's designed to be
package/esm/src/mod.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * A comprehensive library of music theory data, including notes, dyads, scales, chord pitch collections, and chord progression templates.
2
+ * A comprehensive library of music theory data, including notes, dyads, scales, chord pitch collections, and chord progressions.
3
3
  *
4
4
  * This package provides a collection of datasets and utility functions
5
5
  * to work with fundamental concepts of music theory. It's designed to be
@@ -1,18 +1,18 @@
1
- import { type ChordProgressionTemplateKey } from "../data/chord-progressions/mod.js";
2
- import type { ChordProgressionTemplate, ChordProgressionTemplateCategory, ChordProgressionTemplateType } from "../types/chord-progressions";
3
- import type { ChordQuality } from "../types/chords";
4
- import type { Interval, RootNote } from "../data/labels/note-labels.js";
5
- export interface ChordProgressionTemplateSearchOptions {
6
- query?: string;
7
- category?: ChordProgressionTemplateCategory;
8
- templateType?: ChordProgressionTemplateType;
9
- type?: string;
1
+ import { type ChordProgressionKey } from "../data/chord-progressions/mod.js";
2
+ import type { ChordProgression } from "../types/chord-progressions";
3
+ import type { RootNote } from "../data/labels/note-labels.js";
4
+ import type { NoteCollectionKey } from "../data/note-collections/mod.js";
5
+ export interface ChordProgressionChordReference {
6
+ readonly rootNote: RootNote;
7
+ readonly chordName: string;
8
+ readonly noteCollectionKey: NoteCollectionKey;
10
9
  }
11
- export declare function isValidChordProgressionTemplateKey(key: string): key is ChordProgressionTemplateKey;
12
- export declare function searchChordProgressionTemplates(options?: ChordProgressionTemplateSearchOptions): ChordProgressionTemplate[];
13
- export declare function findChordProgressionTemplate(options?: ChordProgressionTemplateSearchOptions): ChordProgressionTemplate | undefined;
14
- export declare function getRomanNumeralForIntervalAndChordQuality(interval: Interval, quality: ChordQuality): string | undefined;
15
- export declare function getChordProgressionTemplateDegreeNames(templateOrKey: ChordProgressionTemplate | ChordProgressionTemplateKey): string[];
16
- export declare function getChordProgressionTemplateRomanNames(templateOrKey: ChordProgressionTemplate | ChordProgressionTemplateKey): string[];
17
- export declare function getChordProgressionTemplateChordNames(rootNote: RootNote, templateOrKey: ChordProgressionTemplate | ChordProgressionTemplateKey): string[];
10
+ export declare function isValidChordProgressionKey(key: string): key is ChordProgressionKey;
11
+ export declare function getChordProgressionChordNames(rootNote: RootNote, progressionOrKey: ChordProgression | ChordProgressionKey): string[];
12
+ export declare function getChordProgressionRomanSymbols(progressionOrKey: ChordProgression | ChordProgressionKey): string[];
13
+ export declare function getChordProgressionKeysForTotalBars(totalBars: number): ChordProgressionKey[];
14
+ export declare function getChordProgressionUniqueChordNames(rootNote: RootNote, progressionOrKey: ChordProgression | ChordProgressionKey): string[];
15
+ export declare function getChordProgressionChordReferences(rootNote: RootNote, progressionOrKey: ChordProgression | ChordProgressionKey): ChordProgressionChordReference[];
16
+ export declare function getChordProgressionUniqueChordReferences(rootNote: RootNote, progressionOrKey: ChordProgression | ChordProgressionKey): ChordProgressionChordReference[];
17
+ export declare function getChordProgressionTotalDurationInBars(progressionOrKey: ChordProgression | ChordProgressionKey): number;
18
18
  //# sourceMappingURL=chord-progressions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chord-progressions.d.ts","sourceRoot":"","sources":["../../../src/src/utils/chord-progressions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,2BAA2B,EAEjC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EACV,wBAAwB,EACxB,gCAAgC,EAEhC,4BAA4B,EAC7B,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAMxE,MAAM,WAAW,qCAAqC;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,gCAAgC,CAAC;IAC5C,YAAY,CAAC,EAAE,4BAA4B,CAAC;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,kCAAkC,CAChD,GAAG,EAAE,MAAM,GACV,GAAG,IAAI,2BAA2B,CAEpC;AAiCD,wBAAgB,+BAA+B,CAC7C,OAAO,GAAE,qCAA0C,GAClD,wBAAwB,EAAE,CA6D5B;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,GAAE,qCAA0C,GAClD,wBAAwB,GAAG,SAAS,CAEtC;AASD,wBAAgB,yCAAyC,CACvD,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,YAAY,GACpB,MAAM,GAAG,SAAS,CAWpB;AAED,wBAAgB,sCAAsC,CACpD,aAAa,EAAE,wBAAwB,GAAG,2BAA2B,GACpE,MAAM,EAAE,CAOV;AAED,wBAAgB,qCAAqC,CACnD,aAAa,EAAE,wBAAwB,GAAG,2BAA2B,GACpE,MAAM,EAAE,CAWV;AAED,wBAAgB,qCAAqC,CACnD,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,wBAAwB,GAAG,2BAA2B,GACpE,MAAM,EAAE,CAWV"}
1
+ {"version":3,"file":"chord-progressions.d.ts","sourceRoot":"","sources":["../../../src/src/utils/chord-progressions.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAMzE,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;CAC/C;AAED,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,MAAM,GACV,GAAG,IAAI,mBAAmB,CAE5B;AASD,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,gBAAgB,GAAG,mBAAmB,GACvD,MAAM,EAAE,CAYV;AAED,wBAAgB,+BAA+B,CAC7C,gBAAgB,EAAE,gBAAgB,GAAG,mBAAmB,GACvD,MAAM,EAAE,CAKV;AAED,wBAAgB,mCAAmC,CACjD,SAAS,EAAE,MAAM,GAChB,mBAAmB,EAAE,CAKvB;AAED,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,gBAAgB,GAAG,mBAAmB,GACvD,MAAM,EAAE,CAIV;AAED,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,gBAAgB,GAAG,mBAAmB,GACvD,8BAA8B,EAAE,CAmBlC;AAED,wBAAgB,wCAAwC,CACtD,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,gBAAgB,GAAG,mBAAmB,GACvD,8BAA8B,EAAE,CAkBlC;AAED,wBAAgB,sCAAsC,CACpD,gBAAgB,EAAE,gBAAgB,GAAG,mBAAmB,GACvD,MAAM,CAQR"}