@musodojo/music-theory-data 32.0.0 → 34.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +58 -7
- package/esm/deps/jsr.io/@std/internal/{1.0.13 → 1.0.14}/build_message.d.ts.map +1 -1
- 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
- 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
- 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
- package/esm/deps/jsr.io/@std/internal/{1.0.13 → 1.0.14}/styles.d.ts.map +1 -1
- package/esm/deps/jsr.io/@std/internal/{1.0.13 → 1.0.14}/types.d.ts.map +1 -1
- package/esm/src/data/chord-progressions/mod.d.ts +28 -16
- package/esm/src/data/chord-progressions/mod.d.ts.map +1 -1
- package/esm/src/data/chord-progressions/mod.js +180 -65
- package/esm/src/data/chords/mod.d.ts +26 -1
- package/esm/src/data/chords/mod.d.ts.map +1 -1
- package/esm/src/data/chords/mod.js +70 -1
- package/esm/src/data/labels/mod.d.ts +1 -0
- package/esm/src/data/labels/mod.d.ts.map +1 -1
- package/esm/src/data/labels/mod.js +1 -0
- package/esm/src/data/labels/note-label-collections.d.ts +1 -25
- package/esm/src/data/labels/note-label-collections.d.ts.map +1 -1
- package/esm/src/data/labels/note-label-collections.js +1 -77
- package/esm/src/data/labels/note-labels.d.ts +1 -1
- package/esm/src/data/labels/note-labels.d.ts.map +1 -1
- package/esm/src/data/labels/solfege.d.ts +33 -0
- package/esm/src/data/labels/solfege.d.ts.map +1 -0
- package/esm/src/data/labels/solfege.js +165 -0
- package/esm/src/data/note-collections/mod.d.ts +15 -0
- package/esm/src/data/note-collections/mod.d.ts.map +1 -1
- package/esm/src/data/note-collections/mod.js +2 -2
- package/esm/src/utils/chord-progressions.d.ts +22 -5
- package/esm/src/utils/chord-progressions.d.ts.map +1 -1
- package/esm/src/utils/chord-progressions.js +70 -7
- package/esm/src/utils/chords.d.ts +7 -1
- package/esm/src/utils/chords.d.ts.map +1 -1
- package/esm/src/utils/chords.js +18 -1
- package/esm/src/utils/conversion-registry.d.ts +40 -20
- package/esm/src/utils/conversion-registry.d.ts.map +1 -1
- package/esm/src/utils/conversion-registry.js +95 -25
- package/esm/src/utils/intervals.d.ts +3 -0
- package/esm/src/utils/intervals.d.ts.map +1 -1
- package/esm/src/utils/intervals.js +23 -0
- package/esm/src/utils/midi.d.ts +7 -0
- package/esm/src/utils/midi.d.ts.map +1 -1
- package/esm/src/utils/midi.js +18 -0
- package/esm/src/utils/note-collections.d.ts +9 -1
- package/esm/src/utils/note-collections.d.ts.map +1 -1
- package/esm/src/utils/note-collections.js +22 -0
- package/esm/tests/solfege.test.d.ts.map +1 -0
- package/package.json +1 -1
- package/script/deps/jsr.io/@std/internal/{1.0.13 → 1.0.14}/build_message.d.ts.map +1 -1
- 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
- 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
- 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
- package/script/deps/jsr.io/@std/internal/{1.0.13 → 1.0.14}/styles.d.ts.map +1 -1
- package/script/deps/jsr.io/@std/internal/{1.0.13 → 1.0.14}/types.d.ts.map +1 -1
- package/script/src/data/chord-progressions/mod.d.ts +28 -16
- package/script/src/data/chord-progressions/mod.d.ts.map +1 -1
- package/script/src/data/chord-progressions/mod.js +181 -66
- package/script/src/data/chords/mod.d.ts +26 -1
- package/script/src/data/chords/mod.d.ts.map +1 -1
- package/script/src/data/chords/mod.js +75 -2
- package/script/src/data/labels/mod.d.ts +1 -0
- package/script/src/data/labels/mod.d.ts.map +1 -1
- package/script/src/data/labels/mod.js +1 -0
- package/script/src/data/labels/note-label-collections.d.ts +1 -25
- package/script/src/data/labels/note-label-collections.d.ts.map +1 -1
- package/script/src/data/labels/note-label-collections.js +1 -77
- package/script/src/data/labels/note-labels.d.ts +1 -1
- package/script/src/data/labels/note-labels.d.ts.map +1 -1
- package/script/src/data/labels/solfege.d.ts +33 -0
- package/script/src/data/labels/solfege.d.ts.map +1 -0
- package/script/src/data/labels/solfege.js +173 -0
- package/script/src/data/note-collections/mod.d.ts +15 -0
- package/script/src/data/note-collections/mod.d.ts.map +1 -1
- package/script/src/utils/chord-progressions.d.ts +22 -5
- package/script/src/utils/chord-progressions.d.ts.map +1 -1
- package/script/src/utils/chord-progressions.js +72 -5
- package/script/src/utils/chords.d.ts +7 -1
- package/script/src/utils/chords.d.ts.map +1 -1
- package/script/src/utils/chords.js +19 -0
- package/script/src/utils/conversion-registry.d.ts +40 -20
- package/script/src/utils/conversion-registry.d.ts.map +1 -1
- package/script/src/utils/conversion-registry.js +98 -26
- package/script/src/utils/intervals.d.ts +3 -0
- package/script/src/utils/intervals.d.ts.map +1 -1
- package/script/src/utils/intervals.js +26 -0
- package/script/src/utils/midi.d.ts +7 -0
- package/script/src/utils/midi.d.ts.map +1 -1
- package/script/src/utils/midi.js +21 -0
- package/script/src/utils/note-collections.d.ts +9 -1
- package/script/src/utils/note-collections.d.ts.map +1 -1
- package/script/src/utils/note-collections.js +25 -0
- package/script/tests/solfege.test.d.ts.map +1 -0
|
@@ -43,6 +43,55 @@ const _chordQualityNoteCollectionKeys = {
|
|
|
43
43
|
"+M7": "augmentedMajor7",
|
|
44
44
|
"M7♯5": "augmentedMajor7",
|
|
45
45
|
};
|
|
46
|
+
const _chordCollectionSymbolRenderings = {
|
|
47
|
+
major: { chordSuffix: "M", romanSuffix: "", numeralCase: "upper" },
|
|
48
|
+
major6: { chordSuffix: "6", romanSuffix: "6", numeralCase: "upper" },
|
|
49
|
+
major7: { chordSuffix: "M7", romanSuffix: "M7", numeralCase: "upper" },
|
|
50
|
+
major9: { chordSuffix: "M9", romanSuffix: "M9", numeralCase: "upper" },
|
|
51
|
+
majorAdd9: {
|
|
52
|
+
chordSuffix: "add9",
|
|
53
|
+
romanSuffix: "add9",
|
|
54
|
+
numeralCase: "upper",
|
|
55
|
+
},
|
|
56
|
+
major6Add9: { chordSuffix: "6/9", romanSuffix: "6/9", numeralCase: "upper" },
|
|
57
|
+
minor: { chordSuffix: "m", romanSuffix: "", numeralCase: "lower" },
|
|
58
|
+
minor6: { chordSuffix: "m6", romanSuffix: "m6", numeralCase: "lower" },
|
|
59
|
+
minor7: { chordSuffix: "m7", romanSuffix: "m7", numeralCase: "lower" },
|
|
60
|
+
minorMajor7: {
|
|
61
|
+
chordSuffix: "m(M7)",
|
|
62
|
+
romanSuffix: "M7",
|
|
63
|
+
numeralCase: "lower",
|
|
64
|
+
},
|
|
65
|
+
minor9: { chordSuffix: "m9", romanSuffix: "m9", numeralCase: "lower" },
|
|
66
|
+
minorAdd9: {
|
|
67
|
+
chordSuffix: "m(add9)",
|
|
68
|
+
romanSuffix: "m(add9)",
|
|
69
|
+
numeralCase: "lower",
|
|
70
|
+
},
|
|
71
|
+
minor6Add9: {
|
|
72
|
+
chordSuffix: "m6/9",
|
|
73
|
+
romanSuffix: "m6/9",
|
|
74
|
+
numeralCase: "lower",
|
|
75
|
+
},
|
|
76
|
+
dominant7: { chordSuffix: "7", romanSuffix: "7", numeralCase: "upper" },
|
|
77
|
+
dominant9: { chordSuffix: "9", romanSuffix: "9", numeralCase: "upper" },
|
|
78
|
+
dominant11: { chordSuffix: "11", romanSuffix: "11", numeralCase: "upper" },
|
|
79
|
+
dominant13: { chordSuffix: "13", romanSuffix: "13", numeralCase: "upper" },
|
|
80
|
+
diminishedTriad: { chordSuffix: "°", romanSuffix: "°", numeralCase: "lower" },
|
|
81
|
+
diminished7: { chordSuffix: "°7", romanSuffix: "°7", numeralCase: "lower" },
|
|
82
|
+
halfDiminished7: {
|
|
83
|
+
chordSuffix: "ø7",
|
|
84
|
+
romanSuffix: "ø7",
|
|
85
|
+
numeralCase: "lower",
|
|
86
|
+
},
|
|
87
|
+
augmentedTriad: { chordSuffix: "+", romanSuffix: "+", numeralCase: "upper" },
|
|
88
|
+
augmented7: { chordSuffix: "+7", romanSuffix: "+7", numeralCase: "upper" },
|
|
89
|
+
augmentedMajor7: {
|
|
90
|
+
chordSuffix: "+M7",
|
|
91
|
+
romanSuffix: "+M7",
|
|
92
|
+
numeralCase: "upper",
|
|
93
|
+
},
|
|
94
|
+
};
|
|
46
95
|
/** The complete set of supported triad chord qualities. */
|
|
47
96
|
export const triadChordQualities = _triadChordQualities;
|
|
48
97
|
/** The complete set of supported seventh chord qualities. */
|
|
@@ -52,8 +101,12 @@ export const chordQualities = [
|
|
|
52
101
|
...triadChordQualities,
|
|
53
102
|
...seventhChordQualities,
|
|
54
103
|
];
|
|
104
|
+
/** Chord collection keys for every supported chord quality. */
|
|
105
|
+
export const chordQualityChordCollectionKeys = _chordQualityNoteCollectionKeys;
|
|
55
106
|
/** Note-collection keys for every supported chord quality. */
|
|
56
|
-
export const chordQualityNoteCollectionKeys =
|
|
107
|
+
export const chordQualityNoteCollectionKeys = chordQualityChordCollectionKeys;
|
|
108
|
+
/** Symbol rendering metadata for every built-in chord collection. */
|
|
109
|
+
export const chordCollectionSymbolRenderings = _chordCollectionSymbolRenderings;
|
|
57
110
|
/** Roman numeral rendering metadata for each supported chord quality. */
|
|
58
111
|
export const chordQualityRomanRenderings = new Map([
|
|
59
112
|
["M", { numeralCase: "upper", suffix: "" }],
|
|
@@ -138,3 +191,19 @@ export const lowerCaseRomanNumerals = _lowerCaseRomanNumerals;
|
|
|
138
191
|
export function getChordQualityNoteCollectionKey(quality) {
|
|
139
192
|
return chordQualityNoteCollectionKeys[quality];
|
|
140
193
|
}
|
|
194
|
+
/** Returns the chord-collection key that describes the notes in a chord quality. */
|
|
195
|
+
export function getChordQualityChordCollectionKey(quality) {
|
|
196
|
+
return chordQualityChordCollectionKeys[quality];
|
|
197
|
+
}
|
|
198
|
+
/** Returns symbol rendering metadata for a chord collection. */
|
|
199
|
+
export function getChordCollectionSymbolRendering(chordCollectionKey) {
|
|
200
|
+
return chordCollectionSymbolRenderings[chordCollectionKey];
|
|
201
|
+
}
|
|
202
|
+
/** Returns the chord-symbol suffix for a chord collection. */
|
|
203
|
+
export function getChordCollectionChordSuffix(chordCollectionKey) {
|
|
204
|
+
return getChordCollectionSymbolRendering(chordCollectionKey).chordSuffix;
|
|
205
|
+
}
|
|
206
|
+
/** Returns the roman-symbol suffix for a chord collection. */
|
|
207
|
+
export function getChordCollectionRomanSuffix(chordCollectionKey) {
|
|
208
|
+
return getChordCollectionSymbolRendering(chordCollectionKey).romanSuffix;
|
|
209
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../src/src/data/labels/mod.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../src/src/data/labels/mod.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC"}
|
|
@@ -45,34 +45,10 @@ declare const _noteLabelCollections: {
|
|
|
45
45
|
readonly mode: "relative";
|
|
46
46
|
readonly labels: readonly ["1", "♯1", "9", "♯9", "3", "11", "♯11", "5", "♯5", "13", "♯13", "7"];
|
|
47
47
|
};
|
|
48
|
-
readonly fixedDoFlat: {
|
|
49
|
-
readonly name: "Solfege Fixed Do Flat Notes";
|
|
50
|
-
readonly shortName: "Fixed Do Flat";
|
|
51
|
-
readonly mode: "absolute";
|
|
52
|
-
readonly labels: readonly ["do", "re♭", "re", "mi♭", "mi", "fa", "sol♭", "sol", "la♭", "la", "si♭", "si"];
|
|
53
|
-
};
|
|
54
|
-
readonly fixedDoSharp: {
|
|
55
|
-
readonly name: "Solfege Fixed Do Sharp Notes";
|
|
56
|
-
readonly shortName: "Fixed Do Sharp";
|
|
57
|
-
readonly mode: "absolute";
|
|
58
|
-
readonly labels: readonly ["do", "do♯", "re", "re♯", "mi", "fa", "fa♯", "sol", "sol♯", "la", "la♯", "si"];
|
|
59
|
-
};
|
|
60
|
-
readonly movableDo: {
|
|
61
|
-
readonly name: "Solfege Movable Do Notes";
|
|
62
|
-
readonly shortName: "Movable Do";
|
|
63
|
-
readonly mode: "relative";
|
|
64
|
-
readonly labels: readonly ["do", "ra", "re", "me", "mi", "fa", "fi", "sol", "le", "la", "te", "ti"];
|
|
65
|
-
};
|
|
66
|
-
readonly movableLa: {
|
|
67
|
-
readonly name: "Solfege Movable La Notes";
|
|
68
|
-
readonly shortName: "Movable La";
|
|
69
|
-
readonly mode: "relative";
|
|
70
|
-
readonly labels: readonly ["la", "te", "ti", "do", "di", "re", "re", "mi", "fa", "fi", "sol", "si"];
|
|
71
|
-
};
|
|
72
48
|
};
|
|
73
49
|
/** A union string of valid keys to lookup different note label collections. */
|
|
74
50
|
export type NoteLabelCollectionKey = keyof typeof _noteLabelCollections;
|
|
75
|
-
/** A dictionary holding arrays mapping integer semitones into note
|
|
51
|
+
/** A dictionary holding arrays mapping integer semitones into note and interval labels for varied contexts. */
|
|
76
52
|
export declare const noteLabelCollections: Record<NoteLabelCollectionKey, NoteLabelCollection>;
|
|
77
53
|
export {};
|
|
78
54
|
//# sourceMappingURL=note-label-collections.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"note-label-collections.d.ts","sourceRoot":"","sources":["../../../../src/src/data/labels/note-label-collections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAErE,yFAAyF;AACzF,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AAEpD,iFAAiF;AACjF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;CACjC;AAED,QAAA,MAAM,qBAAqB
|
|
1
|
+
{"version":3,"file":"note-label-collections.d.ts","sourceRoot":"","sources":["../../../../src/src/data/labels/note-label-collections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAErE,yFAAyF;AACzF,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AAEpD,iFAAiF;AACjF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;CACjC;AAED,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoEjB,CAAC;AAEX,+EAA+E;AAC/E,MAAM,MAAM,sBAAsB,GAAG,MAAM,OAAO,qBAAqB,CAAC;AAExE,+GAA+G;AAC/G,eAAO,MAAM,oBAAoB,EAAE,MAAM,CACvC,sBAAsB,EACtB,mBAAmB,CACI,CAAC"}
|
|
@@ -61,82 +61,6 @@ const _noteLabelCollections = {
|
|
|
61
61
|
"7",
|
|
62
62
|
],
|
|
63
63
|
},
|
|
64
|
-
fixedDoFlat: {
|
|
65
|
-
name: "Solfege Fixed Do Flat Notes",
|
|
66
|
-
shortName: "Fixed Do Flat",
|
|
67
|
-
mode: "absolute",
|
|
68
|
-
labels: [
|
|
69
|
-
"do",
|
|
70
|
-
"re♭",
|
|
71
|
-
"re",
|
|
72
|
-
"mi♭",
|
|
73
|
-
"mi",
|
|
74
|
-
"fa",
|
|
75
|
-
"sol♭",
|
|
76
|
-
"sol",
|
|
77
|
-
"la♭",
|
|
78
|
-
"la",
|
|
79
|
-
"si♭",
|
|
80
|
-
"si",
|
|
81
|
-
],
|
|
82
|
-
},
|
|
83
|
-
fixedDoSharp: {
|
|
84
|
-
name: "Solfege Fixed Do Sharp Notes",
|
|
85
|
-
shortName: "Fixed Do Sharp",
|
|
86
|
-
mode: "absolute",
|
|
87
|
-
labels: [
|
|
88
|
-
"do",
|
|
89
|
-
"do♯",
|
|
90
|
-
"re",
|
|
91
|
-
"re♯",
|
|
92
|
-
"mi",
|
|
93
|
-
"fa",
|
|
94
|
-
"fa♯",
|
|
95
|
-
"sol",
|
|
96
|
-
"sol♯",
|
|
97
|
-
"la",
|
|
98
|
-
"la♯",
|
|
99
|
-
"si",
|
|
100
|
-
],
|
|
101
|
-
},
|
|
102
|
-
movableDo: {
|
|
103
|
-
name: "Solfege Movable Do Notes",
|
|
104
|
-
shortName: "Movable Do",
|
|
105
|
-
mode: "relative",
|
|
106
|
-
labels: [
|
|
107
|
-
"do",
|
|
108
|
-
"ra",
|
|
109
|
-
"re",
|
|
110
|
-
"me",
|
|
111
|
-
"mi",
|
|
112
|
-
"fa",
|
|
113
|
-
"fi",
|
|
114
|
-
"sol",
|
|
115
|
-
"le",
|
|
116
|
-
"la",
|
|
117
|
-
"te",
|
|
118
|
-
"ti",
|
|
119
|
-
],
|
|
120
|
-
},
|
|
121
|
-
movableLa: {
|
|
122
|
-
name: "Solfege Movable La Notes",
|
|
123
|
-
shortName: "Movable La",
|
|
124
|
-
mode: "relative",
|
|
125
|
-
labels: [
|
|
126
|
-
"la",
|
|
127
|
-
"te",
|
|
128
|
-
"ti",
|
|
129
|
-
"do",
|
|
130
|
-
"di",
|
|
131
|
-
"re",
|
|
132
|
-
"re",
|
|
133
|
-
"mi",
|
|
134
|
-
"fa",
|
|
135
|
-
"fi",
|
|
136
|
-
"sol",
|
|
137
|
-
"si",
|
|
138
|
-
],
|
|
139
|
-
},
|
|
140
64
|
};
|
|
141
|
-
/** A dictionary holding arrays mapping integer semitones into note
|
|
65
|
+
/** A dictionary holding arrays mapping integer semitones into note and interval labels for varied contexts. */
|
|
142
66
|
export const noteLabelCollections = _noteLabelCollections;
|
|
@@ -91,7 +91,7 @@ declare const _simpleIntervalToIntegerMap: {
|
|
|
91
91
|
readonly "\u266F8": 13;
|
|
92
92
|
readonly "\uD834\uDD2A8": 14;
|
|
93
93
|
};
|
|
94
|
-
/** A fully qualified simple (single octave) interval string, including an optional accidental symbol (e.g., "
|
|
94
|
+
/** A fully qualified simple (single octave) interval string, including an optional accidental symbol (e.g., "3", "♯4", "♭7"). */
|
|
95
95
|
export type SimpleInterval = keyof typeof _simpleIntervalToIntegerMap;
|
|
96
96
|
/** A numeric string representing the numerical span of a compound interval (e.g. "9", "13"). */
|
|
97
97
|
export type CompoundIntervalNumber = "9" | "10" | "11" | "12" | "13" | "14" | "15";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"note-labels.d.ts","sourceRoot":"","sources":["../../../../src/src/data/labels/note-labels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,qGAAqG;AACrG,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC;AAE7C,QAAA,MAAM,YAAY,8CAA+C,CAAC;AAElE,mEAAmE;AACnE,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,4EAA4E;AAC5E,eAAO,MAAM,WAAW,EAAE,SAAS,UAAU,EAAiB,CAAC;AAE/D,QAAA,MAAM,2BAA2B;;;;;;CAMvB,CAAC;AAEX,kFAAkF;AAClF,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,2BAA2B,CAAC;AAEtE,uFAAuF;AACvF,eAAO,MAAM,0BAA0B,EAAE,WAAW,CAAC,cAAc,EAAE,MAAM,CAGxE,CAAC;AAEJ,QAAA,MAAM,yBAAyB,kZAarB,CAAC;AAEX,gGAAgG;AAChG,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,wGAAwG;AACxG,eAAO,MAAM,wBAAwB,EAAE,SAAS,CAAC,SAAS,QAAQ,EAAE,CAAC,EAC1C,CAAC;AAE5B,qDAAqD;AACrD,eAAO,MAAM,SAAS,EAAE,SAAS,QAAQ,EAAoC,CAAC;AAE9E,qFAAqF;AACrF,eAAO,MAAM,YAAY,EAAE,WAAW,CAAC,QAAQ,CAAsB,CAAC;AAEtE,uGAAuG;AACvG,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,QAAQ,EAAE,eAAe,CASlE,CAAC;AAEP,QAAA,MAAM,yBAAyB,sQAarB,CAAC;AAEX,sGAAsG;AACtG,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,0FAA0F;AAC1F,eAAO,MAAM,wBAAwB,EAAE,SAAS,CAAC,SAAS,QAAQ,EAAE,CAAC,EAC1C,CAAC;AAE5B,6CAA6C;AAC7C,eAAO,MAAM,SAAS,EAAE,SAAS,QAAQ,EAAoC,CAAC;AAE9E,6EAA6E;AAC7E,eAAO,MAAM,YAAY,EAAE,WAAW,CAAC,QAAQ,CAAsB,CAAC;AAEtE,8FAA8F;AAC9F,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,QAAQ,EAAE,eAAe,CASlE,CAAC;AAEP,6FAA6F;AAC7F,MAAM,MAAM,oBAAoB,GAC5B,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,CAAC;AAER,QAAA,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDvB,CAAC;AAEX,
|
|
1
|
+
{"version":3,"file":"note-labels.d.ts","sourceRoot":"","sources":["../../../../src/src/data/labels/note-labels.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Interval, NoteLetter, NoteName, SimpleInterval } from "./note-labels.js";
|
|
2
|
+
export type FixedDoSeventhSyllable = "si" | "ti";
|
|
3
|
+
export type FixedDoAccidentalPolicy = "omitAccidentals" | "symbolAccidentals";
|
|
4
|
+
export interface FixedDoSyllableOptions {
|
|
5
|
+
readonly seventhSyllable?: FixedDoSeventhSyllable;
|
|
6
|
+
readonly accidentalPolicy?: FixedDoAccidentalPolicy;
|
|
7
|
+
}
|
|
8
|
+
export type FixedDoBaseSyllable = "do" | "re" | "mi" | "fa" | "sol" | "la" | FixedDoSeventhSyllable;
|
|
9
|
+
export type MovableDoSyllable = "do" | "di" | "ra" | "re" | "ri" | "me" | "ma" | "mi" | "fa" | "fi" | "se" | "sol" | "si" | "le" | "lo" | "la" | "li" | "te" | "ta" | "ti";
|
|
10
|
+
export interface MovableDoSyllableEntry {
|
|
11
|
+
readonly syllable: MovableDoSyllable;
|
|
12
|
+
readonly aliases?: readonly MovableDoSyllable[];
|
|
13
|
+
readonly note?: string;
|
|
14
|
+
}
|
|
15
|
+
export type MovableDoSystem = "doBased" | "laBasedMinor";
|
|
16
|
+
export interface SolfegeSystemMetadata {
|
|
17
|
+
readonly name: string;
|
|
18
|
+
readonly shortName: string;
|
|
19
|
+
readonly description: string;
|
|
20
|
+
}
|
|
21
|
+
export type SolfegeSystemKey = "fixedDo" | MovableDoSystem;
|
|
22
|
+
export declare const solfegeSystemMetadata: Readonly<Record<SolfegeSystemKey, SolfegeSystemMetadata>>;
|
|
23
|
+
export declare const defaultFixedDoSyllableOptions: Required<FixedDoSyllableOptions>;
|
|
24
|
+
export declare const fixedDoNoteLetterToSyllableMaps: Readonly<Record<FixedDoSeventhSyllable, ReadonlyMap<NoteLetter, FixedDoBaseSyllable>>>;
|
|
25
|
+
export declare function getFixedDoSyllableForNoteName(noteName: NoteName, options?: FixedDoSyllableOptions): string;
|
|
26
|
+
export declare function getFixedDoSyllablesForNoteNames(noteNames: readonly NoteName[], options?: FixedDoSyllableOptions): string[];
|
|
27
|
+
export declare const movableDoIntervalToSyllableMap: ReadonlyMap<SimpleInterval, MovableDoSyllableEntry>;
|
|
28
|
+
export declare const movableLaBasedMinorIntervalToSyllableMap: ReadonlyMap<SimpleInterval, MovableDoSyllableEntry>;
|
|
29
|
+
export declare const movableDoIntervalSyllableMaps: Readonly<Record<MovableDoSystem, ReadonlyMap<SimpleInterval, MovableDoSyllableEntry>>>;
|
|
30
|
+
export declare function getMovableDoSyllableEntryForInterval(interval: Interval, system?: MovableDoSystem): MovableDoSyllableEntry | undefined;
|
|
31
|
+
export declare function getMovableDoSyllableForInterval(interval: Interval, system?: MovableDoSystem): MovableDoSyllable | undefined;
|
|
32
|
+
export declare function getMovableDoSyllablesForIntervals(intervals: readonly Interval[], system?: MovableDoSystem): (MovableDoSyllable | undefined)[];
|
|
33
|
+
//# sourceMappingURL=solfege.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solfege.d.ts","sourceRoot":"","sources":["../../../../src/src/data/labels/solfege.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,cAAc,EACf,MAAM,kBAAkB,CAAC;AAG1B,MAAM,MAAM,sBAAsB,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjD,MAAM,MAAM,uBAAuB,GAC/B,iBAAiB,GACjB,mBAAmB,CAAC;AAExB,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,eAAe,CAAC,EAAE,sBAAsB,CAAC;IAClD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;CACrD;AAED,MAAM,MAAM,mBAAmB,GAC3B,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,sBAAsB,CAAC;AAE3B,MAAM,MAAM,iBAAiB,GACzB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAET,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAChD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,cAAc,CAAC;AAEzD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,eAAe,CAAC;AAE3D,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAC1C,MAAM,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAoBhD,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,QAAQ,CAAC,sBAAsB,CAG1E,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,QAAQ,CACpD,MAAM,CAAC,sBAAsB,EAAE,WAAW,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC,CAoB7E,CAAC;AAwCF,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,sBAA2B,GACnC,MAAM,CAgBR;AAED,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,SAAS,QAAQ,EAAE,EAC9B,OAAO,GAAE,sBAA2B,GACnC,MAAM,EAAE,CAIV;AAED,eAAO,MAAM,8BAA8B,EAAE,WAAW,CACtD,cAAc,EACd,sBAAsB,CAwCtB,CAAC;AAEH,eAAO,MAAM,wCAAwC,EAAE,WAAW,CAChE,cAAc,EACd,sBAAsB,CA4BtB,CAAC;AAEH,eAAO,MAAM,6BAA6B,EAAE,QAAQ,CAClD,MAAM,CAAC,eAAe,EAAE,WAAW,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAC,CAI7E,CAAC;AAEF,wBAAgB,oCAAoC,CAClD,QAAQ,EAAE,QAAQ,EAClB,MAAM,GAAE,eAA2B,GAClC,sBAAsB,GAAG,SAAS,CAQpC;AAED,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,QAAQ,EAClB,MAAM,GAAE,eAA2B,GAClC,iBAAiB,GAAG,SAAS,CAE/B;AAED,wBAAgB,iCAAiC,CAC/C,SAAS,EAAE,SAAS,QAAQ,EAAE,EAC9B,MAAM,GAAE,eAA2B,GAClC,CAAC,iBAAiB,GAAG,SAAS,CAAC,EAAE,CAInC"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { compoundToSimpleIntervalMap } from "./note-labels.js";
|
|
2
|
+
export const solfegeSystemMetadata = {
|
|
3
|
+
fixedDo: {
|
|
4
|
+
name: "Fixed Do",
|
|
5
|
+
shortName: "Fixed Do",
|
|
6
|
+
description: "Names notes by letter with do for C, re for D, mi for E, fa for F, sol for G, la for A, and si or ti for B.",
|
|
7
|
+
},
|
|
8
|
+
doBased: {
|
|
9
|
+
name: "Movable Do",
|
|
10
|
+
shortName: "Movable Do",
|
|
11
|
+
description: "Names intervals relative to the tonic, with do as the tonic in both major and minor contexts.",
|
|
12
|
+
},
|
|
13
|
+
laBasedMinor: {
|
|
14
|
+
name: "Movable La-Based Minor",
|
|
15
|
+
shortName: "Movable La",
|
|
16
|
+
description: "Names intervals relative to a minor tonic treated as la, a convention common in some choral and teaching contexts.",
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
export const defaultFixedDoSyllableOptions = {
|
|
20
|
+
seventhSyllable: "si",
|
|
21
|
+
accidentalPolicy: "omitAccidentals",
|
|
22
|
+
};
|
|
23
|
+
export const fixedDoNoteLetterToSyllableMaps = {
|
|
24
|
+
si: new Map([
|
|
25
|
+
["C", "do"],
|
|
26
|
+
["D", "re"],
|
|
27
|
+
["E", "mi"],
|
|
28
|
+
["F", "fa"],
|
|
29
|
+
["G", "sol"],
|
|
30
|
+
["A", "la"],
|
|
31
|
+
["B", "si"],
|
|
32
|
+
]),
|
|
33
|
+
ti: new Map([
|
|
34
|
+
["C", "do"],
|
|
35
|
+
["D", "re"],
|
|
36
|
+
["E", "mi"],
|
|
37
|
+
["F", "fa"],
|
|
38
|
+
["G", "sol"],
|
|
39
|
+
["A", "la"],
|
|
40
|
+
["B", "ti"],
|
|
41
|
+
]),
|
|
42
|
+
};
|
|
43
|
+
const SIMPLE_INTERVAL_NUMBER_REGEX = /\d+$/;
|
|
44
|
+
function getNoteLetterFromNoteName(noteName) {
|
|
45
|
+
return noteName.charAt(0);
|
|
46
|
+
}
|
|
47
|
+
function getAccidentalSymbolsFromNoteName(noteName) {
|
|
48
|
+
return noteName.slice(1);
|
|
49
|
+
}
|
|
50
|
+
function getFixedDoOptions(options) {
|
|
51
|
+
return {
|
|
52
|
+
...defaultFixedDoSyllableOptions,
|
|
53
|
+
...options,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function isSimpleIntervalValue(interval) {
|
|
57
|
+
const match = interval.match(SIMPLE_INTERVAL_NUMBER_REGEX);
|
|
58
|
+
return match !== null && Number(match[0]) <= 8;
|
|
59
|
+
}
|
|
60
|
+
function getSimpleIntervalForMovableDo(interval) {
|
|
61
|
+
const compoundAsSimple = compoundToSimpleIntervalMap.get(interval);
|
|
62
|
+
if (compoundAsSimple !== undefined) {
|
|
63
|
+
return compoundAsSimple;
|
|
64
|
+
}
|
|
65
|
+
return isSimpleIntervalValue(interval) ? interval : undefined;
|
|
66
|
+
}
|
|
67
|
+
export function getFixedDoSyllableForNoteName(noteName, options = {}) {
|
|
68
|
+
const { seventhSyllable, accidentalPolicy } = getFixedDoOptions(options);
|
|
69
|
+
const noteLetter = getNoteLetterFromNoteName(noteName);
|
|
70
|
+
const baseSyllable = fixedDoNoteLetterToSyllableMaps[seventhSyllable].get(noteLetter);
|
|
71
|
+
if (baseSyllable === undefined) {
|
|
72
|
+
return "";
|
|
73
|
+
}
|
|
74
|
+
if (accidentalPolicy === "omitAccidentals") {
|
|
75
|
+
return baseSyllable;
|
|
76
|
+
}
|
|
77
|
+
return baseSyllable + getAccidentalSymbolsFromNoteName(noteName);
|
|
78
|
+
}
|
|
79
|
+
export function getFixedDoSyllablesForNoteNames(noteNames, options = {}) {
|
|
80
|
+
return noteNames.map((noteName) => getFixedDoSyllableForNoteName(noteName, options));
|
|
81
|
+
}
|
|
82
|
+
export const movableDoIntervalToSyllableMap = new Map([
|
|
83
|
+
["♭1", { syllable: "ti", note: "Contextual lowered tonic." }],
|
|
84
|
+
["♮1", { syllable: "do" }],
|
|
85
|
+
["1", { syllable: "do" }],
|
|
86
|
+
["♯1", { syllable: "di" }],
|
|
87
|
+
["♭2", { syllable: "ra" }],
|
|
88
|
+
["♮2", { syllable: "re" }],
|
|
89
|
+
["2", { syllable: "re" }],
|
|
90
|
+
["♯2", { syllable: "ri" }],
|
|
91
|
+
["♭3", { syllable: "me", aliases: ["ma"] }],
|
|
92
|
+
["♮3", { syllable: "mi" }],
|
|
93
|
+
["3", { syllable: "mi" }],
|
|
94
|
+
["♭4", { syllable: "mi", note: "Contextual lowered fourth." }],
|
|
95
|
+
["♮4", { syllable: "fa" }],
|
|
96
|
+
["4", { syllable: "fa" }],
|
|
97
|
+
["♯4", { syllable: "fi" }],
|
|
98
|
+
["♭5", { syllable: "se" }],
|
|
99
|
+
["♮5", { syllable: "sol" }],
|
|
100
|
+
["5", { syllable: "sol" }],
|
|
101
|
+
["♯5", { syllable: "si" }],
|
|
102
|
+
["♭6", { syllable: "le", aliases: ["lo"] }],
|
|
103
|
+
["♮6", { syllable: "la" }],
|
|
104
|
+
["6", { syllable: "la" }],
|
|
105
|
+
["♯6", { syllable: "li" }],
|
|
106
|
+
[
|
|
107
|
+
"𝄫7",
|
|
108
|
+
{
|
|
109
|
+
syllable: "la",
|
|
110
|
+
note: "Common do-based minor handling for a diminished seventh above the tonic.",
|
|
111
|
+
},
|
|
112
|
+
],
|
|
113
|
+
["♭7", { syllable: "te", aliases: ["ta"] }],
|
|
114
|
+
["♮7", { syllable: "ti" }],
|
|
115
|
+
["7", { syllable: "ti" }],
|
|
116
|
+
["♭8", { syllable: "ti", note: "Contextual lowered octave." }],
|
|
117
|
+
["♮8", { syllable: "do" }],
|
|
118
|
+
["8", { syllable: "do" }],
|
|
119
|
+
["♯8", { syllable: "di", note: "Contextual raised octave." }],
|
|
120
|
+
]);
|
|
121
|
+
export const movableLaBasedMinorIntervalToSyllableMap = new Map([
|
|
122
|
+
["♭1", { syllable: "le", aliases: ["lo"] }],
|
|
123
|
+
["♮1", { syllable: "la" }],
|
|
124
|
+
["1", { syllable: "la" }],
|
|
125
|
+
["♯1", { syllable: "li" }],
|
|
126
|
+
["♭2", { syllable: "te", aliases: ["ta"] }],
|
|
127
|
+
["♮2", { syllable: "ti" }],
|
|
128
|
+
["2", { syllable: "ti" }],
|
|
129
|
+
["♭3", { syllable: "do" }],
|
|
130
|
+
["♮3", { syllable: "di" }],
|
|
131
|
+
["3", { syllable: "di" }],
|
|
132
|
+
["♭4", { syllable: "ra" }],
|
|
133
|
+
["♮4", { syllable: "re" }],
|
|
134
|
+
["4", { syllable: "re" }],
|
|
135
|
+
["♯4", { syllable: "ri" }],
|
|
136
|
+
["♭5", { syllable: "me", aliases: ["ma"] }],
|
|
137
|
+
["♮5", { syllable: "mi" }],
|
|
138
|
+
["5", { syllable: "mi" }],
|
|
139
|
+
["♭6", { syllable: "fa" }],
|
|
140
|
+
["♮6", { syllable: "fi" }],
|
|
141
|
+
["6", { syllable: "fi" }],
|
|
142
|
+
["𝄫7", { syllable: "se" }],
|
|
143
|
+
["♭7", { syllable: "sol" }],
|
|
144
|
+
["♮7", { syllable: "si" }],
|
|
145
|
+
["7", { syllable: "si" }],
|
|
146
|
+
["♮8", { syllable: "la" }],
|
|
147
|
+
["8", { syllable: "la" }],
|
|
148
|
+
]);
|
|
149
|
+
export const movableDoIntervalSyllableMaps = {
|
|
150
|
+
doBased: movableDoIntervalToSyllableMap,
|
|
151
|
+
laBasedMinor: movableLaBasedMinorIntervalToSyllableMap,
|
|
152
|
+
};
|
|
153
|
+
export function getMovableDoSyllableEntryForInterval(interval, system = "doBased") {
|
|
154
|
+
const simpleInterval = getSimpleIntervalForMovableDo(interval);
|
|
155
|
+
if (simpleInterval === undefined) {
|
|
156
|
+
return undefined;
|
|
157
|
+
}
|
|
158
|
+
return movableDoIntervalSyllableMaps[system].get(simpleInterval);
|
|
159
|
+
}
|
|
160
|
+
export function getMovableDoSyllableForInterval(interval, system = "doBased") {
|
|
161
|
+
return getMovableDoSyllableEntryForInterval(interval, system)?.syllable;
|
|
162
|
+
}
|
|
163
|
+
export function getMovableDoSyllablesForIntervals(intervals, system = "doBased") {
|
|
164
|
+
return intervals.map((interval) => getMovableDoSyllableForInterval(interval, system));
|
|
165
|
+
}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
import { majorVariants } from "./major-variants.js";
|
|
2
|
+
import { minorVariants } from "./minor-variants.js";
|
|
3
|
+
import { type _dominantVariants } from "./dominant-variants.js";
|
|
4
|
+
import { type _diminishedVariants } from "./diminished-variants.js";
|
|
5
|
+
import { augmentedVariants } from "./augmented-variants.js";
|
|
6
|
+
import { otherNoteCollections } from "./other-collections.js";
|
|
1
7
|
export { diatonicModes } from "./diatonic-modes.js";
|
|
2
8
|
export { pentatonicVariants } from "./pentatonic-variants.js";
|
|
3
9
|
export { majorVariants } from "./major-variants.js";
|
|
@@ -72,6 +78,15 @@ export declare const noteCollections: {
|
|
|
72
78
|
};
|
|
73
79
|
/** A strictly typed generic string representing any key corresponding to a NoteCollection loaded in `noteCollections`. */
|
|
74
80
|
export type NoteCollectionKey = keyof typeof noteCollections;
|
|
81
|
+
type NoteCollectionKeysWithCategory<TCollections extends Record<string, {
|
|
82
|
+
readonly category: string;
|
|
83
|
+
}>, TCategory extends string> = {
|
|
84
|
+
[K in keyof TCollections]: TCollections[K] extends {
|
|
85
|
+
readonly category: TCategory;
|
|
86
|
+
} ? K : never;
|
|
87
|
+
}[keyof TCollections];
|
|
88
|
+
/** A strictly typed key for any built-in note collection categorized as a chord. */
|
|
89
|
+
export type ChordCollectionKey = NoteCollectionKeysWithCategory<typeof majorVariants, "chord"> | NoteCollectionKeysWithCategory<typeof minorVariants, "chord"> | NoteCollectionKeysWithCategory<typeof _dominantVariants, "chord"> | NoteCollectionKeysWithCategory<typeof _diminishedVariants, "chord"> | NoteCollectionKeysWithCategory<typeof augmentedVariants, "chord"> | NoteCollectionKeysWithCategory<typeof otherNoteCollections, "chord">;
|
|
75
90
|
/** An organized, grouped dictionary splitting note collections into theoretical categories (e.g. Diatonic Modes, Major Variants). */
|
|
76
91
|
export declare const groupedNoteCollections: {
|
|
77
92
|
readonly diatonicModes: Record<"ionian" | "dorian" | "phrygian" | "lydian" | "mixolydian" | "aeolian" | "locrian", import("../../mod.js").ModalScaleCollection>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../src/src/data/note-collections/mod.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../src/src/data/note-collections/mod.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,KAAK,mBAAmB,EAEzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,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,KAAK,8BAA8B,CACjC,YAAY,SAAS,MAAM,CAAC,MAAM,EAAE;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,EAClE,SAAS,SAAS,MAAM,IACtB;KACD,CAAC,IAAI,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,SAAS;QACjD,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;KAC9B,GAAG,CAAC,GACD,KAAK;CACV,CAAC,MAAM,YAAY,CAAC,CAAC;AAEtB,oFAAoF;AACpF,MAAM,MAAM,kBAAkB,GAC1B,8BAA8B,CAAC,OAAO,aAAa,EAAE,OAAO,CAAC,GAC7D,8BAA8B,CAAC,OAAO,aAAa,EAAE,OAAO,CAAC,GAC7D,8BAA8B,CAAC,OAAO,iBAAiB,EAAE,OAAO,CAAC,GACjE,8BAA8B,CAAC,OAAO,mBAAmB,EAAE,OAAO,CAAC,GACnE,8BAA8B,CAAC,OAAO,iBAAiB,EAAE,OAAO,CAAC,GACjE,8BAA8B,CAAC,OAAO,oBAAoB,EAAE,OAAO,CAAC,CAAC;AAEzE,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"}
|
|
@@ -2,10 +2,10 @@ import { diatonicModes } from "./diatonic-modes.js";
|
|
|
2
2
|
import { pentatonicVariants } from "./pentatonic-variants.js";
|
|
3
3
|
import { majorVariants } from "./major-variants.js";
|
|
4
4
|
import { minorVariants } from "./minor-variants.js";
|
|
5
|
-
import { dominantVariants } from "./dominant-variants.js";
|
|
5
|
+
import { dominantVariants, } from "./dominant-variants.js";
|
|
6
6
|
import { harmonicMinorModes } from "./harmonic-minor-modes.js";
|
|
7
7
|
import { melodicMinorModes } from "./melodic-minor-modes.js";
|
|
8
|
-
import { diminishedVariants } from "./diminished-variants.js";
|
|
8
|
+
import { diminishedVariants, } from "./diminished-variants.js";
|
|
9
9
|
import { augmentedVariants } from "./augmented-variants.js";
|
|
10
10
|
import { otherNoteCollections } from "./other-collections.js";
|
|
11
11
|
export { diatonicModes } from "./diatonic-modes.js";
|
|
@@ -1,21 +1,38 @@
|
|
|
1
1
|
import { type ChordProgressionKey } from "../data/chord-progressions/mod.js";
|
|
2
|
-
import type { ChordProgression } from "../types/chord-progressions";
|
|
2
|
+
import type { ChordProgression, ChordProgressionAnalysisRomanSymbol, ChordProgressionCategoryKey, ChordProgressionChord, ChordProgressionRomanSymbol } from "../types/chord-progressions";
|
|
3
3
|
import type { RootNote } from "../data/labels/note-labels.js";
|
|
4
|
-
import type {
|
|
4
|
+
import type { ChordCollectionKey } from "../data/note-collections/mod.js";
|
|
5
5
|
/** A resolved chord in a progression, including its root and note-collection key. */
|
|
6
6
|
export interface ChordProgressionChordReference {
|
|
7
7
|
readonly rootNote: RootNote;
|
|
8
8
|
readonly chordName: string;
|
|
9
|
-
readonly noteCollectionKey:
|
|
9
|
+
readonly noteCollectionKey: ChordCollectionKey;
|
|
10
10
|
}
|
|
11
11
|
/** Returns whether a string is one of the built-in chord progression keys. */
|
|
12
12
|
export declare function isValidChordProgressionKey(key: string): key is ChordProgressionKey;
|
|
13
|
+
/** Returns the direct tonic-relative Roman symbol for a progression chord. */
|
|
14
|
+
export declare function getChordProgressionChordDirectRomanSymbol(chord: ChordProgressionChord): ChordProgressionRomanSymbol;
|
|
13
15
|
/** Returns the spelled chord names for a progression in the requested root. */
|
|
14
16
|
export declare function getChordProgressionChordNames(rootNote: RootNote, progressionOrKey: ChordProgression | ChordProgressionKey): string[];
|
|
15
|
-
/**
|
|
16
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Returns direct tonic-relative Roman symbols derived from each chord's
|
|
19
|
+
* `degree` and `chordCollectionKey`.
|
|
20
|
+
*/
|
|
21
|
+
export declare function getChordProgressionDirectRomanSymbols(progressionOrKey: ChordProgression | ChordProgressionKey): ChordProgressionRomanSymbol[];
|
|
22
|
+
/**
|
|
23
|
+
* Returns Roman symbols suitable for theory display, preferring optional
|
|
24
|
+
* harmonic-function analysis labels when present.
|
|
25
|
+
*/
|
|
26
|
+
export declare function getChordProgressionRomanSymbols(progressionOrKey: ChordProgression | ChordProgressionKey): ChordProgressionAnalysisRomanSymbol[];
|
|
27
|
+
/**
|
|
28
|
+
* Returns Roman symbols suitable for display, preferring optional
|
|
29
|
+
* harmonic-function analysis labels when present.
|
|
30
|
+
*/
|
|
31
|
+
export declare function getChordProgressionDisplayRomanSymbols(progressionOrKey: ChordProgression | ChordProgressionKey): ChordProgressionAnalysisRomanSymbol[];
|
|
17
32
|
/** Returns all built-in chord progression keys with the requested total bar count. */
|
|
18
33
|
export declare function getChordProgressionKeysForTotalBars(totalBars: number): ChordProgressionKey[];
|
|
34
|
+
/** Returns all built-in chord progression keys in the requested musical category. */
|
|
35
|
+
export declare function getChordProgressionKeysForCategory(category: ChordProgressionCategoryKey): ChordProgressionKey[];
|
|
19
36
|
/** Returns each distinct chord name in a progression, preserving first-seen order. */
|
|
20
37
|
export declare function getChordProgressionUniqueChordNames(rootNote: RootNote, progressionOrKey: ChordProgression | ChordProgressionKey): string[];
|
|
21
38
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chord-progressions.d.ts","sourceRoot":"","sources":["../../../src/src/utils/chord-progressions.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"chord-progressions.d.ts","sourceRoot":"","sources":["../../../src/src/utils/chord-progressions.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,KAAK,EACV,gBAAgB,EAChB,mCAAmC,EACnC,2BAA2B,EAC3B,qBAAqB,EAErB,2BAA2B,EAC5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAO1E,qFAAqF;AACrF,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;CAChD;AAWD,8EAA8E;AAC9E,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,MAAM,GACV,GAAG,IAAI,mBAAmB,CAE5B;AA8DD,8EAA8E;AAC9E,wBAAgB,yCAAyC,CACvD,KAAK,EAAE,qBAAqB,GAC3B,2BAA2B,CA0B7B;AAED,+EAA+E;AAC/E,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,gBAAgB,GAAG,mBAAmB,GACvD,MAAM,EAAE,CAYV;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,gBAAgB,EAAE,gBAAgB,GAAG,mBAAmB,GACvD,2BAA2B,EAAE,CAO/B;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,gBAAgB,EAAE,gBAAgB,GAAG,mBAAmB,GACvD,mCAAmC,EAAE,CASvC;AAED;;;GAGG;AACH,wBAAgB,sCAAsC,CACpD,gBAAgB,EAAE,gBAAgB,GAAG,mBAAmB,GACvD,mCAAmC,EAAE,CAEvC;AAED,sFAAsF;AACtF,wBAAgB,mCAAmC,CACjD,SAAS,EAAE,MAAM,GAChB,mBAAmB,EAAE,CAKvB;AAED,qFAAqF;AACrF,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,2BAA2B,GACpC,mBAAmB,EAAE,CAKvB;AAED,sFAAsF;AACtF,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,gBAAgB,GAAG,mBAAmB,GACvD,MAAM,EAAE,CAIV;AAED;;;;;;GAMG;AACH,wBAAgB,wCAAwC,CACtD,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,gBAAgB,GAAG,mBAAmB,GACvD,8BAA8B,EAAE,CAKlC;AAED;;;GAGG;AACH,wBAAgB,wCAAwC,CACtD,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,gBAAgB,GAAG,mBAAmB,GACvD,8BAA8B,EAAE,CAkBlC;AAED;;;;;GAKG;AACH,wBAAgB,uCAAuC,CACrD,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,gBAAgB,GAAG,mBAAmB,GACvD,8BAA8B,EAAE,EAAE,CAiDpC;AAED;;;;;GAKG;AACH,wBAAgB,sCAAsC,CACpD,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,gBAAgB,GAAG,mBAAmB,GACvD,8BAA8B,EAAE,CAKlC;AAED,6EAA6E;AAC7E,wBAAgB,sCAAsC,CACpD,gBAAgB,EAAE,gBAAgB,GAAG,mBAAmB,GACvD,MAAM,CAQR"}
|