@libraz/libcantus 1.0.1 → 1.2.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 (142) hide show
  1. package/README.md +27 -65
  2. package/README_ja.md +28 -66
  3. package/dist/analyze/index.cjs +11 -7
  4. package/dist/analyze/index.cjs.map +1 -1
  5. package/dist/analyze/index.d.cts +79 -144
  6. package/dist/analyze/index.d.ts +79 -144
  7. package/dist/analyze/index.js +20 -16
  8. package/dist/chunk-35NBV2FT.cjs +145 -0
  9. package/dist/chunk-35NBV2FT.cjs.map +1 -0
  10. package/dist/{chunk-UADYAYAT.cjs → chunk-3R3QVKY5.cjs} +1353 -580
  11. package/dist/chunk-3R3QVKY5.cjs.map +1 -0
  12. package/dist/{chunk-WWURE4XT.cjs → chunk-76ZBTRG2.cjs} +624 -729
  13. package/dist/chunk-76ZBTRG2.cjs.map +1 -0
  14. package/dist/{chunk-FVSI36UV.js → chunk-7KG3RTYS.js} +197 -110
  15. package/dist/chunk-7KG3RTYS.js.map +1 -0
  16. package/dist/{chunk-VTI6FOLB.js → chunk-AGOVW7U6.js} +709 -133
  17. package/dist/chunk-AGOVW7U6.js.map +1 -0
  18. package/dist/{chunk-E3F4AHAH.cjs → chunk-CGBADIO5.cjs} +221 -134
  19. package/dist/chunk-CGBADIO5.cjs.map +1 -0
  20. package/dist/{chunk-6XH6QZYQ.cjs → chunk-DSMJRXCZ.cjs} +1455 -849
  21. package/dist/chunk-DSMJRXCZ.cjs.map +1 -0
  22. package/dist/{chunk-PKFNUHDY.js → chunk-FBH75DAY.js} +1218 -612
  23. package/dist/chunk-FBH75DAY.js.map +1 -0
  24. package/dist/chunk-H2KJHBW4.js +3329 -0
  25. package/dist/chunk-H2KJHBW4.js.map +1 -0
  26. package/dist/chunk-HPVSH7SF.cjs +2294 -0
  27. package/dist/chunk-HPVSH7SF.cjs.map +1 -0
  28. package/dist/{chunk-MXO72PLY.cjs → chunk-HWHGOVO6.cjs} +21 -19
  29. package/dist/chunk-HWHGOVO6.cjs.map +1 -0
  30. package/dist/chunk-HYJJ2V2I.js +2294 -0
  31. package/dist/chunk-HYJJ2V2I.js.map +1 -0
  32. package/dist/{chunk-AFM2ULJH.cjs → chunk-J7FHVZII.cjs} +1567 -1067
  33. package/dist/chunk-J7FHVZII.cjs.map +1 -0
  34. package/dist/chunk-K6OZXIR6.js +1 -0
  35. package/dist/{chunk-H3VORETI.js → chunk-M5RYMAFI.js} +487 -592
  36. package/dist/chunk-M5RYMAFI.js.map +1 -0
  37. package/dist/chunk-NB25P3EH.js +363 -0
  38. package/dist/chunk-NB25P3EH.js.map +1 -0
  39. package/dist/{chunk-TTCLJX6D.js → chunk-NFJ4P6ZZ.js} +10 -8
  40. package/dist/chunk-NFJ4P6ZZ.js.map +1 -0
  41. package/dist/chunk-NM7UAMC3.cjs +457 -0
  42. package/dist/chunk-NM7UAMC3.cjs.map +1 -0
  43. package/dist/chunk-PM4XJE2Y.cjs +363 -0
  44. package/dist/chunk-PM4XJE2Y.cjs.map +1 -0
  45. package/dist/chunk-PUKJP2Z5.js +145 -0
  46. package/dist/chunk-PUKJP2Z5.js.map +1 -0
  47. package/dist/{chunk-VOHZB45S.js → chunk-Q6LFSAKV.js} +1321 -821
  48. package/dist/chunk-Q6LFSAKV.js.map +1 -0
  49. package/dist/{chunk-INHVXP6Z.js → chunk-RFIBF2RR.js} +1203 -430
  50. package/dist/chunk-RFIBF2RR.js.map +1 -0
  51. package/dist/{chunk-Q2WGKJNN.cjs → chunk-S5BKZZGM.cjs} +699 -123
  52. package/dist/chunk-S5BKZZGM.cjs.map +1 -0
  53. package/dist/chunk-SGLEQVJH.cjs +3329 -0
  54. package/dist/chunk-SGLEQVJH.cjs.map +1 -0
  55. package/dist/chunk-UGLFDG7L.cjs +1 -0
  56. package/dist/chunk-UGLFDG7L.cjs.map +1 -0
  57. package/dist/{chunk-YH3BIKHH.js → chunk-UMWZ4ZET.js} +146 -49
  58. package/dist/chunk-UMWZ4ZET.js.map +1 -0
  59. package/dist/{index-szBv3496.d.ts → coerce-DP0vYu-x.d.ts} +286 -199
  60. package/dist/{index-C_8o--VE.d.cts → coerce-DRERzdve.d.cts} +286 -199
  61. package/dist/core/index.cjs +9 -5
  62. package/dist/core/index.cjs.map +1 -1
  63. package/dist/core/index.d.cts +122 -108
  64. package/dist/core/index.d.ts +122 -108
  65. package/dist/core/index.js +32 -28
  66. package/dist/generate/index.cjs +8 -8
  67. package/dist/generate/index.d.cts +168 -84
  68. package/dist/generate/index.d.ts +168 -84
  69. package/dist/generate/index.js +7 -7
  70. package/dist/{index-CGpRv5sl.d.cts → index-9eoQs2C1.d.ts} +34 -19
  71. package/dist/{index-CCNJRG-P.d.cts → index-B9QLziDe.d.cts} +293 -56
  72. package/dist/{index-Dzr13q3d.d.cts → index-BBWNZS0f.d.cts} +135 -58
  73. package/dist/{index-9wcMhG73.d.ts → index-BHIUyjhZ.d.ts} +293 -56
  74. package/dist/{index-BGFW-8P2.d.cts → index-BJgP97N1.d.ts} +196 -114
  75. package/dist/{index-CunYKLiu.d.ts → index-BL5N2Oyz.d.cts} +1 -1
  76. package/dist/{index-Cj49F892.d.ts → index-BMweUlm5.d.cts} +63 -23
  77. package/dist/{index-CgHqxdps.d.ts → index-BNSM-DSk.d.cts} +196 -114
  78. package/dist/{index-D57QRbVn.d.ts → index-BRMbPkHE.d.ts} +480 -254
  79. package/dist/{index-Chbst3Jx.d.ts → index-CJBBiAmU.d.ts} +135 -58
  80. package/dist/{index-BkGmlyI3.d.cts → index-CL4b4gUQ.d.ts} +63 -23
  81. package/dist/{index-B9MNZboQ.d.ts → index-Cy15oTvh.d.cts} +52 -22
  82. package/dist/{index-B9MNZboQ.d.cts → index-Cy15oTvh.d.ts} +52 -22
  83. package/dist/{index-BO6xE9YU.d.cts → index-DGCNKAUr.d.cts} +480 -254
  84. package/dist/{index-B4o55NDr.d.cts → index-Dw2DP7vm.d.ts} +1 -1
  85. package/dist/{index-G1uwGGWQ.d.ts → index-cHvbYgJI.d.cts} +34 -19
  86. package/dist/index.cjs +42 -14
  87. package/dist/index.cjs.map +1 -1
  88. package/dist/index.d.cts +14 -14
  89. package/dist/index.d.ts +14 -14
  90. package/dist/index.js +82 -54
  91. package/dist/{masks-DYbE485J.d.cts → masks-Cc7-MzzY.d.ts} +49 -2
  92. package/dist/{masks-DYbE485J.d.ts → masks-pADfTOiD.d.cts} +49 -2
  93. package/dist/model/index.cjs +19 -12
  94. package/dist/model/index.cjs.map +1 -1
  95. package/dist/model/index.d.cts +504 -182
  96. package/dist/model/index.d.ts +504 -182
  97. package/dist/model/index.js +18 -11
  98. package/dist/{positional-Cptlj-xs.d.ts → positional-DJgs6ltD.d.ts} +85 -8
  99. package/dist/{positional-DvH_sd8u.d.cts → positional-DMZer-FM.d.cts} +85 -8
  100. package/dist/theory/index.cjs +35 -6
  101. package/dist/theory/index.cjs.map +1 -1
  102. package/dist/theory/index.d.cts +257 -62
  103. package/dist/theory/index.d.ts +257 -62
  104. package/dist/theory/index.js +41 -12
  105. package/package.json +7 -5
  106. package/dist/chunk-2LCPM3EG.js +0 -3224
  107. package/dist/chunk-2LCPM3EG.js.map +0 -1
  108. package/dist/chunk-6XH6QZYQ.cjs.map +0 -1
  109. package/dist/chunk-6XPTBE7Y.cjs +0 -49
  110. package/dist/chunk-6XPTBE7Y.cjs.map +0 -1
  111. package/dist/chunk-AFM2ULJH.cjs.map +0 -1
  112. package/dist/chunk-B6XNKWZV.cjs +0 -3224
  113. package/dist/chunk-B6XNKWZV.cjs.map +0 -1
  114. package/dist/chunk-E3F4AHAH.cjs.map +0 -1
  115. package/dist/chunk-ELCTZUJJ.js +0 -379
  116. package/dist/chunk-ELCTZUJJ.js.map +0 -1
  117. package/dist/chunk-FVSI36UV.js.map +0 -1
  118. package/dist/chunk-H3VORETI.js.map +0 -1
  119. package/dist/chunk-H42UHPYW.js +0 -1577
  120. package/dist/chunk-H42UHPYW.js.map +0 -1
  121. package/dist/chunk-HFPS7JFD.js +0 -1
  122. package/dist/chunk-INHVXP6Z.js.map +0 -1
  123. package/dist/chunk-K4ZJUGF4.cjs +0 -379
  124. package/dist/chunk-K4ZJUGF4.cjs.map +0 -1
  125. package/dist/chunk-KNJEKLKV.js +0 -49
  126. package/dist/chunk-KNJEKLKV.js.map +0 -1
  127. package/dist/chunk-MXO72PLY.cjs.map +0 -1
  128. package/dist/chunk-NLEU4QSE.cjs +0 -360
  129. package/dist/chunk-NLEU4QSE.cjs.map +0 -1
  130. package/dist/chunk-OE6WK2Y2.cjs +0 -1577
  131. package/dist/chunk-OE6WK2Y2.cjs.map +0 -1
  132. package/dist/chunk-PKFNUHDY.js.map +0 -1
  133. package/dist/chunk-Q2WGKJNN.cjs.map +0 -1
  134. package/dist/chunk-RHIJ3S4I.cjs +0 -1
  135. package/dist/chunk-RHIJ3S4I.cjs.map +0 -1
  136. package/dist/chunk-TTCLJX6D.js.map +0 -1
  137. package/dist/chunk-UADYAYAT.cjs.map +0 -1
  138. package/dist/chunk-VOHZB45S.js.map +0 -1
  139. package/dist/chunk-VTI6FOLB.js.map +0 -1
  140. package/dist/chunk-WWURE4XT.cjs.map +0 -1
  141. package/dist/chunk-YH3BIKHH.js.map +0 -1
  142. /package/dist/{chunk-HFPS7JFD.js.map → chunk-K6OZXIR6.js.map} +0 -0
