@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,23 +1,23 @@
1
- import { R as ReduceProgressionOptions, v as ReducedChord, D as DetectChordOptions, C as ChordMatch, h as DetectKeyOptions, K as KeyMatch, d as AugmentedSixthKind, t as PhraseOptions, P as Phrase, S as StructuralCadence, i as FormSectionOptions, F as FormSection, j as HypermeterOptions, H as Hypermeter, E as ExtractMotifsOptions, p as MotifData, k as MelodicContour, c as ArrangementTrack, a as ArrangementOptions, A as ArrangementAnalysis, e as Conflict, z as TrackEdit, T as TensionPoint, r as MotifRelation } from '../index-DGCNKAUr.cjs';
2
- export { b as ArrangementSession, f as ConflictPartner, g as ContourDirection, l as MelodicContourShape, o as ModalScaleName, q as MotifOccurrence, s as MotifRelationKind, u as PhraseSignal, w as ReductionBasis, x as ReductionLevel, y as TrackAnalysis, B as TrackRole } from '../index-DGCNKAUr.cjs';
3
- import { k as KeyRegion, f as ChordTimelineOptions, C as CadenceHit, l as KeyTimelineOptions, h as ChordToRomanOptions, e as ChordTimeline, H as HarmonicFunction, A as AnalyzeChordOptions, D as DetectCadenceOptions, c as ChordAnalysis, b as CadenceResult, E as ExplainRomanOptions, m as RomanExplanation, B as BorrowedSource, a as AnalyzedNote, I as IdentifiedVoiceNote } from '../index-BBWNZS0f.cjs';
4
- export { d as ChordSegmentation, g as ChordTimelineResult, K as KeyContext, i as KeyProfileName, j as KeyProfilePair, P as PivotChord, R as RejectedCandidate, S as SuspensionFigure, T as TheoryLabel, V as VoiceNote } from '../index-BBWNZS0f.cjs';
5
- import { c as IntervalQualityLabel, I as IntervalData, P as ParseResult, S as SpelledInterval, g as Note$1, j as NoteNameOptions, b as IntervalLike, h as NoteEvent, i as NoteLike, e as KeyScale, a as Articulation } from '../index-Cy15oTvh.cjs';
6
- export { B as BudgetExceededError, d as InvalidInputError, L as LibcantusError, N as NoSolutionError, k as NoteNameSystem } from '../index-Cy15oTvh.cjs';
7
- import { K as KeyLike, e as ChordSegment, g as ChordSpan, b as Chord$1, d as ChordQuality, h as ChordSpec, i as ChordToneRole, n as ResolvedKey, k as KeyVariant, j as KeyRelation, c as ChordLike, r as SpelledKeyLike, p as SafetyQuery, E as EvaluateSafetyOptions, q as SafetyResult } from '../coerce-DRERzdve.cjs';
8
- export { A as Alteration, a as AlteredDegree, C as ChordBase, f as ChordSeventh, N as NoteSafety, l as PitchSpelling, m as ProfileWeights, S as SafetyPartner, o as SafetyProfile, s as SpelledKeyScale, V as VoiceSnapshot } from '../coerce-DRERzdve.cjs';
9
- import { j as TuningTable, i as TempoMap, g as PlayabilityReport, b as NoteEventIndexOptions, a as NoteEventIndex, d as NoteValue, k as Tuplet, D as DurationData, S as SpelledDuration } from '../index-cHvbYgJI.cjs';
10
- export { I as IndexedNoteEvent, c as NotePlacement, O as OnsetTieBreak, P as PlayabilityIssue, e as PlayabilityIssueType, f as PlayabilityLayer, h as TempoEvent } from '../index-cHvbYgJI.cjs';
11
- import { b as InstrumentProfileLike, d as PositionalRng, I as InstrumentProfile, e as StringFingering } from '../positional-DMZer-FM.cjs';
12
- export { a as InstrumentProfileCommon, c as Limb, P as PercussionProfile, S as SeedPath, f as StringedProfile, V as ValidatedPercussionProfile, g as ValidatedProfile, h as ValidatedStringedProfile } from '../positional-DMZer-FM.cjs';
13
- import { c as MeterMap, b as MeterLike, B as BarPosition, T as TimeSignature } from '../index-BMweUlm5.cjs';
14
- export { M as MeterChange } from '../index-BMweUlm5.cjs';
15
- import { s as ScaleNameInput, r as ScaleName } from '../masks-pADfTOiD.cjs';
16
- import { n as TransposingInstrument, r as VoicingOptions, h as ScaleChoice, d as ChordSymbolOptions, m as StyledVoicingOptions, C as ChordScaleMatch, c as ChordScaleReportEntry, A as AvailableTensionsOptions, b as AvoidNotesOptions, K as KeyMode, i as ScaleSystem, q as VoiceRange, P as PartWritingOptions, e as PartWritingViolation, j as Species, k as SpeciesOptions, V as VoiceIndependenceOptions, p as VoiceIndependenceReport } from '../index-B9QLziDe.cjs';
17
- export { a as AvoidNoteUse, f as PartWritingViolationKind, o as TransposingInstrumentName, s as VoicingStyle } from '../index-B9QLziDe.cjs';
18
- import { a2 as SubstitutionType, a0 as SubstituteOptions, a1 as Substitution, g as BorrowedChord, z as HumanizeOptions, L as OrnamentOptions, w as GrooveTemplate, d as BassLineOptions, C as Complexity, a4 as Vocabulary, T as ProgressionOptions, o as DrumsOptions, e as BassSegment, h as CounterMelodyOptions, H as HarmonizeOptions, p as GenerationContext, A as MotifCell, F as MotifContour, q as GenerationContextInput, I as MotifNote, K as MotifTransform, Y as RhythmEvent, Z as RhythmOptions } from '../index-BNSM-DSk.cjs';
19
- export { f as BassStyle, l as DrumRole, E as EuclideanKick, r as Genre, s as GridEvent, t as GrooveFeel, u as GrooveSlot, v as GrooveStyle, x as HarmonizePlacement, M as MelodyNote, N as OrnamentStyle, Q as ProgFunction, R as ProgStyle, S as ProgressionDegree, U as ProgressionPreset, V as Provenance, W as ProvenanceBasis, $ as Section } from '../index-BNSM-DSk.cjs';
20
- import '../index-BL5N2Oyz.cjs';
1
+ import { D as DetectChordOptions, C as ChordMatch, g as DetectKeyOptions, K as KeyMatch, d as AugmentedSixthKind, k as PhraseOptions, P as Phrase, S as StructuralCadence, h as HypermeterOptions, H as Hypermeter, R as ReferenceProfileOptions, c as ArrangementTrack, a as ArrangementOptions, A as ArrangementAnalysis, e as Conflict, n as TrackEdit, T as TensionPoint } from '../profile-BJd1XkPB.cjs';
2
+ export { b as ArrangementSession, f as ConflictPartner, j as ModalScaleName, l as PhraseSignal, m as TrackAnalysis, o as TrackRole } from '../profile-BJd1XkPB.cjs';
3
+ import { r as KeyRegion, i as ChordTimelineOptions, U as ReduceProgressionOptions, V as ReducedChord, c as CadenceHit, s as KeyTimelineOptions, k as ChordToRomanOptions, h as ChordTimeline, o as HarmonicFunction, A as AnalyzeChordOptions, D as DetectCadenceOptions, f as ChordAnalysis, d as CadenceResult, E as ExplainRomanOptions, a9 as RomanExplanation, b as BorrowedSource, n as FormSectionOptions, F as FormSection, m as ExtractMotifsOptions, x as MotifData, u as MelodicContour, a5 as ReferenceProfile, a8 as RhythmAnalysisOptions, a7 as RhythmAnalysis, J as MotifGraphOptions, y as MotifGraph, a as AnalyzedNote, I as IdentifiedVoiceNote, N as MotifRelation } from '../types-_ofpb2be.cjs';
4
+ export { B as BarPositionProfile, e as CadenceType, g as ChordSegmentation, j as ChordTimelineResult, l as ContourDirection, K as KeyContext, p as KeyProfileName, q as KeyProfilePair, v as MelodicContourShape, z as MotifGraphEdge, G as MotifGraphNode, L as MotifOccurrence, O as MotifRelationKind, P as MotifRelationSummary, Q as PivotChord, W as ReductionBasis, 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, a6 as RejectedCandidate, aa as SuspensionFigure, ab as TheoryLabel, ac as VoiceNote } from '../types-_ofpb2be.cjs';
5
+ import { c as IntervalQualityLabel, I as IntervalData, P as ParseResult, S as SpelledInterval, g as Note$1, j as NoteNameOptions, b as IntervalLike, h as NoteEvent, i as NoteLike, e as KeyScale, a as Articulation } from '../index-C9MYbuKS.cjs';
6
+ export { B as BudgetExceededError, d as InvalidInputError, L as LibcantusError, N as NoSolutionError, k as NoteNameSystem } from '../index-C9MYbuKS.cjs';
7
+ import { K as KeyLike, e as ChordSegment, g as ChordSpan, b as Chord$1, d as ChordQuality, h as ChordSpec, i as ChordToneRole, n as ResolvedKey, k as KeyVariant, j as KeyRelation, c as ChordLike, r as SpelledKeyLike, p as SafetyQuery, E as EvaluateSafetyOptions, q as SafetyResult } from '../coerce-Ytt2Eiq9.cjs';
8
+ export { A as Alteration, a as AlteredDegree, C as ChordBase, f as ChordSeventh, N as NoteSafety, l as PitchSpelling, m as ProfileWeights, S as SafetyPartner, o as SafetyProfile, s as SpelledKeyScale, V as VoiceSnapshot } from '../coerce-Ytt2Eiq9.cjs';
9
+ import { j as TuningTable, i as TempoMap, g as PlayabilityReport, b as NoteEventIndexOptions, a as NoteEventIndex, d as NoteValue, k as Tuplet, D as DurationData, S as SpelledDuration } from '../index-pQihL4z7.cjs';
10
+ export { I as IndexedNoteEvent, c as NotePlacement, O as OnsetTieBreak, P as PlayabilityIssue, e as PlayabilityIssueType, f as PlayabilityLayer, h as TempoEvent } from '../index-pQihL4z7.cjs';
11
+ import { b as InstrumentProfileLike, d as PositionalRng, I as InstrumentProfile, e as StringFingering } from '../positional-CscpxtlE.cjs';
12
+ export { a as InstrumentProfileCommon, c as Limb, P as PercussionProfile, S as SeedPath, f as StringedProfile, V as ValidatedPercussionProfile, g as ValidatedProfile, h as ValidatedStringedProfile } from '../positional-CscpxtlE.cjs';
13
+ import { c as MeterMap, b as MeterLike, B as BarPosition, T as TimeSignature } from '../index-5VJgKz_Q.cjs';
14
+ export { M as MeterChange } from '../index-5VJgKz_Q.cjs';
15
+ import { s as ScaleNameInput, r as ScaleName } from '../masks-BnzXnBj0.cjs';
16
+ import { n as TransposingInstrument, r as VoicingOptions, h as ScaleChoice, d as ChordSymbolOptions, m as StyledVoicingOptions, C as ChordScaleMatch, c as ChordScaleReportEntry, A as AvailableTensionsOptions, b as AvoidNotesOptions, K as KeyMode, i as ScaleSystem, q as VoiceRange, P as PartWritingOptions, e as PartWritingViolation, j as Species, k as SpeciesOptions, V as VoiceIndependenceOptions, p as VoiceIndependenceReport } from '../index-BV6APVa6.cjs';
17
+ export { a as AvoidNoteUse, f as PartWritingViolationKind, o as TransposingInstrumentName, s as VoicingStyle } from '../index-BV6APVa6.cjs';
18
+ import { af as SubstitutionType, ad as SubstituteOptions, ae as Substitution, g as BorrowedChord, L as HumanizeOptions, U as OrnamentOptions, H as GrooveTemplate, j as CompositionPlan, u as EvaluateCompositionOptions, i as CompositionEvaluation, d as BassLineOptions, h as Complexity, ah as Vocabulary, a4 as ProgressionOptions, t as DrumsOptions, e as BassSegment, m as CounterMelodyOptions, I as HarmonizeOptions, k as CompositionPlanOptions, N as MelodyOptions, v as GenerationContext, O as MotifCell, P as MotifContour, w as GenerationContextInput, Q as MotifNote, S as MotifTransform, a9 as RhythmEvent, aa as RhythmOptions } from '../index-DVInzCDS.cjs';
19
+ export { f as BassStyle, l as CompositionViolation, q as DrumRole, E as EuclideanKick, x as Genre, y as GridEvent, z as GrooveFeel, A as GrooveSlot, F as GrooveStyle, J as HarmonizePlacement, M as MelodyNote, V as OrnamentStyle, 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, a5 as ProgressionPreset, a6 as Provenance, a7 as ProvenanceBasis, ac as Section } from '../index-DVInzCDS.cjs';
20
+ import '../index-BkT21EMv.cjs';
21
21
 
