@libraz/libcantus 0.9.4 → 1.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 +61 -261
- package/README_ja.md +115 -0
- package/dist/analyze/index.cjs +54 -7
- package/dist/analyze/index.cjs.map +1 -1
- package/dist/analyze/index.d.cts +213 -456
- package/dist/analyze/index.d.ts +213 -456
- package/dist/analyze/index.js +56 -9
- package/dist/chunk-3JXCW6DX.cjs +3220 -0
- package/dist/chunk-3JXCW6DX.cjs.map +1 -0
- package/dist/chunk-4A2RMUCC.js +7647 -0
- package/dist/chunk-4A2RMUCC.js.map +1 -0
- package/dist/chunk-6XPTBE7Y.cjs +49 -0
- package/dist/chunk-6XPTBE7Y.cjs.map +1 -0
- package/dist/chunk-AFM2ULJH.cjs +5121 -0
- package/dist/chunk-AFM2ULJH.cjs.map +1 -0
- package/dist/chunk-E3F4AHAH.cjs +690 -0
- package/dist/chunk-E3F4AHAH.cjs.map +1 -0
- package/dist/chunk-ELCTZUJJ.js +379 -0
- package/dist/chunk-ELCTZUJJ.js.map +1 -0
- package/dist/chunk-FVSI36UV.js +690 -0
- package/dist/chunk-FVSI36UV.js.map +1 -0
- package/dist/chunk-GEDTJHAC.cjs +1 -0
- package/dist/chunk-GEDTJHAC.cjs.map +1 -0
- package/dist/chunk-GOZG57ER.js +3220 -0
- package/dist/chunk-GOZG57ER.js.map +1 -0
- package/dist/chunk-H3VORETI.js +2243 -0
- package/dist/chunk-H3VORETI.js.map +1 -0
- package/dist/chunk-H42UHPYW.js +1577 -0
- package/dist/chunk-H42UHPYW.js.map +1 -0
- package/dist/chunk-HFPS7JFD.js +1 -0
- package/dist/chunk-INHVXP6Z.js +3053 -0
- package/dist/chunk-INHVXP6Z.js.map +1 -0
- package/dist/chunk-K4ZJUGF4.cjs +379 -0
- package/dist/chunk-K4ZJUGF4.cjs.map +1 -0
- package/dist/chunk-KNJEKLKV.js +49 -0
- package/dist/chunk-KNJEKLKV.js.map +1 -0
- package/dist/chunk-M4CWTJWJ.cjs +7647 -0
- package/dist/chunk-M4CWTJWJ.cjs.map +1 -0
- package/dist/chunk-MXO72PLY.cjs +211 -0
- package/dist/chunk-MXO72PLY.cjs.map +1 -0
- package/dist/chunk-NLEU4QSE.cjs +360 -0
- package/dist/chunk-NLEU4QSE.cjs.map +1 -0
- package/dist/chunk-OE6WK2Y2.cjs +1577 -0
- package/dist/chunk-OE6WK2Y2.cjs.map +1 -0
- package/dist/chunk-Q2WGKJNN.cjs +1064 -0
- package/dist/chunk-Q2WGKJNN.cjs.map +1 -0
- package/dist/chunk-QYQQ5J6E.js +1 -0
- package/dist/chunk-QYQQ5J6E.js.map +1 -0
- package/dist/chunk-RHIJ3S4I.cjs +1 -0
- package/dist/chunk-RHIJ3S4I.cjs.map +1 -0
- package/dist/chunk-TTCLJX6D.js +211 -0
- package/dist/chunk-TTCLJX6D.js.map +1 -0
- package/dist/chunk-UADYAYAT.cjs +3053 -0
- package/dist/chunk-UADYAYAT.cjs.map +1 -0
- package/dist/chunk-VOHZB45S.js +5121 -0
- package/dist/chunk-VOHZB45S.js.map +1 -0
- package/dist/chunk-VTI6FOLB.js +1064 -0
- package/dist/chunk-VTI6FOLB.js.map +1 -0
- package/dist/chunk-WWURE4XT.cjs +2243 -0
- package/dist/chunk-WWURE4XT.cjs.map +1 -0
- package/dist/chunk-YH3BIKHH.js +360 -0
- package/dist/chunk-YH3BIKHH.js.map +1 -0
- package/dist/core/index.cjs +103 -6
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +96 -345
- package/dist/core/index.d.ts +96 -345
- package/dist/core/index.js +104 -7
- package/dist/generate/index.cjs +89 -10
- package/dist/generate/index.cjs.map +1 -1
- package/dist/generate/index.d.cts +437 -1095
- package/dist/generate/index.d.ts +437 -1095
- package/dist/generate/index.js +94 -15
- package/dist/index-9wcMhG73.d.ts +1095 -0
- package/dist/{index-D6b6na69.d.cts → index-B4o55NDr.d.cts} +13 -9
- package/dist/index-B9MNZboQ.d.cts +770 -0
- package/dist/index-B9MNZboQ.d.ts +770 -0
- package/dist/index-BGFW-8P2.d.cts +2307 -0
- package/dist/index-BO6xE9YU.d.cts +1804 -0
- package/dist/index-BkGmlyI3.d.cts +470 -0
- package/dist/index-CCNJRG-P.d.cts +1095 -0
- package/dist/index-CGpRv5sl.d.cts +643 -0
- package/dist/index-C_8o--VE.d.cts +1242 -0
- package/dist/index-CgHqxdps.d.ts +2307 -0
- package/dist/index-Chbst3Jx.d.ts +1343 -0
- package/dist/index-Cj49F892.d.ts +470 -0
- package/dist/{index-tSQh-xwY.d.ts → index-CunYKLiu.d.ts} +13 -9
- package/dist/index-D57QRbVn.d.ts +1804 -0
- package/dist/index-DInQqT8Q.d.cts +66 -0
- package/dist/index-DInQqT8Q.d.ts +66 -0
- package/dist/index-Dzr13q3d.d.cts +1343 -0
- package/dist/index-G1uwGGWQ.d.ts +643 -0
- package/dist/index-szBv3496.d.ts +1242 -0
- package/dist/index.cjs +358 -15
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +17 -15
- package/dist/index.d.ts +17 -15
- package/dist/index.js +407 -64
- package/dist/masks-DYbE485J.d.cts +445 -0
- package/dist/masks-DYbE485J.d.ts +445 -0
- package/dist/model/index.cjs +39 -7
- package/dist/model/index.cjs.map +1 -1
- package/dist/model/index.d.cts +4685 -243
- package/dist/model/index.d.ts +4685 -243
- package/dist/model/index.js +40 -8
- package/dist/positional-Cptlj-xs.d.ts +287 -0
- package/dist/positional-DvH_sd8u.d.cts +287 -0
- package/dist/theory/index.cjs +101 -7
- package/dist/theory/index.cjs.map +1 -1
- package/dist/theory/index.d.cts +513 -173
- package/dist/theory/index.d.ts +513 -173
- package/dist/theory/index.js +118 -24
- package/package.json +16 -11
- package/dist/chunk-36N73KZ3.cjs +0 -246
- package/dist/chunk-36N73KZ3.cjs.map +0 -1
- package/dist/chunk-4HLLZPXT.cjs +0 -3077
- package/dist/chunk-4HLLZPXT.cjs.map +0 -1
- package/dist/chunk-7MGZ7D62.cjs +0 -498
- package/dist/chunk-7MGZ7D62.cjs.map +0 -1
- package/dist/chunk-7NKDPF74.js +0 -3077
- package/dist/chunk-7NKDPF74.js.map +0 -1
- package/dist/chunk-CAN76NCU.cjs +0 -679
- package/dist/chunk-CAN76NCU.cjs.map +0 -1
- package/dist/chunk-D2FAJBYL.js +0 -479
- package/dist/chunk-D2FAJBYL.js.map +0 -1
- package/dist/chunk-EHVEBWM5.js +0 -1449
- package/dist/chunk-EHVEBWM5.js.map +0 -1
- package/dist/chunk-FCANXBAT.cjs +0 -30
- package/dist/chunk-FCANXBAT.cjs.map +0 -1
- package/dist/chunk-FNDWXRRI.cjs +0 -479
- package/dist/chunk-FNDWXRRI.cjs.map +0 -1
- package/dist/chunk-GQSGS2N4.js +0 -173
- package/dist/chunk-GQSGS2N4.js.map +0 -1
- package/dist/chunk-HKGYCQ34.js +0 -53
- package/dist/chunk-HKGYCQ34.js.map +0 -1
- package/dist/chunk-I24MV65U.js +0 -106
- package/dist/chunk-I24MV65U.js.map +0 -1
- package/dist/chunk-KMHOICIY.js +0 -679
- package/dist/chunk-KMHOICIY.js.map +0 -1
- package/dist/chunk-LW53AHQU.cjs +0 -1117
- package/dist/chunk-LW53AHQU.cjs.map +0 -1
- package/dist/chunk-N6IHQUOX.js +0 -1
- package/dist/chunk-NKIBQ6PT.js +0 -30
- package/dist/chunk-NKIBQ6PT.js.map +0 -1
- package/dist/chunk-NP4NA2FB.cjs +0 -106
- package/dist/chunk-NP4NA2FB.cjs.map +0 -1
- package/dist/chunk-NVE34YGZ.cjs +0 -1449
- package/dist/chunk-NVE34YGZ.cjs.map +0 -1
- package/dist/chunk-NYYWMV2C.js +0 -327
- package/dist/chunk-NYYWMV2C.js.map +0 -1
- package/dist/chunk-Q2XUP227.js +0 -845
- package/dist/chunk-Q2XUP227.js.map +0 -1
- package/dist/chunk-Q6OP4U43.cjs +0 -327
- package/dist/chunk-Q6OP4U43.cjs.map +0 -1
- package/dist/chunk-RC6GBMCD.cjs +0 -845
- package/dist/chunk-RC6GBMCD.cjs.map +0 -1
- package/dist/chunk-RK35RIN7.js +0 -1117
- package/dist/chunk-RK35RIN7.js.map +0 -1
- package/dist/chunk-RUMU3UA6.cjs +0 -53
- package/dist/chunk-RUMU3UA6.cjs.map +0 -1
- package/dist/chunk-T64C7ZD7.cjs +0 -1
- package/dist/chunk-T64C7ZD7.cjs.map +0 -1
- package/dist/chunk-XEBG3G53.js +0 -498
- package/dist/chunk-XEBG3G53.js.map +0 -1
- package/dist/chunk-YLEMGEFH.js +0 -246
- package/dist/chunk-YLEMGEFH.js.map +0 -1
- package/dist/chunk-ZEJR4TKL.cjs +0 -173
- package/dist/chunk-ZEJR4TKL.cjs.map +0 -1
- package/dist/function-BtiZb9i9.d.ts +0 -208
- package/dist/function-DNugAOrt.d.cts +0 -208
- package/dist/index-6VR8-kit.d.ts +0 -143
- package/dist/index-70p168VM.d.ts +0 -192
- package/dist/index-Be74mcon.d.cts +0 -152
- package/dist/index-BtXT6UQ0.d.cts +0 -192
- package/dist/index-C5UBbQ4G.d.ts +0 -152
- package/dist/index-C83mZI1P.d.ts +0 -242
- package/dist/index-DXd9JikN.d.cts +0 -246
- package/dist/index-DXd9JikN.d.ts +0 -246
- package/dist/index-OG65ocOr.d.cts +0 -272
- package/dist/index-OG65ocOr.d.ts +0 -272
- package/dist/index-tJhkmQgE.d.cts +0 -143
- package/dist/index-y_ak9_Hi.d.cts +0 -242
- package/dist/styled-DIRkk9Uz.d.ts +0 -506
- package/dist/styled-DJbkJQfj.d.cts +0 -506
- package/dist/types-BN6_Q9Kl.d.cts +0 -39
- package/dist/types-BN6_Q9Kl.d.ts +0 -39
- /package/dist/{chunk-N6IHQUOX.js.map → chunk-HFPS7JFD.js.map} +0 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Counterpoint classification of a harmonic interval by consonance.
|
|
3
|
+
*
|
|
4
|
+
* Distinct from a spelled interval's quality label — see
|
|
5
|
+
* {@link IntervalQualityLabel}, which names the `'P'` / `'M'` / `'m'` / `'A'` /
|
|
6
|
+
* `'d'` spelling of an interval rather than how it sounds against another
|
|
7
|
+
* voice.
|
|
8
|
+
*
|
|
9
|
+
* @see {@link IntervalQualityLabel}
|
|
10
|
+
* @category Pitch & Intervals
|
|
11
|
+
*/
|
|
12
|
+
declare enum ConsonanceClass {
|
|
13
|
+
PerfectConsonance = 0,
|
|
14
|
+
ImperfectConsonance = 1,
|
|
15
|
+
Dissonance = 2
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Classify an interval for counterpoint evaluation.
|
|
19
|
+
*
|
|
20
|
+
* The interval is reduced modulo 12, so compound intervals classify as their
|
|
21
|
+
* simple equivalents. The perfect fourth (5) is context-dependent: with
|
|
22
|
+
* `twoVoice` (the default) it classifies as a dissonance, matching
|
|
23
|
+
* {@link isConsonantInterval}; otherwise it is an imperfect consonance.
|
|
24
|
+
*
|
|
25
|
+
* @param semitones Interval size in semitones (may be negative or compound).
|
|
26
|
+
* @param twoVoice When true, the perfect fourth is treated as dissonant.
|
|
27
|
+
* @returns The counterpoint quality of the interval.
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* import { classifyInterval, ConsonanceClass } from '@libraz/libcantus';
|
|
31
|
+
* classifyInterval(7); // ConsonanceClass.PerfectConsonance
|
|
32
|
+
* classifyInterval(5); // ConsonanceClass.Dissonance (two-voice)
|
|
33
|
+
* classifyInterval(5, false); // ConsonanceClass.ImperfectConsonance
|
|
34
|
+
* ```
|
|
35
|
+
* @category Pitch & Intervals
|
|
36
|
+
*/
|
|
37
|
+
declare function classifyInterval(semitones: number, twoVoice?: boolean): ConsonanceClass;
|
|
38
|
+
/**
|
|
39
|
+
* Test whether an interval is a perfect consonance: the unison/octave or the
|
|
40
|
+
* fifth.
|
|
41
|
+
*
|
|
42
|
+
* The perfect fourth is deliberately excluded. This is the predicate the
|
|
43
|
+
* parallel-motion rules are written against, where the fourth behaves as a
|
|
44
|
+
* dissonance between two voices; {@link classifyInterval} is the general
|
|
45
|
+
* classifier, and it treats the fourth as context-dependent.
|
|
46
|
+
*
|
|
47
|
+
* @param semitones Interval size in semitones (may be negative or compound).
|
|
48
|
+
* @returns True for the unison/octave (0) and the perfect fifth (7) mod 12.
|
|
49
|
+
* @category Pitch & Intervals
|
|
50
|
+
*/
|
|
51
|
+
declare function isPerfectInterval(semitones: number): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Test whether an interval is consonant.
|
|
54
|
+
*
|
|
55
|
+
* The consonant set is {0, 3, 4, 5, 7, 8, 9} mod 12. In two-voice counterpoint
|
|
56
|
+
* the perfect fourth (5) is treated as a dissonance, so `twoVoice` set to true
|
|
57
|
+
* excludes it.
|
|
58
|
+
*
|
|
59
|
+
* @param semitones Interval size in semitones (may be negative or compound).
|
|
60
|
+
* @param twoVoice When true, the perfect fourth is treated as dissonant.
|
|
61
|
+
* @returns True if the interval is consonant in the given context.
|
|
62
|
+
* @category Pitch & Intervals
|
|
63
|
+
*/
|
|
64
|
+
declare function isConsonantInterval(semitones: number, twoVoice?: boolean): boolean;
|
|
65
|
+
|
|
66
|
+
export { ConsonanceClass as C, isPerfectInterval as a, classifyInterval as c, isConsonantInterval as i };
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Counterpoint classification of a harmonic interval by consonance.
|
|
3
|
+
*
|
|
4
|
+
* Distinct from a spelled interval's quality label — see
|
|
5
|
+
* {@link IntervalQualityLabel}, which names the `'P'` / `'M'` / `'m'` / `'A'` /
|
|
6
|
+
* `'d'` spelling of an interval rather than how it sounds against another
|
|
7
|
+
* voice.
|
|
8
|
+
*
|
|
9
|
+
* @see {@link IntervalQualityLabel}
|
|
10
|
+
* @category Pitch & Intervals
|
|
11
|
+
*/
|
|
12
|
+
declare enum ConsonanceClass {
|
|
13
|
+
PerfectConsonance = 0,
|
|
14
|
+
ImperfectConsonance = 1,
|
|
15
|
+
Dissonance = 2
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Classify an interval for counterpoint evaluation.
|
|
19
|
+
*
|
|
20
|
+
* The interval is reduced modulo 12, so compound intervals classify as their
|
|
21
|
+
* simple equivalents. The perfect fourth (5) is context-dependent: with
|
|
22
|
+
* `twoVoice` (the default) it classifies as a dissonance, matching
|
|
23
|
+
* {@link isConsonantInterval}; otherwise it is an imperfect consonance.
|
|
24
|
+
*
|
|
25
|
+
* @param semitones Interval size in semitones (may be negative or compound).
|
|
26
|
+
* @param twoVoice When true, the perfect fourth is treated as dissonant.
|
|
27
|
+
* @returns The counterpoint quality of the interval.
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* import { classifyInterval, ConsonanceClass } from '@libraz/libcantus';
|
|
31
|
+
* classifyInterval(7); // ConsonanceClass.PerfectConsonance
|
|
32
|
+
* classifyInterval(5); // ConsonanceClass.Dissonance (two-voice)
|
|
33
|
+
* classifyInterval(5, false); // ConsonanceClass.ImperfectConsonance
|
|
34
|
+
* ```
|
|
35
|
+
* @category Pitch & Intervals
|
|
36
|
+
*/
|
|
37
|
+
declare function classifyInterval(semitones: number, twoVoice?: boolean): ConsonanceClass;
|
|
38
|
+
/**
|
|
39
|
+
* Test whether an interval is a perfect consonance: the unison/octave or the
|
|
40
|
+
* fifth.
|
|
41
|
+
*
|
|
42
|
+
* The perfect fourth is deliberately excluded. This is the predicate the
|
|
43
|
+
* parallel-motion rules are written against, where the fourth behaves as a
|
|
44
|
+
* dissonance between two voices; {@link classifyInterval} is the general
|
|
45
|
+
* classifier, and it treats the fourth as context-dependent.
|
|
46
|
+
*
|
|
47
|
+
* @param semitones Interval size in semitones (may be negative or compound).
|
|
48
|
+
* @returns True for the unison/octave (0) and the perfect fifth (7) mod 12.
|
|
49
|
+
* @category Pitch & Intervals
|
|
50
|
+
*/
|
|
51
|
+
declare function isPerfectInterval(semitones: number): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Test whether an interval is consonant.
|
|
54
|
+
*
|
|
55
|
+
* The consonant set is {0, 3, 4, 5, 7, 8, 9} mod 12. In two-voice counterpoint
|
|
56
|
+
* the perfect fourth (5) is treated as a dissonance, so `twoVoice` set to true
|
|
57
|
+
* excludes it.
|
|
58
|
+
*
|
|
59
|
+
* @param semitones Interval size in semitones (may be negative or compound).
|
|
60
|
+
* @param twoVoice When true, the perfect fourth is treated as dissonant.
|
|
61
|
+
* @returns True if the interval is consonant in the given context.
|
|
62
|
+
* @category Pitch & Intervals
|
|
63
|
+
*/
|
|
64
|
+
declare function isConsonantInterval(semitones: number, twoVoice?: boolean): boolean;
|
|
65
|
+
|
|
66
|
+
export { ConsonanceClass as C, isPerfectInterval as a, classifyInterval as c, isConsonantInterval as i };
|