package/dist/index.d.ts CHANGED
@@ -1,17 +1,17 @@
1
- export { A as ARTICULATIONS, a as Articulation, B as BudgetExceededError, I as IntervalLike, b as IntervalQualityLabel, c as InvalidInputError, K as KeyName, d as KeyScale, L as LibcantusError, e as LibcantusErrorCode, N as NoSolutionError, f as NoteData, g as NoteEvent, h as NoteLike, i as NoteNameOptions, j as NoteNameSystem, P as ParseResult, S as SpelledInterval, k as detectNoteNameSystem, l as diatonicLetterOf, m as formatKeyName, n as formatNote, o as intervalSemitones, p as isLibcantusError, q as midiToNote, r as naturalPitchClassOf, s as noteToMidi, t as noteToPitchClass, u as parseInterval, v as parseKeyName, w as parseNote, x as pitchClassOf, y as spelledInterval, z as toNoteData, C as toSpelledInterval, D as transposeByInterval, E as transposeNote, F as tryParseInterval, G as tryParseKeyName, H as tryParseNote } from './index-B9MNZboQ.js';
2
- 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-G1uwGGWQ.js';
3
- 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, f as StringedProfile, g as canSound, h as createPositionalRng, i as deriveSeed, j as fingeringsFor, k as foldIntoRange, l as includeAt, m as instrumentRange } from './positional-Cptlj-xs.js';
1
+ 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, h as NoteEvent, 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';
2
+ 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';
3
+ 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, f as StringedProfile, 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';
4
4
  export { ALGORITHM_VERSION, BASS_4_STRING, BASS_5_STRING, DEFAULT_GENERATION_BUDGET, GUITAR_DROP_D, GUITAR_STANDARD, MIN_ALGORITHM_VERSION, NoteEventAssertOptions, Rng, assertDegree, assertFiniteNumber, assertFiniteSemitones, assertGenerationBudget, assertInteger, assertMeterMap, assertMidiPitch, assertNoteEvent, assertNoteEvents, assertOneOf, assertPositiveInt, assertRange, assertTimeSignature, clampToMidi, createRng, dropSilentNotes, resolveAlgorithmVersion, soundingNotesOnly } from './core/index.js';