22
22
  /**
23
23
  * An immutable spelled interval value: a diatonic number, a quality label, and
@@ -160,6 +160,9 @@ declare class Interval {
160
160
  /**
161
161
  * Whether the interval is consonant.
162
162
  *
163
+ * The spelling decides, not the span: a diminished fourth is a dissonance
164
+ * though it sounds like a major third.
165
+ *
163
166
  * @param twoVoice When true, the perfect fourth counts as a dissonance,
164
167
  * matching two-voice counterpoint.
165
168
  * @returns True if the interval is consonant in that context.
@@ -609,8 +612,9 @@ declare class Timeline {
609
612
  *
610
613
  * @param data The segments and the span they cover; copied, never retained.
611
614
  * @throws If the span, a segment, or a key region carries a number it cannot
612
- * hold — a beat that is not finite, a mode mask that names no scale — or if
613
- * the confidences do not run one per segment.
615
+ * hold — a beat that is not finite, a mode mask that names no scale — if
616
+ * the segments or the key regions are not disjoint, in beat order and of
617
+ * positive length, or if the confidences do not run one per segment.
614
618
  */
615
619
  constructor(data: TimelineData);
616
620
  /**
@@ -619,7 +623,8 @@ declare class Timeline {
619
623
  * @param spans The chords with their onsets, in any order.
620
624
  * @param totalBeats Where the last chord stops sounding.
621
625
  * @param key The key the chords are read in, when it is already known. It
622
- * becomes the one key region under the whole span; without it the timeline
626
+ * becomes the one key region from the first chord to the end of the span;
627
+ * without it, or without a chord for it to be in force over, the timeline
623
628
  * carries no key, and the members that need one say so.
624
629
  * @returns The timeline.
625
630
  */
