@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.
Files changed (186) hide show
  1. package/README.md +61 -261
  2. package/README_ja.md +115 -0
  3. package/dist/analyze/index.cjs +54 -7
  4. package/dist/analyze/index.cjs.map +1 -1
  5. package/dist/analyze/index.d.cts +213 -456
  6. package/dist/analyze/index.d.ts +213 -456
  7. package/dist/analyze/index.js +56 -9
  8. package/dist/chunk-3JXCW6DX.cjs +3220 -0
  9. package/dist/chunk-3JXCW6DX.cjs.map +1 -0
  10. package/dist/chunk-4A2RMUCC.js +7647 -0
  11. package/dist/chunk-4A2RMUCC.js.map +1 -0
  12. package/dist/chunk-6XPTBE7Y.cjs +49 -0
  13. package/dist/chunk-6XPTBE7Y.cjs.map +1 -0
  14. package/dist/chunk-AFM2ULJH.cjs +5121 -0
  15. package/dist/chunk-AFM2ULJH.cjs.map +1 -0
  16. package/dist/chunk-E3F4AHAH.cjs +690 -0
  17. package/dist/chunk-E3F4AHAH.cjs.map +1 -0
  18. package/dist/chunk-ELCTZUJJ.js +379 -0
  19. package/dist/chunk-ELCTZUJJ.js.map +1 -0
  20. package/dist/chunk-FVSI36UV.js +690 -0
  21. package/dist/chunk-FVSI36UV.js.map +1 -0
  22. package/dist/chunk-GEDTJHAC.cjs +1 -0
  23. package/dist/chunk-GEDTJHAC.cjs.map +1 -0
  24. package/dist/chunk-GOZG57ER.js +3220 -0
  25. package/dist/chunk-GOZG57ER.js.map +1 -0
  26. package/dist/chunk-H3VORETI.js +2243 -0
  27. package/dist/chunk-H3VORETI.js.map +1 -0
  28. package/dist/chunk-H42UHPYW.js +1577 -0
  29. package/dist/chunk-H42UHPYW.js.map +1 -0
  30. package/dist/chunk-HFPS7JFD.js +1 -0
  31. package/dist/chunk-INHVXP6Z.js +3053 -0
  32. package/dist/chunk-INHVXP6Z.js.map +1 -0
  33. package/dist/chunk-K4ZJUGF4.cjs +379 -0
  34. package/dist/chunk-K4ZJUGF4.cjs.map +1 -0
  35. package/dist/chunk-KNJEKLKV.js +49 -0
  36. package/dist/chunk-KNJEKLKV.js.map +1 -0
  37. package/dist/chunk-M4CWTJWJ.cjs +7647 -0
  38. package/dist/chunk-M4CWTJWJ.cjs.map +1 -0
  39. package/dist/chunk-MXO72PLY.cjs +211 -0
  40. package/dist/chunk-MXO72PLY.cjs.map +1 -0
  41. package/dist/chunk-NLEU4QSE.cjs +360 -0
  42. package/dist/chunk-NLEU4QSE.cjs.map +1 -0
  43. package/dist/chunk-OE6WK2Y2.cjs +1577 -0
  44. package/dist/chunk-OE6WK2Y2.cjs.map +1 -0
  45. package/dist/chunk-Q2WGKJNN.cjs +1064 -0
  46. package/dist/chunk-Q2WGKJNN.cjs.map +1 -0
  47. package/dist/chunk-QYQQ5J6E.js +1 -0
  48. package/dist/chunk-QYQQ5J6E.js.map +1 -0
  49. package/dist/chunk-RHIJ3S4I.cjs +1 -0
  50. package/dist/chunk-RHIJ3S4I.cjs.map +1 -0
  51. package/dist/chunk-TTCLJX6D.js +211 -0
  52. package/dist/chunk-TTCLJX6D.js.map +1 -0
  53. package/dist/chunk-UADYAYAT.cjs +3053 -0
  54. package/dist/chunk-UADYAYAT.cjs.map +1 -0
  55. package/dist/chunk-VOHZB45S.js +5121 -0
  56. package/dist/chunk-VOHZB45S.js.map +1 -0
  57. package/dist/chunk-VTI6FOLB.js +1064 -0
  58. package/dist/chunk-VTI6FOLB.js.map +1 -0
  59. package/dist/chunk-WWURE4XT.cjs +2243 -0
  60. package/dist/chunk-WWURE4XT.cjs.map +1 -0
  61. package/dist/chunk-YH3BIKHH.js +360 -0
  62. package/dist/chunk-YH3BIKHH.js.map +1 -0
  63. package/dist/core/index.cjs +103 -6
  64. package/dist/core/index.cjs.map +1 -1
  65. package/dist/core/index.d.cts +96 -345
  66. package/dist/core/index.d.ts +96 -345
  67. package/dist/core/index.js +104 -7
  68. package/dist/generate/index.cjs +89 -10
  69. package/dist/generate/index.cjs.map +1 -1
  70. package/dist/generate/index.d.cts +437 -1095
  71. package/dist/generate/index.d.ts +437 -1095
  72. package/dist/generate/index.js +94 -15
  73. package/dist/index-9wcMhG73.d.ts +1095 -0
  74. package/dist/{index-D6b6na69.d.cts → index-B4o55NDr.d.cts} +13 -9
  75. package/dist/index-B9MNZboQ.d.cts +770 -0
  76. package/dist/index-B9MNZboQ.d.ts +770 -0
  77. package/dist/index-BGFW-8P2.d.cts +2307 -0
  78. package/dist/index-BO6xE9YU.d.cts +1804 -0
  79. package/dist/index-BkGmlyI3.d.cts +470 -0
  80. package/dist/index-CCNJRG-P.d.cts +1095 -0
  81. package/dist/index-CGpRv5sl.d.cts +643 -0
  82. package/dist/index-C_8o--VE.d.cts +1242 -0
  83. package/dist/index-CgHqxdps.d.ts +2307 -0
  84. package/dist/index-Chbst3Jx.d.ts +1343 -0
  85. package/dist/index-Cj49F892.d.ts +470 -0
  86. package/dist/{index-tSQh-xwY.d.ts → index-CunYKLiu.d.ts} +13 -9
  87. package/dist/index-D57QRbVn.d.ts +1804 -0
  88. package/dist/index-DInQqT8Q.d.cts +66 -0
  89. package/dist/index-DInQqT8Q.d.ts +66 -0
  90. package/dist/index-Dzr13q3d.d.cts +1343 -0
  91. package/dist/index-G1uwGGWQ.d.ts +643 -0
  92. package/dist/index-szBv3496.d.ts +1242 -0
  93. package/dist/index.cjs +358 -15
  94. package/dist/index.cjs.map +1 -1
  95. package/dist/index.d.cts +17 -15
  96. package/dist/index.d.ts +17 -15
  97. package/dist/index.js +407 -64
  98. package/dist/masks-DYbE485J.d.cts +445 -0
  99. package/dist/masks-DYbE485J.d.ts +445 -0
  100. package/dist/model/index.cjs +39 -7
  101. package/dist/model/index.cjs.map +1 -1
  102. package/dist/model/index.d.cts +4685 -243
  103. package/dist/model/index.d.ts +4685 -243
  104. package/dist/model/index.js +40 -8
  105. package/dist/positional-Cptlj-xs.d.ts +287 -0
  106. package/dist/positional-DvH_sd8u.d.cts +287 -0
  107. package/dist/theory/index.cjs +101 -7
  108. package/dist/theory/index.cjs.map +1 -1
  109. package/dist/theory/index.d.cts +513 -173
  110. package/dist/theory/index.d.ts +513 -173
  111. package/dist/theory/index.js +118 -24
  112. package/package.json +16 -11
  113. package/dist/chunk-36N73KZ3.cjs +0 -246
  114. package/dist/chunk-36N73KZ3.cjs.map +0 -1
  115. package/dist/chunk-4HLLZPXT.cjs +0 -3077
  116. package/dist/chunk-4HLLZPXT.cjs.map +0 -1
  117. package/dist/chunk-7MGZ7D62.cjs +0 -498
  118. package/dist/chunk-7MGZ7D62.cjs.map +0 -1
  119. package/dist/chunk-7NKDPF74.js +0 -3077
  120. package/dist/chunk-7NKDPF74.js.map +0 -1
  121. package/dist/chunk-CAN76NCU.cjs +0 -679
  122. package/dist/chunk-CAN76NCU.cjs.map +0 -1
  123. package/dist/chunk-D2FAJBYL.js +0 -479
  124. package/dist/chunk-D2FAJBYL.js.map +0 -1
  125. package/dist/chunk-EHVEBWM5.js +0 -1449
  126. package/dist/chunk-EHVEBWM5.js.map +0 -1
  127. package/dist/chunk-FCANXBAT.cjs +0 -30
  128. package/dist/chunk-FCANXBAT.cjs.map +0 -1
  129. package/dist/chunk-FNDWXRRI.cjs +0 -479
  130. package/dist/chunk-FNDWXRRI.cjs.map +0 -1
  131. package/dist/chunk-GQSGS2N4.js +0 -173
  132. package/dist/chunk-GQSGS2N4.js.map +0 -1
  133. package/dist/chunk-HKGYCQ34.js +0 -53
  134. package/dist/chunk-HKGYCQ34.js.map +0 -1
  135. package/dist/chunk-I24MV65U.js +0 -106
  136. package/dist/chunk-I24MV65U.js.map +0 -1
  137. package/dist/chunk-KMHOICIY.js +0 -679
  138. package/dist/chunk-KMHOICIY.js.map +0 -1
  139. package/dist/chunk-LW53AHQU.cjs +0 -1117
  140. package/dist/chunk-LW53AHQU.cjs.map +0 -1
  141. package/dist/chunk-N6IHQUOX.js +0 -1
  142. package/dist/chunk-NKIBQ6PT.js +0 -30
  143. package/dist/chunk-NKIBQ6PT.js.map +0 -1
  144. package/dist/chunk-NP4NA2FB.cjs +0 -106
  145. package/dist/chunk-NP4NA2FB.cjs.map +0 -1
  146. package/dist/chunk-NVE34YGZ.cjs +0 -1449
  147. package/dist/chunk-NVE34YGZ.cjs.map +0 -1
  148. package/dist/chunk-NYYWMV2C.js +0 -327
  149. package/dist/chunk-NYYWMV2C.js.map +0 -1
  150. package/dist/chunk-Q2XUP227.js +0 -845
  151. package/dist/chunk-Q2XUP227.js.map +0 -1
  152. package/dist/chunk-Q6OP4U43.cjs +0 -327
  153. package/dist/chunk-Q6OP4U43.cjs.map +0 -1
  154. package/dist/chunk-RC6GBMCD.cjs +0 -845
  155. package/dist/chunk-RC6GBMCD.cjs.map +0 -1
  156. package/dist/chunk-RK35RIN7.js +0 -1117
  157. package/dist/chunk-RK35RIN7.js.map +0 -1
  158. package/dist/chunk-RUMU3UA6.cjs +0 -53
  159. package/dist/chunk-RUMU3UA6.cjs.map +0 -1
  160. package/dist/chunk-T64C7ZD7.cjs +0 -1
  161. package/dist/chunk-T64C7ZD7.cjs.map +0 -1
  162. package/dist/chunk-XEBG3G53.js +0 -498
  163. package/dist/chunk-XEBG3G53.js.map +0 -1
  164. package/dist/chunk-YLEMGEFH.js +0 -246
  165. package/dist/chunk-YLEMGEFH.js.map +0 -1
  166. package/dist/chunk-ZEJR4TKL.cjs +0 -173
  167. package/dist/chunk-ZEJR4TKL.cjs.map +0 -1
  168. package/dist/function-BtiZb9i9.d.ts +0 -208
  169. package/dist/function-DNugAOrt.d.cts +0 -208
  170. package/dist/index-6VR8-kit.d.ts +0 -143
  171. package/dist/index-70p168VM.d.ts +0 -192
  172. package/dist/index-Be74mcon.d.cts +0 -152
  173. package/dist/index-BtXT6UQ0.d.cts +0 -192
  174. package/dist/index-C5UBbQ4G.d.ts +0 -152
  175. package/dist/index-C83mZI1P.d.ts +0 -242
  176. package/dist/index-DXd9JikN.d.cts +0 -246
  177. package/dist/index-DXd9JikN.d.ts +0 -246
  178. package/dist/index-OG65ocOr.d.cts +0 -272
  179. package/dist/index-OG65ocOr.d.ts +0 -272
  180. package/dist/index-tJhkmQgE.d.cts +0 -143
  181. package/dist/index-y_ak9_Hi.d.cts +0 -242
  182. package/dist/styled-DIRkk9Uz.d.ts +0 -506
  183. package/dist/styled-DJbkJQfj.d.cts +0 -506
  184. package/dist/types-BN6_Q9Kl.d.cts +0 -39
  185. package/dist/types-BN6_Q9Kl.d.ts +0 -39
  186. /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 };