@libraz/libcantus 1.0.1 → 1.2.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 +27 -65
- package/README_ja.md +28 -66
- package/dist/analyze/index.cjs +11 -7
- package/dist/analyze/index.cjs.map +1 -1
- package/dist/analyze/index.d.cts +79 -144
- package/dist/analyze/index.d.ts +79 -144
- package/dist/analyze/index.js +20 -16
- package/dist/chunk-35NBV2FT.cjs +145 -0
- package/dist/chunk-35NBV2FT.cjs.map +1 -0
- package/dist/{chunk-UADYAYAT.cjs → chunk-3R3QVKY5.cjs} +1353 -580
- package/dist/chunk-3R3QVKY5.cjs.map +1 -0
- package/dist/{chunk-WWURE4XT.cjs → chunk-76ZBTRG2.cjs} +624 -729
- package/dist/chunk-76ZBTRG2.cjs.map +1 -0
- package/dist/{chunk-FVSI36UV.js → chunk-7KG3RTYS.js} +197 -110
- package/dist/chunk-7KG3RTYS.js.map +1 -0
- package/dist/{chunk-VTI6FOLB.js → chunk-AGOVW7U6.js} +709 -133
- package/dist/chunk-AGOVW7U6.js.map +1 -0
- package/dist/{chunk-E3F4AHAH.cjs → chunk-CGBADIO5.cjs} +221 -134
- package/dist/chunk-CGBADIO5.cjs.map +1 -0
- package/dist/{chunk-6XH6QZYQ.cjs → chunk-DSMJRXCZ.cjs} +1455 -849
- package/dist/chunk-DSMJRXCZ.cjs.map +1 -0
- package/dist/{chunk-PKFNUHDY.js → chunk-FBH75DAY.js} +1218 -612
- package/dist/chunk-FBH75DAY.js.map +1 -0
- package/dist/chunk-H2KJHBW4.js +3329 -0
- package/dist/chunk-H2KJHBW4.js.map +1 -0
- package/dist/chunk-HPVSH7SF.cjs +2294 -0
- package/dist/chunk-HPVSH7SF.cjs.map +1 -0
- package/dist/{chunk-MXO72PLY.cjs → chunk-HWHGOVO6.cjs} +21 -19
- package/dist/chunk-HWHGOVO6.cjs.map +1 -0
- package/dist/chunk-HYJJ2V2I.js +2294 -0
- package/dist/chunk-HYJJ2V2I.js.map +1 -0
- package/dist/{chunk-AFM2ULJH.cjs → chunk-J7FHVZII.cjs} +1567 -1067
- package/dist/chunk-J7FHVZII.cjs.map +1 -0
- package/dist/chunk-K6OZXIR6.js +1 -0
- package/dist/{chunk-H3VORETI.js → chunk-M5RYMAFI.js} +487 -592
- package/dist/chunk-M5RYMAFI.js.map +1 -0
- package/dist/chunk-NB25P3EH.js +363 -0
- package/dist/chunk-NB25P3EH.js.map +1 -0
- package/dist/{chunk-TTCLJX6D.js → chunk-NFJ4P6ZZ.js} +10 -8
- package/dist/chunk-NFJ4P6ZZ.js.map +1 -0
- package/dist/chunk-NM7UAMC3.cjs +457 -0
- package/dist/chunk-NM7UAMC3.cjs.map +1 -0
- package/dist/chunk-PM4XJE2Y.cjs +363 -0
- package/dist/chunk-PM4XJE2Y.cjs.map +1 -0
- package/dist/chunk-PUKJP2Z5.js +145 -0
- package/dist/chunk-PUKJP2Z5.js.map +1 -0
- package/dist/{chunk-VOHZB45S.js → chunk-Q6LFSAKV.js} +1321 -821
- package/dist/chunk-Q6LFSAKV.js.map +1 -0
- package/dist/{chunk-INHVXP6Z.js → chunk-RFIBF2RR.js} +1203 -430
- package/dist/chunk-RFIBF2RR.js.map +1 -0
- package/dist/{chunk-Q2WGKJNN.cjs → chunk-S5BKZZGM.cjs} +699 -123
- package/dist/chunk-S5BKZZGM.cjs.map +1 -0
- package/dist/chunk-SGLEQVJH.cjs +3329 -0
- package/dist/chunk-SGLEQVJH.cjs.map +1 -0
- package/dist/chunk-UGLFDG7L.cjs +1 -0
- package/dist/chunk-UGLFDG7L.cjs.map +1 -0
- package/dist/{chunk-YH3BIKHH.js → chunk-UMWZ4ZET.js} +146 -49
- package/dist/chunk-UMWZ4ZET.js.map +1 -0
- package/dist/{index-szBv3496.d.ts → coerce-DP0vYu-x.d.ts} +286 -199
- package/dist/{index-C_8o--VE.d.cts → coerce-DRERzdve.d.cts} +286 -199
- package/dist/core/index.cjs +9 -5
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +122 -108
- package/dist/core/index.d.ts +122 -108
- package/dist/core/index.js +32 -28
- package/dist/generate/index.cjs +8 -8
- package/dist/generate/index.d.cts +168 -84
- package/dist/generate/index.d.ts +168 -84
- package/dist/generate/index.js +7 -7
- package/dist/{index-CGpRv5sl.d.cts → index-9eoQs2C1.d.ts} +34 -19
- package/dist/{index-CCNJRG-P.d.cts → index-B9QLziDe.d.cts} +293 -56
- package/dist/{index-Dzr13q3d.d.cts → index-BBWNZS0f.d.cts} +135 -58
- package/dist/{index-9wcMhG73.d.ts → index-BHIUyjhZ.d.ts} +293 -56
- package/dist/{index-BGFW-8P2.d.cts → index-BJgP97N1.d.ts} +196 -114
- package/dist/{index-CunYKLiu.d.ts → index-BL5N2Oyz.d.cts} +1 -1
- package/dist/{index-Cj49F892.d.ts → index-BMweUlm5.d.cts} +63 -23
- package/dist/{index-CgHqxdps.d.ts → index-BNSM-DSk.d.cts} +196 -114
- package/dist/{index-D57QRbVn.d.ts → index-BRMbPkHE.d.ts} +480 -254
- package/dist/{index-Chbst3Jx.d.ts → index-CJBBiAmU.d.ts} +135 -58
- package/dist/{index-BkGmlyI3.d.cts → index-CL4b4gUQ.d.ts} +63 -23
- package/dist/{index-B9MNZboQ.d.ts → index-Cy15oTvh.d.cts} +52 -22
- package/dist/{index-B9MNZboQ.d.cts → index-Cy15oTvh.d.ts} +52 -22
- package/dist/{index-BO6xE9YU.d.cts → index-DGCNKAUr.d.cts} +480 -254
- package/dist/{index-B4o55NDr.d.cts → index-Dw2DP7vm.d.ts} +1 -1
- package/dist/{index-G1uwGGWQ.d.ts → index-cHvbYgJI.d.cts} +34 -19
- package/dist/index.cjs +42 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +14 -14
- package/dist/index.d.ts +14 -14
- package/dist/index.js +82 -54
- package/dist/{masks-DYbE485J.d.cts → masks-Cc7-MzzY.d.ts} +49 -2
- package/dist/{masks-DYbE485J.d.ts → masks-pADfTOiD.d.cts} +49 -2
- package/dist/model/index.cjs +19 -12
- package/dist/model/index.cjs.map +1 -1
- package/dist/model/index.d.cts +504 -182
- package/dist/model/index.d.ts +504 -182
- package/dist/model/index.js +18 -11
- package/dist/{positional-Cptlj-xs.d.ts → positional-DJgs6ltD.d.ts} +85 -8
- package/dist/{positional-DvH_sd8u.d.cts → positional-DMZer-FM.d.cts} +85 -8
- package/dist/theory/index.cjs +35 -6
- package/dist/theory/index.cjs.map +1 -1
- package/dist/theory/index.d.cts +257 -62
- package/dist/theory/index.d.ts +257 -62
- package/dist/theory/index.js +41 -12
- package/package.json +7 -5
- package/dist/chunk-2LCPM3EG.js +0 -3224
- package/dist/chunk-2LCPM3EG.js.map +0 -1
- package/dist/chunk-6XH6QZYQ.cjs.map +0 -1
- package/dist/chunk-6XPTBE7Y.cjs +0 -49
- package/dist/chunk-6XPTBE7Y.cjs.map +0 -1
- package/dist/chunk-AFM2ULJH.cjs.map +0 -1
- package/dist/chunk-B6XNKWZV.cjs +0 -3224
- package/dist/chunk-B6XNKWZV.cjs.map +0 -1
- package/dist/chunk-E3F4AHAH.cjs.map +0 -1
- package/dist/chunk-ELCTZUJJ.js +0 -379
- package/dist/chunk-ELCTZUJJ.js.map +0 -1
- package/dist/chunk-FVSI36UV.js.map +0 -1
- package/dist/chunk-H3VORETI.js.map +0 -1
- package/dist/chunk-H42UHPYW.js +0 -1577
- package/dist/chunk-H42UHPYW.js.map +0 -1
- package/dist/chunk-HFPS7JFD.js +0 -1
- package/dist/chunk-INHVXP6Z.js.map +0 -1
- package/dist/chunk-K4ZJUGF4.cjs +0 -379
- package/dist/chunk-K4ZJUGF4.cjs.map +0 -1
- package/dist/chunk-KNJEKLKV.js +0 -49
- package/dist/chunk-KNJEKLKV.js.map +0 -1
- package/dist/chunk-MXO72PLY.cjs.map +0 -1
- package/dist/chunk-NLEU4QSE.cjs +0 -360
- package/dist/chunk-NLEU4QSE.cjs.map +0 -1
- package/dist/chunk-OE6WK2Y2.cjs +0 -1577
- package/dist/chunk-OE6WK2Y2.cjs.map +0 -1
- package/dist/chunk-PKFNUHDY.js.map +0 -1
- package/dist/chunk-Q2WGKJNN.cjs.map +0 -1
- package/dist/chunk-RHIJ3S4I.cjs +0 -1
- package/dist/chunk-RHIJ3S4I.cjs.map +0 -1
- package/dist/chunk-TTCLJX6D.js.map +0 -1
- package/dist/chunk-UADYAYAT.cjs.map +0 -1
- package/dist/chunk-VOHZB45S.js.map +0 -1
- package/dist/chunk-VTI6FOLB.js.map +0 -1
- package/dist/chunk-WWURE4XT.cjs.map +0 -1
- package/dist/chunk-YH3BIKHH.js.map +0 -1
- /package/dist/{chunk-HFPS7JFD.js.map → chunk-K6OZXIR6.js.map} +0 -0
package/dist/model/index.js
CHANGED
|
@@ -16,29 +16,36 @@ import {
|
|
|
16
16
|
Timeline,
|
|
17
17
|
Tuning,
|
|
18
18
|
Voicing
|
|
19
|
-
} from "../chunk-
|
|
20
|
-
import "../chunk-
|
|
21
|
-
import "../chunk-
|
|
22
|
-
import "../chunk-
|
|
23
|
-
import "../chunk-
|
|
24
|
-
import "../chunk-
|
|
25
|
-
import "../chunk-
|
|
26
|
-
import "../chunk-
|
|
27
|
-
import "../chunk-
|
|
19
|
+
} from "../chunk-FBH75DAY.js";
|
|
20
|
+
import "../chunk-HYJJ2V2I.js";
|
|
21
|
+
import "../chunk-UMWZ4ZET.js";
|
|
22
|
+
import "../chunk-Q6LFSAKV.js";
|
|
23
|
+
import "../chunk-H2KJHBW4.js";
|
|
24
|
+
import "../chunk-7KG3RTYS.js";
|
|
25
|
+
import "../chunk-PUKJP2Z5.js";
|
|
26
|
+
import "../chunk-M5RYMAFI.js";
|
|
27
|
+
import "../chunk-NB25P3EH.js";
|
|
28
28
|
import {
|
|
29
29
|
NoteSafety
|
|
30
|
-
} from "../chunk-
|
|
31
|
-
import
|
|
30
|
+
} from "../chunk-RFIBF2RR.js";
|
|
31
|
+
import {
|
|
32
|
+
BudgetExceededError,
|
|
33
|
+
InvalidInputError,
|
|
34
|
+
NoSolutionError
|
|
35
|
+
} from "../chunk-AGOVW7U6.js";
|
|
32
36
|
export {
|
|
33
37
|
Arrangement,
|
|
38
|
+
BudgetExceededError,
|
|
34
39
|
Chord,
|
|
35
40
|
Composer,
|
|
36
41
|
Duration,
|
|
37
42
|
Instrument,
|
|
38
43
|
Interval,
|
|
44
|
+
InvalidInputError,
|
|
39
45
|
Key,
|
|
40
46
|
Meter,
|
|
41
47
|
Motif,
|
|
48
|
+
NoSolutionError,
|
|
42
49
|
Note,
|
|
43
50
|
NoteSafety,
|
|
44
51
|
Progression,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as Articulation } from './index-
|
|
1
|
+
import { a as Articulation } from './index-Cy15oTvh.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Every limb a percussionist strikes with, in declaration order.
|
|
@@ -68,6 +68,17 @@ type PercussionProfile = InstrumentProfileCommon & {
|
|
|
68
68
|
limbs: readonly Limb[];
|
|
69
69
|
/** Limbs that can strike each voice, in preference order, keyed by MIDI note. */
|
|
70
70
|
reach: Readonly<Record<number, readonly Limb[]>>;
|
|
71
|
+
/**
|
|
72
|
+
* Voices dubbed over the kit on a pass of their own, by MIDI note number.
|
|
73
|
+
*
|
|
74
|
+
* A tambourine or a shaker riding a groove whose backbeat already commits
|
|
75
|
+
* both hands is a second pass, not a third hand: it is played over the kit,
|
|
76
|
+
* so it takes no limb from the kit and none from another overdub. Such a
|
|
77
|
+
* voice is still held in a hand on its own pass, so it keeps its `reach`
|
|
78
|
+
* entry and remains a voice of the instrument; this names which of them are
|
|
79
|
+
* played that way.
|
|
80
|
+
*/
|
|
81
|
+
overdub?: readonly number[];
|
|
71
82
|
};
|
|
72
83
|
/**
|
|
73
84
|
* An instrument the library can check a passage against.
|
|
@@ -75,6 +86,36 @@ type PercussionProfile = InstrumentProfileCommon & {
|
|
|
75
86
|
* @category Core
|
|
76
87
|
*/
|
|
77
88
|
type InstrumentProfile = StringedProfile | PercussionProfile;
|
|
89
|
+
declare const checked: unique symbol;
|
|
90
|
+
/**
|
|
91
|
+
* A neck whose every field has been checked against the domain it declares.
|
|
92
|
+
*
|
|
93
|
+
* @category Core
|
|
94
|
+
*/
|
|
95
|
+
type ValidatedStringedProfile = StringedProfile & {
|
|
96
|
+
readonly [checked]: true;
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* A kit whose every field has been checked against the domain it declares.
|
|
100
|
+
*
|
|
101
|
+
* @category Core
|
|
102
|
+
*/
|
|
103
|
+
type ValidatedPercussionProfile = PercussionProfile & {
|
|
104
|
+
readonly [checked]: true;
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* A profile whose every field has been checked against the domain it declares.
|
|
108
|
+
*
|
|
109
|
+
* The mark is carried by the type alone — nothing is added to the object, so a
|
|
110
|
+
* validated profile serializes exactly as the plain one it was made from. Its
|
|
111
|
+
* only source is {@link toInstrumentProfile}, which is what makes the mark worth
|
|
112
|
+
* anything: the routines that read a profile note by note take this rather than
|
|
113
|
+
* a plain {@link InstrumentProfile}, so a path that skipped the checks does not
|
|
114
|
+
* compile instead of failing on the one passage that happens to expose it.
|
|
115
|
+
*
|
|
116
|
+
* @category Core
|
|
117
|
+
*/
|
|
118
|
+
type ValidatedProfile = ValidatedStringedProfile | ValidatedPercussionProfile;
|
|
78
119
|
/**
|
|
79
120
|
* Anything that names an instrument: a plain {@link InstrumentProfile}, or a
|
|
80
121
|
* value that serializes to one such as the `Instrument` class.
|
|
@@ -89,6 +130,41 @@ type InstrumentProfileLike = InstrumentProfile | {
|
|
|
89
130
|
/** The profile data this value stands for. */
|
|
90
131
|
toJSON(): InstrumentProfile;
|
|
91
132
|
};
|
|
133
|
+
/**
|
|
134
|
+
* Resolve any instrument-shaped value to a plain {@link InstrumentProfile}.
|
|
135
|
+
*
|
|
136
|
+
* The counterpart of {@link toNoteData} for instruments: an entry point takes
|
|
137
|
+
* whatever form the caller has — the profile a project file holds, one of the
|
|
138
|
+
* built-in profiles, or an `Instrument` instance — and gets one shape back. An
|
|
139
|
+
* instance is accepted through its `toJSON` method rather than by its type,
|
|
140
|
+
* because the core layer cannot import the model layer that defines the class.
|
|
141
|
+
*
|
|
142
|
+
* @param value A plain profile, or a value whose `toJSON` returns one.
|
|
143
|
+
* @param name What the instrument is called in an error message, so a caller
|
|
144
|
+
* holding several of them hears which one was malformed.
|
|
145
|
+
* @returns The validated profile.
|
|
146
|
+
* @throws If the value names no instrument, or the instrument it names is
|
|
147
|
+
* contradictory — a neck with no strings, a fret count that is no count, or a
|
|
148
|
+
* kit no limb reaches.
|
|
149
|
+
* @category Core
|
|
150
|
+
*/
|
|
151
|
+
declare function toInstrumentProfile(value: InstrumentProfileLike, name?: string): ValidatedProfile;
|
|
152
|
+
/**
|
|
153
|
+
* Resolve any instrument-shaped value to a plain {@link StringedProfile}.
|
|
154
|
+
*
|
|
155
|
+
* What {@link toInstrumentProfile} is for an entry point that reads any
|
|
156
|
+
* instrument, this is for one that only has a neck to work with: a bass line
|
|
157
|
+
* placed on strings and frets cannot be written for a kit, and saying so by
|
|
158
|
+
* name is more use than a missing `tuning` surfacing later as a note the
|
|
159
|
+
* generator could not place.
|
|
160
|
+
*
|
|
161
|
+
* @param value A plain profile, or a value whose `toJSON` returns one.
|
|
162
|
+
* @param name What the instrument is called in an error message.
|
|
163
|
+
* @returns The validated profile, narrowed to the stringed family.
|
|
164
|
+
* @throws If the value names no instrument, or names one with no strings.
|
|
165
|
+
* @category Core
|
|
166
|
+
*/
|
|
167
|
+
declare function toStringedProfile(value: InstrumentProfileLike, name?: string): ValidatedStringedProfile;
|
|
92
168
|
/**
|
|
93
169
|
* A fretting-hand position: which string, and how far up the neck.
|
|
94
170
|
*
|
|
@@ -118,7 +194,7 @@ type StringFingering = {
|
|
|
118
194
|
* ```
|
|
119
195
|
* @category Core
|
|
120
196
|
*/
|
|
121
|
-
declare function instrumentRange(profile:
|
|
197
|
+
declare function instrumentRange(profile: InstrumentProfileLike): {
|
|
122
198
|
low: number;
|
|
123
199
|
high: number;
|
|
124
200
|
};
|
|
@@ -134,7 +210,7 @@ declare function instrumentRange(profile: InstrumentProfile): {
|
|
|
134
210
|
* produces it.
|
|
135
211
|
* @category Core
|
|
136
212
|
*/
|
|
137
|
-
declare function canSound(profile:
|
|
213
|
+
declare function canSound(profile: InstrumentProfileLike, pitch: number): boolean;
|
|
138
214
|
/**
|
|
139
215
|
* Every position on the neck that sounds a pitch, lowest string first.
|
|
140
216
|
*
|
|
@@ -143,7 +219,7 @@ declare function canSound(profile: InstrumentProfile, pitch: number): boolean;
|
|
|
143
219
|
* @returns One entry per string that reaches the pitch; empty when none does.
|
|
144
220
|
* @category Core
|
|
145
221
|
*/
|
|
146
|
-
declare function fingeringsFor(profile:
|
|
222
|
+
declare function fingeringsFor(profile: InstrumentProfileLike, pitch: number): StringFingering[];
|
|
147
223
|
/**
|
|
148
224
|
* Move a pitch by whole octaves until the instrument can sound it.
|
|
149
225
|
*
|
|
@@ -154,8 +230,9 @@ declare function fingeringsFor(profile: StringedProfile, pitch: number): StringF
|
|
|
154
230
|
*
|
|
155
231
|
* @param pitch MIDI pitch to place.
|
|
156
232
|
* @param profile The instrument.
|
|
157
|
-
* @returns The nearest octave transposition the instrument sounds,
|
|
158
|
-
*
|
|
233
|
+
* @returns The nearest octave transposition the instrument sounds, taking the
|
|
234
|
+
* upper one when two are equally near; the pitch unchanged when no
|
|
235
|
+
* transposition of it is available.
|
|
159
236
|
*
|
|
160
237
|
* @example
|
|
161
238
|
* ```ts
|
|
@@ -164,7 +241,7 @@ declare function fingeringsFor(profile: StringedProfile, pitch: number): StringF
|
|
|
164
241
|
* ```
|
|
165
242
|
* @category Core
|
|
166
243
|
*/
|
|
167
|
-
declare function foldIntoRange(pitch: number, profile:
|
|
244
|
+
declare function foldIntoRange(pitch: number, profile: InstrumentProfileLike): number;
|
|
168
245
|
|
|
169
246
|
/**
|
|
170
247
|
* Hierarchical seeds: one project number that addresses every part.
|
|
@@ -284,4 +361,4 @@ declare function createPositionalRng(seed: number): PositionalRng;
|
|
|
284
361
|
*/
|
|
285
362
|
declare function includeAt(rng: PositionalRng, complexity: number, ...path: SeedPath): boolean;
|
|
286
363
|
|
|
287
|
-
export { type InstrumentProfile as I, LIMBS as L, type PercussionProfile as P, type SeedPath as S, type InstrumentProfileCommon as a, type InstrumentProfileLike as b, type Limb as c, type PositionalRng as d, type StringFingering as e, type StringedProfile as f,
|
|
364
|
+
export { type InstrumentProfile as I, LIMBS as L, type PercussionProfile as P, type SeedPath as S, type ValidatedPercussionProfile as V, type InstrumentProfileCommon as a, type InstrumentProfileLike as b, type Limb as c, type PositionalRng as d, type StringFingering as e, type StringedProfile as f, type ValidatedProfile as g, type ValidatedStringedProfile as h, canSound as i, createPositionalRng as j, deriveSeed as k, fingeringsFor as l, foldIntoRange as m, includeAt as n, instrumentRange as o, toStringedProfile as p, toInstrumentProfile as t };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as Articulation } from './index-
|
|
1
|
+
import { a as Articulation } from './index-Cy15oTvh.cjs';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Every limb a percussionist strikes with, in declaration order.
|
|
@@ -68,6 +68,17 @@ type PercussionProfile = InstrumentProfileCommon & {
|
|
|
68
68
|
limbs: readonly Limb[];
|
|
69
69
|
/** Limbs that can strike each voice, in preference order, keyed by MIDI note. */
|
|
70
70
|
reach: Readonly<Record<number, readonly Limb[]>>;
|
|
71
|
+
/**
|
|
72
|
+
* Voices dubbed over the kit on a pass of their own, by MIDI note number.
|
|
73
|
+
*
|
|
74
|
+
* A tambourine or a shaker riding a groove whose backbeat already commits
|
|
75
|
+
* both hands is a second pass, not a third hand: it is played over the kit,
|
|
76
|
+
* so it takes no limb from the kit and none from another overdub. Such a
|
|
77
|
+
* voice is still held in a hand on its own pass, so it keeps its `reach`
|
|
78
|
+
* entry and remains a voice of the instrument; this names which of them are
|
|
79
|
+
* played that way.
|
|
80
|
+
*/
|
|
81
|
+
overdub?: readonly number[];
|
|
71
82
|
};
|
|
72
83
|
/**
|
|
73
84
|
* An instrument the library can check a passage against.
|
|
@@ -75,6 +86,36 @@ type PercussionProfile = InstrumentProfileCommon & {
|
|
|
75
86
|
* @category Core
|
|
76
87
|
*/
|
|
77
88
|
type InstrumentProfile = StringedProfile | PercussionProfile;
|
|
89
|
+
declare const checked: unique symbol;
|
|
90
|
+
/**
|
|
91
|
+
* A neck whose every field has been checked against the domain it declares.
|
|
92
|
+
*
|
|
93
|
+
* @category Core
|
|
94
|
+
*/
|
|
95
|
+
type ValidatedStringedProfile = StringedProfile & {
|
|
96
|
+
readonly [checked]: true;
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* A kit whose every field has been checked against the domain it declares.
|
|
100
|
+
*
|
|
101
|
+
* @category Core
|
|
102
|
+
*/
|
|
103
|
+
type ValidatedPercussionProfile = PercussionProfile & {
|
|
104
|
+
readonly [checked]: true;
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* A profile whose every field has been checked against the domain it declares.
|
|
108
|
+
*
|
|
109
|
+
* The mark is carried by the type alone — nothing is added to the object, so a
|
|
110
|
+
* validated profile serializes exactly as the plain one it was made from. Its
|
|
111
|
+
* only source is {@link toInstrumentProfile}, which is what makes the mark worth
|
|
112
|
+
* anything: the routines that read a profile note by note take this rather than
|
|
113
|
+
* a plain {@link InstrumentProfile}, so a path that skipped the checks does not
|
|
114
|
+
* compile instead of failing on the one passage that happens to expose it.
|
|
115
|
+
*
|
|
116
|
+
* @category Core
|
|
117
|
+
*/
|
|
118
|
+
type ValidatedProfile = ValidatedStringedProfile | ValidatedPercussionProfile;
|
|
78
119
|
/**
|
|
79
120
|
* Anything that names an instrument: a plain {@link InstrumentProfile}, or a
|
|
80
121
|
* value that serializes to one such as the `Instrument` class.
|
|
@@ -89,6 +130,41 @@ type InstrumentProfileLike = InstrumentProfile | {
|
|
|
89
130
|
/** The profile data this value stands for. */
|
|
90
131
|
toJSON(): InstrumentProfile;
|
|
91
132
|
};
|
|
133
|
+
/**
|
|
134
|
+
* Resolve any instrument-shaped value to a plain {@link InstrumentProfile}.
|
|
135
|
+
*
|
|
136
|
+
* The counterpart of {@link toNoteData} for instruments: an entry point takes
|
|
137
|
+
* whatever form the caller has — the profile a project file holds, one of the
|
|
138
|
+
* built-in profiles, or an `Instrument` instance — and gets one shape back. An
|
|
139
|
+
* instance is accepted through its `toJSON` method rather than by its type,
|
|
140
|
+
* because the core layer cannot import the model layer that defines the class.
|
|
141
|
+
*
|
|
142
|
+
* @param value A plain profile, or a value whose `toJSON` returns one.
|
|
143
|
+
* @param name What the instrument is called in an error message, so a caller
|
|
144
|
+
* holding several of them hears which one was malformed.
|
|
145
|
+
* @returns The validated profile.
|
|
146
|
+
* @throws If the value names no instrument, or the instrument it names is
|
|
147
|
+
* contradictory — a neck with no strings, a fret count that is no count, or a
|
|
148
|
+
* kit no limb reaches.
|
|
149
|
+
* @category Core
|
|
150
|
+
*/
|
|
151
|
+
declare function toInstrumentProfile(value: InstrumentProfileLike, name?: string): ValidatedProfile;
|
|
152
|
+
/**
|
|
153
|
+
* Resolve any instrument-shaped value to a plain {@link StringedProfile}.
|
|
154
|
+
*
|
|
155
|
+
* What {@link toInstrumentProfile} is for an entry point that reads any
|
|
156
|
+
* instrument, this is for one that only has a neck to work with: a bass line
|
|
157
|
+
* placed on strings and frets cannot be written for a kit, and saying so by
|
|
158
|
+
* name is more use than a missing `tuning` surfacing later as a note the
|
|
159
|
+
* generator could not place.
|
|
160
|
+
*
|
|
161
|
+
* @param value A plain profile, or a value whose `toJSON` returns one.
|
|
162
|
+
* @param name What the instrument is called in an error message.
|
|
163
|
+
* @returns The validated profile, narrowed to the stringed family.
|
|
164
|
+
* @throws If the value names no instrument, or names one with no strings.
|
|
165
|
+
* @category Core
|
|
166
|
+
*/
|
|
167
|
+
declare function toStringedProfile(value: InstrumentProfileLike, name?: string): ValidatedStringedProfile;
|
|
92
168
|
/**
|
|
93
169
|
* A fretting-hand position: which string, and how far up the neck.
|
|
94
170
|
*
|
|
@@ -118,7 +194,7 @@ type StringFingering = {
|
|
|
118
194
|
* ```
|
|
119
195
|
* @category Core
|
|
120
196
|
*/
|
|
121
|
-
declare function instrumentRange(profile:
|
|
197
|
+
declare function instrumentRange(profile: InstrumentProfileLike): {
|
|
122
198
|
low: number;
|
|
123
199
|
high: number;
|
|
124
200
|
};
|
|
@@ -134,7 +210,7 @@ declare function instrumentRange(profile: InstrumentProfile): {
|
|
|
134
210
|
* produces it.
|
|
135
211
|
* @category Core
|
|
136
212
|
*/
|
|
137
|
-
declare function canSound(profile:
|
|
213
|
+
declare function canSound(profile: InstrumentProfileLike, pitch: number): boolean;
|
|
138
214
|
/**
|
|
139
215
|
* Every position on the neck that sounds a pitch, lowest string first.
|
|
140
216
|
*
|
|
@@ -143,7 +219,7 @@ declare function canSound(profile: InstrumentProfile, pitch: number): boolean;
|
|
|
143
219
|
* @returns One entry per string that reaches the pitch; empty when none does.
|
|
144
220
|
* @category Core
|
|
145
221
|
*/
|
|
146
|
-
declare function fingeringsFor(profile:
|
|
222
|
+
declare function fingeringsFor(profile: InstrumentProfileLike, pitch: number): StringFingering[];
|
|
147
223
|
/**
|
|
148
224
|
* Move a pitch by whole octaves until the instrument can sound it.
|
|
149
225
|
*
|
|
@@ -154,8 +230,9 @@ declare function fingeringsFor(profile: StringedProfile, pitch: number): StringF
|
|
|
154
230
|
*
|
|
155
231
|
* @param pitch MIDI pitch to place.
|
|
156
232
|
* @param profile The instrument.
|
|
157
|
-
* @returns The nearest octave transposition the instrument sounds,
|
|
158
|
-
*
|
|
233
|
+
* @returns The nearest octave transposition the instrument sounds, taking the
|
|
234
|
+
* upper one when two are equally near; the pitch unchanged when no
|
|
235
|
+
* transposition of it is available.
|
|
159
236
|
*
|
|
160
237
|
* @example
|
|
161
238
|
* ```ts
|
|
@@ -164,7 +241,7 @@ declare function fingeringsFor(profile: StringedProfile, pitch: number): StringF
|
|
|
164
241
|
* ```
|
|
165
242
|
* @category Core
|
|
166
243
|
*/
|
|
167
|
-
declare function foldIntoRange(pitch: number, profile:
|
|
244
|
+
declare function foldIntoRange(pitch: number, profile: InstrumentProfileLike): number;
|
|
168
245
|
|
|
169
246
|
/**
|
|
170
247
|
* Hierarchical seeds: one project number that addresses every part.
|
|
@@ -284,4 +361,4 @@ declare function createPositionalRng(seed: number): PositionalRng;
|
|
|
284
361
|
*/
|
|
285
362
|
declare function includeAt(rng: PositionalRng, complexity: number, ...path: SeedPath): boolean;
|
|
286
363
|
|
|
287
|
-
export { type InstrumentProfile as I, LIMBS as L, type PercussionProfile as P, type SeedPath as S, type InstrumentProfileCommon as a, type InstrumentProfileLike as b, type Limb as c, type PositionalRng as d, type StringFingering as e, type StringedProfile as f,
|
|
364
|
+
export { type InstrumentProfile as I, LIMBS as L, type PercussionProfile as P, type SeedPath as S, type ValidatedPercussionProfile as V, type InstrumentProfileCommon as a, type InstrumentProfileLike as b, type Limb as c, type PositionalRng as d, type StringFingering as e, type StringedProfile as f, type ValidatedProfile as g, type ValidatedStringedProfile as h, canSound as i, createPositionalRng as j, deriveSeed as k, fingeringsFor as l, foldIntoRange as m, includeAt as n, instrumentRange as o, toStringedProfile as p, toInstrumentProfile as t };
|
package/dist/theory/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-UGLFDG7L.cjs');
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
@@ -16,16 +16,16 @@
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
|
|
19
|
+
var _chunk76ZBTRG2cjs = require('../chunk-76ZBTRG2.cjs');
|
|
19
20
|
|
|
20
21
|
|
|
21
22
|
|
|
22
23
|
|
|
23
24
|
|
|
24
25
|
|
|
25
|
-
var _chunkWWURE4XTcjs = require('../chunk-WWURE4XT.cjs');
|
|
26
26
|
|
|
27
27
|
|
|
28
|
-
var
|
|
28
|
+
var _chunkPM4XJE2Ycjs = require('../chunk-PM4XJE2Y.cjs');
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
|
|
@@ -132,8 +132,6 @@ var _chunk6XPTBE7Ycjs = require('../chunk-6XPTBE7Y.cjs');
|
|
|
132
132
|
|
|
133
133
|
|
|
134
134
|
|
|
135
|
-
var _chunkUADYAYATcjs = require('../chunk-UADYAYAT.cjs');
|
|
136
|
-
require('../chunk-Q2WGKJNN.cjs');
|
|
137
135
|
|
|
138
136
|
|
|
139
137
|
|
|
@@ -144,11 +142,13 @@ require('../chunk-Q2WGKJNN.cjs');
|
|
|
144
142
|
|
|
145
143
|
|
|
146
144
|
|
|
145
|
+
var _chunk3R3QVKY5cjs = require('../chunk-3R3QVKY5.cjs');
|
|
147
146
|
|
|
148
147
|
|
|
149
148
|
|
|
150
149
|
|
|
151
150
|
|
|
151
|
+
var _chunkS5BKZZGMcjs = require('../chunk-S5BKZZGM.cjs');
|
|
152
152
|
|
|
153
153
|
|
|
154
154
|
|
|
@@ -263,5 +263,34 @@ require('../chunk-Q2WGKJNN.cjs');
|
|
|
263
263
|
|
|
264
264
|
|
|
265
265
|
|
|
266
|
-
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
exports.ALTERED_MASK = _chunk3R3QVKY5cjs.ALTERED_MASK; exports.BLUES_MASK = _chunk3R3QVKY5cjs.BLUES_MASK; exports.BudgetExceededError = _chunkS5BKZZGMcjs.BudgetExceededError; exports.CHROMATIC_MASK = _chunk3R3QVKY5cjs.CHROMATIC_MASK; exports.ConsonanceClass = _chunkS5BKZZGMcjs.ConsonanceClass; exports.DORIAN_MASK = _chunk3R3QVKY5cjs.DORIAN_MASK; exports.DOUBLE_HARMONIC_MASK = _chunk3R3QVKY5cjs.DOUBLE_HARMONIC_MASK; exports.HARMONIC_MINOR_MASK = _chunk3R3QVKY5cjs.HARMONIC_MINOR_MASK; exports.InvalidInputError = _chunkS5BKZZGMcjs.InvalidInputError; exports.LOCRIAN_MASK = _chunk3R3QVKY5cjs.LOCRIAN_MASK; exports.LOCRIAN_NATURAL2_MASK = _chunk3R3QVKY5cjs.LOCRIAN_NATURAL2_MASK; exports.LYDIAN_DOMINANT_MASK = _chunk3R3QVKY5cjs.LYDIAN_DOMINANT_MASK; exports.LYDIAN_MASK = _chunk3R3QVKY5cjs.LYDIAN_MASK; exports.MAJOR_MASK = _chunk3R3QVKY5cjs.MAJOR_MASK; exports.MAJOR_PENTATONIC_MASK = _chunk3R3QVKY5cjs.MAJOR_PENTATONIC_MASK; exports.MARWA_MASK = _chunk3R3QVKY5cjs.MARWA_MASK; exports.MELODIC_MINOR_MASK = _chunk3R3QVKY5cjs.MELODIC_MINOR_MASK; exports.MINOR_PENTATONIC_MASK = _chunk3R3QVKY5cjs.MINOR_PENTATONIC_MASK; exports.MIXOLYDIAN_B13_MASK = _chunk3R3QVKY5cjs.MIXOLYDIAN_B13_MASK; exports.MIXOLYDIAN_MASK = _chunk3R3QVKY5cjs.MIXOLYDIAN_MASK; exports.MIYAKO_BUSHI_MASK = _chunk3R3QVKY5cjs.MIYAKO_BUSHI_MASK; exports.NAMED_SCALES = _chunk3R3QVKY5cjs.NAMED_SCALES; exports.NATURAL_MINOR_MASK = _chunk3R3QVKY5cjs.NATURAL_MINOR_MASK; exports.NoSolutionError = _chunkS5BKZZGMcjs.NoSolutionError; exports.NoteSafety = _chunk3R3QVKY5cjs.NoteSafety; exports.OCTATONIC_HALF_WHOLE_MASK = _chunk3R3QVKY5cjs.OCTATONIC_HALF_WHOLE_MASK; exports.OCTATONIC_WHOLE_HALF_MASK = _chunk3R3QVKY5cjs.OCTATONIC_WHOLE_HALF_MASK; exports.PHRYGIAN_DOMINANT_MASK = _chunk3R3QVKY5cjs.PHRYGIAN_DOMINANT_MASK; exports.PHRYGIAN_MASK = _chunk3R3QVKY5cjs.PHRYGIAN_MASK; exports.PROFILE_WEIGHTS = _chunk3R3QVKY5cjs.PROFILE_WEIGHTS; exports.PURVI_MASK = _chunk3R3QVKY5cjs.PURVI_MASK; exports.RITSU_MASK = _chunk3R3QVKY5cjs.RITSU_MASK; exports.RYUKYU_MASK = _chunk3R3QVKY5cjs.RYUKYU_MASK; exports.ReasonFlag = _chunk3R3QVKY5cjs.ReasonFlag; exports.SATB_RANGES = _chunk76ZBTRG2cjs.SATB_RANGES; exports.SCALE_ALIASES = _chunk3R3QVKY5cjs.SCALE_ALIASES; exports.SCALE_SYSTEMS = _chunk3R3QVKY5cjs.SCALE_SYSTEMS; exports.TODI_MASK = _chunk3R3QVKY5cjs.TODI_MASK; exports.TRANSPOSING_INSTRUMENTS = _chunk76ZBTRG2cjs.TRANSPOSING_INSTRUMENTS; exports.WHOLE_TONE_MASK = _chunk3R3QVKY5cjs.WHOLE_TONE_MASK; exports.WORLD_SCALES = _chunk3R3QVKY5cjs.WORLD_SCALES; exports.assertKeyVariant = _chunk3R3QVKY5cjs.assertKeyVariant; exports.assertModeMask = _chunk3R3QVKY5cjs.assertModeMask; exports.availableTensions = _chunkPM4XJE2Ycjs.availableTensions; exports.avoidNotes = _chunkPM4XJE2Ycjs.avoidNotes; exports.checkPartWriting = _chunk76ZBTRG2cjs.checkPartWriting; exports.checkSpecies = _chunk76ZBTRG2cjs.checkSpecies; exports.chordFromDegree = _chunk3R3QVKY5cjs.chordFromDegree; exports.chordFromSpan = _chunk3R3QVKY5cjs.chordFromSpan; exports.chordFromSpec = _chunk3R3QVKY5cjs.chordFromSpec; exports.chordPitchClasses = _chunk3R3QVKY5cjs.chordPitchClasses; exports.chordQualities = _chunk3R3QVKY5cjs.chordQualities; exports.chordScaleReport = _chunkPM4XJE2Ycjs.chordScaleReport; exports.chordScales = _chunkPM4XJE2Ycjs.chordScales; exports.chordSpecIntervals = _chunk3R3QVKY5cjs.chordSpecIntervals; exports.chordSpecOf = _chunk3R3QVKY5cjs.chordSpecOf; exports.chordSpecQuality = _chunk3R3QVKY5cjs.chordSpecQuality; exports.chordToneRole = _chunk3R3QVKY5cjs.chordToneRole; exports.classifySpelledInterval = _chunk3R3QVKY5cjs.classifySpelledInterval; exports.createsBattuta = _chunk3R3QVKY5cjs.createsBattuta; exports.createsHiddenParallelPerfect = _chunk3R3QVKY5cjs.createsHiddenParallelPerfect; exports.createsParallelOctave = _chunk3R3QVKY5cjs.createsParallelOctave; exports.createsParallelPerfect = _chunk3R3QVKY5cjs.createsParallelPerfect; exports.createsParallelUnison = _chunk3R3QVKY5cjs.createsParallelUnison; exports.createsVerticalDissonance = _chunk3R3QVKY5cjs.createsVerticalDissonance; exports.createsVoiceCrossing = _chunk3R3QVKY5cjs.createsVoiceCrossing; exports.createsVoiceOverlap = _chunk3R3QVKY5cjs.createsVoiceOverlap; exports.diatonicPitchClasses = _chunk3R3QVKY5cjs.diatonicPitchClasses; exports.diatonicSeventh = _chunk3R3QVKY5cjs.diatonicSeventh; exports.diatonicTriad = _chunk3R3QVKY5cjs.diatonicTriad; exports.dominantKeyOf = _chunk3R3QVKY5cjs.dominantKeyOf; exports.enharmonicKeyOf = _chunk3R3QVKY5cjs.enharmonicKeyOf; exports.enumerateSafePitches = _chunk3R3QVKY5cjs.enumerateSafePitches; exports.evaluateSafety = _chunk3R3QVKY5cjs.evaluateSafety; exports.exceedsSpacing = _chunk3R3QVKY5cjs.exceedsSpacing; exports.figuredBassOf = _chunk76ZBTRG2cjs.figuredBassOf; exports.figuredBassRealization = _chunk76ZBTRG2cjs.figuredBassRealization; exports.formatChordSymbol = _chunk3R3QVKY5cjs.formatChordSymbol; exports.instrumentTransposition = _chunk76ZBTRG2cjs.instrumentTransposition; exports.intervalAboveRoot = _chunk3R3QVKY5cjs.intervalAboveRoot; exports.isAugmentedMelodicInterval = _chunk3R3QVKY5cjs.isAugmentedMelodicInterval; exports.isChordMember = _chunk3R3QVKY5cjs.isChordMember; exports.isForbiddenMelodicLeap = _chunk3R3QVKY5cjs.isForbiddenMelodicLeap; exports.isLeadingToneResolution = _chunk3R3QVKY5cjs.isLeadingToneResolution; exports.isScaleTone = _chunk3R3QVKY5cjs.isScaleTone; exports.isSignatureKey = _chunk3R3QVKY5cjs.isSignatureKey; exports.keyFromFifths = _chunk3R3QVKY5cjs.keyFromFifths; exports.keyRelationBetween = _chunk3R3QVKY5cjs.keyRelationBetween; exports.keySignatureFifths = _chunk3R3QVKY5cjs.keySignatureFifths; exports.majorKey = _chunk3R3QVKY5cjs.majorKey; exports.makeChord = _chunk3R3QVKY5cjs.makeChord; exports.maskFromOffsets = _chunk3R3QVKY5cjs.maskFromOffsets; exports.minorKey = _chunk3R3QVKY5cjs.minorKey; exports.namedScaleMask = _chunk3R3QVKY5cjs.namedScaleMask; exports.nearestScaleTone = _chunk3R3QVKY5cjs.nearestScaleTone; exports.nextVoicing = _chunk76ZBTRG2cjs.nextVoicing; exports.noteNames = _chunk3R3QVKY5cjs.noteNames; exports.parallelKeyOf = _chunk3R3QVKY5cjs.parallelKeyOf; exports.parseChordSymbol = _chunk3R3QVKY5cjs.parseChordSymbol; exports.pitchToScaleDegree = _chunk3R3QVKY5cjs.pitchToScaleDegree; exports.profileWeights = _chunk3R3QVKY5cjs.profileWeights; exports.realizeFiguredBass = _chunk76ZBTRG2cjs.realizeFiguredBass; exports.relatedKeysOf = _chunk3R3QVKY5cjs.relatedKeysOf; exports.relativeKeyOf = _chunk3R3QVKY5cjs.relativeKeyOf; exports.requireScaleMask = _chunk3R3QVKY5cjs.requireScaleMask; exports.resolveKey = _chunk3R3QVKY5cjs.resolveKey; exports.resolveScaleName = _chunk3R3QVKY5cjs.resolveScaleName; exports.roleOf = _chunkPM4XJE2Ycjs.roleOf; exports.scaleByName = _chunk3R3QVKY5cjs.scaleByName; exports.scaleLadderPitch = _chunk3R3QVKY5cjs.scaleLadderPitch; exports.scaleLadderPosition = _chunk3R3QVKY5cjs.scaleLadderPosition; exports.scaleMatchesChord = _chunkPM4XJE2Ycjs.scaleMatchesChord; exports.scaleOf = _chunk3R3QVKY5cjs.scaleOf; exports.scaleSystemOf = _chunk3R3QVKY5cjs.scaleSystemOf; exports.scaleTonesInDegreeOrder = _chunk3R3QVKY5cjs.scaleTonesInDegreeOrder; exports.scalesForChanges = _chunkPM4XJE2Ycjs.scalesForChanges; exports.shiftByScaleDegrees = _chunk3R3QVKY5cjs.shiftByScaleDegrees; exports.spanFromChord = _chunk3R3QVKY5cjs.spanFromChord; exports.spellChord = _chunk3R3QVKY5cjs.spellChord; exports.spellChordFromRoot = _chunk3R3QVKY5cjs.spellChordFromRoot; exports.spellPitch = _chunk3R3QVKY5cjs.spellPitch; exports.spellPitchClass = _chunk3R3QVKY5cjs.spellPitchClass; exports.spellPitchClasses = _chunk3R3QVKY5cjs.spellPitchClasses; exports.spellScale = _chunk3R3QVKY5cjs.spellScale; exports.spellVoicing = _chunk76ZBTRG2cjs.spellVoicing; exports.spelledKeyOf = _chunk3R3QVKY5cjs.spelledKeyOf; exports.subdominantKeyOf = _chunk3R3QVKY5cjs.subdominantKeyOf; exports.supportsFunctionalHarmony = _chunk3R3QVKY5cjs.supportsFunctionalHarmony; exports.toChordData = _chunk3R3QVKY5cjs.toChordData; exports.toKeyScale = _chunk3R3QVKY5cjs.toKeyScale; exports.toSoundingPitch = _chunk76ZBTRG2cjs.toSoundingPitch; exports.toWrittenPitch = _chunk76ZBTRG2cjs.toWrittenPitch; exports.transposeChord = _chunk3R3QVKY5cjs.transposeChord; exports.transposeChordSymbol = _chunk3R3QVKY5cjs.transposeChordSymbol; exports.tryParseChordSymbol = _chunk3R3QVKY5cjs.tryParseChordSymbol; exports.tryResolveKeyName = _chunk3R3QVKY5cjs.tryResolveKeyName; exports.variantOfMask = _chunk3R3QVKY5cjs.variantOfMask; exports.voiceChord = _chunk76ZBTRG2cjs.voiceChord; exports.voiceChordStyled = _chunk76ZBTRG2cjs.voiceChordStyled; exports.voiceIndependence = _chunk3R3QVKY5cjs.voiceIndependence; exports.voiceLeadingCost = _chunk76ZBTRG2cjs.voiceLeadingCost; exports.voiceProgression = _chunk76ZBTRG2cjs.voiceProgression;
|
|
267
296
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/libcantus/libcantus/dist/theory/index.cjs"],"names":[],"mappings":"AAAA,0GAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/libcantus/libcantus/dist/theory/index.cjs"],"names":[],"mappings":"AAAA,0GAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,+jRAAC","file":"/home/runner/work/libcantus/libcantus/dist/theory/index.cjs"}
|