@libraz/libcantus 1.2.0 → 1.4.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 (131) hide show
  1. package/NOTICE +63 -0
  2. package/README.md +7 -1
  3. package/README_ja.md +17 -11
  4. package/dist/analyze/index.cjs +31 -7
  5. package/dist/analyze/index.cjs.map +1 -1
  6. package/dist/analyze/index.d.cts +161 -13
  7. package/dist/analyze/index.d.ts +161 -13
  8. package/dist/analyze/index.js +37 -13
  9. package/dist/{chunk-NB25P3EH.js → chunk-2G5MCGYU.js} +33 -11
  10. package/dist/chunk-2G5MCGYU.js.map +1 -0
  11. package/dist/{chunk-NM7UAMC3.cjs → chunk-3FDBMIPR.cjs} +64 -64
  12. package/dist/chunk-3FDBMIPR.cjs.map +1 -0
  13. package/dist/{chunk-HPVSH7SF.cjs → chunk-3MDOEFIQ.cjs} +618 -954
  14. package/dist/chunk-3MDOEFIQ.cjs.map +1 -0
  15. package/dist/{chunk-FBH75DAY.js → chunk-5MWRBYAT.js} +560 -159
  16. package/dist/chunk-5MWRBYAT.js.map +1 -0
  17. package/dist/{chunk-J7FHVZII.cjs → chunk-6TTBEON3.cjs} +3074 -740
  18. package/dist/chunk-6TTBEON3.cjs.map +1 -0
  19. package/dist/{chunk-UMWZ4ZET.js → chunk-7NQ6AL3H.js} +4 -4
  20. package/dist/chunk-7NQ6AL3H.js.map +1 -0
  21. package/dist/{chunk-HWHGOVO6.cjs → chunk-E3QO3UET.cjs} +31 -23
  22. package/dist/chunk-E3QO3UET.cjs.map +1 -0
  23. package/dist/{chunk-H2KJHBW4.js → chunk-FJFULJZE.js} +2375 -191
  24. package/dist/chunk-FJFULJZE.js.map +1 -0
  25. package/dist/{chunk-Q6LFSAKV.js → chunk-FK3DGAIZ.js} +2657 -323
  26. package/dist/chunk-FK3DGAIZ.js.map +1 -0
  27. package/dist/chunk-GEDTJHAC.cjs.map +1 -1
  28. package/dist/{chunk-RFIBF2RR.js → chunk-H7FVMBUC.js} +138 -65
  29. package/dist/chunk-H7FVMBUC.js.map +1 -0
  30. package/dist/{chunk-DSMJRXCZ.cjs → chunk-HYSVSFNI.cjs} +931 -530
  31. package/dist/chunk-HYSVSFNI.cjs.map +1 -0
  32. package/dist/{chunk-35NBV2FT.cjs → chunk-KMYGRFZ6.cjs} +47 -24
  33. package/dist/chunk-KMYGRFZ6.cjs.map +1 -0
  34. package/dist/chunk-LQZQDBCD.cjs +5513 -0
  35. package/dist/chunk-LQZQDBCD.cjs.map +1 -0
  36. package/dist/{chunk-PM4XJE2Y.cjs → chunk-P3CPXAJ5.cjs} +76 -54
  37. package/dist/chunk-P3CPXAJ5.cjs.map +1 -0
  38. package/dist/{chunk-S5BKZZGM.cjs → chunk-S3QELJUE.cjs} +72 -56
  39. package/dist/chunk-S3QELJUE.cjs.map +1 -0
  40. package/dist/{chunk-PUKJP2Z5.js → chunk-TXFWSU5D.js} +31 -8
  41. package/dist/chunk-TXFWSU5D.js.map +1 -0
  42. package/dist/{chunk-76ZBTRG2.cjs → chunk-U4EQTDGN.cjs} +258 -218
  43. package/dist/chunk-U4EQTDGN.cjs.map +1 -0
  44. package/dist/chunk-UGLFDG7L.cjs.map +1 -1
  45. package/dist/{chunk-HYJJ2V2I.js → chunk-UTE5A36R.js} +483 -819
  46. package/dist/chunk-UTE5A36R.js.map +1 -0
  47. package/dist/{chunk-NFJ4P6ZZ.js → chunk-UZKQISRF.js} +17 -9
  48. package/dist/chunk-UZKQISRF.js.map +1 -0
  49. package/dist/{chunk-7KG3RTYS.js → chunk-VL5NXVCN.js} +281 -155
  50. package/dist/chunk-VL5NXVCN.js.map +1 -0
  51. package/dist/{chunk-CGBADIO5.cjs → chunk-WOMCXN2W.cjs} +328 -202
  52. package/dist/chunk-WOMCXN2W.cjs.map +1 -0
  53. package/dist/{chunk-3R3QVKY5.cjs → chunk-YDGMWH43.cjs} +397 -324
  54. package/dist/chunk-YDGMWH43.cjs.map +1 -0
  55. package/dist/{chunk-AGOVW7U6.js → chunk-YYVXRV3V.js} +72 -56
  56. package/dist/chunk-YYVXRV3V.js.map +1 -0
  57. package/dist/{chunk-M5RYMAFI.js → chunk-ZLNSH4UL.js} +71 -31
  58. package/dist/chunk-ZLNSH4UL.js.map +1 -0
  59. package/dist/{coerce-DRERzdve.d.cts → coerce-CUhHc3Tu.d.ts} +16 -8
  60. package/dist/{coerce-DP0vYu-x.d.ts → coerce-Ytt2Eiq9.d.cts} +16 -8
  61. package/dist/core/index.cjs +5 -5
  62. package/dist/core/index.cjs.map +1 -1
  63. package/dist/core/index.d.cts +9 -8
  64. package/dist/core/index.d.ts +9 -8
  65. package/dist/core/index.js +4 -4
  66. package/dist/generate/index.cjs +20 -8
  67. package/dist/generate/index.cjs.map +1 -1
  68. package/dist/generate/index.d.cts +105 -17
  69. package/dist/generate/index.d.ts +105 -17
  70. package/dist/generate/index.js +19 -7
  71. package/dist/{index-CL4b4gUQ.d.ts → index-5VJgKz_Q.d.cts} +6 -2
  72. package/dist/{index-B9QLziDe.d.cts → index-BLuDesVG.d.ts} +20 -13
  73. package/dist/{index-BHIUyjhZ.d.ts → index-BV6APVa6.d.cts} +20 -13
  74. package/dist/{index-BMweUlm5.d.cts → index-Bf0Sv8a9.d.ts} +6 -2
  75. package/dist/{index-Dw2DP7vm.d.ts → index-BkT21EMv.d.cts} +3 -2
  76. package/dist/{index-BL5N2Oyz.d.cts → index-C7KCaTRz.d.ts} +3 -2
  77. package/dist/{index-Cy15oTvh.d.ts → index-C9MYbuKS.d.cts} +7 -3
  78. package/dist/{index-Cy15oTvh.d.cts → index-C9MYbuKS.d.ts} +7 -3
  79. package/dist/{index-BNSM-DSk.d.cts → index-DVInzCDS.d.cts} +533 -28
  80. package/dist/{index-9eoQs2C1.d.ts → index-Dg-SAfhz.d.ts} +6 -4
  81. package/dist/{index-BJgP97N1.d.ts → index-jgeug9EA.d.ts} +533 -28
  82. package/dist/{index-cHvbYgJI.d.cts → index-pQihL4z7.d.cts} +6 -4
  83. package/dist/index.cjs +49 -13
  84. package/dist/index.cjs.map +1 -1
  85. package/dist/index.d.cts +13 -13
  86. package/dist/index.d.ts +13 -13
  87. package/dist/index.js +55 -19
  88. package/dist/{masks-Cc7-MzzY.d.ts → masks-BnzXnBj0.d.cts} +3 -2
  89. package/dist/{masks-pADfTOiD.d.cts → masks-tycmkrgs.d.ts} +3 -2
  90. package/dist/model/index.cjs +12 -12
  91. package/dist/model/index.cjs.map +1 -1
  92. package/dist/model/index.d.cts +259 -48
  93. package/dist/model/index.d.ts +259 -48
  94. package/dist/model/index.js +11 -11
  95. package/dist/{positional-DJgs6ltD.d.ts → positional-CscpxtlE.d.cts} +3 -2
  96. package/dist/{positional-DMZer-FM.d.cts → positional-DLnfUgqG.d.ts} +3 -2
  97. package/dist/{index-BRMbPkHE.d.ts → profile-B4WqcM4H.d.ts} +85 -610
  98. package/dist/{index-DGCNKAUr.d.cts → profile-BJd1XkPB.d.cts} +85 -610
  99. package/dist/theory/index.cjs +5 -5
  100. package/dist/theory/index.cjs.map +1 -1
  101. package/dist/theory/index.d.cts +18 -14
  102. package/dist/theory/index.d.ts +18 -14
  103. package/dist/theory/index.js +4 -4
  104. package/dist/{index-CJBBiAmU.d.ts → types-7mGFwvMm.d.ts} +1210 -31
  105. package/dist/{index-BBWNZS0f.d.cts → types-_ofpb2be.d.cts} +1210 -31
  106. package/package.json +13 -13
  107. package/dist/chunk-35NBV2FT.cjs.map +0 -1
  108. package/dist/chunk-3R3QVKY5.cjs.map +0 -1
  109. package/dist/chunk-76ZBTRG2.cjs.map +0 -1
  110. package/dist/chunk-7KG3RTYS.js.map +0 -1
  111. package/dist/chunk-AGOVW7U6.js.map +0 -1
  112. package/dist/chunk-CGBADIO5.cjs.map +0 -1
  113. package/dist/chunk-DSMJRXCZ.cjs.map +0 -1
  114. package/dist/chunk-FBH75DAY.js.map +0 -1
  115. package/dist/chunk-H2KJHBW4.js.map +0 -1
  116. package/dist/chunk-HPVSH7SF.cjs.map +0 -1
  117. package/dist/chunk-HWHGOVO6.cjs.map +0 -1
  118. package/dist/chunk-HYJJ2V2I.js.map +0 -1
  119. package/dist/chunk-J7FHVZII.cjs.map +0 -1
  120. package/dist/chunk-M5RYMAFI.js.map +0 -1
  121. package/dist/chunk-NB25P3EH.js.map +0 -1
  122. package/dist/chunk-NFJ4P6ZZ.js.map +0 -1
  123. package/dist/chunk-NM7UAMC3.cjs.map +0 -1
  124. package/dist/chunk-PM4XJE2Y.cjs.map +0 -1
  125. package/dist/chunk-PUKJP2Z5.js.map +0 -1
  126. package/dist/chunk-Q6LFSAKV.js.map +0 -1
  127. package/dist/chunk-RFIBF2RR.js.map +0 -1
  128. package/dist/chunk-S5BKZZGM.cjs.map +0 -1
  129. package/dist/chunk-SGLEQVJH.cjs +0 -3329
  130. package/dist/chunk-SGLEQVJH.cjs.map +0 -1
  131. package/dist/chunk-UMWZ4ZET.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { e as KeyScale, g as Note, i as NoteLike } from './index-Cy15oTvh.cjs';
1
+ import { e as KeyScale, g as Note, i as NoteLike } from './index-C9MYbuKS.js';
2
2
 
3
3
  /**
4
4
  * The vocabulary a key is described in.
@@ -731,7 +731,8 @@ declare function chordQualities(): ChordQuality[];
731
731
  /**
732
732
  * Build a chord rooted on a diatonic scale degree.
733
733
  *
734
- * The root pitch class is the degree's diatonic pitch class in `key`; the
734
+ * The root pitch class is the degree's diatonic pitch class in `key`, spelled
735
+ * the way the key writes it (a flat key names its degrees with flats); the
735
736
  * quality's interval template is attached unchanged. Degrees beyond the scale
736
737
  * length wrap around, so degree 8 of a heptatonic scale is its degree 1.
737
738
  *
@@ -745,7 +746,7 @@ declare function chordQualities(): ChordQuality[];
745
746
  *
746
747
  * @category Chords
747
748
  */