@@ -844,6 +849,12 @@ declare class Timeline {
844
849
  type ProgressionData = {
845
850
  chords: Chord$1[];
846
851
  key: KeyData | undefined;
852
+ /**
853
+ * Each chord's own key by position, null for a chord without one. Written
854
+ * only when the progression carries no key and some chord does; read only
855
+ * when `key` is absent, since a progression key reaches every chord.
856
+ */
857
+ chordKeys?: (KeyData | null)[];
847
858
  };
848
859
  /**
849
860
  * An immutable ordered sequence of chords, optionally carrying a {@link Key}
@@ -907,10 +918,12 @@ declare class Progression {
907
918
  */
908
919
  static fromSpans(spans: readonly ChordSpan[], key?: KeyLike): Progression;
909
920
  /**
910
- * Rebuild a progression from its {@link Progression.toJSON} output.
921
+ * Rebuild a progression from its {@link Progression.toJSON} output, with the
922
+ * carried key or, without one, each chord's own key.
911
923
  *
912
- * @param data The serialized chords and key.
924
+ * @param data The serialized chords and keys.
913
925
  * @returns The progression.
926
+ * @throws If `chordKeys` does not hold one entry per chord.
914
927
  */
915
928
  static fromJSON(data: ProgressionData): Progression;
916
929
  /**
@@ -1284,10 +1297,12 @@ declare class Progression {
1284
1297
  /**
1285
1298
  * The plain progression data, for JSON serialization.
1286
1299
  *
1287
- * Private class fields do not serialize, so this preserves both the chord
1288
- * data and any carried key in `JSON.stringify(progression)`.
1300
+ * Private class fields do not serialize, so this preserves the chord data,
1301
+ * any carried key, and — for a progression with no key of its own — each
1302
+ * chord's own key in `JSON.stringify(progression)`.
1289
1303
  *
1290
- * @returns The chord data sequence and the carried key, if any.
1304
+ * @returns The chord data sequence, the carried key, if any, and the
1305
+ * per-chord keys when they are what spells the chords.
1291
1306
  */
1292
1307
  toJSON(): ProgressionData;
1293
1308
  }