5
- export { B as BarPosition, M as MeterChange, a as MeterData, b as MeterLike, c as MeterMap, T as TimeSignature, 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-Cj49F892.js';
6
- export { A as Alteration, a as AlteredDegree, C as ChordBase, b as ChordData, c as ChordLike, d as ChordQuality, e as ChordSegment, f as ChordSeventh, g as ChordSpan, h as ChordSpec, i as ChordSymbolOptions, j as ChordToneRole, E as EvaluateSafetyOptions, K as KeyLike, k as KeyRelation, N as NoteSafety, P as PROFILE_WEIGHTS, l as PitchSpelling, m as ProfileWeights, R as ReasonFlag, S as SafetyProfile, n as SafetyQuery, o as SafetyResult, p as SpelledKey, V as VoiceSnapshot, q as chordFromDegree, r as chordFromSpan, s as chordFromSpec, t as chordPitchClasses, u as chordQualities, v as chordSpecIntervals, w as chordSpecOf, x as chordSpecQuality, y as chordToneRole, z as diatonicSeventh, B as diatonicTriad, D as dominantKeyOf, F as enharmonicKeyOf, G as enumerateSafePitches, H as evaluateSafety, I as formatChordSymbol, J as intervalAboveRoot, L as isChordMember, M as keyRelationBetween, O as makeChord, Q as parallelKeyOf, T as parseChordSymbol, U as profileWeights, W as relatedKeysOf, X as relativeKeyOf, Y as spanFromChord, Z as spelledKeyOf, _ as subdominantKeyOf, $ as toChordData, a0 as toKeyScale, a1 as transposeChord, a2 as transposeChordSymbol, a3 as tryParseChordSymbol } from './index-szBv3496.js';
7
- export { FiguredBassRealization, FiguredBassSuspension, SpellingContext, classifySpelledInterval, createsBattuta, createsHiddenParallelPerfect, createsParallelOctave, createsParallelPerfect, createsParallelUnison, createsVerticalDissonance, createsVoiceCrossing, createsVoiceOverlap, diatonicPitchClasses, exceedsSpacing, figuredBassOf, figuredBassRealization, isAugmentedMelodicInterval, isForbiddenMelodicLeap, isLeadingToneResolution, isScaleTone, majorKey, minorKey, nearestScaleTone, nextVoicing, noteNames, pitchToScaleDegree, realizeFiguredBass, scaleByName, scaleTonesInDegreeOrder, spellChord, spellChordFromRoot, spellPitch, spellPitchClass, spellPitchClasses, spellScale, voiceLeadingCost } from './theory/index.js';
8
- export { A as ALTERED_MASK, B as BLUES_MASK, C as CHROMATIC_MASK, D as DORIAN_MASK, a as DOUBLE_HARMONIC_MASK, H as HARMONIC_MINOR_MASK, L as LOCRIAN_MASK, b as LOCRIAN_NATURAL2_MASK, c as LYDIAN_DOMINANT_MASK, d as LYDIAN_MASK, M as MAJOR_MASK, e as MAJOR_PENTATONIC_MASK, f as MARWA_MASK, g as MELODIC_MINOR_MASK, h as MINOR_PENTATONIC_MASK, i as MIXOLYDIAN_B13_MASK, j as MIXOLYDIAN_MASK, k as MIYAKO_BUSHI_MASK, N as NAMED_SCALES, l as NATURAL_MINOR_MASK, O as OCTATONIC_HALF_WHOLE_MASK, m as OCTATONIC_WHOLE_HALF_MASK, P as PHRYGIAN_DOMINANT_MASK, n as PHRYGIAN_MASK, o as PURVI_MASK, R as RITSU_MASK, p as RYUKYU_MASK, S as SCALE_ALIASES, q as ScaleAliasName, r as ScaleName, s as ScaleNameInput, T as TODI_MASK, W as WHOLE_TONE_MASK, t as WORLD_SCALES, u as WorldScaleName, v as maskFromOffsets, w as namedScaleMask, x as requireScaleMask, y as resolveScaleName } from './masks-DYbE485J.js';
9
- export { A as AvailableTensionsOptions, a as AvoidNoteUse, b as AvoidNotesOptions, C as ChordScaleMatch, c as ChordScaleReportEntry, K as KeyMode, P as PartWritingOptions, d as PartWritingViolation, e as PartWritingViolationKind, S as SATB_RANGES, f as SCALE_SYSTEMS, g as ScaleChoice, h as ScaleSystem, i as Species, j as SpeciesOptions, k as SpelledVoicing, l as StyledVoicingOptions, T as TRANSPOSING_INSTRUMENTS, m as TransposingInstrument, n as TransposingInstrumentName, V as VoiceIndependenceOptions, o as VoiceIndependenceReport, p as VoiceRange, q as VoicingOptions, r as VoicingStyle, s as availableTensions, t as avoidNotes, u as checkPartWriting, v as checkSpecies, w as chordScaleReport, x as chordScales, y as instrumentTransposition, z as keyFromFifths, B as keySignatureFifths, D as scaleMatchesChord, E as scaleSystemOf, F as scalesForChanges, G as spellVoicing, H as supportsFunctionalHarmony, I as toSoundingPitch, J as toWrittenPitch, L as voiceChord, M as voiceChordStyled, N as voiceIndependence, O as voiceProgression } from './index-9wcMhG73.js';
10
- export { A as ArrangementAnalysis, a as ArrangementOptions, b as ArrangementSession, c as ArrangementTrack, C as ChordMatch, d as Conflict, e as ContourDirection, D as DetectChordOptions, f as DetectKeyOptions, E as ExtractMotifsOptions, F as FormSection, g as FormSectionOptions, H as Hypermeter, h as HypermeterOptions, K as KeyMatch, i as KeyVariant, M as MODAL_SCALE_NAMES, j as MelodicComparison, k as MelodicContour, l as MelodicContourShape, m as MelodicPhrase, n as ModalCandidate, o as ModalScaleName, p as MotifData, q as MotifOccurrence, r as MotifRelation, s as MotifRelationKind, P as Phrase, t as PhraseOptions, u as PhraseSignal, R as ReduceProgressionOptions, v as ReducedChord, w as ReductionBasis, x as ReductionLevel, S as StructuralCadence, T as TensionPoint, y as TrackAnalysis, z as TrackEdit, B as TrackRole, G as analyzeArrangement, I as compareMelodies, J as createArrangementSession, L as detectChord, N as detectChordBest, O as detectKey, Q as detectKeyBest, U as detectKeyFromNotes, V as extractMotifs, W as hypermeter, X as melodicContour, Y as melodicSimilarity, Z as motifFromNotes, _ as phrasesFromTimeline, $ as reduceProgression, a0 as relateMotifs, a1 as sectionsFromNotes, a2 as structuralCadences, a3 as tensionCurve, a4 as tensionCurveFrom } from './index-D57QRbVn.js';
11
- export { AugmentedSixthKind, SpellLineOptions, augmentedSixthChord, augmentedSixthFromPitchClasses, augmentedSixthKind, spellAugmentedSixth, spellLine } from './analyze/index.js';
12
- export { A as AnalyzeChordOptions, a as AnalyzedNote, B as BorrowedSource, C as CadenceHit, b as CadenceResult, c as ChordAnalysis, d as ChordSegmentation, e as ChordTimeline, f as ChordTimelineOptions, g as ChordTimelineResult, h as ChordToRomanOptions, D as DetectCadenceOptions, E as ExplainRomanOptions, H as HarmonicFunction, I as IdentifiedVoiceNote, K as KeyContext, i as KeyProfileName, j as KeyProfilePair, k as KeyRegion, l as KeyTimelineOptions, P as PivotChord, R as RejectedCandidate, m as RomanExplanation, S as SuspensionFigure, T as TheoryLabel, V as VoiceNote, n as analyzeChord, o as analyzeVoice, p as borrowedSource, q as chordTimelineFromChords, r as chordTimelineFromNotes, s as chordToRoman, t as detectCadence, u as detectCadences, v as detectModulations, w as explainRoman, x as functionOf, y as isBorrowedChord, z as isDiatonic, F as isMinorKey, G as keyTimelineFromNotes, J as pivotChords, L as prevailingKeyOf, M as romanToChord, N as secondaryDominant, O as secondaryDominantOf, Q as toVoiceNotes } from './index-Chbst3Jx.js';
5
+ export { B as BarPosition, M as MeterChange, a as MeterData, b as MeterLike, c as MeterMap, T as TimeSignature, 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';
6
+ export { A as Alteration, a as AlteredDegree, C as ChordBase, b as ChordData, c as ChordLike, d as ChordQuality, e as ChordSegment, f as ChordSeventh, g as ChordSpan, h as ChordSpec, i as ChordToneRole, E as EvaluateSafetyOptions, K as KeyLike, j as KeyRelation, k as KeyVariant, N as NoteSafety, P as PROFILE_WEIGHTS, l as PitchSpelling, m as ProfileWeights, R as ReasonFlag, n as ResolvedKey, S as SafetyPartner, o as SafetyProfile, p as SafetyQuery, q as SafetyResult, r as SpelledKeyLike, s as SpelledKeyScale, V as VoiceSnapshot, t as chordFromDegree, u as chordFromSpan, v as chordFromSpec, w as chordPitchClasses, x as chordQualities, y as chordSpecIntervals, z as chordSpecOf, B as chordSpecQuality, D as chordToneRole, F as diatonicSeventh, G as diatonicTriad, H as dominantKeyOf, I as enharmonicKeyOf, J as enumerateSafePitches, L as evaluateSafety, M as intervalAboveRoot, O as isChordMember, Q as keyRelationBetween, T as makeChord, U as parallelKeyOf, W as profileWeights, X as relatedKeysOf, Y as relativeKeyOf, Z as spanFromChord, _ as spelledKeyOf, $ as subdominantKeyOf, a0 as toChordData, a1 as toKeyScale, a2 as transposeChord } from './coerce-DP0vYu-x.js';
7
+ export { FiguredBassRealization, FiguredBassSuspension, HiddenParallelReading, ScaleLadderPosition, SpellingContext, classifySpelledInterval, createsBattuta, createsHiddenParallelPerfect, createsParallelOctave, createsParallelPerfect, createsParallelUnison, createsVerticalDissonance, createsVoiceCrossing, createsVoiceOverlap, diatonicPitchClasses, exceedsSpacing, figuredBassOf, figuredBassRealization, isAugmentedMelodicInterval, isForbiddenMelodicLeap, isLeadingToneResolution, isScaleTone, majorKey, minorKey, nearestScaleTone, nextVoicing, noteNames, pitchToScaleDegree, realizeFiguredBass, resolveKey, scaleByName, scaleLadderPitch, scaleLadderPosition, scaleOf, scaleTonesInDegreeOrder, shiftByScaleDegrees, spellChord, spellChordFromRoot, spellPitch, spellPitchClass, spellPitchClasses, spellScale, tryResolveKeyName, voiceLeadingCost } from './theory/index.js';
8
+ export { A as ALTERED_MASK, B as BLUES_MASK, C as CHROMATIC_MASK, D as DORIAN_MASK, a as DOUBLE_HARMONIC_MASK, H as HARMONIC_MINOR_MASK, L as LOCRIAN_MASK, b as LOCRIAN_NATURAL2_MASK, c as LYDIAN_DOMINANT_MASK, d as LYDIAN_MASK, M as MAJOR_MASK, e as MAJOR_PENTATONIC_MASK, f as MARWA_MASK, g as MELODIC_MINOR_MASK, h as MINOR_PENTATONIC_MASK, i as MIXOLYDIAN_B13_MASK, j as MIXOLYDIAN_MASK, k as MIYAKO_BUSHI_MASK, N as NAMED_SCALES, l as NATURAL_MINOR_MASK, O as OCTATONIC_HALF_WHOLE_MASK, m as OCTATONIC_WHOLE_HALF_MASK, P as PHRYGIAN_DOMINANT_MASK, n as PHRYGIAN_MASK, o as PURVI_MASK, R as RITSU_MASK, p as RYUKYU_MASK, S as SCALE_ALIASES, q as ScaleAliasName, r as ScaleName, s as ScaleNameInput, T as TODI_MASK, W as WHOLE_TONE_MASK, t as WORLD_SCALES, u as WorldScaleName, v as assertKeyVariant, w as assertModeMask, x as maskFromOffsets, y as namedScaleMask, z as requireScaleMask, E as resolveScaleName, F as variantOfMask } from './masks-Cc7-MzzY.js';
9
+ export { A as AvailableTensionsOptions, a as AvoidNoteUse, b as AvoidNotesOptions, C as ChordScaleMatch, c as ChordScaleReportEntry, d as ChordSymbolOptions, K as KeyMode, P as PartWritingOptions, e as PartWritingViolation, f as PartWritingViolationKind, S as SATB_RANGES, g as SCALE_SYSTEMS, h as ScaleChoice, i as ScaleSystem, j as Species, k as SpeciesOptions, l as SpelledVoicing, m as StyledVoicingOptions, T as TRANSPOSING_INSTRUMENTS, n as TransposingInstrument, o as TransposingInstrumentName, V as VoiceIndependenceOptions, p as VoiceIndependenceReport, q as VoiceRange, r as VoicingOptions, s as VoicingStyle, t as availableTensions, u as avoidNotes, v as checkPartWriting, w as checkSpecies, x as chordScaleReport, y as chordScales, z as formatChordSymbol, B as instrumentTransposition, D as isSignatureKey, E as keyFromFifths, F as keySignatureFifths, G as parseChordSymbol, H as scaleMatchesChord, I as scaleSystemOf, J as scalesForChanges, L as spellVoicing, M as supportsFunctionalHarmony, N as toSoundingPitch, O as toWrittenPitch, Q as transposeChordSymbol, R as tryParseChordSymbol, U as voiceChord, W as voiceChordStyled, X as voiceIndependence, Y as voiceProgression } from './index-BHIUyjhZ.js';
10
+ export { A as AnalyzeChordOptions, a as AnalyzedNote, B as BorrowedSource, C as CadenceHit, b as CadenceResult, c as ChordAnalysis, d as ChordSegmentation, e as ChordTimeline, f as ChordTimelineOptions, g as ChordTimelineResult, h as ChordToRomanOptions, D as DetectCadenceOptions, E as ExplainRomanOptions, H as HarmonicFunction, I as IdentifiedVoiceNote, K as KeyContext, i as KeyProfileName, j as KeyProfilePair, k as KeyRegion, l as KeyTimelineOptions, P as PivotChord, R as RejectedCandidate, m as RomanExplanation, S as SuspensionFigure, T as TheoryLabel, V as VoiceNote, n as analyzeChord, o as analyzeVoice, p as assertChordTimeline, q as borrowedSource, r as chordTimelineFromChords, s as chordTimelineFromNotes, t as chordToRoman, u as detectCadence, v as detectCadences, w as detectModulations, x as explainRoman, y as functionOf, z as isBorrowedChord, F as isDiatonic, G as isMinorKey, J as keyTimelineFromNotes, L as pivotChords, M as prevailingKeyOf, N as romanToChord, O as secondaryDominant, Q as secondaryDominantOf, U as toVoiceNotes } from './index-CJBBiAmU.js';
11
+ export { A as ArrangementAnalysis, a as ArrangementOptions, b as ArrangementSession, c as ArrangementTrack, d as AugmentedSixthKind, C as ChordMatch, e as Conflict, f as ConflictPartner, g as ContourDirection, D as DetectChordOptions, h as DetectKeyOptions, E as ExtractMotifsOptions, F as FormSection, i as FormSectionOptions, H as Hypermeter, j as HypermeterOptions, K as KeyMatch, M as MODAL_SCALE_NAMES, k as MelodicContour, l as MelodicContourShape, m as MelodicPhrase, n as ModalCandidate, o as ModalScaleName, p as MotifData, q as MotifOccurrence, r as MotifRelation, s as MotifRelationKind, P as Phrase, t as PhraseOptions, u as PhraseSignal, R as ReduceProgressionOptions, v as ReducedChord, w as ReductionBasis, x as ReductionLevel, S as StructuralCadence, T as TensionPoint, y as TrackAnalysis, z as TrackEdit, B as TrackRole, G as analyzeArrangement, I as analyzePolyphony, J as augmentedSixthChord, L as augmentedSixthFromPitchClasses, N as augmentedSixthKind, O as createArrangementSession, Q as detectChord, U as detectChordBest, V as detectKey, W as detectKeyBest, X as detectKeyFromNotes, Y as extractMotifs, Z as hypermeter, _ as melodicContour, $ as motifFromNotes, a0 as phrasesFromTimeline, a1 as reduceProgression, a2 as relateMotifs, a3 as sectionsFromNotes, a4 as spellAugmentedSixth, a5 as structuralCadences, a6 as tensionCurve, a7 as tensionCurveFrom } from './index-BRMbPkHE.js';
12
+ export { MelodicComparison, SpellLineOptions, compareMelodies, melodicSimilarity, spellLine } from './analyze/index.js';
13
13
  export { C as ConsonanceClass, c as classifyInterval, i as isConsonantInterval, a as isPerfectInterval } from './index-DInQqT8Q.js';
14
- export { H as HarmonyRole, L as LockLevel, V as VoicedRole, r as roleOf } from './index-CunYKLiu.js';
15
- 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, k as DrumHit, l as DrumRole, m as DrumStyle, n as DrumVoice, o as DrumsOptions, E as EuclideanKick, G as GENRES, p as GenerationContext, q as GenerationContextInput, r as Genre, s as GridEvent, t as GrooveFeel, u as GrooveSlot, v as GrooveStyle, w as GrooveTemplate, H as HarmonizeOptions, x as HarmonizePlacement, y as HarmonizeResult, 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, $ as Section, a0 as SubstituteOptions, a1 as Substitution, a2 as SubstitutionType, a3 as Vocabulary, a4 as VocabularyQuery, a5 as applyGrooveTemplate, a6 as assertVocabulary, a7 as deform, a8 as developMotif, a9 as double, aa as doubleTime, ab as drumVoiceOf, ac as extractGrooveTemplate, ad as fitsQuery, ae as generateBassLine, af as generateCounterMelody, ag as generateDrums, ah as generateMotif, ai as generateProgression, aj as generateRhythm, ak as gridMetricWeight, al as halfTime, am as harmonizeMelody, 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-CgHqxdps.js';
14
+ export { H as HarmonyRole, L as LockLevel, V as VoicedRole, r as roleOf } from './index-Dw2DP7vm.js';
15
+ 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, k as DrumHit, l as DrumRole, m as DrumStyle, n as DrumVoice, o as DrumsOptions, E as EuclideanKick, G as GENRES, p as GenerationContext, q as GenerationContextInput, r as Genre, s as GridEvent, t as GrooveFeel, u as GrooveSlot, v as GrooveStyle, w as GrooveTemplate, H as HarmonizeOptions, x as HarmonizePlacement, y as HarmonizeResult, 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, $ as Section, a0 as SubstituteOptions, a1 as Substitution, a2 as SubstitutionType, a3 as SyncopateOptions, a4 as Vocabulary, 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-BJgP97N1.js';
16
+ export { BASS_LICKS, BassLick, ClassifiedMelodyTone, DRUM_KIT, DRUM_PATTERNS, DrumPattern, DrumPatternOptions, DrumStroke, DrumVocabulary, FILL_ARCHETYPES, FILL_TYPES, FillArchetype, FillStroke, FillType, FillVelocity, ImitationAnswer, ImitationOptions, KICK_FIGURES, KICK_STEPS, KickFigure, KickPattern, KickSlot, LickMaterial, LickNote, MAX_DIFFICULTY, MIN_DIFFICULTY, MelodyToneRole, PlaceLicksOptions, classifyMelodyTones, harmonizeMelody, imitate, isDrumPattern, isFillArchetype, isLickMaterial, placeDrumPattern, placeLicks, sustainsShift, sustainsStrokes } from './generate/index.js';
16
17
  export { Arrangement, ArrangementData, ArrangementSettings, ArrangementSetup, ArrangementTensionOptions, BassLineSettings, Chord, Composer, ComposerOptions, CounterMelodySettings, DetectedKeyMatch, Duration, HarmonizedMelody, Instrument, Interval, Key, KeyData, Meter, Motif, MotifGenerateOptions, Note, Progression, ProgressionData, Rhythm, RhythmData, RhythmDeformOptions, Score, ScoreData, ScoreOptions, Tempo, TempoData, Timeline, TimelineData, TimelineRoman, Tuning, Voicing, VoicingData, VoicingIndependenceOptions, VoicingSafetyQuery } from './model/index.js';
17
- export { BASS_LICKS, BassLick, ClassifiedMelodyTone, DRUM_KIT, DRUM_PATTERNS, DrumPattern, DrumPatternOptions, DrumStroke, DrumVocabulary, FILL_ARCHETYPES, FILL_TYPES, FillArchetype, FillStroke, FillType, FillVelocity, ImitationAnswer, ImitationOptions, KICK_FIGURES, KICK_STEPS, KickFigure, KickPattern, KickSlot, LickMaterial, LickNote, MAX_DIFFICULTY, MIN_DIFFICULTY, MelodyToneRole, PlaceLicksOptions, classifyMelodyTones, imitate, isDrumPattern, isFillArchetype, isLickMaterial, placeDrumPattern, placeLicks, sustainsShift, sustainsStrokes } from './generate/index.js';
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  spellLine
3
- } from "./chunk-TTCLJX6D.js";
3
+ } from "./chunk-NFJ4P6ZZ.js";
4
4
  import "./chunk-QYQQ5J6E.js";