748
- declare function chordFromDegree(degree: number, ext: ChordQuality, key: KeyLike): Chord;
749
+ declare function chordFromDegree(degree: number, ext: ChordQuality, key: SpelledKeyLike): Chord;
749
750
  /**
750
751
  * Build a chord from an explicit root pitch class and quality.
751
752
  *
@@ -958,6 +959,7 @@ declare function chordToneRole(pitch: number, chord: Chord): ChordToneRole | nul
958
959
  * Unlike {@link chordFromDegree}, the chord quality is derived from the scale
959
960
  * rather than supplied, so degrees yield their scale-correct triads (e.g. a
960
961
  * diminished triad on the leading tone of a major key).
962
+ * The root is spelled the way the key writes it.
961
963
  *
962
964
  * @param degree 1-based scale degree of the chord root: 1 is the tonic.
963
965
  * @param key Key/scale context, as a key name, a key/scale, or a `Key`.
@@ -975,10 +977,12 @@ declare function chordToneRole(pitch: number, chord: Chord): ChordToneRole | nul
975
977
  *
976
978
  * @category Chords
977
979
  */
978
- declare function diatonicTriad(degree: number, key: KeyLike): Chord;
980
+ declare function diatonicTriad(degree: number, key: SpelledKeyLike): Chord;
979
981
  /**
980
982
  * Build the diatonic seventh chord rooted on a scale degree.
981
983
  *
984
+ * The root is spelled the way the key writes it.
985
+ *
982
986
  * @param degree 1-based scale degree of the chord root: 1 is the tonic.
983
987
  * @param key Key/scale context, as a key name, a key/scale, or a `Key`.
984
988
  * @returns The diatonic seventh chord.
@@ -987,7 +991,7 @@ declare function diatonicTriad(degree: number, key: KeyLike): Chord;
987
991
  *
988
992
  * @category Chords
989
993
  */
990
- declare function diatonicSeventh(degree: number, key: KeyLike): Chord;
994
+ declare function diatonicSeventh(degree: number, key: SpelledKeyLike): Chord;
991
995
 
992
996
  /**
993
997
  * Style policy: `strict` counterpoint vs. `pop` voice leading.
@@ -1295,6 +1299,9 @@ declare function enumerateSafePitches(q: Omit<SafetyQuery, 'candidatePitch'>, pi
1295
1299
  * Anything that names a chord: a chord symbol, plain chord data, or a value
1296
1300
  * that serializes to chord data such as the `Chord` class.
1297
1301
  *
1302
+ * A value that also holds its chord as `data`, as the `Chord` class does, is
1303
+ * read through that: the chord as it prints, spelled by the key it carries.
1304
+ *
1298
1305
  * @category Chords
1299
1306
  */