@@ -2225,7 +2240,7 @@ declare class Key {
2225
2240
  get scaleName(): ScaleName | undefined;
2226
2241
  /** A copy of the underlying plain key data. */
2227
2242
  get data(): KeyData;
2228
- /** The detected scale form, when this key came from key detection. */
2243
+ /** The scale form this key stands in: natural, harmonic or melodic, read from the mask unless named. */
2229
2244
  get variant(): KeyVariant;
2230
2245
  /**
2231
2246
  * The scale's pitch classes.
@@ -2516,7 +2531,7 @@ declare class Key {
2516
2531
  *
2517
2532
  * Unlike {@link Key.transpose}, which picks a letter from the semitone count,
2518
2533
  * the interval's diatonic number decides the tonic's letter: G# minor down an
2519
- * augmented fourth is D minor, while down a diminished fifth it is Dbb minor.
2534
+ * augmented fourth is D minor, while down a diminished fifth it is C## minor.
2520
2535
  * The mode mask is unchanged, so the scale keeps its shape.
2521
2536
  *
2522
2537
  * @param interval The interval to apply, as a name (`'A4'`, `'-A4'`), plain
@@ -2790,12 +2805,11 @@ declare class Key {
2790
2805
  *
2791
2806
  * Private class fields do not serialize, so an explicit `toJSON` keeps
2792
2807
  * `JSON.stringify(key)` from collapsing to `{}`. The result pairs the
2793
- * `KeyScale` with the spelled tonic and, for a detected harmonic or melodic
2794
- * minor, the scale form — everything {@link Key.fromJSON} needs to rebuild a
2795
- * key that reads and prints as this one.
2808
+ * `KeyScale` with the spelled tonic and the scale form — everything
2809
+ * {@link Key.fromJSON} needs to rebuild a key that reads and prints as this
2810
+ * one.
2796
2811
  *
2797
- * @returns The key/scale, its spelled tonic, and its scale form when it has
2798
- * one.
2812
+ * @returns The key/scale, its spelled tonic, and its scale form.
2799
2813
  */
2800
2814
  toJSON(): KeyData;
2801
2815
  /**
@@ -3033,9 +3047,8 @@ declare class Score {
3033
3047
  /**
3034
3048
  * The notes pushed off the grid the way a player would.
3035
3049
  *
3036
- * The metric accents are read from the score's opening signature, since
3037
- * {@link HumanizeOptions} names one signature rather than a map; pass `ts`
3038
- * to read a later stretch of a score that changes meter.
3050
+ * The metric accents are read against the score's meter map, exactly as
3051
+ * {@link humanize} reads that map; pass `ts` to read against another meter.
3039
3052
  *
3040
3053
  * @param opts Jitter amounts, accent depth and the seed; see
3041
3054
  * {@link HumanizeOptions}.
@@ -3045,8 +3058,8 @@ declare class Score {
3045
3058
  /**
3046
3059
  * The notes with ornaments added.
3047
3060
  *
3048
- * Strong positions are read from the score's opening signature, since
3049
- * {@link OrnamentOptions} names one signature rather than a map.
3061
+ * Strong positions are read against the score's meter map, exactly as
3062
+ * {@link ornament} reads that map.
3050
3063
  *
3051
3064
  * @param opts The ornament style, how much is decorated, and the seed; see
3052
3065
  * {@link OrnamentOptions}.
@@ -3056,9 +3069,9 @@ declare class Score {
3056
3069
  /**
3057
3070
  * The notes placed on a groove template's slots.
3058
3071
  *
3059
- * The template's per-bar grid is laid out against the score's opening
3060
- * signature, which is the signature the template must have been extracted
3061
- * under; a template carrying a different one is refused rather than drifting.
3072
+ * The template's per-bar grid is laid out against the score's meter map,
3073
+ * exactly as {@link applyGrooveTemplate} reads that map; a template extracted
3074
+ * under another meter is refused rather than drifting.
3062
3075
  *
3063
3076
  * @param template The groove template, from `extractGrooveTemplate`.
3064
3077
  * @returns The score with the template's feel imposed.
@@ -3072,8 +3085,8 @@ declare class Score {
3072
3085
  * slot by slot for how far ahead of or behind the grid it sits and how hard
3073
3086
  * it is struck, and the reading is handed back as a template. Only the
3074
3087
  * subdivision is named, because the score already holds the meter the grid is
3075
- * laid out against — its opening signature, which is the one the template
3076
- * records and the one an apply-time meter is checked against.
3088
+ * laid out against — its meter map, read exactly as
3089
+ * {@link extractGrooveTemplate} reads that map.
3077
3090
  *
3078
3091
  * @param subdivision Grid steps per quarter-note beat; a sixteenth-note grid
3079
3092
  * by default, which is where swing, push and drag are audible.
@@ -3202,8 +3215,9 @@ declare class Score {
3202
3215
  *
3203
3216
  * A melody is one line, so a score holding several is read as its top voice:
3204
3217
  * notes struck together are one event and the highest of them stands for it.
3205
- * A piano part read whole therefore answers for the voice a listener follows
3206
- * rather than for a line assembled from the insides of its chords. Split the
3218
+ * A block-chord part read whole therefore answers for its top voice rather
3219
+ * than for a line assembled from the insides of its chords; a lower note
3220
+ * struck while a higher one still sounds stays in the line, though. Split the
3207
3221
  * score into lines first to have each of them answered for.
3208
3222
  *
3209
3223
  * @param opts Cell-length bounds and the recurrence threshold; see
@@ -3236,6 +3250,113 @@ declare class Score {
3236
3250
  * answered for; {@link Score.voices} is what reads the polyphony as polyphony.
3237
3251
  */
3238
3252
  contour(): MelodicContour;
3253
+ /**
3254
+ * The score's structural fingerprint: form, phrase shape, harmonic function
3255
+ * and rhythm, and how its motifs derive from one another.
3256
+ *
3257
+ * The harmony is the score's own kept chord analysis, read once whether this
3258
+ * is asked before or after {@link Score.timeline} — unless `opts.timeline`
3259
+ * gives the harmony directly, in which case the reading runs fresh through
3260
+ * {@link analyzeReference} rather than the harmony this score already holds.
3261
+ * The meter, the key and the span are the score's own and are not on offer
3262
+ * here: a caller wanting another meter reads through {@link
3263
+ * Score.withMeters}, and one wanting another key or span calls {@link
3264
+ * analyzeReference} directly.
3265
+ *
3266
+ * Asked with no options, the answer is kept and a copy of it handed back, as
3267
+ * {@link Score.timeline} keeps its own reading; asked with options, the
3268
+ * answer is read afresh and not kept.
3269
+ *
3270
+ * @param opts The harmony, the melody, and the budget; see {@link
3271
+ * ReferenceProfileOptions}. Meter, key and span are the score's own.
3272
+ * @returns The profile.
3273
+ * @example
3274
+ * ```ts
3275
+ * import { Score } from '@libraz/libcantus';
3276
+ * const triad = (pitches: number[], startBeat: number) =>
3277
+ * pitches.map((pitch) => ({ pitch, startBeat, durationBeat: 4 }));
3278
+ * const score = Score.of(
3279
+ * [
3280
+ * ...triad([60, 64, 67], 0),
3281
+ * ...triad([65, 69, 72], 4),
3282
+ * ...triad([67, 71, 74], 8),
3283
+ * ...triad([60, 64, 67], 12),
3284
+ * ],
3285
+ * { key: 'C major' },
3286
+ * );
3287
+ * score.reference().harmony.chords.map((chord) => chord.roman); // ['I', 'IV', 'V', 'I']
3288
+ * ```
3289
+ */
3290
+ reference(opts?: Omit<ReferenceProfileOptions, 'ts' | 'meters' | 'key' | 'totalBeats'>): ReferenceProfile;
3291
+ /**
3292
+ * The onset placement of the score's melodic line.
3293
+ *
3294
+ * A melody is one line, so a score holding several is read as its top voice,
3295
+ * as {@link Score.motifs} and {@link Score.contour} are.
3296
+ *
3297
+ * @param opts The span's end and the budget; see {@link
3298
+ * RhythmAnalysisOptions}. The meter is the score's own.
3299
+ * @returns The rhythm reading.
3300
+ * @example
3301
+ * ```ts
3302
+ * import { Score } from '@libraz/libcantus';
3303
+ * const score = Score.of([
3304
+ * { pitch: 60, startBeat: 0, durationBeat: 1 },
3305
+ * { pitch: 62, startBeat: 1, durationBeat: 1 },
3306
+ * { pitch: 64, startBeat: 2, durationBeat: 1 },
3307
+ * { pitch: 65, startBeat: 3, durationBeat: 1 },
3308
+ * ]);
3309
+ * score.rhythm().onsetDensity; // 4
3310
+ * ```
3311
+ */
3312
+ rhythm(opts?: Omit<RhythmAnalysisOptions, 'ts' | 'meters'>): RhythmAnalysis;
3313
+ /**
3314
+ * How the score's motifs derive from one another: which statement grew out
3315
+ * of which, and by what transformation.
3316
+ *
3317
+ * {@link Score.motifs} finds the cells; this reads across their occurrences
3318
+ * and names, for every statement after the first, the earlier one it most
3319
+ * plausibly grew out of. A melody is one line, so a score holding several is
3320
+ * read as its top voice, as {@link Score.motifs} is.
3321
+ *
3322
+ * @param opts Cell-length bounds and the recurrence threshold {@link
3323
+ * Score.motifs} takes, plus the variation threshold and the budget; see
3324
+ * {@link MotifGraphOptions} and {@link ExtractMotifsOptions}.
3325
+ * @returns The derivation forest.
3326
+ * @example
3327
+ * ```ts
3328
+ * import { Score } from '@libraz/libcantus';
3329
+ * const score = Score.of([
3330
+ * { pitch: 60, startBeat: 0, durationBeat: 1 },
3331
+ * { pitch: 62, startBeat: 1, durationBeat: 1 },
3332
+ * { pitch: 64, startBeat: 2, durationBeat: 1 },
3333
+ * { pitch: 60, startBeat: 3, durationBeat: 1 },
3334
+ * { pitch: 62, startBeat: 4, durationBeat: 1 },
3335
+ * { pitch: 64, startBeat: 5, durationBeat: 1 },
3336
+ * ]);
3337
+ * score.motifGraph().edges.length; // 1
3338
+ * ```
3339
+ */
3340
+ motifGraph(opts?: MotifGraphOptions & ExtractMotifsOptions): MotifGraph;
3341
+ /**
3342
+ * How this score, read as a melody, keeps to a composition plan.
3343
+ *
3344
+ * @param plan The plan the melody was written for.
3345
+ * @param opts The budget; see {@link EvaluateCompositionOptions}.
3346
+ * @returns The violations found and the fit reading; see {@link
3347
+ * evaluateComposition}.
3348
+ * @example
3349
+ * ```ts
3350
+ * import { Composer, Score } from '@libraz/libcantus';
3351
+ * const notes = [60, 62, 64, 65, 67, 65, 64, 62, 60, 62, 64, 65, 67, 65, 64, 60].map(
3352
+ * (pitch, startBeat) => ({ pitch, startBeat, durationBeat: 1 }),
3353
+ * );
3354
+ * const composer = Composer.of({ key: 'C major', seed: 5 });
3355
+ * const plan = composer.plan(Score.of(notes, { key: 'C major' }).reference());
3356
+ * composer.melody(plan).evaluate(plan).violations.some((v) => v.severity === 'error'); // false
3357
+ * ```
3358
+ */
3359
+ evaluate(plan: CompositionPlan, opts?: EvaluateCompositionOptions): CompositionEvaluation;
3239
3360
  /**
3240
3361
  * Each note's role in the harmony sounding under it.
3241
3362
  *
@@ -3577,6 +3698,47 @@ declare class Arrangement {
3577
3698
  * found under it.
3578
3699
  */
3579
3700
  timeline(): Timeline;
3701
+ /**
3702
+ * The arrangement's structural fingerprint: form, phrase shape, harmonic
3703
+ * function and rhythm, and how its melody's motifs derive from one another.
3704
+ *
3705
+ * The harmony reads the arrangement's own session analysis directly — the
3706
+ * tracks `settings.harmonyTracks` names, or else every track but the
3707
+ * percussion ones — so the harmony is never inferred a second time. The
3708
+ * melody is the notes of the tracks played with `role: 'melody'`, joined in
3709
+ * the order the tracks were given; an arrangement naming none reads the top
3710
+ * line of the harmony notes instead, as {@link analyzeReference} does
3711
+ * without a `melody` option. Meter, key, harmony and melody are the
3712
+ * arrangement's own and are not on offer here: a caller wanting others calls
3713
+ * {@link analyzeReference} directly, with the same notes {@link
3714
+ * Arrangement.tracks} hands out.
3715
+ *
3716
+ * @param opts The budget; see {@link ReferenceProfileOptions}.
3717
+ * @returns The profile.
3718
+ * @example
3719
+ * ```ts
3720
+ * import { Arrangement } from '@libraz/libcantus';
3721
+ * const triad = (pitches: number[], startBeat: number) =>
3722
+ * pitches.map((pitch) => ({ pitch, startBeat, durationBeat: 4 }));
3723
+ * const arrangement = Arrangement.of(
3724
+ * [
3725
+ * {
3726
+ * name: 'lead',
3727
+ * role: 'melody',
3728
+ * notes: [
3729
+ * ...triad([60, 64, 67], 0),
3730
+ * ...triad([65, 69, 72], 4),
3731
+ * ...triad([67, 71, 74], 8),
3732
+ * ...triad([60, 64, 67], 12),
3733
+ * ],
3734
+ * },
3735
+ * ],
3736
+ * { key: 'C major' },
3737
+ * );
3738
+ * arrangement.reference().harmony.chords.map((chord) => chord.roman); // ['I', 'IV', 'V', 'I']
3739
+ * ```
3740
+ */
3741
+ reference(opts?: Omit<ReferenceProfileOptions, 'ts' | 'meters' | 'key' | 'melody' | 'timeline' | 'totalBeats'>): ReferenceProfile;
3580
3742
  /**
3581
3743
  * Whether another arrangement holds the same tracks under the same settings.
3582
3744
  *
@@ -3844,6 +4006,54 @@ declare class Composer {
3844
4006
  * ```
3845
4007
  */
3846
4008
  harmonize(melody: Score, opts?: Omit<HarmonizeOptions, 'melody' | 'key' | 'ts' | 'ctx'>): HarmonizedMelody;
4009
+ /**
4010
+ * A composition plan derived from a reference profile.
4011
+ *
4012
+ * The composer's key is the plan's home key unless `opts.key` names another,
4013
+ * and its seed and algorithm version are the ones the plan records, so the
4014
+ * plan is written under the same recipe as the composer's other parts.
4015
+ *
4016
+ * @param reference The reference profile to derive from.
4017
+ * @param opts Everything {@link deriveCompositionPlan} takes but the context,
4018
+ * which is the composer's.
4019
+ * @returns The plan.
4020
+ * @throws If the composer draws from a caller-held `rng`: a plan records its
4021
+ * seed, and a source cannot be written into it.
4022
+ * @example
4023
+ * ```ts
4024
+ * import { Composer, Score } from '@libraz/libcantus';
4025
+ * const notes = [60, 62, 64, 65, 67, 65, 64, 62, 60, 62, 64, 65, 67, 65, 64, 60].map(
4026
+ * (pitch, startBeat) => ({ pitch, startBeat, durationBeat: 1 }),
4027
+ * );
4028
+ * const reference = Score.of(notes, { key: 'C major' }).reference();
4029
+ * const plan = Composer.of({ key: 'D major', seed: 5 }).plan(reference);
4030
+ * plan.seed; // 5
4031
+ * plan.keys[0].scale.rootPc; // 2
4032
+ * ```
4033
+ */
4034
+ plan(reference: ReferenceProfile, opts?: Omit<CompositionPlanOptions, 'ctx'>): CompositionPlan;
4035
+ /**
4036
+ * A melody written to a composition plan.
4037
+ *
4038
+ * The plan is the reproduction recipe, so its seed and algorithm version are
4039
+ * the ones the melody is drawn under, not the composer's. The score is read
4040
+ * in the plan's meter and home key, at the composer's tempo.
4041
+ *
4042
+ * @param plan The plan to follow.
4043
+ * @param opts The budget; see {@link MelodyOptions}.
4044
+ * @returns The melody, as a score.
4045
+ * @example
4046
+ * ```ts
4047
+ * import { Composer, Score } from '@libraz/libcantus';
4048
+ * const notes = [60, 62, 64, 65, 67, 65, 64, 62, 60, 62, 64, 65, 67, 65, 64, 60].map(
4049
+ * (pitch, startBeat) => ({ pitch, startBeat, durationBeat: 1 }),
4050
+ * );
4051
+ * const composer = Composer.of({ key: 'C major', seed: 5 });
4052
+ * const plan = composer.plan(Score.of(notes, { key: 'C major' }).reference());
4053
+ * composer.melody(plan).notes.length > 0; // true
4054
+ * ```
4055
+ */
4056
+ melody(plan: CompositionPlan, opts?: Omit<MelodyOptions, 'ctx'>): Score;
3847
4057
  /**
3848
4058
  * Whether another composer holds the same settings.
3849
4059
  *
@@ -5750,4 +5960,5 @@ declare class Voicing {
5750
5960
  toString(): string;
5751
5961
  }
5752
5962
 
5753
- export { AnalyzeChordOptions, AnalyzedNote, Arrangement, ArrangementAnalysis, type ArrangementData, ArrangementOptions, type ArrangementSettings, type ArrangementSetup, type ArrangementTensionOptions, ArrangementTrack, Articulation, AugmentedSixthKind, AvailableTensionsOptions, AvoidNotesOptions, BarPosition, BassLineOptions, type BassLineSettings, BassSegment, BorrowedChord, BorrowedSource, CadenceHit, CadenceResult, Chord, ChordAnalysis, Chord$1 as ChordData, ChordLike, ChordMatch, ChordQuality, ChordScaleMatch, ChordScaleReportEntry, ChordSegment, ChordSpan, ChordSpec, ChordSymbolOptions, ChordTimeline, ChordTimelineOptions, ChordToRomanOptions, ChordToneRole, Complexity, Composer, type ComposerOptions, Conflict, CounterMelodyOptions, type CounterMelodySettings, DetectCadenceOptions, DetectChordOptions, DetectKeyOptions, type DetectedKeyMatch, DrumsOptions, Duration, DurationData, EvaluateSafetyOptions, ExplainRomanOptions, ExtractMotifsOptions, FormSection, FormSectionOptions, GenerationContext, GenerationContextInput, GrooveTemplate, HarmonicFunction, HarmonizeOptions, type HarmonizedMelody, HumanizeOptions, Hypermeter, HypermeterOptions, IdentifiedVoiceNote, Instrument, InstrumentProfile, InstrumentProfileLike, Interval, IntervalData, IntervalLike, IntervalQualityLabel, Key, type KeyData, KeyLike, KeyMatch, KeyMode, KeyRegion, KeyRelation, KeyScale, KeyTimelineOptions, KeyVariant, MelodicContour, Meter, MeterLike, MeterMap, Motif, MotifCell, MotifContour, MotifData, type MotifGenerateOptions, MotifNote, MotifRelation, MotifTransform, Note, Note$1 as NoteData, NoteEvent, NoteEventIndex, NoteEventIndexOptions, NoteLike, NoteNameOptions, NoteValue, OrnamentOptions, ParseResult, PartWritingOptions, PartWritingViolation, Phrase, PhraseOptions, PlayabilityReport, PositionalRng, Progression, type ProgressionData, ProgressionOptions, ReduceProgressionOptions, ReducedChord, ResolvedKey, Rhythm, type RhythmData, type RhythmDeformOptions, RhythmEvent, RhythmOptions, RomanExplanation, SafetyQuery, SafetyResult, ScaleChoice, ScaleName, ScaleNameInput, ScaleSystem, Score, type ScoreData, type ScoreOptions, Species, SpeciesOptions, SpelledDuration, SpelledInterval, SpelledKeyLike, StringFingering, StructuralCadence, StyledVoicingOptions, SubstituteOptions, Substitution, SubstitutionType, Tempo, type TempoData, TempoMap, TensionPoint, TimeSignature, Timeline, type TimelineData, type TimelineRoman, TrackEdit, TransposingInstrument, Tuning, TuningTable, Tuplet, Vocabulary, VoiceIndependenceOptions, VoiceIndependenceReport, VoiceRange, Voicing, type VoicingData, type VoicingIndependenceOptions, VoicingOptions, type VoicingSafetyQuery };
5963
+ export { AnalyzeChordOptions, AnalyzedNote, Arrangement, ArrangementAnalysis, ArrangementOptions, ArrangementTrack, Articulation, AugmentedSixthKind, AvailableTensionsOptions, AvoidNotesOptions, BarPosition, BassLineOptions, BassSegment, BorrowedChord, BorrowedSource, CadenceHit, CadenceResult, Chord, ChordAnalysis, Chord$1 as ChordData, ChordLike, ChordMatch, ChordQuality, ChordScaleMatch, ChordScaleReportEntry, ChordSegment, ChordSpan, ChordSpec, ChordSymbolOptions, ChordTimeline, ChordTimelineOptions, ChordToRomanOptions, ChordToneRole, Complexity, Composer, CompositionEvaluation, CompositionPlan, CompositionPlanOptions, Conflict, CounterMelodyOptions, DetectCadenceOptions, DetectChordOptions, DetectKeyOptions, DrumsOptions, Duration, DurationData, EvaluateCompositionOptions, EvaluateSafetyOptions, ExplainRomanOptions, ExtractMotifsOptions, FormSection, FormSectionOptions, GenerationContext, GenerationContextInput, GrooveTemplate, HarmonicFunction, HarmonizeOptions, HumanizeOptions, Hypermeter, HypermeterOptions, IdentifiedVoiceNote, Instrument, InstrumentProfile, InstrumentProfileLike, Interval, IntervalData, IntervalLike, IntervalQualityLabel, Key, KeyLike, KeyMatch, KeyMode, KeyRegion, KeyRelation, KeyScale, KeyTimelineOptions, KeyVariant, MelodicContour, MelodyOptions, Meter, MeterLike, MeterMap, Motif, MotifCell, MotifContour, MotifData, MotifGraph, MotifGraphOptions, MotifNote, MotifRelation, MotifTransform, Note, Note$1 as NoteData, NoteEvent, NoteEventIndex, NoteEventIndexOptions, NoteLike, NoteNameOptions, NoteValue, OrnamentOptions, ParseResult, PartWritingOptions, PartWritingViolation, Phrase, PhraseOptions, PlayabilityReport, PositionalRng, Progression, ProgressionOptions, ReduceProgressionOptions, ReducedChord, ReferenceProfile, ReferenceProfileOptions, ResolvedKey, Rhythm, RhythmAnalysis, RhythmAnalysisOptions, RhythmEvent, RhythmOptions, RomanExplanation, SafetyQuery, SafetyResult, ScaleChoice, ScaleName, ScaleNameInput, ScaleSystem, Score, Species, SpeciesOptions, SpelledDuration, SpelledInterval, SpelledKeyLike, StringFingering, StructuralCadence, StyledVoicingOptions, SubstituteOptions, Substitution, SubstitutionType, Tempo, TempoMap, TensionPoint, TimeSignature, Timeline, TrackEdit, TransposingInstrument, Tuning, TuningTable, Tuplet, Vocabulary, VoiceIndependenceOptions, VoiceIndependenceReport, VoiceRange, Voicing, VoicingOptions };
5964
+ export type { ArrangementData, ArrangementSettings, ArrangementSetup, ArrangementTensionOptions, BassLineSettings, ComposerOptions, CounterMelodySettings, DetectedKeyMatch, HarmonizedMelody, KeyData, MotifGenerateOptions, ProgressionData, RhythmData, RhythmDeformOptions, ScoreData, ScoreOptions, TempoData, TimelineData, TimelineRoman, VoicingData, VoicingIndependenceOptions, VoicingSafetyQuery };