5
5
  import {
6
6
  Arrangement,
@@ -20,32 +20,25 @@ import {
20
20
  Timeline,
21
21
  Tuning,
22
22
  Voicing
23
- } from "./chunk-PKFNUHDY.js";
23
+ } from "./chunk-FBH75DAY.js";
24
24
  import {
25
25
  analyzeArrangement,
26
- analyzeVoice,
27
- chordTimelineFromChords,
28
- chordTimelineFromNotes,
26
+ analyzePolyphony,
29
27
  compareMelodies,
30
28
  createArrangementSession,
31
- detectCadences,
32
- detectModulations,
33
29
  extractMotifs,
34
30
  hypermeter,
35
- keyTimelineFromNotes,
36
31
  melodicContour,
37
32
  melodicSimilarity,
38
33
  motifFromNotes,
39
34
  phrasesFromTimeline,
40
- prevailingKeyOf,
41
35
  reduceProgression,
42
36
  relateMotifs,
43
37
  sectionsFromNotes,
44
38
  structuralCadences,
45
39
  tensionCurve,
46
- tensionCurveFrom,
47
- toVoiceNotes
48
- } from "./chunk-2LCPM3EG.js";
40
+ tensionCurveFrom
41
+ } from "./chunk-HYJJ2V2I.js";
49
42
  import {
50
43
  JUST_RATIOS,
51
44
  NOTE_VALUES,
@@ -70,7 +63,7 @@ import {
70
63
  stepsOfCents,
71
64
  tempoAt,
72
65
  ticksToBeats
73
- } from "./chunk-YH3BIKHH.js";
66
+ } from "./chunk-UMWZ4ZET.js";
74
67
  import {
75
68
  BAR_STEPS,
76
69
  BASS_LICKS,
@@ -139,35 +132,43 @@ import {
139
132
  transformMotif,
140
133
  vocabularyOfKind,
141
134
  withinCeiling
142
- } from "./chunk-VOHZB45S.js";
135
+ } from "./chunk-Q6LFSAKV.js";
143
136
  import {
144
137
  MODAL_SCALE_NAMES,
145
138
  analyzeChord,
139
+ analyzeVoice,
140
+ assertChordTimeline,
146
141
  augmentedSixthChord,
147
142
  augmentedSixthFromPitchClasses,
148
143
  augmentedSixthKind,
149
144
  borrowedSource,
145
+ chordTimelineFromChords,
146
+ chordTimelineFromNotes,
150
147
  chordToRoman,
151
148
  detectCadence,
149
+ detectCadences,
152
150
  detectChord,
153
151
  detectChordBest,
154
152
  detectKey,
155
153
  detectKeyBest,
156
154
  detectKeyFromNotes,
155
+ detectModulations,
157
156
  explainRoman,
158
157
  functionOf,
159
158
  isBorrowedChord,
160
159
  isDiatonic,
161
160
  isMinorKey,
161
+ keyTimelineFromNotes,
162
162
  pivotChords,
163
+ prevailingKeyOf,
163
164
  romanToChord,
164
165
  secondaryDominant,
165
166
  secondaryDominantOf,
166
- spellAugmentedSixth
167
- } from "./chunk-H42UHPYW.js";
167
+ spellAugmentedSixth,
168
+ toVoiceNotes
169
+ } from "./chunk-H2KJHBW4.js";
168
170
  import {
169
171
  ALGORITHM_VERSION,
170
- ARTICULATIONS,
171
172
  BASS_4_STRING,
172
173
  BASS_5_STRING,
173
174
  GUITAR_DROP_D,
@@ -183,48 +184,24 @@ import {
183
184
  includeAt,
184
185
  instrumentRange,
185
186
  playability,
186
- resolveAlgorithmVersion
187
- } from "./chunk-FVSI36UV.js";
187
+ resolveAlgorithmVersion,
188
+ toInstrumentProfile,
189
+ toStringedProfile
190
+ } from "./chunk-7KG3RTYS.js";
188
191
  import {
189
- barIndexAt,
190
- barPositionToBeat,
191
- barPositionToPulse,
192
- barStartBeat,
193
- beatToBarPosition,
194
- beatsPerBar,
195
- beatsPerBarAt,
196
- createNoteEventIndex,
197
- formatBarPosition,
198
- formatTimeSignature,
199
- isCompound,
200
- isStrongBeat,
201
- meterAt,
202
- metricWeight,
203
- parseTimeSignature,
204
- pulseBeats,
205
- pulsesPerBar,
206
- resolveMeters,
207
- toMeterData,
208
- tryParseTimeSignature,
209
- tuplet
210
- } from "./chunk-ELCTZUJJ.js";
211
- import "./chunk-HFPS7JFD.js";
192
+ createNoteEventIndex
193
+ } from "./chunk-PUKJP2Z5.js";
194
+ import "./chunk-K6OZXIR6.js";
212
195
  import {
213
196
  SATB_RANGES,
214
197
  TRANSPOSING_INSTRUMENTS,
215
- availableTensions,
216
- avoidNotes,
217
198
  checkPartWriting,
218
199
  checkSpecies,
219
- chordScaleReport,
220
- chordScales,
221
200
  figuredBassOf,
222
201
  figuredBassRealization,
223
202
  instrumentTransposition,
224
203
  nextVoicing,
225
204
  realizeFiguredBass,
226
- scaleMatchesChord,
227
- scalesForChanges,
228
205
  spellVoicing,
229
206
  toSoundingPitch,
230
207
  toWrittenPitch,
@@ -232,10 +209,16 @@ import {
232
209
  voiceChordStyled,
233
210
  voiceLeadingCost,
234
211
  voiceProgression
235
- } from "./chunk-H3VORETI.js";
212
+ } from "./chunk-M5RYMAFI.js";
236
213
  import {
237
- roleOf
238
- } from "./chunk-KNJEKLKV.js";
214
+ availableTensions,
215
+ avoidNotes,
216
+ chordScaleReport,
217
+ chordScales,
218
+ roleOf,
219
+ scaleMatchesChord,
220
+ scalesForChanges
221
+ } from "./chunk-NB25P3EH.js";
239
222
  import {
240
223
  ALTERED_MASK,
241
224
  BLUES_MASK,
@@ -272,6 +255,8 @@ import {
272
255
  TODI_MASK,
273
256
  WHOLE_TONE_MASK,
274
257
  WORLD_SCALES,
258
+ assertKeyVariant,
259
+ assertModeMask,
275
260
  chordFromDegree,
276
261
  chordFromSpan,
277
262
  chordFromSpec,
@@ -305,6 +290,7 @@ import {
305
290
  isForbiddenMelodicLeap,
306
291
  isLeadingToneResolution,
307
292
  isScaleTone,
293
+ isSignatureKey,
308
294
  keyFromFifths,
309
295
  keyRelationBetween,
310
296
  keySignatureFifths,
@@ -322,10 +308,15 @@ import {
322
308
  relatedKeysOf,
323
309
  relativeKeyOf,
324
310
  requireScaleMask,
311
+ resolveKey,
325
312
  resolveScaleName,
326
313
  scaleByName,
314
+ scaleLadderPitch,
315
+ scaleLadderPosition,
316
+ scaleOf,
327
317
  scaleSystemOf,
328
318
  scaleTonesInDegreeOrder,
319
+ shiftByScaleDegrees,
329
320
  spanFromChord,
330
321
  spellChord,
331
322
  spellChordFromRoot,
@@ -341,9 +332,12 @@ import {
341
332
  transposeChord,
342
333
  transposeChordSymbol,
343
334
  tryParseChordSymbol,
335
+ tryResolveKeyName,
336
+ variantOfMask,
344
337
  voiceIndependence
345
- } from "./chunk-INHVXP6Z.js";
338
+ } from "./chunk-RFIBF2RR.js";
346
339
  import {
340
+ ARTICULATIONS,
347
341
  BudgetExceededError,
348
342
  ConsonanceClass,
349
343
  DEFAULT_GENERATION_BUDGET,
@@ -362,17 +356,30 @@ import {
362
356
  assertPositiveInt,
363
357
  assertRange,
364
358
  assertTimeSignature,
359
+ barIndexAt,
360
+ barPositionToBeat,
361
+ barPositionToPulse,
362
+ barStartBeat,
363
+ beatToBarPosition,
364
+ beatsPerBar,
365
+ beatsPerBarAt,
365
366
  clampToMidi,
366
367
  classifyInterval,
367
368
  detectNoteNameSystem,
368
369
  diatonicLetterOf,
369
370
  dropSilentNotes,
371
+ formatBarPosition,
370
372
  formatKeyName,
371
373
  formatNote,
374
+ formatTimeSignature,
372
375
  intervalSemitones,
376
+ isCompound,
373
377
  isConsonantInterval,
374
378
  isLibcantusError,
375
379
  isPerfectInterval,
380
+ isStrongBeat,
381
+ meterAt,
382
+ metricWeight,
376
383
  midiToNote,
377
384
  naturalPitchClassOf,
378
385
  noteToMidi,
@@ -380,17 +387,24 @@ import {
380
387
  parseInterval,
381
388
  parseKeyName,
382
389
  parseNote,
390
+ parseTimeSignature,
383
391
  pitchClassOf,
392
+ pulseBeats,
393
+ pulsesPerBar,
394
+ resolveMeters,
384
395
  soundingNotesOnly,
385
396
  spelledInterval,
397
+ toMeterData,
386
398
  toNoteData,
387
399
  toSpelledInterval,
388
400
  transposeByInterval,
389
401
  transposeNote,
390
402
  tryParseInterval,
391
403
  tryParseKeyName,
392
- tryParseNote
393
- } from "./chunk-VTI6FOLB.js";
404
+ tryParseNote,
405
+ tryParseTimeSignature,
406
+ tuplet
407
+ } from "./chunk-AGOVW7U6.js";
394
408
  export {
395
409
  ALGORITHM_VERSION,
396
410
  ALTERED_MASK,
@@ -483,15 +497,19 @@ export {
483
497
  WORLD_SCALES,
484
498
  analyzeArrangement,
485
499
  analyzeChord,
500
+ analyzePolyphony,
486
501
  analyzeVoice,
487
502
  applyGrooveTemplate,
503
+ assertChordTimeline,
488
504
  assertDegree,
489
505
  assertFiniteNumber,
490
506
  assertFiniteSemitones,
491
507
  assertGenerationBudget,
492
508
  assertInteger,
509
+ assertKeyVariant,
493
510
  assertMeterMap,
494
511
  assertMidiPitch,
512
+ assertModeMask,
495
513
  assertNoteEvent,
496
514
  assertNoteEvents,
497
515
  assertOneOf,
@@ -629,6 +647,7 @@ export {
629
647
  isMinorKey,
630
648
  isPerfectInterval,
631
649
  isScaleTone,
650
+ isSignatureKey,
632
651
  isStrongBeat,
633
652
  justDeviationCents,
634
653
  keyFromFifths,
@@ -690,6 +709,7 @@ export {
690
709
  requireScaleMask,
691
710
  resolveAlgorithmVersion,
692
711
  resolveContext,
712
+ resolveKey,
693
713
  resolveMeters,
694
714
  resolveScaleName,
695
715
  rhythmDensity,
@@ -697,7 +717,10 @@ export {
697
717
  roleOf,
698
718
  romanToChord,
699
719
  scaleByName,
720
+ scaleLadderPitch,
721
+ scaleLadderPosition,
700
722
  scaleMatchesChord,
723
+ scaleOf,
701
724
  scaleSystemOf,
702
725
  scaleTonesInDegreeOrder,
703
726
  scalesForChanges,
@@ -706,6 +729,7 @@ export {
706
729
  secondsToBeats,
707
730
  sectionsFromNotes,
708
731
  selectVocabulary,
732
+ shiftByScaleDegrees,
709
733
  soundingNotesOnly,
710
734
  spanFromChord,
711
735
  spellAugmentedSixth,
@@ -734,11 +758,13 @@ export {
734
758
  thin,
735
759
  ticksToBeats,
736
760
  toChordData,
761
+ toInstrumentProfile,
737
762
  toKeyScale,
738
763
  toMeterData,
739
764
  toNoteData,
740
765
  toSoundingPitch,
741
766
  toSpelledInterval,
767
+ toStringedProfile,
742
768
  toVoiceNotes,
743
769
  toWrittenPitch,
744
770
  transformMotif,
@@ -751,7 +777,9 @@ export {
751
777
  tryParseKeyName,
752
778
  tryParseNote,
753
779
  tryParseTimeSignature,
780
+ tryResolveKeyName,
754
781
  tuplet,
782
+ variantOfMask,
755
783
  vocabularyOfKind,
756
784
  voiceChord,
757
785
  voiceChordStyled,
@@ -1,3 +1,5 @@
1
+ import { k as KeyVariant } from './coerce-DP0vYu-x.js';
2
+
1
3
  /**
2
4
  * Build a 12-bit mode mask from a list of semitone offsets above the root.
3
5
  *
@@ -103,6 +105,28 @@ declare const OCTATONIC_WHOLE_HALF_MASK: number;
103
105
  * @category Scales
104
106
  */
105
107
  declare const CHROMATIC_MASK = 4095;
108
+ /**
109
+ * Require a twelve-bit mode mask, and return it.
110
+ *
111
+ * A mask is read with bit operations, and those coerce: a `null` reads as the
112
+ * empty mask, an object as zero. Every answer taken from a mask is a musical
113
+ * claim — which form a key stands in, whether its signature is its own, which
114
+ * system it belongs to — so a value that is not a mask has to be refused rather
115
+ * than answered, and it is refused in one place so the answers cannot disagree
116
+ * about what a mask is.
117
+ *
118
+ * @param modeMask12 The value to check.
119
+ * @param name What the value is, for the error message.
120
+ * @returns The mask.
121
+ * @throws If it is not an integer in [1, {@link CHROMATIC_MASK}].
122
+ * @example
123
+ * ```ts
124
+ * import { assertModeMask, MAJOR_MASK } from '@libraz/libcantus';
125
+ * assertModeMask(MAJOR_MASK); // 2741
126
+ * ```
127
+ * @category Scales
128
+ */
129
+ declare function assertModeMask(modeMask12: number, name?: string): number;
106
130
  /**
107
131
  * Lydian dominant (melodic minor's fourth mode): offsets {0,2,4,6,7,9,10}.
108
132
  *
@@ -168,7 +192,7 @@ declare const MIYAKO_BUSHI_MASK: number;
168
192
  *
169
193
  * Two ritsu tetrachords a fourth apart: the middle note sits a whole tone above
170
194
  * the lower nuclear tone. The result is the same five pitch classes as the
171
- * major pentatonic a fourth below, which is why the mask alone cannot say which
195
+ * major pentatonic a fourth above, which is why the mask alone cannot say which
172
196
  * tradition is meant.
173
197
  *
174
198
  * @category Scales
@@ -441,5 +465,28 @@ declare function namedScaleMask(name: ScaleNameInput): number | undefined;
441
465
  * @category Scales
442
466
  */
443
467
  declare function requireScaleMask(name: ScaleNameInput, label?: string): number;
468
+ /**
469
+ * The form a mask stands in, when it stands in one.
470
+ *
471
+ * A bare scale still names its form — a major mask is a major key whoever built
472
+ * it — so the form is read from the mask rather than defaulted away. Only a
473
+ * mask matching none of the four is modal.
474
+ */
475
+ declare function variantOfMask(modeMask12: number): KeyVariant;
476
+ /**
477
+ * Refuse a scale form the key's own mask does not hold.
478
+ *
479
+ * A key whose variant says `'harmonic'` over a major mask prints as a harmonic
480
+ * minor while comparing equal to plain C major, so a project file that carried
481
+ * the two apart is refused where the mismatch is still an argument. Kept beside
482
+ * the type it validates: the pairing of form and mask is written once, and
483
+ * every construction path reads that one.
484
+ *
485
+ * @param variant The form claimed for the key.
486
+ * @param modeMask12 The mask the key actually holds.
487
+ * @throws If the form is not one a key may stand in, or the mask does not hold it.
488
+ * @category Scales
489
+ */
490
+ declare function assertKeyVariant(variant: KeyVariant, modeMask12: number): void;
444
491
 
445
- export { ALTERED_MASK as A, BLUES_MASK as B, CHROMATIC_MASK as C, DORIAN_MASK as D, HARMONIC_MINOR_MASK as H, LOCRIAN_MASK as L, MAJOR_MASK as M, NAMED_SCALES as N, OCTATONIC_HALF_WHOLE_MASK as O, PHRYGIAN_DOMINANT_MASK as P, RITSU_MASK as R, SCALE_ALIASES as S, TODI_MASK as T, WHOLE_TONE_MASK as W, DOUBLE_HARMONIC_MASK as a, LOCRIAN_NATURAL2_MASK as b, LYDIAN_DOMINANT_MASK as c, LYDIAN_MASK as d, MAJOR_PENTATONIC_MASK as e, MARWA_MASK as f, MELODIC_MINOR_MASK as g, MINOR_PENTATONIC_MASK as h, MIXOLYDIAN_B13_MASK as i, MIXOLYDIAN_MASK as j, MIYAKO_BUSHI_MASK as k, NATURAL_MINOR_MASK as l, OCTATONIC_WHOLE_HALF_MASK as m, PHRYGIAN_MASK as n, PURVI_MASK as o, RYUKYU_MASK as p, type ScaleAliasName as q, type ScaleName as r, type ScaleNameInput as s, WORLD_SCALES as t, type WorldScaleName as u, maskFromOffsets as v, namedScaleMask as w, requireScaleMask as x, resolveScaleName as y };
492
+ export { ALTERED_MASK as A, BLUES_MASK as B, CHROMATIC_MASK as C, DORIAN_MASK as D, resolveScaleName as E, variantOfMask as F, HARMONIC_MINOR_MASK as H, LOCRIAN_MASK as L, MAJOR_MASK as M, NAMED_SCALES as N, OCTATONIC_HALF_WHOLE_MASK as O, PHRYGIAN_DOMINANT_MASK as P, RITSU_MASK as R, SCALE_ALIASES as S, TODI_MASK as T, WHOLE_TONE_MASK as W, DOUBLE_HARMONIC_MASK as a, LOCRIAN_NATURAL2_MASK as b, LYDIAN_DOMINANT_MASK as c, LYDIAN_MASK as d, MAJOR_PENTATONIC_MASK as e, MARWA_MASK as f, MELODIC_MINOR_MASK as g, MINOR_PENTATONIC_MASK as h, MIXOLYDIAN_B13_MASK as i, MIXOLYDIAN_MASK as j, MIYAKO_BUSHI_MASK as k, NATURAL_MINOR_MASK as l, OCTATONIC_WHOLE_HALF_MASK as m, PHRYGIAN_MASK as n, PURVI_MASK as o, RYUKYU_MASK as p, type ScaleAliasName as q, type ScaleName as r, type ScaleNameInput as s, WORLD_SCALES as t, type WorldScaleName as u, assertKeyVariant as v, assertModeMask as w, maskFromOffsets as x, namedScaleMask as y, requireScaleMask as z };
@@ -1,3 +1,5 @@
1
+ import { k as KeyVariant } from './coerce-DRERzdve.cjs';
2
+
1
3
  /**
2
4
  * Build a 12-bit mode mask from a list of semitone offsets above the root.
3
5
  *
@@ -103,6 +105,28 @@ declare const OCTATONIC_WHOLE_HALF_MASK: number;
103
105
  * @category Scales
104
106
  */
105
107
  declare const CHROMATIC_MASK = 4095;
108
+ /**
109
+ * Require a twelve-bit mode mask, and return it.
110
+ *
111
+ * A mask is read with bit operations, and those coerce: a `null` reads as the
112
+ * empty mask, an object as zero. Every answer taken from a mask is a musical
113
+ * claim — which form a key stands in, whether its signature is its own, which
114
+ * system it belongs to — so a value that is not a mask has to be refused rather
115
+ * than answered, and it is refused in one place so the answers cannot disagree
116
+ * about what a mask is.
117
+ *
118
+ * @param modeMask12 The value to check.
119
+ * @param name What the value is, for the error message.
120
+ * @returns The mask.
121
+ * @throws If it is not an integer in [1, {@link CHROMATIC_MASK}].
122
+ * @example
123
+ * ```ts
124
+ * import { assertModeMask, MAJOR_MASK } from '@libraz/libcantus';
125
+ * assertModeMask(MAJOR_MASK); // 2741
126
+ * ```
127
+ * @category Scales
128
+ */
129
+ declare function assertModeMask(modeMask12: number, name?: string): number;
106
130
  /**
107
131
  * Lydian dominant (melodic minor's fourth mode): offsets {0,2,4,6,7,9,10}.
108
132
  *
@@ -168,7 +192,7 @@ declare const MIYAKO_BUSHI_MASK: number;
168
192
  *
169
193
  * Two ritsu tetrachords a fourth apart: the middle note sits a whole tone above
170
194
  * the lower nuclear tone. The result is the same five pitch classes as the
171
- * major pentatonic a fourth below, which is why the mask alone cannot say which
195
+ * major pentatonic a fourth above, which is why the mask alone cannot say which
172
196
  * tradition is meant.
173
197
  *
174
198
  * @category Scales
@@ -441,5 +465,28 @@ declare function namedScaleMask(name: ScaleNameInput): number | undefined;
441
465
  * @category Scales
442
466
  */
443
467
  declare function requireScaleMask(name: ScaleNameInput, label?: string): number;
468
+ /**
469
+ * The form a mask stands in, when it stands in one.
470
+ *
471
+ * A bare scale still names its form — a major mask is a major key whoever built
472
+ * it — so the form is read from the mask rather than defaulted away. Only a
473
+ * mask matching none of the four is modal.
474
+ */
475
+ declare function variantOfMask(modeMask12: number): KeyVariant;
476
+ /**
477
+ * Refuse a scale form the key's own mask does not hold.
478
+ *
479
+ * A key whose variant says `'harmonic'` over a major mask prints as a harmonic
480
+ * minor while comparing equal to plain C major, so a project file that carried
481
+ * the two apart is refused where the mismatch is still an argument. Kept beside
482
+ * the type it validates: the pairing of form and mask is written once, and
483
+ * every construction path reads that one.
484
+ *
485
+ * @param variant The form claimed for the key.
486
+ * @param modeMask12 The mask the key actually holds.
487
+ * @throws If the form is not one a key may stand in, or the mask does not hold it.
488
+ * @category Scales
489
+ */
490
+ declare function assertKeyVariant(variant: KeyVariant, modeMask12: number): void;
444
491
 
445
- export { ALTERED_MASK as A, BLUES_MASK as B, CHROMATIC_MASK as C, DORIAN_MASK as D, HARMONIC_MINOR_MASK as H, LOCRIAN_MASK as L, MAJOR_MASK as M, NAMED_SCALES as N, OCTATONIC_HALF_WHOLE_MASK as O, PHRYGIAN_DOMINANT_MASK as P, RITSU_MASK as R, SCALE_ALIASES as S, TODI_MASK as T, WHOLE_TONE_MASK as W, DOUBLE_HARMONIC_MASK as a, LOCRIAN_NATURAL2_MASK as b, LYDIAN_DOMINANT_MASK as c, LYDIAN_MASK as d, MAJOR_PENTATONIC_MASK as e, MARWA_MASK as f, MELODIC_MINOR_MASK as g, MINOR_PENTATONIC_MASK as h, MIXOLYDIAN_B13_MASK as i, MIXOLYDIAN_MASK as j, MIYAKO_BUSHI_MASK as k, NATURAL_MINOR_MASK as l, OCTATONIC_WHOLE_HALF_MASK as m, PHRYGIAN_MASK as n, PURVI_MASK as o, RYUKYU_MASK as p, type ScaleAliasName as q, type ScaleName as r, type ScaleNameInput as s, WORLD_SCALES as t, type WorldScaleName as u, maskFromOffsets as v, namedScaleMask as w, requireScaleMask as x, resolveScaleName as y };
492
+ export { ALTERED_MASK as A, BLUES_MASK as B, CHROMATIC_MASK as C, DORIAN_MASK as D, resolveScaleName as E, variantOfMask as F, HARMONIC_MINOR_MASK as H, LOCRIAN_MASK as L, MAJOR_MASK as M, NAMED_SCALES as N, OCTATONIC_HALF_WHOLE_MASK as O, PHRYGIAN_DOMINANT_MASK as P, RITSU_MASK as R, SCALE_ALIASES as S, TODI_MASK as T, WHOLE_TONE_MASK as W, DOUBLE_HARMONIC_MASK as a, LOCRIAN_NATURAL2_MASK as b, LYDIAN_DOMINANT_MASK as c, LYDIAN_MASK as d, MAJOR_PENTATONIC_MASK as e, MARWA_MASK as f, MELODIC_MINOR_MASK as g, MINOR_PENTATONIC_MASK as h, MIXOLYDIAN_B13_MASK as i, MIXOLYDIAN_MASK as j, MIYAKO_BUSHI_MASK as k, NATURAL_MINOR_MASK as l, OCTATONIC_WHOLE_HALF_MASK as m, PHRYGIAN_MASK as n, PURVI_MASK as o, RYUKYU_MASK as p, type ScaleAliasName as q, type ScaleName as r, type ScaleNameInput as s, WORLD_SCALES as t, type WorldScaleName as u, assertKeyVariant as v, assertModeMask as w, maskFromOffsets as x, namedScaleMask as y, requireScaleMask as z };
@@ -16,23 +16,23 @@
16
16
 
17
17
 
18
18
 
19
- var _chunk6XH6QZYQcjs = require('../chunk-6XH6QZYQ.cjs');
20
- require('../chunk-B6XNKWZV.cjs');
21
- require('../chunk-NLEU4QSE.cjs');
22
- require('../chunk-AFM2ULJH.cjs');
23
- require('../chunk-OE6WK2Y2.cjs');
24
- require('../chunk-E3F4AHAH.cjs');
25
- require('../chunk-K4ZJUGF4.cjs');
26
- require('../chunk-WWURE4XT.cjs');
27
- require('../chunk-6XPTBE7Y.cjs');
19
+ var _chunkDSMJRXCZcjs = require('../chunk-DSMJRXCZ.cjs');
20
+ require('../chunk-HPVSH7SF.cjs');
21
+ require('../chunk-NM7UAMC3.cjs');
22
+ require('../chunk-J7FHVZII.cjs');
23
+ require('../chunk-SGLEQVJH.cjs');
24
+ require('../chunk-CGBADIO5.cjs');
25
+ require('../chunk-35NBV2FT.cjs');
26
+ require('../chunk-76ZBTRG2.cjs');
27
+ require('../chunk-PM4XJE2Y.cjs');
28
28
 
29
29
 
30
- var _chunkUADYAYATcjs = require('../chunk-UADYAYAT.cjs');
31
- require('../chunk-Q2WGKJNN.cjs');
30
+ var _chunk3R3QVKY5cjs = require('../chunk-3R3QVKY5.cjs');
32
31
 
33
32
 
34
33
 
35
34
 
35
+ var _chunkS5BKZZGMcjs = require('../chunk-S5BKZZGM.cjs');
36
36
 
37
37
 
38
38
 
@@ -48,5 +48,12 @@ require('../chunk-Q2WGKJNN.cjs');
48
48
 
49
49
 
50
50
 
51
- exports.Arrangement = _chunk6XH6QZYQcjs.Arrangement; exports.Chord = _chunk6XH6QZYQcjs.Chord; exports.Composer = _chunk6XH6QZYQcjs.Composer; exports.Duration = _chunk6XH6QZYQcjs.Duration; exports.Instrument = _chunk6XH6QZYQcjs.Instrument; exports.Interval = _chunk6XH6QZYQcjs.Interval; exports.Key = _chunk6XH6QZYQcjs.Key; exports.Meter = _chunk6XH6QZYQcjs.Meter; exports.Motif = _chunk6XH6QZYQcjs.Motif; exports.Note = _chunk6XH6QZYQcjs.Note; exports.NoteSafety = _chunkUADYAYATcjs.NoteSafety; exports.Progression = _chunk6XH6QZYQcjs.Progression; exports.Rhythm = _chunk6XH6QZYQcjs.Rhythm; exports.Score = _chunk6XH6QZYQcjs.Score; exports.Tempo = _chunk6XH6QZYQcjs.Tempo; exports.Timeline = _chunk6XH6QZYQcjs.Timeline; exports.Tuning = _chunk6XH6QZYQcjs.Tuning; exports.Voicing = _chunk6XH6QZYQcjs.Voicing;
51
+
52
+
53
+
54
+
55
+
56
+
57
+
58
+ exports.Arrangement = _chunkDSMJRXCZcjs.Arrangement; exports.BudgetExceededError = _chunkS5BKZZGMcjs.BudgetExceededError; exports.Chord = _chunkDSMJRXCZcjs.Chord; exports.Composer = _chunkDSMJRXCZcjs.Composer; exports.Duration = _chunkDSMJRXCZcjs.Duration; exports.Instrument = _chunkDSMJRXCZcjs.Instrument; exports.Interval = _chunkDSMJRXCZcjs.Interval; exports.InvalidInputError = _chunkS5BKZZGMcjs.InvalidInputError; exports.Key = _chunkDSMJRXCZcjs.Key; exports.Meter = _chunkDSMJRXCZcjs.Meter; exports.Motif = _chunkDSMJRXCZcjs.Motif; exports.NoSolutionError = _chunkS5BKZZGMcjs.NoSolutionError; exports.Note = _chunkDSMJRXCZcjs.Note; exports.NoteSafety = _chunk3R3QVKY5cjs.NoteSafety; exports.Progression = _chunkDSMJRXCZcjs.Progression; exports.Rhythm = _chunkDSMJRXCZcjs.Rhythm; exports.Score = _chunkDSMJRXCZcjs.Score; exports.Tempo = _chunkDSMJRXCZcjs.Tempo; exports.Timeline = _chunkDSMJRXCZcjs.Timeline; exports.Tuning = _chunkDSMJRXCZcjs.Tuning; exports.Voicing = _chunkDSMJRXCZcjs.Voicing;
52
59
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/libcantus/libcantus/dist/model/index.cjs"],"names":[],"mappings":"AAAA;AACE;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,iCAA8B;AAC9B,iCAA8B;AAC9B;AACE;AACF,yDAA8B;AAC9B,iCAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,uyBAAC","file":"/home/runner/work/libcantus/libcantus/dist/model/index.cjs"}
1
+ {"version":3,"sources":["/home/runner/work/libcantus/libcantus/dist/model/index.cjs"],"names":[],"mappings":"AAAA;AACE;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,iCAA8B;AAC9B,iCAA8B;AAC9B;AACE;AACF,yDAA8B;AAC9B;AACE;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;AACF,0+BAAC","file":"/home/runner/work/libcantus/libcantus/dist/model/index.cjs"}