1300
1307
  type ChordLike = string | Chord | {
@@ -1310,8 +1317,8 @@ type ChordLike = string | Chord | {
1310
1317
  * is accepted through its `toJSON` method rather than by its type, so the
1311
1318
  * layers below the model can read a class without importing it.
1312
1319
  *
1313
- * @param value A chord symbol, plain chord data, or a value whose `toJSON`
1314
- * returns chord data.
1320
+ * @param value A chord symbol, plain chord data, or a value whose `data` or
1321
+ * `toJSON` returns chord data.
1315
1322
  * @returns The validated chord data, with root and bass reduced to pitch
1316
1323
  * classes and any spelling hint carried through.
1317
1324
  * @throws If the value names no chord, or an interval, root, or bass is not a
@@ -1326,4 +1333,5 @@ type ChordLike = string | Chord | {
1326
1333
  */
1327
1334
  declare function toChordData(value: ChordLike): Chord;
1328
1335
 
1329
- export { subdominantKeyOf as $, type Alteration as A, chordSpecQuality as B, type ChordBase as C, chordToneRole as D, type EvaluateSafetyOptions as E, diatonicSeventh as F, diatonicTriad as G, dominantKeyOf as H, enharmonicKeyOf as I, enumerateSafePitches as J, type KeyLike as K, evaluateSafety as L, intervalAboveRoot as M, NoteSafety as N, isChordMember as O, PROFILE_WEIGHTS as P, keyRelationBetween as Q, ReasonFlag as R, type SafetyPartner as S, makeChord as T, parallelKeyOf as U, type VoiceSnapshot as V, profileWeights as W, relatedKeysOf as X, relativeKeyOf as Y, spanFromChord as Z, spelledKeyOf as _, type AlteredDegree as a, toChordData as a0, toKeyScale as a1, transposeChord as a2, type Chord as b, type ChordLike as c, type ChordQuality as d, type ChordSegment as e, type ChordSeventh as f, type ChordSpan as g, type ChordSpec as h, type ChordToneRole as i, type KeyRelation as j, type KeyVariant as k, type PitchSpelling as l, type ProfileWeights as m, type ResolvedKey as n, type SafetyProfile as o, type SafetyQuery as p, type SafetyResult as q, type SpelledKeyLike as r, type SpelledKeyScale as s, chordFromDegree as t, chordFromSpan as u, chordFromSpec as v, chordPitchClasses as w, chordQualities as x, chordSpecIntervals as y, chordSpecOf as z };
1336
+ export { subdominantKeyOf as $, chordSpecQuality as B, chordToneRole as D, diatonicSeventh as F, diatonicTriad as G, dominantKeyOf as H, enharmonicKeyOf as I, enumerateSafePitches as J, evaluateSafety as L, intervalAboveRoot as M, NoteSafety as N, isChordMember as O, PROFILE_WEIGHTS as P, keyRelationBetween as Q, ReasonFlag as R, makeChord as T, parallelKeyOf as U, profileWeights as W, relatedKeysOf as X, relativeKeyOf as Y, spanFromChord as Z, spelledKeyOf as _, toChordData as a0, toKeyScale as a1, transposeChord as a2, chordFromDegree as t, chordFromSpan as u, chordFromSpec as v, chordPitchClasses as w, chordQualities as x, chordSpecIntervals as y, chordSpecOf as z };
1337
+ export type { Alteration as A, ChordBase as C, EvaluateSafetyOptions as E, KeyLike as K, SafetyPartner as S, VoiceSnapshot as V, AlteredDegree as a, Chord as b, ChordLike as c, ChordQuality as d, ChordSegment as e, ChordSeventh as f, ChordSpan as g, ChordSpec as h, ChordToneRole as i, KeyRelation as j, KeyVariant as k, PitchSpelling as l, ProfileWeights as m, ResolvedKey as n, SafetyProfile as o, SafetyQuery as p, SafetyResult as q, SpelledKeyLike as r, SpelledKeyScale as s };
@@ -1,4 +1,4 @@
1
- import { e as KeyScale, g as Note, i as NoteLike } from './index-Cy15oTvh.js';
1
+ import { e as KeyScale, g as Note, i as NoteLike } from './index-C9MYbuKS.cjs';
2
2
 
3
3
  /**
4
4
  * The vocabulary a key is described in.
@@ -731,7 +731,8 @@ declare function chordQualities(): ChordQuality[];
731
731
  /**
732
732
  * Build a chord rooted on a diatonic scale degree.
733
733
  *
734
- * The root pitch class is the degree's diatonic pitch class in `key`; the
734
+ * The root pitch class is the degree's diatonic pitch class in `key`, spelled
735
+ * the way the key writes it (a flat key names its degrees with flats); the
735
736
  * quality's interval template is attached unchanged. Degrees beyond the scale
736
737
  * length wrap around, so degree 8 of a heptatonic scale is its degree 1.
737
738
  *
@@ -745,7 +746,7 @@ declare function chordQualities(): ChordQuality[];
745
746
  *
746
747
  * @category Chords
747
748
  */
748
- declare function chordFromDegree(degree: number, ext: ChordQuality, key: KeyLike): Chord;
749
+ declare function chordFromDegree(degree: number, ext: ChordQuality, key: SpelledKeyLike): Chord;
749
750
  /**
750
751
  * Build a chord from an explicit root pitch class and quality.
751
752
  *
@@ -958,6 +959,7 @@ declare function chordToneRole(pitch: number, chord: Chord): ChordToneRole | nul
958
959
  * Unlike {@link chordFromDegree}, the chord quality is derived from the scale
959
960
  * rather than supplied, so degrees yield their scale-correct triads (e.g. a
960
961
  * diminished triad on the leading tone of a major key).
962
+ * The root is spelled the way the key writes it.
961
963
  *
962
964
  * @param degree 1-based scale degree of the chord root: 1 is the tonic.
963
965
  * @param key Key/scale context, as a key name, a key/scale, or a `Key`.
@@ -975,10 +977,12 @@ declare function chordToneRole(pitch: number, chord: Chord): ChordToneRole | nul
975
977
  *
976
978
  * @category Chords
977
979
  */
978
- declare function diatonicTriad(degree: number, key: KeyLike): Chord;
980
+ declare function diatonicTriad(degree: number, key: SpelledKeyLike): Chord;
979
981
  /**
980
982
  * Build the diatonic seventh chord rooted on a scale degree.
981
983
  *
984
+ * The root is spelled the way the key writes it.
985
+ *
982
986
  * @param degree 1-based scale degree of the chord root: 1 is the tonic.
983
987
  * @param key Key/scale context, as a key name, a key/scale, or a `Key`.
984
988
  * @returns The diatonic seventh chord.
@@ -987,7 +991,7 @@ declare function diatonicTriad(degree: number, key: KeyLike): Chord;
987
991
  *
988
992
  * @category Chords
989
993
  */
990
- declare function diatonicSeventh(degree: number, key: KeyLike): Chord;
994
+ declare function diatonicSeventh(degree: number, key: SpelledKeyLike): Chord;
991
995
 
992
996
  /**
993
997
  * Style policy: `strict` counterpoint vs. `pop` voice leading.
@@ -1295,6 +1299,9 @@ declare function enumerateSafePitches(q: Omit<SafetyQuery, 'candidatePitch'>, pi
1295
1299
  * Anything that names a chord: a chord symbol, plain chord data, or a value
1296
1300
  * that serializes to chord data such as the `Chord` class.
1297
1301
  *
1302
+ * A value that also holds its chord as `data`, as the `Chord` class does, is
1303
+ * read through that: the chord as it prints, spelled by the key it carries.
1304
+ *
1298
1305
  * @category Chords
1299
1306
  */
1300
1307
  type ChordLike = string | Chord | {
@@ -1310,8 +1317,8 @@ type ChordLike = string | Chord | {
1310
1317
  * is accepted through its `toJSON` method rather than by its type, so the
1311
1318
  * layers below the model can read a class without importing it.
1312
1319
  *
1313
- * @param value A chord symbol, plain chord data, or a value whose `toJSON`
1314
- * returns chord data.
1320
+ * @param value A chord symbol, plain chord data, or a value whose `data` or
1321
+ * `toJSON` returns chord data.
1315
1322
  * @returns The validated chord data, with root and bass reduced to pitch
1316
1323
  * classes and any spelling hint carried through.
1317
1324
  * @throws If the value names no chord, or an interval, root, or bass is not a
@@ -1326,4 +1333,5 @@ type ChordLike = string | Chord | {
1326
1333
  */
1327
1334
  declare function toChordData(value: ChordLike): Chord;
1328
1335
 
1329
- export { subdominantKeyOf as $, type Alteration as A, chordSpecQuality as B, type ChordBase as C, chordToneRole as D, type EvaluateSafetyOptions as E, diatonicSeventh as F, diatonicTriad as G, dominantKeyOf as H, enharmonicKeyOf as I, enumerateSafePitches as J, type KeyLike as K, evaluateSafety as L, intervalAboveRoot as M, NoteSafety as N, isChordMember as O, PROFILE_WEIGHTS as P, keyRelationBetween as Q, ReasonFlag as R, type SafetyPartner as S, makeChord as T, parallelKeyOf as U, type VoiceSnapshot as V, profileWeights as W, relatedKeysOf as X, relativeKeyOf as Y, spanFromChord as Z, spelledKeyOf as _, type AlteredDegree as a, toChordData as a0, toKeyScale as a1, transposeChord as a2, type Chord as b, type ChordLike as c, type ChordQuality as d, type ChordSegment as e, type ChordSeventh as f, type ChordSpan as g, type ChordSpec as h, type ChordToneRole as i, type KeyRelation as j, type KeyVariant as k, type PitchSpelling as l, type ProfileWeights as m, type ResolvedKey as n, type SafetyProfile as o, type SafetyQuery as p, type SafetyResult as q, type SpelledKeyLike as r, type SpelledKeyScale as s, chordFromDegree as t, chordFromSpan as u, chordFromSpec as v, chordPitchClasses as w, chordQualities as x, chordSpecIntervals as y, chordSpecOf as z };
1336
+ export { subdominantKeyOf as $, chordSpecQuality as B, chordToneRole as D, diatonicSeventh as F, diatonicTriad as G, dominantKeyOf as H, enharmonicKeyOf as I, enumerateSafePitches as J, evaluateSafety as L, intervalAboveRoot as M, NoteSafety as N, isChordMember as O, PROFILE_WEIGHTS as P, keyRelationBetween as Q, ReasonFlag as R, makeChord as T, parallelKeyOf as U, profileWeights as W, relatedKeysOf as X, relativeKeyOf as Y, spanFromChord as Z, spelledKeyOf as _, toChordData as a0, toKeyScale as a1, transposeChord as a2, chordFromDegree as t, chordFromSpan as u, chordFromSpec as v, chordPitchClasses as w, chordQualities as x, chordSpecIntervals as y, chordSpecOf as z };
1337
+ export type { Alteration as A, ChordBase as C, EvaluateSafetyOptions as E, KeyLike as K, SafetyPartner as S, VoiceSnapshot as V, AlteredDegree as a, Chord as b, ChordLike as c, ChordQuality as d, ChordSegment as e, ChordSeventh as f, ChordSpan as g, ChordSpec as h, ChordToneRole as i, KeyRelation as j, KeyVariant as k, PitchSpelling as l, ProfileWeights as m, ResolvedKey as n, SafetyProfile as o, SafetyQuery as p, SafetyResult as q, SpelledKeyLike as r, SpelledKeyScale as s };
@@ -23,7 +23,7 @@
23
23
 
24
24
 
25
25
 
26
- var _chunkNM7UAMC3cjs = require('../chunk-NM7UAMC3.cjs');
26
+ var _chunk3FDBMIPRcjs = require('../chunk-3FDBMIPR.cjs');
27
27
 
28
28
 
29
29
 
@@ -44,10 +44,10 @@ var _chunkNM7UAMC3cjs = require('../chunk-NM7UAMC3.cjs');
44
44
 
45
45
 
46
46
 
47
- var _chunkCGBADIO5cjs = require('../chunk-CGBADIO5.cjs');
47
+ var _chunkWOMCXN2Wcjs = require('../chunk-WOMCXN2W.cjs');
48
48
 
49
49
 
50
- var _chunk35NBV2FTcjs = require('../chunk-35NBV2FT.cjs');
50
+ var _chunkKMYGRFZ6cjs = require('../chunk-KMYGRFZ6.cjs');
51
51
 
52
52
 
53
53
 
@@ -116,7 +116,7 @@ var _chunk35NBV2FTcjs = require('../chunk-35NBV2FT.cjs');
116
116
 
117
117
 
118
118
 
119
- var _chunkS5BKZZGMcjs = require('../chunk-S5BKZZGM.cjs');
119
+ var _chunkS3QELJUEcjs = require('../chunk-S3QELJUE.cjs');
120
120
 
121
121
 
122
122
 
@@ -228,5 +228,5 @@ var _chunkS5BKZZGMcjs = require('../chunk-S5BKZZGM.cjs');
228
228
 
229
229
 
230
230
 
231
- exports.ALGORITHM_VERSION = _chunkCGBADIO5cjs.ALGORITHM_VERSION; exports.ARTICULATIONS = _chunkS5BKZZGMcjs.ARTICULATIONS; exports.BASS_4_STRING = _chunkCGBADIO5cjs.BASS_4_STRING; exports.BASS_5_STRING = _chunkCGBADIO5cjs.BASS_5_STRING; exports.BudgetExceededError = _chunkS5BKZZGMcjs.BudgetExceededError; exports.ConsonanceClass = _chunkS5BKZZGMcjs.ConsonanceClass; exports.DEFAULT_GENERATION_BUDGET = _chunkS5BKZZGMcjs.DEFAULT_GENERATION_BUDGET; exports.GUITAR_DROP_D = _chunkCGBADIO5cjs.GUITAR_DROP_D; exports.GUITAR_STANDARD = _chunkCGBADIO5cjs.GUITAR_STANDARD; exports.InvalidInputError = _chunkS5BKZZGMcjs.InvalidInputError; exports.JUST_RATIOS = _chunkNM7UAMC3cjs.JUST_RATIOS; exports.LIMBS = _chunkCGBADIO5cjs.LIMBS; exports.MIN_ALGORITHM_VERSION = _chunkCGBADIO5cjs.MIN_ALGORITHM_VERSION; exports.NOTE_VALUES = _chunkNM7UAMC3cjs.NOTE_VALUES; exports.NoSolutionError = _chunkS5BKZZGMcjs.NoSolutionError; exports.TWELVE_TET = _chunkNM7UAMC3cjs.TWELVE_TET; exports.assertDegree = _chunkS5BKZZGMcjs.assertDegree; exports.assertFiniteNumber = _chunkS5BKZZGMcjs.assertFiniteNumber; exports.assertFiniteSemitones = _chunkS5BKZZGMcjs.assertFiniteSemitones; exports.assertGenerationBudget = _chunkS5BKZZGMcjs.assertGenerationBudget; exports.assertInteger = _chunkS5BKZZGMcjs.assertInteger; exports.assertMeterMap = _chunkS5BKZZGMcjs.assertMeterMap; exports.assertMidiPitch = _chunkS5BKZZGMcjs.assertMidiPitch; exports.assertNoteEvent = _chunkS5BKZZGMcjs.assertNoteEvent; exports.assertNoteEvents = _chunkS5BKZZGMcjs.assertNoteEvents; exports.assertOneOf = _chunkS5BKZZGMcjs.assertOneOf; exports.assertPositiveInt = _chunkS5BKZZGMcjs.assertPositiveInt; exports.assertRange = _chunkS5BKZZGMcjs.assertRange; exports.assertTimeSignature = _chunkS5BKZZGMcjs.assertTimeSignature; exports.barIndexAt = _chunkS5BKZZGMcjs.barIndexAt; exports.barPositionToBeat = _chunkS5BKZZGMcjs.barPositionToBeat; exports.barPositionToPulse = _chunkS5BKZZGMcjs.barPositionToPulse; exports.barStartBeat = _chunkS5BKZZGMcjs.barStartBeat; exports.beatToBarPosition = _chunkS5BKZZGMcjs.beatToBarPosition; exports.beatsPerBar = _chunkS5BKZZGMcjs.beatsPerBar; exports.beatsPerBarAt = _chunkS5BKZZGMcjs.beatsPerBarAt; exports.beatsToDuration = _chunkNM7UAMC3cjs.beatsToDuration; exports.beatsToSeconds = _chunkNM7UAMC3cjs.beatsToSeconds; exports.beatsToTicks = _chunkNM7UAMC3cjs.beatsToTicks; exports.beatsToTiedDurations = _chunkNM7UAMC3cjs.beatsToTiedDurations; exports.canSound = _chunkCGBADIO5cjs.canSound; exports.centsBetweenFreq = _chunkNM7UAMC3cjs.centsBetweenFreq; exports.centsFromNearestStep = _chunkNM7UAMC3cjs.centsFromNearestStep; exports.centsOfSteps = _chunkNM7UAMC3cjs.centsOfSteps; exports.centsToRatio = _chunkNM7UAMC3cjs.centsToRatio; exports.clampToMidi = _chunkS5BKZZGMcjs.clampToMidi; exports.classifyInterval = _chunkS5BKZZGMcjs.classifyInterval; exports.createNoteEventIndex = _chunk35NBV2FTcjs.createNoteEventIndex; exports.createPositionalRng = _chunkCGBADIO5cjs.createPositionalRng; exports.createRng = _chunkCGBADIO5cjs.createRng; exports.deriveSeed = _chunkCGBADIO5cjs.deriveSeed; exports.detectNoteNameSystem = _chunkS5BKZZGMcjs.detectNoteNameSystem; exports.diatonicLetterOf = _chunkS5BKZZGMcjs.diatonicLetterOf; exports.dropSilentNotes = _chunkS5BKZZGMcjs.dropSilentNotes; exports.durationToBeats = _chunkNM7UAMC3cjs.durationToBeats; exports.durationToSeconds = _chunkNM7UAMC3cjs.durationToSeconds; exports.edo = _chunkNM7UAMC3cjs.edo; exports.fingeringsFor = _chunkCGBADIO5cjs.fingeringsFor; exports.foldIntoRange = _chunkCGBADIO5cjs.foldIntoRange; exports.formatBarPosition = _chunkS5BKZZGMcjs.formatBarPosition; exports.formatKeyName = _chunkS5BKZZGMcjs.formatKeyName; exports.formatNote = _chunkS5BKZZGMcjs.formatNote; exports.formatTimeSignature = _chunkS5BKZZGMcjs.formatTimeSignature; exports.frequencyOf = _chunkNM7UAMC3cjs.frequencyOf; exports.includeAt = _chunkCGBADIO5cjs.includeAt; exports.instrumentRange = _chunkCGBADIO5cjs.instrumentRange; exports.intervalSemitones = _chunkS5BKZZGMcjs.intervalSemitones; exports.isCompound = _chunkS5BKZZGMcjs.isCompound; exports.isConsonantInterval = _chunkS5BKZZGMcjs.isConsonantInterval; exports.isLibcantusError = _chunkS5BKZZGMcjs.isLibcantusError; exports.isPerfectInterval = _chunkS5BKZZGMcjs.isPerfectInterval; exports.isStrongBeat = _chunkS5BKZZGMcjs.isStrongBeat; exports.justDeviationCents = _chunkNM7UAMC3cjs.justDeviationCents; exports.meterAt = _chunkS5BKZZGMcjs.meterAt; exports.metricWeight = _chunkS5BKZZGMcjs.metricWeight; exports.midiToNote = _chunkS5BKZZGMcjs.midiToNote; exports.naturalPitchClassOf = _chunkS5BKZZGMcjs.naturalPitchClassOf; exports.nearestStep = _chunkNM7UAMC3cjs.nearestStep; exports.noteToMidi = _chunkS5BKZZGMcjs.noteToMidi; exports.noteToPitchClass = _chunkS5BKZZGMcjs.noteToPitchClass; exports.parseInterval = _chunkS5BKZZGMcjs.parseInterval; exports.parseKeyName = _chunkS5BKZZGMcjs.parseKeyName; exports.parseNote = _chunkS5BKZZGMcjs.parseNote; exports.parseTimeSignature = _chunkS5BKZZGMcjs.parseTimeSignature; exports.pitchClassOf = _chunkS5BKZZGMcjs.pitchClassOf; exports.playability = _chunkCGBADIO5cjs.playability; exports.pulseBeats = _chunkS5BKZZGMcjs.pulseBeats; exports.pulsesPerBar = _chunkS5BKZZGMcjs.pulsesPerBar; exports.ratioToCents = _chunkNM7UAMC3cjs.ratioToCents; exports.resolveAlgorithmVersion = _chunkCGBADIO5cjs.resolveAlgorithmVersion; exports.resolveMeters = _chunkS5BKZZGMcjs.resolveMeters; exports.secondsToBeats = _chunkNM7UAMC3cjs.secondsToBeats; exports.soundingNotesOnly = _chunkS5BKZZGMcjs.soundingNotesOnly; exports.spelledInterval = _chunkS5BKZZGMcjs.spelledInterval; exports.stepOf = _chunkNM7UAMC3cjs.stepOf; exports.stepsOfCents = _chunkNM7UAMC3cjs.stepsOfCents; exports.tempoAt = _chunkNM7UAMC3cjs.tempoAt; exports.ticksToBeats = _chunkNM7UAMC3cjs.ticksToBeats; exports.toInstrumentProfile = _chunkCGBADIO5cjs.toInstrumentProfile; exports.toMeterData = _chunkS5BKZZGMcjs.toMeterData; exports.toNoteData = _chunkS5BKZZGMcjs.toNoteData; exports.toSpelledInterval = _chunkS5BKZZGMcjs.toSpelledInterval; exports.toStringedProfile = _chunkCGBADIO5cjs.toStringedProfile; exports.transposeByInterval = _chunkS5BKZZGMcjs.transposeByInterval; exports.transposeNote = _chunkS5BKZZGMcjs.transposeNote; exports.tryParseInterval = _chunkS5BKZZGMcjs.tryParseInterval; exports.tryParseKeyName = _chunkS5BKZZGMcjs.tryParseKeyName; exports.tryParseNote = _chunkS5BKZZGMcjs.tryParseNote; exports.tryParseTimeSignature = _chunkS5BKZZGMcjs.tryParseTimeSignature; exports.tuplet = _chunkS5BKZZGMcjs.tuplet;
231
+ exports.ALGORITHM_VERSION = _chunkWOMCXN2Wcjs.ALGORITHM_VERSION; exports.ARTICULATIONS = _chunkS3QELJUEcjs.ARTICULATIONS; exports.BASS_4_STRING = _chunkWOMCXN2Wcjs.BASS_4_STRING; exports.BASS_5_STRING = _chunkWOMCXN2Wcjs.BASS_5_STRING; exports.BudgetExceededError = _chunkS3QELJUEcjs.BudgetExceededError; exports.ConsonanceClass = _chunkS3QELJUEcjs.ConsonanceClass; exports.DEFAULT_GENERATION_BUDGET = _chunkS3QELJUEcjs.DEFAULT_GENERATION_BUDGET; exports.GUITAR_DROP_D = _chunkWOMCXN2Wcjs.GUITAR_DROP_D; exports.GUITAR_STANDARD = _chunkWOMCXN2Wcjs.GUITAR_STANDARD; exports.InvalidInputError = _chunkS3QELJUEcjs.InvalidInputError; exports.JUST_RATIOS = _chunk3FDBMIPRcjs.JUST_RATIOS; exports.LIMBS = _chunkWOMCXN2Wcjs.LIMBS; exports.MIN_ALGORITHM_VERSION = _chunkWOMCXN2Wcjs.MIN_ALGORITHM_VERSION; exports.NOTE_VALUES = _chunk3FDBMIPRcjs.NOTE_VALUES; exports.NoSolutionError = _chunkS3QELJUEcjs.NoSolutionError; exports.TWELVE_TET = _chunk3FDBMIPRcjs.TWELVE_TET; exports.assertDegree = _chunkS3QELJUEcjs.assertDegree; exports.assertFiniteNumber = _chunkS3QELJUEcjs.assertFiniteNumber; exports.assertFiniteSemitones = _chunkS3QELJUEcjs.assertFiniteSemitones; exports.assertGenerationBudget = _chunkS3QELJUEcjs.assertGenerationBudget; exports.assertInteger = _chunkS3QELJUEcjs.assertInteger; exports.assertMeterMap = _chunkS3QELJUEcjs.assertMeterMap; exports.assertMidiPitch = _chunkS3QELJUEcjs.assertMidiPitch; exports.assertNoteEvent = _chunkS3QELJUEcjs.assertNoteEvent; exports.assertNoteEvents = _chunkS3QELJUEcjs.assertNoteEvents; exports.assertOneOf = _chunkS3QELJUEcjs.assertOneOf; exports.assertPositiveInt = _chunkS3QELJUEcjs.assertPositiveInt; exports.assertRange = _chunkS3QELJUEcjs.assertRange; exports.assertTimeSignature = _chunkS3QELJUEcjs.assertTimeSignature; exports.barIndexAt = _chunkS3QELJUEcjs.barIndexAt; exports.barPositionToBeat = _chunkS3QELJUEcjs.barPositionToBeat; exports.barPositionToPulse = _chunkS3QELJUEcjs.barPositionToPulse; exports.barStartBeat = _chunkS3QELJUEcjs.barStartBeat; exports.beatToBarPosition = _chunkS3QELJUEcjs.beatToBarPosition; exports.beatsPerBar = _chunkS3QELJUEcjs.beatsPerBar; exports.beatsPerBarAt = _chunkS3QELJUEcjs.beatsPerBarAt; exports.beatsToDuration = _chunk3FDBMIPRcjs.beatsToDuration; exports.beatsToSeconds = _chunk3FDBMIPRcjs.beatsToSeconds; exports.beatsToTicks = _chunk3FDBMIPRcjs.beatsToTicks; exports.beatsToTiedDurations = _chunk3FDBMIPRcjs.beatsToTiedDurations; exports.canSound = _chunkWOMCXN2Wcjs.canSound; exports.centsBetweenFreq = _chunk3FDBMIPRcjs.centsBetweenFreq; exports.centsFromNearestStep = _chunk3FDBMIPRcjs.centsFromNearestStep; exports.centsOfSteps = _chunk3FDBMIPRcjs.centsOfSteps; exports.centsToRatio = _chunk3FDBMIPRcjs.centsToRatio; exports.clampToMidi = _chunkS3QELJUEcjs.clampToMidi; exports.classifyInterval = _chunkS3QELJUEcjs.classifyInterval; exports.createNoteEventIndex = _chunkKMYGRFZ6cjs.createNoteEventIndex; exports.createPositionalRng = _chunkWOMCXN2Wcjs.createPositionalRng; exports.createRng = _chunkWOMCXN2Wcjs.createRng; exports.deriveSeed = _chunkWOMCXN2Wcjs.deriveSeed; exports.detectNoteNameSystem = _chunkS3QELJUEcjs.detectNoteNameSystem; exports.diatonicLetterOf = _chunkS3QELJUEcjs.diatonicLetterOf; exports.dropSilentNotes = _chunkS3QELJUEcjs.dropSilentNotes; exports.durationToBeats = _chunk3FDBMIPRcjs.durationToBeats; exports.durationToSeconds = _chunk3FDBMIPRcjs.durationToSeconds; exports.edo = _chunk3FDBMIPRcjs.edo; exports.fingeringsFor = _chunkWOMCXN2Wcjs.fingeringsFor; exports.foldIntoRange = _chunkWOMCXN2Wcjs.foldIntoRange; exports.formatBarPosition = _chunkS3QELJUEcjs.formatBarPosition; exports.formatKeyName = _chunkS3QELJUEcjs.formatKeyName; exports.formatNote = _chunkS3QELJUEcjs.formatNote; exports.formatTimeSignature = _chunkS3QELJUEcjs.formatTimeSignature; exports.frequencyOf = _chunk3FDBMIPRcjs.frequencyOf; exports.includeAt = _chunkWOMCXN2Wcjs.includeAt; exports.instrumentRange = _chunkWOMCXN2Wcjs.instrumentRange; exports.intervalSemitones = _chunkS3QELJUEcjs.intervalSemitones; exports.isCompound = _chunkS3QELJUEcjs.isCompound; exports.isConsonantInterval = _chunkS3QELJUEcjs.isConsonantInterval; exports.isLibcantusError = _chunkS3QELJUEcjs.isLibcantusError; exports.isPerfectInterval = _chunkS3QELJUEcjs.isPerfectInterval; exports.isStrongBeat = _chunkS3QELJUEcjs.isStrongBeat; exports.justDeviationCents = _chunk3FDBMIPRcjs.justDeviationCents; exports.meterAt = _chunkS3QELJUEcjs.meterAt; exports.metricWeight = _chunkS3QELJUEcjs.metricWeight; exports.midiToNote = _chunkS3QELJUEcjs.midiToNote; exports.naturalPitchClassOf = _chunkS3QELJUEcjs.naturalPitchClassOf; exports.nearestStep = _chunk3FDBMIPRcjs.nearestStep; exports.noteToMidi = _chunkS3QELJUEcjs.noteToMidi; exports.noteToPitchClass = _chunkS3QELJUEcjs.noteToPitchClass; exports.parseInterval = _chunkS3QELJUEcjs.parseInterval; exports.parseKeyName = _chunkS3QELJUEcjs.parseKeyName; exports.parseNote = _chunkS3QELJUEcjs.parseNote; exports.parseTimeSignature = _chunkS3QELJUEcjs.parseTimeSignature; exports.pitchClassOf = _chunkS3QELJUEcjs.pitchClassOf; exports.playability = _chunkWOMCXN2Wcjs.playability; exports.pulseBeats = _chunkS3QELJUEcjs.pulseBeats; exports.pulsesPerBar = _chunkS3QELJUEcjs.pulsesPerBar; exports.ratioToCents = _chunk3FDBMIPRcjs.ratioToCents; exports.resolveAlgorithmVersion = _chunkWOMCXN2Wcjs.resolveAlgorithmVersion; exports.resolveMeters = _chunkS3QELJUEcjs.resolveMeters; exports.secondsToBeats = _chunk3FDBMIPRcjs.secondsToBeats; exports.soundingNotesOnly = _chunkS3QELJUEcjs.soundingNotesOnly; exports.spelledInterval = _chunkS3QELJUEcjs.spelledInterval; exports.stepOf = _chunk3FDBMIPRcjs.stepOf; exports.stepsOfCents = _chunk3FDBMIPRcjs.stepsOfCents; exports.tempoAt = _chunk3FDBMIPRcjs.tempoAt; exports.ticksToBeats = _chunk3FDBMIPRcjs.ticksToBeats; exports.toInstrumentProfile = _chunkWOMCXN2Wcjs.toInstrumentProfile; exports.toMeterData = _chunkS3QELJUEcjs.toMeterData; exports.toNoteData = _chunkS3QELJUEcjs.toNoteData; exports.toSpelledInterval = _chunkS3QELJUEcjs.toSpelledInterval; exports.toStringedProfile = _chunkWOMCXN2Wcjs.toStringedProfile; exports.transposeByInterval = _chunkS3QELJUEcjs.transposeByInterval; exports.transposeNote = _chunkS3QELJUEcjs.transposeNote; exports.tryParseInterval = _chunkS3QELJUEcjs.tryParseInterval; exports.tryParseKeyName = _chunkS3QELJUEcjs.tryParseKeyName; exports.tryParseNote = _chunkS3QELJUEcjs.tryParseNote; exports.tryParseTimeSignature = _chunkS3QELJUEcjs.tryParseTimeSignature; exports.tuplet = _chunkS3QELJUEcjs.tuplet;
232
232
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/libcantus/libcantus/dist/core/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;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;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;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;AACF,m3MAAC","file":"/home/runner/work/libcantus/libcantus/dist/core/index.cjs"}
1
+ {"version":3,"sources":["/home/runner/work/libcantus/libcantus/ts/dist/core/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;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;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;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;AACF,m3MAAC","file":"/home/runner/work/libcantus/libcantus/ts/dist/core/index.cjs"}
@@ -1,11 +1,11 @@
1
- export { D as DurationData, I as IndexedNoteEvent, J as JUST_RATIOS, N as NOTE_VALUES, a as NoteEventIndex, b as NoteEventIndexOptions, c as NotePlacement, d as NoteValue, O as OnsetTieBreak, P as PlayabilityIssue, e as PlayabilityIssueType, f as PlayabilityLayer, g as PlayabilityReport, S as SpelledDuration, T as TWELVE_TET, h as TempoEvent, i as TempoMap, j as TuningTable, k as Tuplet, l as beatsToDuration, m as beatsToSeconds, n as beatsToTicks, o as beatsToTiedDurations, p as centsBetweenFreq, q as centsFromNearestStep, r as centsOfSteps, s as centsToRatio, t as createNoteEventIndex, u as durationToBeats, v as durationToSeconds, w as edo, x as frequencyOf, y as justDeviationCents, z as nearestStep, A as playability, B as ratioToCents, C as secondsToBeats, E as stepOf, F as stepsOfCents, G as tempoAt, H as ticksToBeats } from '../index-cHvbYgJI.cjs';
2
- import { h as NoteEvent } from '../index-Cy15oTvh.cjs';
3
- export { A as ARTICULATIONS, a as Articulation, B as BudgetExceededError, I as IntervalData, b as IntervalLike, c as IntervalQualityLabel, d as InvalidInputError, K as KeyName, e as KeyScale, L as LibcantusError, f as LibcantusErrorCode, N as NoSolutionError, g as NoteData, i as NoteLike, j as NoteNameOptions, k as NoteNameSystem, P as ParseResult, S as SpelledInterval, l as detectNoteNameSystem, m as diatonicLetterOf, n as formatKeyName, o as formatNote, p as intervalSemitones, q as isLibcantusError, r as midiToNote, s as naturalPitchClassOf, t as noteToMidi, u as noteToPitchClass, v as parseInterval, w as parseKeyName, x as parseNote, y as pitchClassOf, z as spelledInterval, C as toNoteData, D as toSpelledInterval, E as transposeByInterval, F as transposeNote, G as tryParseInterval, H as tryParseKeyName, J as tryParseNote } from '../index-Cy15oTvh.cjs';
4
- import { f as StringedProfile } from '../positional-DMZer-FM.cjs';
5
- export { I as InstrumentProfile, a as InstrumentProfileCommon, b as InstrumentProfileLike, L as LIMBS, c as Limb, P as PercussionProfile, d as PositionalRng, S as SeedPath, e as StringFingering, V as ValidatedPercussionProfile, g as ValidatedProfile, h as ValidatedStringedProfile, i as canSound, j as createPositionalRng, k as deriveSeed, l as fingeringsFor, m as foldIntoRange, n as includeAt, o as instrumentRange, t as toInstrumentProfile, p as toStringedProfile } from '../positional-DMZer-FM.cjs';
1
+ export { D as DurationData, I as IndexedNoteEvent, J as JUST_RATIOS, N as NOTE_VALUES, a as NoteEventIndex, b as NoteEventIndexOptions, c as NotePlacement, d as NoteValue, O as OnsetTieBreak, P as PlayabilityIssue, e as PlayabilityIssueType, f as PlayabilityLayer, g as PlayabilityReport, S as SpelledDuration, T as TWELVE_TET, h as TempoEvent, i as TempoMap, j as TuningTable, k as Tuplet, l as beatsToDuration, m as beatsToSeconds, n as beatsToTicks, o as beatsToTiedDurations, p as centsBetweenFreq, q as centsFromNearestStep, r as centsOfSteps, s as centsToRatio, t as createNoteEventIndex, u as durationToBeats, v as durationToSeconds, w as edo, x as frequencyOf, y as justDeviationCents, z as nearestStep, A as playability, B as ratioToCents, C as secondsToBeats, E as stepOf, F as stepsOfCents, G as tempoAt, H as ticksToBeats } from '../index-pQihL4z7.cjs';
2
+ import { h as NoteEvent } from '../index-C9MYbuKS.cjs';
3
+ export { A as ARTICULATIONS, a as Articulation, B as BudgetExceededError, I as IntervalData, b as IntervalLike, c as IntervalQualityLabel, d as InvalidInputError, K as KeyName, e as KeyScale, L as LibcantusError, f as LibcantusErrorCode, N as NoSolutionError, g as NoteData, i as NoteLike, j as NoteNameOptions, k as NoteNameSystem, P as ParseResult, S as SpelledInterval, l as detectNoteNameSystem, m as diatonicLetterOf, n as formatKeyName, o as formatNote, p as intervalSemitones, q as isLibcantusError, r as midiToNote, s as naturalPitchClassOf, t as noteToMidi, u as noteToPitchClass, v as parseInterval, w as parseKeyName, x as parseNote, y as pitchClassOf, z as spelledInterval, C as toNoteData, D as toSpelledInterval, E as transposeByInterval, F as transposeNote, G as tryParseInterval, H as tryParseKeyName, J as tryParseNote } from '../index-C9MYbuKS.cjs';
4
+ import { f as StringedProfile } from '../positional-CscpxtlE.cjs';
5
+ export { I as InstrumentProfile, a as InstrumentProfileCommon, b as InstrumentProfileLike, L as LIMBS, c as Limb, P as PercussionProfile, d as PositionalRng, S as SeedPath, e as StringFingering, V as ValidatedPercussionProfile, g as ValidatedProfile, h as ValidatedStringedProfile, i as canSound, j as createPositionalRng, k as deriveSeed, l as fingeringsFor, m as foldIntoRange, n as includeAt, o as instrumentRange, t as toInstrumentProfile, p as toStringedProfile } from '../positional-CscpxtlE.cjs';
6
6
  export { C as ConsonanceClass, c as classifyInterval, i as isConsonantInterval, a as isPerfectInterval } from '../index-DInQqT8Q.cjs';
7
- import { c as MeterMap, T as TimeSignature } from '../index-BMweUlm5.cjs';
8
- export { B as BarPosition, M as MeterChange, a as MeterData, b as MeterLike, d as barIndexAt, e as barPositionToBeat, f as barPositionToPulse, g as barStartBeat, h as beatToBarPosition, i as beatsPerBar, j as beatsPerBarAt, k as formatBarPosition, l as formatTimeSignature, m as isCompound, n as isStrongBeat, o as meterAt, p as metricWeight, q as parseTimeSignature, r as pulseBeats, s as pulsesPerBar, t as resolveMeters, u as toMeterData, v as tryParseTimeSignature, w as tuplet } from '../index-BMweUlm5.cjs';
7
+ import { c as MeterMap, T as TimeSignature } from '../index-5VJgKz_Q.cjs';
8
+ export { B as BarPosition, M as MeterChange, a as MeterData, b as MeterLike, d as barIndexAt, e as barPositionToBeat, f as barPositionToPulse, g as barStartBeat, h as beatToBarPosition, i as beatsPerBar, j as beatsPerBarAt, k as formatBarPosition, l as formatTimeSignature, m as isCompound, n as isStrongBeat, o as meterAt, p as metricWeight, q as parseTimeSignature, r as pulseBeats, s as pulsesPerBar, t as resolveMeters, u as toMeterData, v as tryParseTimeSignature, w as tuplet } from '../index-5VJgKz_Q.cjs';
9
9
 
10
10
  /**
11
11
  * Electric bass in standard tuning: E1 A1 D2 G2 over a 24-fret neck.
@@ -286,4 +286,5 @@ type Rng = {
286
286
  */
287
287
  declare function createRng(seed: number): Rng;
288
288
 
289
- export { ALGORITHM_VERSION, BASS_4_STRING, BASS_5_STRING, DEFAULT_GENERATION_BUDGET, GUITAR_DROP_D, GUITAR_STANDARD, MIN_ALGORITHM_VERSION, MeterMap, NoteEvent, type NoteEventAssertOptions, type Rng, StringedProfile, TimeSignature, assertDegree, assertFiniteNumber, assertFiniteSemitones, assertGenerationBudget, assertInteger, assertMeterMap, assertMidiPitch, assertNoteEvent, assertNoteEvents, assertOneOf, assertPositiveInt, assertRange, assertTimeSignature, clampToMidi, createRng, dropSilentNotes, resolveAlgorithmVersion, soundingNotesOnly };
289
+ export { ALGORITHM_VERSION, BASS_4_STRING, BASS_5_STRING, DEFAULT_GENERATION_BUDGET, GUITAR_DROP_D, GUITAR_STANDARD, MIN_ALGORITHM_VERSION, MeterMap, NoteEvent, StringedProfile, TimeSignature, assertDegree, assertFiniteNumber, assertFiniteSemitones, assertGenerationBudget, assertInteger, assertMeterMap, assertMidiPitch, assertNoteEvent, assertNoteEvents, assertOneOf, assertPositiveInt, assertRange, assertTimeSignature, clampToMidi, createRng, dropSilentNotes, resolveAlgorithmVersion, soundingNotesOnly };
290
+ export type { NoteEventAssertOptions, Rng };
@@ -1,11 +1,11 @@
1
- export { D as DurationData, I as IndexedNoteEvent, J as JUST_RATIOS, N as NOTE_VALUES, a as NoteEventIndex, b as NoteEventIndexOptions, c as NotePlacement, d as NoteValue, O as OnsetTieBreak, P as PlayabilityIssue, e as PlayabilityIssueType, f as PlayabilityLayer, g as PlayabilityReport, S as SpelledDuration, T as TWELVE_TET, h as TempoEvent, i as TempoMap, j as TuningTable, k as Tuplet, l as beatsToDuration, m as beatsToSeconds, n as beatsToTicks, o as beatsToTiedDurations, p as centsBetweenFreq, q as centsFromNearestStep, r as centsOfSteps, s as centsToRatio, t as createNoteEventIndex, u as durationToBeats, v as durationToSeconds, w as edo, x as frequencyOf, y as justDeviationCents, z as nearestStep, A as playability, B as ratioToCents, C as secondsToBeats, E as stepOf, F as stepsOfCents, G as tempoAt, H as ticksToBeats } from '../index-9eoQs2C1.js';
2
- import { h as NoteEvent } from '../index-Cy15oTvh.js';
3
- export { A as ARTICULATIONS, a as Articulation, B as BudgetExceededError, I as IntervalData, b as IntervalLike, c as IntervalQualityLabel, d as InvalidInputError, K as KeyName, e as KeyScale, L as LibcantusError, f as LibcantusErrorCode, N as NoSolutionError, g as NoteData, i as NoteLike, j as NoteNameOptions, k as NoteNameSystem, P as ParseResult, S as SpelledInterval, l as detectNoteNameSystem, m as diatonicLetterOf, n as formatKeyName, o as formatNote, p as intervalSemitones, q as isLibcantusError, r as midiToNote, s as naturalPitchClassOf, t as noteToMidi, u as noteToPitchClass, v as parseInterval, w as parseKeyName, x as parseNote, y as pitchClassOf, z as spelledInterval, C as toNoteData, D as toSpelledInterval, E as transposeByInterval, F as transposeNote, G as tryParseInterval, H as tryParseKeyName, J as tryParseNote } from '../index-Cy15oTvh.js';
4
- import { f as StringedProfile } from '../positional-DJgs6ltD.js';
5
- export { I as InstrumentProfile, a as InstrumentProfileCommon, b as InstrumentProfileLike, L as LIMBS, c as Limb, P as PercussionProfile, d as PositionalRng, S as SeedPath, e as StringFingering, V as ValidatedPercussionProfile, g as ValidatedProfile, h as ValidatedStringedProfile, i as canSound, j as createPositionalRng, k as deriveSeed, l as fingeringsFor, m as foldIntoRange, n as includeAt, o as instrumentRange, t as toInstrumentProfile, p as toStringedProfile } from '../positional-DJgs6ltD.js';
1
+ export { D as DurationData, I as IndexedNoteEvent, J as JUST_RATIOS, N as NOTE_VALUES, a as NoteEventIndex, b as NoteEventIndexOptions, c as NotePlacement, d as NoteValue, O as OnsetTieBreak, P as PlayabilityIssue, e as PlayabilityIssueType, f as PlayabilityLayer, g as PlayabilityReport, S as SpelledDuration, T as TWELVE_TET, h as TempoEvent, i as TempoMap, j as TuningTable, k as Tuplet, l as beatsToDuration, m as beatsToSeconds, n as beatsToTicks, o as beatsToTiedDurations, p as centsBetweenFreq, q as centsFromNearestStep, r as centsOfSteps, s as centsToRatio, t as createNoteEventIndex, u as durationToBeats, v as durationToSeconds, w as edo, x as frequencyOf, y as justDeviationCents, z as nearestStep, A as playability, B as ratioToCents, C as secondsToBeats, E as stepOf, F as stepsOfCents, G as tempoAt, H as ticksToBeats } from '../index-Dg-SAfhz.js';
2
+ import { h as NoteEvent } from '../index-C9MYbuKS.js';
3
+ export { A as ARTICULATIONS, a as Articulation, B as BudgetExceededError, I as IntervalData, b as IntervalLike, c as IntervalQualityLabel, d as InvalidInputError, K as KeyName, e as KeyScale, L as LibcantusError, f as LibcantusErrorCode, N as NoSolutionError, g as NoteData, i as NoteLike, j as NoteNameOptions, k as NoteNameSystem, P as ParseResult, S as SpelledInterval, l as detectNoteNameSystem, m as diatonicLetterOf, n as formatKeyName, o as formatNote, p as intervalSemitones, q as isLibcantusError, r as midiToNote, s as naturalPitchClassOf, t as noteToMidi, u as noteToPitchClass, v as parseInterval, w as parseKeyName, x as parseNote, y as pitchClassOf, z as spelledInterval, C as toNoteData, D as toSpelledInterval, E as transposeByInterval, F as transposeNote, G as tryParseInterval, H as tryParseKeyName, J as tryParseNote } from '../index-C9MYbuKS.js';
4
+ import { f as StringedProfile } from '../positional-DLnfUgqG.js';
5
+ export { I as InstrumentProfile, a as InstrumentProfileCommon, b as InstrumentProfileLike, L as LIMBS, c as Limb, P as PercussionProfile, d as PositionalRng, S as SeedPath, e as StringFingering, V as ValidatedPercussionProfile, g as ValidatedProfile, h as ValidatedStringedProfile, i as canSound, j as createPositionalRng, k as deriveSeed, l as fingeringsFor, m as foldIntoRange, n as includeAt, o as instrumentRange, t as toInstrumentProfile, p as toStringedProfile } from '../positional-DLnfUgqG.js';
6
6
  export { C as ConsonanceClass, c as classifyInterval, i as isConsonantInterval, a as isPerfectInterval } from '../index-DInQqT8Q.js';
7
- import { c as MeterMap, T as TimeSignature } from '../index-CL4b4gUQ.js';
8
- export { B as BarPosition, M as MeterChange, a as MeterData, b as MeterLike, d as barIndexAt, e as barPositionToBeat, f as barPositionToPulse, g as barStartBeat, h as beatToBarPosition, i as beatsPerBar, j as beatsPerBarAt, k as formatBarPosition, l as formatTimeSignature, m as isCompound, n as isStrongBeat, o as meterAt, p as metricWeight, q as parseTimeSignature, r as pulseBeats, s as pulsesPerBar, t as resolveMeters, u as toMeterData, v as tryParseTimeSignature, w as tuplet } from '../index-CL4b4gUQ.js';
7
+ import { c as MeterMap, T as TimeSignature } from '../index-Bf0Sv8a9.js';
8
+ export { B as BarPosition, M as MeterChange, a as MeterData, b as MeterLike, d as barIndexAt, e as barPositionToBeat, f as barPositionToPulse, g as barStartBeat, h as beatToBarPosition, i as beatsPerBar, j as beatsPerBarAt, k as formatBarPosition, l as formatTimeSignature, m as isCompound, n as isStrongBeat, o as meterAt, p as metricWeight, q as parseTimeSignature, r as pulseBeats, s as pulsesPerBar, t as resolveMeters, u as toMeterData, v as tryParseTimeSignature, w as tuplet } from '../index-Bf0Sv8a9.js';
9
9
 
10
10
  /**
11
11
  * Electric bass in standard tuning: E1 A1 D2 G2 over a 24-fret neck.
@@ -286,4 +286,5 @@ type Rng = {
286
286
  */
287
287
  declare function createRng(seed: number): Rng;
288
288
 
289
- export { ALGORITHM_VERSION, BASS_4_STRING, BASS_5_STRING, DEFAULT_GENERATION_BUDGET, GUITAR_DROP_D, GUITAR_STANDARD, MIN_ALGORITHM_VERSION, MeterMap, NoteEvent, type NoteEventAssertOptions, type Rng, StringedProfile, TimeSignature, assertDegree, assertFiniteNumber, assertFiniteSemitones, assertGenerationBudget, assertInteger, assertMeterMap, assertMidiPitch, assertNoteEvent, assertNoteEvents, assertOneOf, assertPositiveInt, assertRange, assertTimeSignature, clampToMidi, createRng, dropSilentNotes, resolveAlgorithmVersion, soundingNotesOnly };
289
+ export { ALGORITHM_VERSION, BASS_4_STRING, BASS_5_STRING, DEFAULT_GENERATION_BUDGET, GUITAR_DROP_D, GUITAR_STANDARD, MIN_ALGORITHM_VERSION, MeterMap, NoteEvent, StringedProfile, TimeSignature, assertDegree, assertFiniteNumber, assertFiniteSemitones, assertGenerationBudget, assertInteger, assertMeterMap, assertMidiPitch, assertNoteEvent, assertNoteEvents, assertOneOf, assertPositiveInt, assertRange, assertTimeSignature, clampToMidi, createRng, dropSilentNotes, resolveAlgorithmVersion, soundingNotesOnly };
290
+ export type { NoteEventAssertOptions, Rng };
@@ -23,7 +23,7 @@ import {
23
23
  stepsOfCents,
24
24
  tempoAt,
25
25
  ticksToBeats
26
- } from "../chunk-UMWZ4ZET.js";
26
+ } from "../chunk-7NQ6AL3H.js";
27
27
  import {
28
28
  ALGORITHM_VERSION,
29
29
  BASS_4_STRING,
@@ -44,10 +44,10 @@ import {
44
44
  resolveAlgorithmVersion,
45
45
  toInstrumentProfile,
46
46
  toStringedProfile
47
- } from "../chunk-7KG3RTYS.js";
47
+ } from "../chunk-VL5NXVCN.js";
48
48
  import {
49
49
  createNoteEventIndex
50
- } from "../chunk-PUKJP2Z5.js";
50
+ } from "../chunk-TXFWSU5D.js";
51
51
  import {
52
52
  ARTICULATIONS,
53
53
  BudgetExceededError,
@@ -116,7 +116,7 @@ import {
116
116
  tryParseNote,
117
117
  tryParseTimeSignature,
118
118
  tuplet
119
- } from "../chunk-AGOVW7U6.js";
119
+ } from "../chunk-YYVXRV3V.js";
120
120
  export {
121
121
  ALGORITHM_VERSION,
122
122
  ARTICULATIONS,
@@ -66,19 +66,19 @@
66
66
 
67
67
 
68
68
 
69
- var _chunkJ7FHVZIIcjs = require('../chunk-J7FHVZII.cjs');
70
- require('../chunk-SGLEQVJH.cjs');
71
- require('../chunk-CGBADIO5.cjs');
72
- require('../chunk-35NBV2FT.cjs');
73
- require('../chunk-PM4XJE2Y.cjs');
74
- require('../chunk-3R3QVKY5.cjs');
75
- require('../chunk-S5BKZZGM.cjs');
76
69
 
77
70
 
78
71
 
79
72
 
80
73
 
81
74
 
75
+ var _chunk6TTBEON3cjs = require('../chunk-6TTBEON3.cjs');
76
+ require('../chunk-LQZQDBCD.cjs');
77
+ require('../chunk-WOMCXN2W.cjs');
78
+ require('../chunk-KMYGRFZ6.cjs');
79
+ require('../chunk-P3CPXAJ5.cjs');
80
+ require('../chunk-YDGMWH43.cjs');
81
+ require('../chunk-S3QELJUE.cjs');
82
82
 
83
83
 
84
84
 
@@ -141,5 +141,17 @@ require('../chunk-S5BKZZGM.cjs');
141
141
 
142
142
 
143
143
 
144
- exports.BAR_STEPS = _chunkJ7FHVZIIcjs.BAR_STEPS; exports.BASS_LICKS = _chunkJ7FHVZIIcjs.BASS_LICKS; exports.BASS_STYLES = _chunkJ7FHVZIIcjs.BASS_STYLES; exports.BEAT_STEPS = _chunkJ7FHVZIIcjs.BEAT_STEPS; exports.BORROWED_DEGREES = _chunkJ7FHVZIIcjs.BORROWED_DEGREES; exports.DRUM_KIT = _chunkJ7FHVZIIcjs.DRUM_KIT; exports.DRUM_NOTES = _chunkJ7FHVZIIcjs.DRUM_NOTES; exports.DRUM_PATTERNS = _chunkJ7FHVZIIcjs.DRUM_PATTERNS; exports.FILL_ARCHETYPES = _chunkJ7FHVZIIcjs.FILL_ARCHETYPES; exports.FILL_TYPES = _chunkJ7FHVZIIcjs.FILL_TYPES; exports.GENRES = _chunkJ7FHVZIIcjs.GENRES; exports.KICK_FIGURES = _chunkJ7FHVZIIcjs.KICK_FIGURES; exports.KICK_STEPS = _chunkJ7FHVZIIcjs.KICK_STEPS; exports.MAX_DIFFICULTY = _chunkJ7FHVZIIcjs.MAX_DIFFICULTY; exports.MIN_DIFFICULTY = _chunkJ7FHVZIIcjs.MIN_DIFFICULTY; exports.ORNAMENT_STYLES = _chunkJ7FHVZIIcjs.ORNAMENT_STYLES; exports.PROVENANCE_BASES = _chunkJ7FHVZIIcjs.PROVENANCE_BASES; exports.STEP_BEATS = _chunkJ7FHVZIIcjs.STEP_BEATS; exports.applyGrooveTemplate = _chunkJ7FHVZIIcjs.applyGrooveTemplate; exports.assertVocabulary = _chunkJ7FHVZIIcjs.assertVocabulary; exports.classifyMelodyTones = _chunkJ7FHVZIIcjs.classifyMelodyTones; exports.deform = _chunkJ7FHVZIIcjs.deform; exports.developMotif = _chunkJ7FHVZIIcjs.developMotif; exports.double = _chunkJ7FHVZIIcjs.double; exports.doubleTime = _chunkJ7FHVZIIcjs.doubleTime; exports.drumVoiceOf = _chunkJ7FHVZIIcjs.drumVoiceOf; exports.extractGrooveTemplate = _chunkJ7FHVZIIcjs.extractGrooveTemplate; exports.fitsQuery = _chunkJ7FHVZIIcjs.fitsQuery; exports.generateBassLine = _chunkJ7FHVZIIcjs.generateBassLine; exports.generateCounterMelody = _chunkJ7FHVZIIcjs.generateCounterMelody; exports.generateDrums = _chunkJ7FHVZIIcjs.generateDrums; exports.generateMotif = _chunkJ7FHVZIIcjs.generateMotif; exports.generateProgression = _chunkJ7FHVZIIcjs.generateProgression; exports.generateRhythm = _chunkJ7FHVZIIcjs.generateRhythm; exports.gridMetricWeight = _chunkJ7FHVZIIcjs.gridMetricWeight; exports.halfTime = _chunkJ7FHVZIIcjs.halfTime; exports.harmonizeMelody = _chunkJ7FHVZIIcjs.harmonizeMelody; exports.humanize = _chunkJ7FHVZIIcjs.humanize; exports.imitate = _chunkJ7FHVZIIcjs.imitate; exports.isDrumPattern = _chunkJ7FHVZIIcjs.isDrumPattern; exports.isFillArchetype = _chunkJ7FHVZIIcjs.isFillArchetype; exports.isLickMaterial = _chunkJ7FHVZIIcjs.isLickMaterial; exports.mergeVocabulary = _chunkJ7FHVZIIcjs.mergeVocabulary; exports.modalInterchangePalette = _chunkJ7FHVZIIcjs.modalInterchangePalette; exports.motifToNoteEvents = _chunkJ7FHVZIIcjs.motifToNoteEvents; exports.negativeHarmonyMirror = _chunkJ7FHVZIIcjs.negativeHarmonyMirror; exports.onsetWeightCurve = _chunkJ7FHVZIIcjs.onsetWeightCurve; exports.ornament = _chunkJ7FHVZIIcjs.ornament; exports.ornamentBy = _chunkJ7FHVZIIcjs.ornamentBy; exports.pickProgressionPreset = _chunkJ7FHVZIIcjs.pickProgressionPreset; exports.pickVocabulary = _chunkJ7FHVZIIcjs.pickVocabulary; exports.placeDrumPattern = _chunkJ7FHVZIIcjs.placeDrumPattern; exports.placeLicks = _chunkJ7FHVZIIcjs.placeLicks; exports.progressions = _chunkJ7FHVZIIcjs.progressions; exports.progressionsByStyle = _chunkJ7FHVZIIcjs.progressionsByStyle; exports.resolveContext = _chunkJ7FHVZIIcjs.resolveContext; exports.rhythmDensity = _chunkJ7FHVZIIcjs.rhythmDensity; exports.rhythmToNoteEvents = _chunkJ7FHVZIIcjs.rhythmToNoteEvents; exports.selectVocabulary = _chunkJ7FHVZIIcjs.selectVocabulary; exports.substituteChord = _chunkJ7FHVZIIcjs.substituteChord; exports.sustainsShift = _chunkJ7FHVZIIcjs.sustainsShift; exports.sustainsStrokes = _chunkJ7FHVZIIcjs.sustainsStrokes; exports.syncopate = _chunkJ7FHVZIIcjs.syncopate; exports.thin = _chunkJ7FHVZIIcjs.thin; exports.transformMotif = _chunkJ7FHVZIIcjs.transformMotif; exports.vocabularyOfKind = _chunkJ7FHVZIIcjs.vocabularyOfKind; exports.withinCeiling = _chunkJ7FHVZIIcjs.withinCeiling;
144
+
145
+
146
+
147
+
148
+
149
+
150
+
151
+
152
+
153
+
154
+
155
+
156
+ exports.BAR_STEPS = _chunk6TTBEON3cjs.BAR_STEPS; exports.BASS_LICKS = _chunk6TTBEON3cjs.BASS_LICKS; exports.BASS_STYLES = _chunk6TTBEON3cjs.BASS_STYLES; exports.BEAT_STEPS = _chunk6TTBEON3cjs.BEAT_STEPS; exports.BORROWED_DEGREES = _chunk6TTBEON3cjs.BORROWED_DEGREES; exports.COMPOSITION_PLAN_VERSION = _chunk6TTBEON3cjs.COMPOSITION_PLAN_VERSION; exports.DRUM_KIT = _chunk6TTBEON3cjs.DRUM_KIT; exports.DRUM_NOTES = _chunk6TTBEON3cjs.DRUM_NOTES; exports.DRUM_PATTERNS = _chunk6TTBEON3cjs.DRUM_PATTERNS; exports.FILL_ARCHETYPES = _chunk6TTBEON3cjs.FILL_ARCHETYPES; exports.FILL_TYPES = _chunk6TTBEON3cjs.FILL_TYPES; exports.GENRES = _chunk6TTBEON3cjs.GENRES; exports.KICK_FIGURES = _chunk6TTBEON3cjs.KICK_FIGURES; exports.KICK_STEPS = _chunk6TTBEON3cjs.KICK_STEPS; exports.MAX_DIFFICULTY = _chunk6TTBEON3cjs.MAX_DIFFICULTY; exports.MIN_DIFFICULTY = _chunk6TTBEON3cjs.MIN_DIFFICULTY; exports.ORNAMENT_STYLES = _chunk6TTBEON3cjs.ORNAMENT_STYLES; exports.PROVENANCE_BASES = _chunk6TTBEON3cjs.PROVENANCE_BASES; exports.STEP_BEATS = _chunk6TTBEON3cjs.STEP_BEATS; exports.applyGrooveTemplate = _chunk6TTBEON3cjs.applyGrooveTemplate; exports.assertCompositionPlan = _chunk6TTBEON3cjs.assertCompositionPlan; exports.assertVocabulary = _chunk6TTBEON3cjs.assertVocabulary; exports.classifyMelodyTones = _chunk6TTBEON3cjs.classifyMelodyTones; exports.deform = _chunk6TTBEON3cjs.deform; exports.deriveCompositionPlan = _chunk6TTBEON3cjs.deriveCompositionPlan; exports.developMotif = _chunk6TTBEON3cjs.developMotif; exports.double = _chunk6TTBEON3cjs.double; exports.doubleTime = _chunk6TTBEON3cjs.doubleTime; exports.drumVoiceOf = _chunk6TTBEON3cjs.drumVoiceOf; exports.evaluateComposition = _chunk6TTBEON3cjs.evaluateComposition; exports.extractGrooveTemplate = _chunk6TTBEON3cjs.extractGrooveTemplate; exports.fitsQuery = _chunk6TTBEON3cjs.fitsQuery; exports.generateBassLine = _chunk6TTBEON3cjs.generateBassLine; exports.generateCounterMelody = _chunk6TTBEON3cjs.generateCounterMelody; exports.generateDrums = _chunk6TTBEON3cjs.generateDrums; exports.generateMelody = _chunk6TTBEON3cjs.generateMelody; exports.generateMotif = _chunk6TTBEON3cjs.generateMotif; exports.generateProgression = _chunk6TTBEON3cjs.generateProgression; exports.generateRhythm = _chunk6TTBEON3cjs.generateRhythm; exports.gridMetricWeight = _chunk6TTBEON3cjs.gridMetricWeight; exports.halfTime = _chunk6TTBEON3cjs.halfTime; exports.harmonizeMelody = _chunk6TTBEON3cjs.harmonizeMelody; exports.humanize = _chunk6TTBEON3cjs.humanize; exports.imitate = _chunk6TTBEON3cjs.imitate; exports.isDrumPattern = _chunk6TTBEON3cjs.isDrumPattern; exports.isFillArchetype = _chunk6TTBEON3cjs.isFillArchetype; exports.isLickMaterial = _chunk6TTBEON3cjs.isLickMaterial; exports.mergeVocabulary = _chunk6TTBEON3cjs.mergeVocabulary; exports.modalInterchangePalette = _chunk6TTBEON3cjs.modalInterchangePalette; exports.motifToNoteEvents = _chunk6TTBEON3cjs.motifToNoteEvents; exports.negativeHarmonyMirror = _chunk6TTBEON3cjs.negativeHarmonyMirror; exports.onsetWeightCurve = _chunk6TTBEON3cjs.onsetWeightCurve; exports.ornament = _chunk6TTBEON3cjs.ornament; exports.ornamentBy = _chunk6TTBEON3cjs.ornamentBy; exports.pickProgressionPreset = _chunk6TTBEON3cjs.pickProgressionPreset; exports.pickVocabulary = _chunk6TTBEON3cjs.pickVocabulary; exports.placeDrumPattern = _chunk6TTBEON3cjs.placeDrumPattern; exports.placeLicks = _chunk6TTBEON3cjs.placeLicks; exports.planTimeline = _chunk6TTBEON3cjs.planTimeline; exports.progressions = _chunk6TTBEON3cjs.progressions; exports.progressionsByStyle = _chunk6TTBEON3cjs.progressionsByStyle; exports.resolveContext = _chunk6TTBEON3cjs.resolveContext; exports.rhythmDensity = _chunk6TTBEON3cjs.rhythmDensity; exports.rhythmToNoteEvents = _chunk6TTBEON3cjs.rhythmToNoteEvents; exports.selectVocabulary = _chunk6TTBEON3cjs.selectVocabulary; exports.substituteChord = _chunk6TTBEON3cjs.substituteChord; exports.sustainsShift = _chunk6TTBEON3cjs.sustainsShift; exports.sustainsStrokes = _chunk6TTBEON3cjs.sustainsStrokes; exports.syncopate = _chunk6TTBEON3cjs.syncopate; exports.thin = _chunk6TTBEON3cjs.thin; exports.transformMotif = _chunk6TTBEON3cjs.transformMotif; exports.vocabularyOfKind = _chunk6TTBEON3cjs.vocabularyOfKind; exports.withinCeiling = _chunk6TTBEON3cjs.withinCeiling;
145
157
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/libcantus/libcantus/dist/generate/index.cjs"],"names":[],"mappings":"AAAA;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;AACF,yDAA8B;AAC9B,iCAA8B;AAC9B,iCAA8B;AAC9B,iCAA8B;AAC9B,iCAA8B;AAC9B,iCAA8B;AAC9B,iCAA8B;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;AACF,oxHAAC","file":"/home/runner/work/libcantus/libcantus/dist/generate/index.cjs"}
1
+ {"version":3,"sources":["/home/runner/work/libcantus/libcantus/ts/dist/generate/index.cjs"],"names":[],"mappings":"AAAA;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;AACF,yDAA8B;AAC9B,iCAA8B;AAC9B,iCAA8B;AAC9B,iCAA8B;AAC9B,iCAA8B;AAC9B,iCAA8B;AAC9B,iCAA8B;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;AACF,4qIAAC","file":"/home/runner/work/libcantus/libcantus/ts/dist/generate/index.cjs"}
@@ -1,15 +1,16 @@
1
- import { h as NoteEvent, a as Articulation, b as IntervalLike } from '../index-Cy15oTvh.cjs';
2
- export { I as IntervalData, c as IntervalQualityLabel, e as KeyScale, g as NoteData, S as SpelledInterval } from '../index-Cy15oTvh.cjs';
3
- import { e as ChordSegment, c as ChordLike, K as KeyLike } from '../coerce-DRERzdve.cjs';
4
- export { b as ChordData, d as ChordQuality, g as ChordSpan, i as ChordToneRole, k as KeyVariant, l as PitchSpelling, m as ProfileWeights, n as ResolvedKey, r as SpelledKeyLike, s as SpelledKeyScale } from '../coerce-DRERzdve.cjs';
5
- export { B as BorrowedSource, e as ChordTimeline, H as HarmonicFunction } from '../index-BBWNZS0f.cjs';
6
- import { f as StringedProfile, P as PercussionProfile, c as Limb } from '../positional-DMZer-FM.cjs';
7
- export { I as InstrumentProfile, a as InstrumentProfileCommon, d as PositionalRng, S as SeedPath } from '../positional-DMZer-FM.cjs';
8
- import { b as MeterLike } from '../index-BMweUlm5.cjs';
9
- export { M as MeterChange, c as MeterMap, T as TimeSignature } from '../index-BMweUlm5.cjs';
10
- export { H as HarmonyRole } from '../index-BL5N2Oyz.cjs';
11
- import { r as Genre, q as GenerationContextInput, a4 as Vocabulary, s as GridEvent, m as DrumStyle, $ as Section, n as DrumVoice, t as GrooveFeel, k as DrumHit, H as HarmonizeOptions, y as HarmonizeResult } from '../index-BNSM-DSk.cjs';
12
- export { B as BAR_STEPS, a as BASS_STYLES, b as BEAT_STEPS, c as BORROWED_DEGREES, d as BassLineOptions, e as BassSegment, f as BassStyle, g as BorrowedChord, C as Complexity, h as CounterMelodyOptions, D as DRUM_NOTES, i as DeformOptions, j as Draw, l as DrumRole, o as DrumsOptions, E as EuclideanKick, G as GENRES, p as GenerationContext, u as GrooveSlot, v as GrooveStyle, w as GrooveTemplate, x as HarmonizePlacement, z as HumanizeOptions, M as MelodyNote, A as MotifCell, F as MotifContour, I as MotifNote, J as MotifOptions, K as MotifTransform, O as ORNAMENT_STYLES, L as OrnamentOptions, N as OrnamentStyle, P as PROVENANCE_BASES, Q as ProgFunction, R as ProgStyle, S as ProgressionDegree, T as ProgressionOptions, U as ProgressionPreset, V as Provenance, W as ProvenanceBasis, X as ResolvedContext, Y as RhythmEvent, Z as RhythmOptions, _ as STEP_BEATS, a0 as SubstituteOptions, a1 as Substitution, a2 as SubstitutionType, a3 as SyncopateOptions, a5 as VocabularyQuery, a6 as applyGrooveTemplate, a7 as assertVocabulary, a8 as deform, a9 as developMotif, aa as double, ab as doubleTime, ac as drumVoiceOf, ad as extractGrooveTemplate, ae as fitsQuery, af as generateBassLine, ag as generateCounterMelody, ah as generateDrums, ai as generateMotif, aj as generateProgression, ak as generateRhythm, al as gridMetricWeight, am as halfTime, an as humanize, ao as mergeVocabulary, ap as modalInterchangePalette, aq as motifToNoteEvents, ar as negativeHarmonyMirror, as as onsetWeightCurve, at as ornament, au as ornamentBy, av as pickProgressionPreset, aw as pickVocabulary, ax as progressions, ay as progressionsByStyle, az as resolveContext, aA as rhythmDensity, aB as rhythmToNoteEvents, aC as selectVocabulary, aD as substituteChord, aE as syncopate, aF as thin, aG as transformMotif, aH as vocabularyOfKind, aI as withinCeiling } from '../index-BNSM-DSk.cjs';
1
+ import { b as MeterLike } from '../index-5VJgKz_Q.cjs';
2
+ export { M as MeterChange, c as MeterMap, T as TimeSignature } from '../index-5VJgKz_Q.cjs';
3
+ import { h as NoteEvent, a as Articulation, b as IntervalLike } from '../index-C9MYbuKS.cjs';
4
+ export { I as IntervalData, c as IntervalQualityLabel, e as KeyScale, g as NoteData, S as SpelledInterval } from '../index-C9MYbuKS.cjs';
5
+ import { e as ChordSegment, c as ChordLike, K as KeyLike } from '../coerce-Ytt2Eiq9.cjs';
6
+ export { b as ChordData, d as ChordQuality, g as ChordSpan, i as ChordToneRole, k as KeyVariant, l as PitchSpelling, m as ProfileWeights, n as ResolvedKey, r as SpelledKeyLike, s as SpelledKeyScale } from '../coerce-Ytt2Eiq9.cjs';
7
+ import { h as ChordTimeline } from '../types-_ofpb2be.cjs';
8
+ export { B as BarPositionProfile, b as BorrowedSource, e as CadenceType, F as FormSection, o as HarmonicFunction, v as MelodicContourShape, y as MotifGraph, z as MotifGraphEdge, G as MotifGraphNode, P as MotifRelationSummary, X as ReductionLevel, Y as ReferenceCadence, Z as ReferenceChord, _ as ReferenceForm, $ as ReferenceHarmony, a0 as ReferenceKeyRegion, a1 as ReferenceMelody, a2 as ReferenceMotif, a3 as ReferencePhrase, a4 as ReferencePhraseMelody, a5 as ReferenceProfile, a7 as RhythmAnalysis } from '../types-_ofpb2be.cjs';
9
+ import { f as StringedProfile, P as PercussionProfile, c as Limb } from '../positional-CscpxtlE.cjs';
10
+ export { I as InstrumentProfile, a as InstrumentProfileCommon, d as PositionalRng, S as SeedPath } from '../positional-CscpxtlE.cjs';
11
+ export { H as HarmonyRole } from '../index-BkT21EMv.cjs';
12
+ import { x as Genre, w as GenerationContextInput, ah as Vocabulary, y as GridEvent, r as DrumStyle, ac as Section, s as DrumVoice, z as GrooveFeel, p as DrumHit, I as HarmonizeOptions, K as HarmonizeResult, j as CompositionPlan } from '../index-DVInzCDS.cjs';
13
+ export { B as BAR_STEPS, a as BASS_STYLES, b as BEAT_STEPS, c as BORROWED_DEGREES, d as BassLineOptions, e as BassSegment, f as BassStyle, g as BorrowedChord, C as COMPOSITION_PLAN_VERSION, h as Complexity, i as CompositionEvaluation, k as CompositionPlanOptions, l as CompositionViolation, m as CounterMelodyOptions, D as DRUM_NOTES, n as DeformOptions, o as Draw, q as DrumRole, t as DrumsOptions, E as EuclideanKick, u as EvaluateCompositionOptions, G as GENRES, v as GenerationContext, A as GrooveSlot, F as GrooveStyle, H as GrooveTemplate, J as HarmonizePlacement, L as HumanizeOptions, M as MelodyNote, N as MelodyOptions, O as MotifCell, P as MotifContour, Q as MotifNote, R as MotifOptions, S as MotifTransform, T as ORNAMENT_STYLES, U as OrnamentOptions, V as OrnamentStyle, W as PROVENANCE_BASES, X as PlannedChord, Y as PlannedMotif, Z as PlannedPhrase, _ as PlannedRhythm, $ as PlannedSection, a0 as PreserveWeights, a1 as ProgFunction, a2 as ProgStyle, a3 as ProgressionDegree, a4 as ProgressionOptions, a5 as ProgressionPreset, a6 as Provenance, a7 as ProvenanceBasis, a8 as ResolvedContext, a9 as RhythmEvent, aa as RhythmOptions, ab as STEP_BEATS, ad as SubstituteOptions, ae as Substitution, af as SubstitutionType, ag as SyncopateOptions, ai as VocabularyQuery, aj as applyGrooveTemplate, ak as assertVocabulary, al as deform, am as deriveCompositionPlan, an as developMotif, ao as double, ap as doubleTime, aq as drumVoiceOf, ar as evaluateComposition, as as extractGrooveTemplate, at as fitsQuery, au as generateBassLine, av as generateCounterMelody, aw as generateDrums, ax as generateMelody, ay as generateMotif, az as generateProgression, aA as generateRhythm, aB as gridMetricWeight, aC as halfTime, aD as humanize, aE as mergeVocabulary, aF as modalInterchangePalette, aG as motifToNoteEvents, aH as negativeHarmonyMirror, aI as onsetWeightCurve, aJ as ornament, aK as ornamentBy, aL as pickProgressionPreset, aM as pickVocabulary, aN as progressions, aO as progressionsByStyle, aP as resolveContext, aQ as rhythmDensity, aR as rhythmToNoteEvents, aS as selectVocabulary, aT as substituteChord, aU as syncopate, aV as thin, aW as transformMotif, aX as vocabularyOfKind, aY as withinCeiling } from '../index-DVInzCDS.cjs';
13
14
 
14
15
  /**
15
16
  * The playing-difficulty ceiling, as the generators apply it.
@@ -293,7 +294,8 @@ type ImitationOptions = {
293
294
  * `interval`: literally for a real answer, by scale degree for a tonal one, and
294
295
  * upside down first when `invert` is set. Inversion mirrors about the first note
295
296
  * of the copied span, so the answer starts where the transposition puts that
296
- * note either way. In a tonal answer a pitch outside the key keeps its distance
297
+ * note either way, whether or not it is in the key. In a tonal answer a pitch
298
+ * outside the key keeps its distance
297
299
  * from the scale tone below it, and inversion mirrors that distance too — a
298
300
  * chromatic passing note stays a chromatic passing note, on the other side.
299
301
  * Where a mirrored chromatic note falls into a diatonic semitone the key leaves
@@ -332,6 +334,8 @@ declare function imitate(lead: readonly NoteEvent[], opts: ImitationOptions): No
332
334
  declare const FILL_TYPES: readonly ["snareRoll", "tomDescend", "tomAscend", "snareTomCombo", "simpleCrash", "linearFill", "ghostToAccent", "bdSnareAlternate", "hiHatChoke", "tomShuffle", "breakdownFill", "flamsAndDrags", "halfTimeFill"];
333
335
  /** The thirteen fill archetypes for section transitions. */
334
336
  type FillType = (typeof FILL_TYPES)[number];
337
+ /** The bases a fill stroke's velocity is read against, in declaration order. */
338
+ declare const FILL_VELOCITY_BASES: readonly ["fill", "accent"];
335
339
  /**
336
340
  * How loud one stroke of a fill is.
337
341
  *
@@ -342,7 +346,7 @@ type FillType = (typeof FILL_TYPES)[number];
342
346
  * arithmetic at every beat line falls back in the middle of itself.
343
347
  */
344
348
  type FillVelocity = {
345
- base: 'fill' | 'accent';
349
+ base: (typeof FILL_VELOCITY_BASES)[number];
346
350
  /** Factor on the base, for a crescendo or a ghosted stroke. */
347
351
  scale?: number;
348
352
  /** Fixed offset in MIDI velocity, for a stroke a little above or below. */
@@ -651,7 +655,11 @@ type ClassifiedMelodyTone = {
651
655
  * predecessor and successor has no figure to belong to and stays structural, so
652
656
  * the first and last notes of a phrase are always structural.
653
657
  *
654
- * @param melody The melody, in ascending onset order.
658
+ * The notes are read in onset order, ties by pitch, whatever order they are
659
+ * listed in. A note of zero length sounds nothing: it is structural and is no
660
+ * other note's neighbour.
661
+ *
662
+ * @param melody The melody, in any order.
655
663
  * @param ts Time signature used to weight metric accents.
656
664
  * @returns One classification per input note, in input order.
657
665
  * @example
@@ -687,7 +695,9 @@ declare function classifyMelodyTones(melody: readonly NoteEvent[], ts: MeterLike
687
695
  * the grid.
688
696
  *
689
697
  * With `placement.transposeSearch` the melody is moved into the key it is
690
- * harmonized in, and `transposeSemitones` reports how far; with
698
+ * harmonized in, and `transposeSemitones` reports how far: the shifts that
699
+ * leave the fewest beats of the melody outside the key are kept, and the
700
+ * harmonization cost and the register choose among them; with
691
701
  * `placement.octaveSearch` it is moved by octaves into a comfortable register,
692
702
  * which leaves the key and the chords untouched. Both may be set, and the
693
703
  * reported shift is their sum.
@@ -717,4 +727,82 @@ declare function classifyMelodyTones(melody: readonly NoteEvent[], ts: MeterLike
717
727
  */
718
728
  declare function harmonizeMelody(opts: HarmonizeOptions): HarmonizeResult;
719
729
 
720
- export { Articulation, BASS_LICKS, type BassLick, ChordLike, ChordSegment, type ClassifiedMelodyTone, DRUM_KIT, DRUM_PATTERNS, DrumHit, type DrumPattern, type DrumPatternOptions, type DrumStroke, DrumStyle, type DrumVocabulary, DrumVoice, FILL_ARCHETYPES, FILL_TYPES, type FillArchetype, type FillStroke, type FillType, type FillVelocity, GenerationContextInput, Genre, GridEvent, GrooveFeel, HarmonizeOptions, HarmonizeResult, type ImitationAnswer, type ImitationOptions, IntervalLike, KICK_FIGURES, KICK_STEPS, KeyLike, type KickFigure, type KickPattern, type KickSlot, type LickMaterial, type LickNote, Limb, MAX_DIFFICULTY, MIN_DIFFICULTY, type MelodyToneRole, MeterLike, NoteEvent, PercussionProfile, type PlaceLicksOptions, Section, StringedProfile, Vocabulary, classifyMelodyTones, harmonizeMelody, imitate, isDrumPattern, isFillArchetype, isLickMaterial, placeDrumPattern, placeLicks, sustainsShift, sustainsStrokes };
730
+ /**
731
+ * Reading a {@link CompositionPlan}'s harmony as a chord timeline.
732
+ *
733
+ * Kept apart from the plan types so the public reader can validate its plan
734
+ * without the types module importing the validator that imports it.
735
+ */
736
+
737
+ /**
738
+ * Read a plan's harmony as a chord timeline.
739
+ *
740
+ * The one way a generator or an evaluator reads chords out of a plan: each
741
+ * entry in `plan.harmony` is resolved against its key and placed at its own
742
+ * beat, so the timeline this returns always agrees with the plan it was built
743
+ * from.
744
+ *
745
+ * @param plan The plan to read harmony from.
746
+ * @returns A chord timeline spanning `plan.span`.
747
+ * @throws {InvalidInputError} If the plan is not a valid composition plan.
748
+ * @example
749
+ * ```ts
750
+ * import { planTimeline, resolveKey } from '@libraz/libcantus';
751
+ * const plan = {
752
+ * planVersion: 1, seed: 0, algorithmVersion: 1,
753
+ * keys: [resolveKey('C major')], meters: [{ startBeat: 0, ts: { numerator: 4, denominator: 4 } }],
754
+ * span: { startBeat: 0, endBeat: 4, bars: 1 }, sections: [], phrases: [],
755
+ * harmony: [{ startBeat: 0, endBeat: 4, key: 0, roman: 'I' }], motifs: [],
756
+ * rhythm: { onsetLevels: [1, 0, 0, 0, 0, 0], interOnsetShares: new Array(17).fill(0).fill(1, 8, 9), syncopation: 0 },
757
+ * };
758
+ * planTimeline(plan).at(0); // the I chord in C major
759
+ * ```
760
+ * @category Composition
761
+ */
762
+ declare function planTimeline(plan: CompositionPlan): ChordTimeline;
763
+
764
+ /**
765
+ * Boundary validation for {@link CompositionPlan}: a caller can hand this a
766
+ * value restored from JSON, a config file, or a plugin host, and every field
767
+ * is checked before a generator or evaluator reads it. A violation names the
768
+ * path to the offending field, so a malformed document is diagnosed at the
769
+ * field that is wrong rather than wherever the first bad read happens to land.
770
+ */
771
+
772
+ /**
773
+ * Reject a value that is not a {@link CompositionPlan}.
774
+ *
775
+ * A plan is the shape a caller's stored JSON, a config file, or a plugin host
776
+ * most plausibly hands back malformed: a missing field, a distribution that no
777
+ * longer sums to 1, an index a later edit left dangling, a numeral no reader
778
+ * can parse, a derivation that points at itself or at a later motif. Every
779
+ * field is checked before a generator or evaluator reads it, and a violation
780
+ * names the path to the field that is wrong.
781
+ *
782
+ * @param value The value to check.
783
+ * @param name What the value is, for the error message.
784
+ * @returns The same plan.
785
+ * @throws {InvalidInputError} If the value is not a valid composition plan.
786
+ * @example
787
+ * ```ts
788
+ * import { assertCompositionPlan } from '@libraz/libcantus';
789
+ * import { resolveKey } from '@libraz/libcantus';
790
+ * const plan = {
791
+ * planVersion: 1, seed: 0, algorithmVersion: 1,
792
+ * keys: [resolveKey('C major')],
793
+ * meters: [{ startBeat: 0, ts: { numerator: 4, denominator: 4 } }],
794
+ * span: { startBeat: 0, endBeat: 4, bars: 1 },
795
+ * sections: [{ label: 'A', startBeat: 0, endBeat: 4 }],
796
+ * phrases: [],
797
+ * harmony: [{ startBeat: 0, endBeat: 4, key: 0, roman: 'I' }],
798
+ * motifs: [],
799
+ * rhythm: { onsetLevels: [1, 0, 0, 0, 0, 0], interOnsetShares: new Array(17).fill(0).fill(1, 8, 9), syncopation: 0 },
800
+ * };
801
+ * assertCompositionPlan(plan); // the plan, unchanged
802
+ * ```
803
+ * @category Composition
804
+ */
805
+ declare function assertCompositionPlan(value: unknown, name?: string): CompositionPlan;
806
+
807
+ export { Articulation, BASS_LICKS, ChordLike, ChordSegment, ChordTimeline, CompositionPlan, DRUM_KIT, DRUM_PATTERNS, DrumHit, DrumStyle, DrumVoice, FILL_ARCHETYPES, FILL_TYPES, GenerationContextInput, Genre, GridEvent, GrooveFeel, HarmonizeOptions, HarmonizeResult, IntervalLike, KICK_FIGURES, KICK_STEPS, KeyLike, Limb, MAX_DIFFICULTY, MIN_DIFFICULTY, MeterLike, NoteEvent, PercussionProfile, Section, StringedProfile, Vocabulary, assertCompositionPlan, classifyMelodyTones, harmonizeMelody, imitate, isDrumPattern, isFillArchetype, isLickMaterial, placeDrumPattern, placeLicks, planTimeline, sustainsShift, sustainsStrokes };
808
+ export type { BassLick, ClassifiedMelodyTone, DrumPattern, DrumPatternOptions, DrumStroke, DrumVocabulary, FillArchetype, FillStroke, FillType, FillVelocity, ImitationAnswer, ImitationOptions, KickFigure, KickPattern, KickSlot, LickMaterial, LickNote, MelodyToneRole, PlaceLicksOptions };