@libraz/libcantus 0.9.5 → 1.0.1

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 (185) hide show
  1. package/README.md +61 -270
  2. package/README_ja.md +61 -214
  3. package/dist/analyze/index.cjs +54 -7
  4. package/dist/analyze/index.cjs.map +1 -1
  5. package/dist/analyze/index.d.cts +200 -353
  6. package/dist/analyze/index.d.ts +200 -353
  7. package/dist/analyze/index.js +56 -9
  8. package/dist/chunk-2LCPM3EG.js +3224 -0
  9. package/dist/chunk-2LCPM3EG.js.map +1 -0
  10. package/dist/chunk-6XH6QZYQ.cjs +7647 -0
  11. package/dist/chunk-6XH6QZYQ.cjs.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-B6XNKWZV.cjs +3224 -0
  17. package/dist/chunk-B6XNKWZV.cjs.map +1 -0
  18. package/dist/chunk-E3F4AHAH.cjs +690 -0
  19. package/dist/chunk-E3F4AHAH.cjs.map +1 -0
  20. package/dist/{chunk-2PTFGVD7.js → chunk-ELCTZUJJ.js} +250 -132
  21. package/dist/chunk-ELCTZUJJ.js.map +1 -0
  22. package/dist/chunk-FVSI36UV.js +690 -0
  23. package/dist/chunk-FVSI36UV.js.map +1 -0
  24. package/dist/chunk-GEDTJHAC.cjs +1 -0
  25. package/dist/chunk-GEDTJHAC.cjs.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-MXO72PLY.cjs +211 -0
  38. package/dist/chunk-MXO72PLY.cjs.map +1 -0
  39. package/dist/chunk-NLEU4QSE.cjs +360 -0
  40. package/dist/chunk-NLEU4QSE.cjs.map +1 -0
  41. package/dist/chunk-OE6WK2Y2.cjs +1577 -0
  42. package/dist/chunk-OE6WK2Y2.cjs.map +1 -0
  43. package/dist/chunk-PKFNUHDY.js +7647 -0
  44. package/dist/chunk-PKFNUHDY.js.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 +93 -6
  64. package/dist/core/index.cjs.map +1 -1
  65. package/dist/core/index.d.cts +87 -346
  66. package/dist/core/index.d.ts +87 -346
  67. package/dist/core/index.js +94 -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 +436 -1094
  71. package/dist/generate/index.d.ts +436 -1094
  72. package/dist/generate/index.js +94 -15
  73. package/dist/index-9wcMhG73.d.ts +1095 -0
  74. package/dist/{index-Cfx8xgH0.d.ts → 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-x2vcsduE.d.cts → 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 +348 -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 +397 -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 +4659 -249
  103. package/dist/model/index.d.ts +4659 -249
  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 +511 -171
  110. package/dist/theory/index.d.ts +511 -171
  111. package/dist/theory/index.js +118 -24
  112. package/package.json +6 -4
  113. package/dist/chunk-2A2QMA74.cjs +0 -261
  114. package/dist/chunk-2A2QMA74.cjs.map +0 -1
  115. package/dist/chunk-2PTFGVD7.js.map +0 -1
  116. package/dist/chunk-357ZDPVU.cjs +0 -162
  117. package/dist/chunk-357ZDPVU.cjs.map +0 -1
  118. package/dist/chunk-3KX76RLG.js +0 -1548
  119. package/dist/chunk-3KX76RLG.js.map +0 -1
  120. package/dist/chunk-4VZ5MZAM.cjs +0 -889
  121. package/dist/chunk-4VZ5MZAM.cjs.map +0 -1
  122. package/dist/chunk-7EONYVI5.js +0 -1204
  123. package/dist/chunk-7EONYVI5.js.map +0 -1
  124. package/dist/chunk-7JEP3MFY.js +0 -162
  125. package/dist/chunk-7JEP3MFY.js.map +0 -1
  126. package/dist/chunk-AID75RN3.js +0 -3176
  127. package/dist/chunk-AID75RN3.js.map +0 -1
  128. package/dist/chunk-BSLTLGM3.cjs +0 -497
  129. package/dist/chunk-BSLTLGM3.cjs.map +0 -1
  130. package/dist/chunk-CU6VG2YM.cjs +0 -109
  131. package/dist/chunk-CU6VG2YM.cjs.map +0 -1
  132. package/dist/chunk-DZMHIGI4.js +0 -337
  133. package/dist/chunk-DZMHIGI4.js.map +0 -1
  134. package/dist/chunk-EDOTEABK.js +0 -109
  135. package/dist/chunk-EDOTEABK.js.map +0 -1
  136. package/dist/chunk-HN2OEUN2.js +0 -33
  137. package/dist/chunk-HN2OEUN2.js.map +0 -1
  138. package/dist/chunk-KBTTEX7Q.js +0 -497
  139. package/dist/chunk-KBTTEX7Q.js.map +0 -1
  140. package/dist/chunk-KQN2ZYND.cjs +0 -724
  141. package/dist/chunk-KQN2ZYND.cjs.map +0 -1
  142. package/dist/chunk-MPTVJIVG.cjs +0 -3176
  143. package/dist/chunk-MPTVJIVG.cjs.map +0 -1
  144. package/dist/chunk-MTMZTMWM.cjs +0 -53
  145. package/dist/chunk-MTMZTMWM.cjs.map +0 -1
  146. package/dist/chunk-N6IHQUOX.js +0 -1
  147. package/dist/chunk-NNB67XA2.js +0 -724
  148. package/dist/chunk-NNB67XA2.js.map +0 -1
  149. package/dist/chunk-OL3IHHSJ.cjs +0 -1204
  150. package/dist/chunk-OL3IHHSJ.cjs.map +0 -1
  151. package/dist/chunk-PI3UXRWK.cjs +0 -528
  152. package/dist/chunk-PI3UXRWK.cjs.map +0 -1
  153. package/dist/chunk-R2VVFAIN.js +0 -528
  154. package/dist/chunk-R2VVFAIN.js.map +0 -1
  155. package/dist/chunk-T64C7ZD7.cjs +0 -1
  156. package/dist/chunk-T64C7ZD7.cjs.map +0 -1
  157. package/dist/chunk-WFDXOLUB.cjs +0 -337
  158. package/dist/chunk-WFDXOLUB.cjs.map +0 -1
  159. package/dist/chunk-WTAN4ACG.cjs +0 -1548
  160. package/dist/chunk-WTAN4ACG.cjs.map +0 -1
  161. package/dist/chunk-YFJXS3AU.cjs +0 -33
  162. package/dist/chunk-YFJXS3AU.cjs.map +0 -1
  163. package/dist/chunk-YUE6TJ4M.js +0 -889
  164. package/dist/chunk-YUE6TJ4M.js.map +0 -1
  165. package/dist/chunk-ZGLJM4A4.js +0 -53
  166. package/dist/chunk-ZGLJM4A4.js.map +0 -1
  167. package/dist/function-CxixTB02.d.cts +0 -299
  168. package/dist/function-DTCt675z.d.ts +0 -299
  169. package/dist/index-B2Ulxxpo.d.cts +0 -144
  170. package/dist/index-BkYJ0xMq.d.cts +0 -152
  171. package/dist/index-BuaB-ypt.d.ts +0 -144
  172. package/dist/index-CAN7v-kw.d.ts +0 -199
  173. package/dist/index-COw1Ky9g.d.ts +0 -242
  174. package/dist/index-DRtIhlJj.d.ts +0 -152
  175. package/dist/index-DXd9JikN.d.cts +0 -246
  176. package/dist/index-DXd9JikN.d.ts +0 -246
  177. package/dist/index-alrRninU.d.cts +0 -199
  178. package/dist/index-oTQbYYIs.d.cts +0 -242
  179. package/dist/index-tR9jTn26.d.cts +0 -275
  180. package/dist/index-tR9jTn26.d.ts +0 -275
  181. package/dist/styled-Bl0ZK28h.d.ts +0 -543
  182. package/dist/styled-Crv6SA4S.d.cts +0 -543
  183. package/dist/types-BN6_Q9Kl.d.cts +0 -39
  184. package/dist/types-BN6_Q9Kl.d.ts +0 -39
  185. /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 };