@libraz/libcantus 1.1.0 → 1.3.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 (103) hide show
  1. package/README.md +4 -0
  2. package/README_ja.md +4 -0
  3. package/dist/analyze/index.cjs +31 -7
  4. package/dist/analyze/index.cjs.map +1 -1
  5. package/dist/analyze/index.d.cts +155 -9
  6. package/dist/analyze/index.d.ts +155 -9
  7. package/dist/analyze/index.js +37 -13
  8. package/dist/{chunk-TT6PKMPR.cjs → chunk-35NBV2FT.cjs} +16 -16
  9. package/dist/{chunk-TT6PKMPR.cjs.map → chunk-35NBV2FT.cjs.map} +1 -1
  10. package/dist/{chunk-YPB3A3EY.cjs → chunk-3R3QVKY5.cjs} +314 -285
  11. package/dist/chunk-3R3QVKY5.cjs.map +1 -0
  12. package/dist/{chunk-GDKE6RQW.cjs → chunk-4R2LWV7E.cjs} +691 -413
  13. package/dist/chunk-4R2LWV7E.cjs.map +1 -0
  14. package/dist/{chunk-RVS4G4MR.cjs → chunk-76ZBTRG2.cjs} +198 -198
  15. package/dist/{chunk-RVS4G4MR.cjs.map → chunk-76ZBTRG2.cjs.map} +1 -1
  16. package/dist/{chunk-X6RJAHII.js → chunk-7KG3RTYS.js} +2 -2
  17. package/dist/{chunk-PQL7E5F6.js → chunk-AGOVW7U6.js} +1 -1
  18. package/dist/{chunk-PQL7E5F6.js.map → chunk-AGOVW7U6.js.map} +1 -1
  19. package/dist/{chunk-5KW7DNCJ.cjs → chunk-B2PW6EHN.cjs} +2423 -453
  20. package/dist/chunk-B2PW6EHN.cjs.map +1 -0
  21. package/dist/{chunk-J772DL3B.cjs → chunk-CGBADIO5.cjs} +53 -53
  22. package/dist/{chunk-J772DL3B.cjs.map → chunk-CGBADIO5.cjs.map} +1 -1
  23. package/dist/{chunk-R5VUXQMP.js → chunk-CPMB7P75.js} +1978 -8
  24. package/dist/chunk-CPMB7P75.js.map +1 -0
  25. package/dist/{chunk-VLE5R7PF.js → chunk-GNVN4PPJ.js} +1874 -8
  26. package/dist/chunk-GNVN4PPJ.js.map +1 -0
  27. package/dist/{chunk-Q6R3QAZD.cjs → chunk-IFZDWIKM.cjs} +2199 -333
  28. package/dist/chunk-IFZDWIKM.cjs.map +1 -0
  29. package/dist/{chunk-DKICR7AN.js → chunk-IPEF6NWB.js} +296 -18
  30. package/dist/chunk-IPEF6NWB.js.map +1 -0
  31. package/dist/{chunk-AWEMD747.js → chunk-M5RYMAFI.js} +3 -3
  32. package/dist/{chunk-HSY2VQXZ.js → chunk-MLBPXA4Z.js} +330 -728
  33. package/dist/chunk-MLBPXA4Z.js.map +1 -0
  34. package/dist/{chunk-H66ARFU5.js → chunk-NB25P3EH.js} +3 -3
  35. package/dist/{chunk-5JJ6EHEZ.cjs → chunk-NM7UAMC3.cjs} +62 -62
  36. package/dist/{chunk-5JJ6EHEZ.cjs.map → chunk-NM7UAMC3.cjs.map} +1 -1
  37. package/dist/{chunk-R7B5N2JK.cjs → chunk-PM4XJE2Y.cjs} +47 -47
  38. package/dist/{chunk-R7B5N2JK.cjs.map → chunk-PM4XJE2Y.cjs.map} +1 -1
  39. package/dist/{chunk-7GOKQJTQ.js → chunk-PUKJP2Z5.js} +2 -2
  40. package/dist/{chunk-QCXYKSZS.cjs → chunk-PWC4CRWT.cjs} +19 -19
  41. package/dist/{chunk-QCXYKSZS.cjs.map → chunk-PWC4CRWT.cjs.map} +1 -1
  42. package/dist/{chunk-FPBZFNCD.js → chunk-RFIBF2RR.js} +47 -18
  43. package/dist/{chunk-FPBZFNCD.js.map → chunk-RFIBF2RR.js.map} +1 -1
  44. package/dist/{chunk-XKSO2V5I.cjs → chunk-S5BKZZGM.cjs} +1 -1
  45. package/dist/{chunk-XKSO2V5I.cjs.map → chunk-S5BKZZGM.cjs.map} +1 -1
  46. package/dist/{chunk-HOHFYGKW.js → chunk-UMWZ4ZET.js} +2 -2
  47. package/dist/{chunk-XVMJO3QF.cjs → chunk-YFA7X2F6.cjs} +489 -887
  48. package/dist/chunk-YFA7X2F6.cjs.map +1 -0
  49. package/dist/{chunk-57WB2EDF.js → chunk-ZBUROTJQ.js} +3 -3
  50. package/dist/{coerce-wwdELNYS.d.ts → coerce-DP0vYu-x.d.ts} +77 -1
  51. package/dist/{coerce-CJlgULrQ.d.cts → coerce-DRERzdve.d.cts} +77 -1
  52. package/dist/core/index.cjs +5 -5
  53. package/dist/core/index.d.cts +2 -2
  54. package/dist/core/index.d.ts +2 -2
  55. package/dist/core/index.js +4 -4
  56. package/dist/generate/index.cjs +20 -8
  57. package/dist/generate/index.cjs.map +1 -1
  58. package/dist/generate/index.d.cts +87 -9
  59. package/dist/generate/index.d.ts +87 -9
  60. package/dist/generate/index.js +19 -7
  61. package/dist/{index-BaoKVVhE.d.cts → index-B9QLziDe.d.cts} +2 -2
  62. package/dist/{index-CnHQgqNh.d.ts → index-BHIUyjhZ.d.ts} +2 -2
  63. package/dist/{index-CBCP84rv.d.cts → index-BL5N2Oyz.d.cts} +1 -1
  64. package/dist/{index-D_hzxD8w.d.cts → index-BMweUlm5.d.cts} +3 -0
  65. package/dist/{index-Ci3xyows.d.ts → index-CL4b4gUQ.d.ts} +3 -0
  66. package/dist/{index-BzLNkmA7.d.cts → index-CY-3NVfy.d.cts} +486 -5
  67. package/dist/{index-CnIdP4EZ.d.ts → index-Dw2DP7vm.d.ts} +1 -1
  68. package/dist/{index-DpC-mDlV.d.ts → index-zaZdmnU4.d.ts} +486 -5
  69. package/dist/index.cjs +49 -13
  70. package/dist/index.cjs.map +1 -1
  71. package/dist/index.d.cts +10 -10
  72. package/dist/index.d.ts +10 -10
  73. package/dist/index.js +55 -19
  74. package/dist/{masks-O73Rhj5d.d.ts → masks-Cc7-MzzY.d.ts} +1 -1
  75. package/dist/{masks-C8TWLFIi.d.cts → masks-pADfTOiD.d.cts} +1 -1
  76. package/dist/model/index.cjs +12 -12
  77. package/dist/model/index.d.cts +213 -16
  78. package/dist/model/index.d.ts +213 -16
  79. package/dist/model/index.js +11 -11
  80. package/dist/{index-DTsKaPaC.d.cts → profile-CQMEqdH9.d.cts} +88 -601
  81. package/dist/{index-BUtIf2go.d.ts → profile-DLdlIpS9.d.ts} +88 -601
  82. package/dist/theory/index.cjs +5 -5
  83. package/dist/theory/index.d.cts +7 -7
  84. package/dist/theory/index.d.ts +7 -7
  85. package/dist/theory/index.js +4 -4
  86. package/dist/{index-BpWOhkkE.d.ts → types-D-XgxGvp.d.cts} +1170 -14
  87. package/dist/{index-B3WCj_Hm.d.cts → types-Dh7C064C.d.ts} +1170 -14
  88. package/package.json +6 -5
  89. package/dist/chunk-5KW7DNCJ.cjs.map +0 -1
  90. package/dist/chunk-DKICR7AN.js.map +0 -1
  91. package/dist/chunk-GDKE6RQW.cjs.map +0 -1
  92. package/dist/chunk-HSY2VQXZ.js.map +0 -1
  93. package/dist/chunk-Q6R3QAZD.cjs.map +0 -1
  94. package/dist/chunk-R5VUXQMP.js.map +0 -1
  95. package/dist/chunk-VLE5R7PF.js.map +0 -1
  96. package/dist/chunk-XVMJO3QF.cjs.map +0 -1
  97. package/dist/chunk-YPB3A3EY.cjs.map +0 -1
  98. /package/dist/{chunk-X6RJAHII.js.map → chunk-7KG3RTYS.js.map} +0 -0
  99. /package/dist/{chunk-AWEMD747.js.map → chunk-M5RYMAFI.js.map} +0 -0
  100. /package/dist/{chunk-H66ARFU5.js.map → chunk-NB25P3EH.js.map} +0 -0
  101. /package/dist/{chunk-7GOKQJTQ.js.map → chunk-PUKJP2Z5.js.map} +0 -0
  102. /package/dist/{chunk-HOHFYGKW.js.map → chunk-UMWZ4ZET.js.map} +0 -0
  103. /package/dist/{chunk-57WB2EDF.js.map → chunk-ZBUROTJQ.js.map} +0 -0
@@ -1,15 +1,16 @@
1
+ import { b as MeterLike } from '../index-CL4b4gUQ.js';
2
+ export { M as MeterChange, c as MeterMap, T as TimeSignature } from '../index-CL4b4gUQ.js';
1
3
  import { h as NoteEvent, a as Articulation, b as IntervalLike } from '../index-Cy15oTvh.js';
2
4
  export { I as IntervalData, c as IntervalQualityLabel, e as KeyScale, g as NoteData, S as SpelledInterval } from '../index-Cy15oTvh.js';
3
- import { e as ChordSegment, c as ChordLike, K as KeyLike } from '../coerce-wwdELNYS.js';
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, q as SpelledKeyLike, r as SpelledKeyScale } from '../coerce-wwdELNYS.js';
5
- export { B as BorrowedSource, e as ChordTimeline, H as HarmonicFunction } from '../index-BpWOhkkE.js';
5
+ import { e as ChordSegment, c as ChordLike, K as KeyLike } from '../coerce-DP0vYu-x.js';
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-DP0vYu-x.js';
7
+ import { h as ChordTimeline } from '../types-Dh7C064C.js';
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-Dh7C064C.js';
6
9
  import { f as StringedProfile, P as PercussionProfile, c as Limb } from '../positional-DJgs6ltD.js';
7
10
  export { I as InstrumentProfile, a as InstrumentProfileCommon, d as PositionalRng, S as SeedPath } from '../positional-DJgs6ltD.js';
8
- import { b as MeterLike } from '../index-Ci3xyows.js';
9
- export { M as MeterChange, c as MeterMap, T as TimeSignature } from '../index-Ci3xyows.js';
10
- export { H as HarmonyRole } from '../index-CnIdP4EZ.js';
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-DpC-mDlV.js';
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-DpC-mDlV.js';
11
+ export { H as HarmonyRole } from '../index-Dw2DP7vm.js';
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-zaZdmnU4.js';
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-zaZdmnU4.js';
13
14
 
14
15
  /**
15
16
  * The playing-difficulty ceiling, as the generators apply it.
@@ -717,4 +718,81 @@ declare function classifyMelodyTones(melody: readonly NoteEvent[], ts: MeterLike
717
718
  */
718
719
  declare function harmonizeMelody(opts: HarmonizeOptions): HarmonizeResult;
719
720
 
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 };
721
+ /**
722
+ * Reading a {@link CompositionPlan}'s harmony as a chord timeline.
723
+ *
724
+ * Kept apart from the plan types so the public reader can validate its plan
725
+ * without the types module importing the validator that imports it.
726
+ */
727
+
728
+ /**
729
+ * Read a plan's harmony as a chord timeline.
730
+ *
731
+ * The one way a generator or an evaluator reads chords out of a plan: each
732
+ * entry in `plan.harmony` is resolved against its key and placed at its own
733
+ * beat, so the timeline this returns always agrees with the plan it was built
734
+ * from.
735
+ *
736
+ * @param plan The plan to read harmony from.
737
+ * @returns A chord timeline spanning `plan.span`.
738
+ * @throws {InvalidInputError} If the plan is not a valid composition plan.
739
+ * @example
740
+ * ```ts
741
+ * import { planTimeline, resolveKey } from '@libraz/libcantus';
742
+ * const plan = {
743
+ * planVersion: 1, seed: 0, algorithmVersion: 1,
744
+ * keys: [resolveKey('C major')], meters: [{ startBeat: 0, ts: { numerator: 4, denominator: 4 } }],
745
+ * span: { startBeat: 0, endBeat: 4, bars: 1 }, sections: [], phrases: [],
746
+ * harmony: [{ startBeat: 0, endBeat: 4, key: 0, roman: 'I' }], motifs: [],
747
+ * rhythm: { onsetLevels: [1, 0, 0, 0, 0, 0], interOnsetShares: new Array(17).fill(0).fill(1, 8, 9), syncopation: 0 },
748
+ * };
749
+ * planTimeline(plan).at(0); // the I chord in C major
750
+ * ```
751
+ * @category Composition
752
+ */
753
+ declare function planTimeline(plan: CompositionPlan): ChordTimeline;
754
+
755
+ /**
756
+ * Boundary validation for {@link CompositionPlan}: a caller can hand this a
757
+ * value restored from JSON, a config file, or a plugin host, and every field
758
+ * is checked before a generator or evaluator reads it. A violation names the
759
+ * path to the offending field, so a malformed document is diagnosed at the
760
+ * field that is wrong rather than wherever the first bad read happens to land.
761
+ */
762
+
763
+ /**
764
+ * Reject a value that is not a {@link CompositionPlan}.
765
+ *
766
+ * A plan is the shape a caller's stored JSON, a config file, or a plugin host
767
+ * most plausibly hands back malformed: a missing field, a distribution that no
768
+ * longer sums to 1, an index a later edit left dangling, a numeral no reader
769
+ * can parse, a derivation that points at itself or at a later motif. Every
770
+ * field is checked before a generator or evaluator reads it, and a violation
771
+ * names the path to the field that is wrong.
772
+ *
773
+ * @param value The value to check.
774
+ * @param name What the value is, for the error message.
775
+ * @returns The same plan.
776
+ * @throws {InvalidInputError} If the value is not a valid composition plan.
777
+ * @example
778
+ * ```ts
779
+ * import { assertCompositionPlan } from '@libraz/libcantus';
780
+ * import { resolveKey } from '@libraz/libcantus';
781
+ * const plan = {
782
+ * planVersion: 1, seed: 0, algorithmVersion: 1,
783
+ * keys: [resolveKey('C major')],
784
+ * meters: [{ startBeat: 0, ts: { numerator: 4, denominator: 4 } }],
785
+ * span: { startBeat: 0, endBeat: 4, bars: 1 },
786
+ * sections: [{ label: 'A', startBeat: 0, endBeat: 4 }],
787
+ * phrases: [],
788
+ * harmony: [{ startBeat: 0, endBeat: 4, key: 0, roman: 'I' }],
789
+ * motifs: [],
790
+ * rhythm: { onsetLevels: [1, 0, 0, 0, 0, 0], interOnsetShares: new Array(17).fill(0).fill(1, 8, 9), syncopation: 0 },
791
+ * };
792
+ * assertCompositionPlan(plan); // the plan, unchanged
793
+ * ```
794
+ * @category Composition
795
+ */
796
+ declare function assertCompositionPlan(value: unknown, name?: string): CompositionPlan;
797
+
798
+ export { Articulation, BASS_LICKS, type BassLick, ChordLike, ChordSegment, ChordTimeline, type ClassifiedMelodyTone, CompositionPlan, 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, assertCompositionPlan, classifyMelodyTones, harmonizeMelody, imitate, isDrumPattern, isFillArchetype, isLickMaterial, placeDrumPattern, placeLicks, planTimeline, sustainsShift, sustainsStrokes };
@@ -4,6 +4,7 @@ import {
4
4
  BASS_STYLES,
5
5
  BEAT_STEPS,
6
6
  BORROWED_DEGREES,
7
+ COMPOSITION_PLAN_VERSION,
7
8
  DRUM_KIT,
8
9
  DRUM_NOTES,
9
10
  DRUM_PATTERNS,
@@ -18,18 +19,22 @@ import {
18
19
  PROVENANCE_BASES,
19
20
  STEP_BEATS,
20
21
  applyGrooveTemplate,
22
+ assertCompositionPlan,
21
23
  assertVocabulary,
22
24
  classifyMelodyTones,
23
25
  deform,
26
+ deriveCompositionPlan,
24
27
  developMotif,
25
28
  double,
26
29
  doubleTime,
27
30
  drumVoiceOf,
31
+ evaluateComposition,
28
32
  extractGrooveTemplate,
29
33
  fitsQuery,
30
34
  generateBassLine,
31
35
  generateCounterMelody,
32
36
  generateDrums,
37
+ generateMelody,
33
38
  generateMotif,
34
39
  generateProgression,
35
40
  generateRhythm,
@@ -52,6 +57,7 @@ import {
52
57
  pickVocabulary,
53
58
  placeDrumPattern,
54
59
  placeLicks,
60
+ planTimeline,
55
61
  progressions,
56
62
  progressionsByStyle,
57
63
  resolveContext,
@@ -66,19 +72,20 @@ import {
66
72
  transformMotif,
67
73
  vocabularyOfKind,
68
74
  withinCeiling
69
- } from "../chunk-R5VUXQMP.js";
70
- import "../chunk-VLE5R7PF.js";
71
- import "../chunk-X6RJAHII.js";
72
- import "../chunk-7GOKQJTQ.js";
73
- import "../chunk-H66ARFU5.js";
74
- import "../chunk-FPBZFNCD.js";
75
- import "../chunk-PQL7E5F6.js";
75
+ } from "../chunk-CPMB7P75.js";
76
+ import "../chunk-GNVN4PPJ.js";
77
+ import "../chunk-7KG3RTYS.js";
78
+ import "../chunk-PUKJP2Z5.js";
79
+ import "../chunk-NB25P3EH.js";
80
+ import "../chunk-RFIBF2RR.js";
81
+ import "../chunk-AGOVW7U6.js";
76
82
  export {
77
83
  BAR_STEPS,
78
84
  BASS_LICKS,
79
85
  BASS_STYLES,
80
86
  BEAT_STEPS,
81
87
  BORROWED_DEGREES,
88
+ COMPOSITION_PLAN_VERSION,
82
89
  DRUM_KIT,
83
90
  DRUM_NOTES,
84
91
  DRUM_PATTERNS,
@@ -93,18 +100,22 @@ export {
93
100
  PROVENANCE_BASES,
94
101
  STEP_BEATS,
95
102
  applyGrooveTemplate,
103
+ assertCompositionPlan,
96
104
  assertVocabulary,
97
105
  classifyMelodyTones,
98
106
  deform,
107
+ deriveCompositionPlan,
99
108
  developMotif,
100
109
  double,
101
110
  doubleTime,
102
111
  drumVoiceOf,
112
+ evaluateComposition,
103
113
  extractGrooveTemplate,
104
114
  fitsQuery,
105
115
  generateBassLine,
106
116
  generateCounterMelody,
107
117
  generateDrums,
118
+ generateMelody,
108
119
  generateMotif,
109
120
  generateProgression,
110
121
  generateRhythm,
@@ -127,6 +138,7 @@ export {
127
138
  pickVocabulary,
128
139
  placeDrumPattern,
129
140
  placeLicks,
141
+ planTimeline,
130
142
  progressions,
131
143
  progressionsByStyle,
132
144
  resolveContext,
@@ -1,6 +1,6 @@
1
1
  import { e as KeyScale, i as NoteLike, j as NoteNameOptions, P as ParseResult, g as Note, b as IntervalLike, S as SpelledInterval } from './index-Cy15oTvh.cjs';
2
- import { n as ResolvedKey, K as KeyLike, c as ChordLike, b as Chord, q as SpelledKeyLike } from './coerce-CJlgULrQ.cjs';
3
- import { r as ScaleName, u as WorldScaleName, s as ScaleNameInput } from './masks-C8TWLFIi.cjs';
2
+ import { n as ResolvedKey, K as KeyLike, c as ChordLike, b as Chord, r as SpelledKeyLike } from './coerce-DRERzdve.cjs';
3
+ import { r as ScaleName, u as WorldScaleName, s as ScaleNameInput } from './masks-pADfTOiD.cjs';
4
4
 
5
5
  /**
6
6
  * Which of the two modes a key signature is read in.
@@ -1,6 +1,6 @@
1
1
  import { e as KeyScale, i as NoteLike, j as NoteNameOptions, P as ParseResult, g as Note, b as IntervalLike, S as SpelledInterval } from './index-Cy15oTvh.js';
2
- import { n as ResolvedKey, K as KeyLike, c as ChordLike, b as Chord, q as SpelledKeyLike } from './coerce-wwdELNYS.js';
3
- import { r as ScaleName, u as WorldScaleName, s as ScaleNameInput } from './masks-O73Rhj5d.js';
2
+ import { n as ResolvedKey, K as KeyLike, c as ChordLike, b as Chord, r as SpelledKeyLike } from './coerce-DP0vYu-x.js';
3
+ import { r as ScaleName, u as WorldScaleName, s as ScaleNameInput } from './masks-Cc7-MzzY.js';
4
4
 
5
5
  /**
6
6
  * Which of the two modes a key signature is read in.
@@ -1,4 +1,4 @@
1
- import { i as ChordToneRole, c as ChordLike } from './coerce-CJlgULrQ.cjs';
1
+ import { i as ChordToneRole, c as ChordLike } from './coerce-DRERzdve.cjs';
2
2
 
3
3
  /**
4
4
  * Harmonic role a pitch plays within a chord.
@@ -88,6 +88,9 @@ type MeterChange = {
88
88
  * a map opening at the pickup it covers numbers its bars exactly as the bare
89
89
  * signature does. Every later entry starts a bar at the beat it takes effect.
90
90
  *
91
+ * Pass the whole piece with its map rather than one call per meter span: a
92
+ * split call cannot see a voice move or a key region that crosses the change.
93
+ *
91
94
  * @category Rhythm & Meter
92
95
  */
93
96
  type MeterMap = MeterChange[];
@@ -88,6 +88,9 @@ type MeterChange = {
88
88
  * a map opening at the pickup it covers numbers its bars exactly as the bare
89
89
  * signature does. Every later entry starts a bar at the beat it takes effect.
90
90
  *
91
+ * Pass the whole piece with its map rather than one call per meter span: a
92
+ * split call cannot see a voice move or a key region that crosses the change.
93
+ *
91
94
  * @category Rhythm & Meter
92
95
  */
93
96
  type MeterMap = MeterChange[];