@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
@@ -23,7 +23,7 @@
23
23
 
24
24
 
25
25
 
26
- var _chunkNLEU4QSEcjs = require('../chunk-NLEU4QSE.cjs');
26
+ var _chunkNM7UAMC3cjs = require('../chunk-NM7UAMC3.cjs');
27
27
 
28
28
 
29
29
 
@@ -43,10 +43,11 @@ var _chunkNLEU4QSEcjs = require('../chunk-NLEU4QSE.cjs');
43
43
 
44
44
 
45
45
 
46
- var _chunkE3F4AHAHcjs = require('../chunk-E3F4AHAH.cjs');
47
46
 
47
+ var _chunkCGBADIO5cjs = require('../chunk-CGBADIO5.cjs');
48
48
 
49
49
 
50
+ var _chunk35NBV2FTcjs = require('../chunk-35NBV2FT.cjs');
50
51
 
51
52
 
52
53
 
@@ -66,7 +67,6 @@ var _chunkE3F4AHAHcjs = require('../chunk-E3F4AHAH.cjs');
66
67
 
67
68
 
68
69
 
69
- var _chunkK4ZJUGF4cjs = require('../chunk-K4ZJUGF4.cjs');
70
70
 
71
71
 
72
72
 
@@ -114,9 +114,9 @@ var _chunkK4ZJUGF4cjs = require('../chunk-K4ZJUGF4.cjs');
114
114
 
115
115
 
116
116
 
117
- var _chunkQ2WGKJNNcjs = require('../chunk-Q2WGKJNN.cjs');
118
117
 
119
118
 
119
+ var _chunkS5BKZZGMcjs = require('../chunk-S5BKZZGM.cjs');
120
120
 
121
121
 
122
122
 
@@ -224,5 +224,9 @@ var _chunkQ2WGKJNNcjs = require('../chunk-Q2WGKJNN.cjs');
224
224
 
225
225
 
226
226
 
227
- exports.ALGORITHM_VERSION = _chunkE3F4AHAHcjs.ALGORITHM_VERSION; exports.ARTICULATIONS = _chunkE3F4AHAHcjs.ARTICULATIONS; exports.BASS_4_STRING = _chunkE3F4AHAHcjs.BASS_4_STRING; exports.BASS_5_STRING = _chunkE3F4AHAHcjs.BASS_5_STRING; exports.BudgetExceededError = _chunkQ2WGKJNNcjs.BudgetExceededError; exports.ConsonanceClass = _chunkQ2WGKJNNcjs.ConsonanceClass; exports.DEFAULT_GENERATION_BUDGET = _chunkQ2WGKJNNcjs.DEFAULT_GENERATION_BUDGET; exports.GUITAR_DROP_D = _chunkE3F4AHAHcjs.GUITAR_DROP_D; exports.GUITAR_STANDARD = _chunkE3F4AHAHcjs.GUITAR_STANDARD; exports.InvalidInputError = _chunkQ2WGKJNNcjs.InvalidInputError; exports.JUST_RATIOS = _chunkNLEU4QSEcjs.JUST_RATIOS; exports.LIMBS = _chunkE3F4AHAHcjs.LIMBS; exports.MIN_ALGORITHM_VERSION = _chunkE3F4AHAHcjs.MIN_ALGORITHM_VERSION; exports.NOTE_VALUES = _chunkNLEU4QSEcjs.NOTE_VALUES; exports.NoSolutionError = _chunkQ2WGKJNNcjs.NoSolutionError; exports.TWELVE_TET = _chunkNLEU4QSEcjs.TWELVE_TET; exports.assertDegree = _chunkQ2WGKJNNcjs.assertDegree; exports.assertFiniteNumber = _chunkQ2WGKJNNcjs.assertFiniteNumber; exports.assertFiniteSemitones = _chunkQ2WGKJNNcjs.assertFiniteSemitones; exports.assertGenerationBudget = _chunkQ2WGKJNNcjs.assertGenerationBudget; exports.assertInteger = _chunkQ2WGKJNNcjs.assertInteger; exports.assertMeterMap = _chunkQ2WGKJNNcjs.assertMeterMap; exports.assertMidiPitch = _chunkQ2WGKJNNcjs.assertMidiPitch; exports.assertNoteEvent = _chunkQ2WGKJNNcjs.assertNoteEvent; exports.assertNoteEvents = _chunkQ2WGKJNNcjs.assertNoteEvents; exports.assertOneOf = _chunkQ2WGKJNNcjs.assertOneOf; exports.assertPositiveInt = _chunkQ2WGKJNNcjs.assertPositiveInt; exports.assertRange = _chunkQ2WGKJNNcjs.assertRange; exports.assertTimeSignature = _chunkQ2WGKJNNcjs.assertTimeSignature; exports.barIndexAt = _chunkK4ZJUGF4cjs.barIndexAt; exports.barPositionToBeat = _chunkK4ZJUGF4cjs.barPositionToBeat; exports.barPositionToPulse = _chunkK4ZJUGF4cjs.barPositionToPulse; exports.barStartBeat = _chunkK4ZJUGF4cjs.barStartBeat; exports.beatToBarPosition = _chunkK4ZJUGF4cjs.beatToBarPosition; exports.beatsPerBar = _chunkK4ZJUGF4cjs.beatsPerBar; exports.beatsPerBarAt = _chunkK4ZJUGF4cjs.beatsPerBarAt; exports.beatsToDuration = _chunkNLEU4QSEcjs.beatsToDuration; exports.beatsToSeconds = _chunkNLEU4QSEcjs.beatsToSeconds; exports.beatsToTicks = _chunkNLEU4QSEcjs.beatsToTicks; exports.beatsToTiedDurations = _chunkNLEU4QSEcjs.beatsToTiedDurations; exports.canSound = _chunkE3F4AHAHcjs.canSound; exports.centsBetweenFreq = _chunkNLEU4QSEcjs.centsBetweenFreq; exports.centsFromNearestStep = _chunkNLEU4QSEcjs.centsFromNearestStep; exports.centsOfSteps = _chunkNLEU4QSEcjs.centsOfSteps; exports.centsToRatio = _chunkNLEU4QSEcjs.centsToRatio; exports.clampToMidi = _chunkQ2WGKJNNcjs.clampToMidi; exports.classifyInterval = _chunkQ2WGKJNNcjs.classifyInterval; exports.createNoteEventIndex = _chunkK4ZJUGF4cjs.createNoteEventIndex; exports.createPositionalRng = _chunkE3F4AHAHcjs.createPositionalRng; exports.createRng = _chunkE3F4AHAHcjs.createRng; exports.deriveSeed = _chunkE3F4AHAHcjs.deriveSeed; exports.detectNoteNameSystem = _chunkQ2WGKJNNcjs.detectNoteNameSystem; exports.diatonicLetterOf = _chunkQ2WGKJNNcjs.diatonicLetterOf; exports.dropSilentNotes = _chunkQ2WGKJNNcjs.dropSilentNotes; exports.durationToBeats = _chunkNLEU4QSEcjs.durationToBeats; exports.durationToSeconds = _chunkNLEU4QSEcjs.durationToSeconds; exports.edo = _chunkNLEU4QSEcjs.edo; exports.fingeringsFor = _chunkE3F4AHAHcjs.fingeringsFor; exports.foldIntoRange = _chunkE3F4AHAHcjs.foldIntoRange; exports.formatBarPosition = _chunkK4ZJUGF4cjs.formatBarPosition; exports.formatKeyName = _chunkQ2WGKJNNcjs.formatKeyName; exports.formatNote = _chunkQ2WGKJNNcjs.formatNote; exports.formatTimeSignature = _chunkK4ZJUGF4cjs.formatTimeSignature; exports.frequencyOf = _chunkNLEU4QSEcjs.frequencyOf; exports.includeAt = _chunkE3F4AHAHcjs.includeAt; exports.instrumentRange = _chunkE3F4AHAHcjs.instrumentRange; exports.intervalSemitones = _chunkQ2WGKJNNcjs.intervalSemitones; exports.isCompound = _chunkK4ZJUGF4cjs.isCompound; exports.isConsonantInterval = _chunkQ2WGKJNNcjs.isConsonantInterval; exports.isLibcantusError = _chunkQ2WGKJNNcjs.isLibcantusError; exports.isPerfectInterval = _chunkQ2WGKJNNcjs.isPerfectInterval; exports.isStrongBeat = _chunkK4ZJUGF4cjs.isStrongBeat; exports.justDeviationCents = _chunkNLEU4QSEcjs.justDeviationCents; exports.meterAt = _chunkK4ZJUGF4cjs.meterAt; exports.metricWeight = _chunkK4ZJUGF4cjs.metricWeight; exports.midiToNote = _chunkQ2WGKJNNcjs.midiToNote; exports.naturalPitchClassOf = _chunkQ2WGKJNNcjs.naturalPitchClassOf; exports.nearestStep = _chunkNLEU4QSEcjs.nearestStep; exports.noteToMidi = _chunkQ2WGKJNNcjs.noteToMidi; exports.noteToPitchClass = _chunkQ2WGKJNNcjs.noteToPitchClass; exports.parseInterval = _chunkQ2WGKJNNcjs.parseInterval; exports.parseKeyName = _chunkQ2WGKJNNcjs.parseKeyName; exports.parseNote = _chunkQ2WGKJNNcjs.parseNote; exports.parseTimeSignature = _chunkK4ZJUGF4cjs.parseTimeSignature; exports.pitchClassOf = _chunkQ2WGKJNNcjs.pitchClassOf; exports.playability = _chunkE3F4AHAHcjs.playability; exports.pulseBeats = _chunkK4ZJUGF4cjs.pulseBeats; exports.pulsesPerBar = _chunkK4ZJUGF4cjs.pulsesPerBar; exports.ratioToCents = _chunkNLEU4QSEcjs.ratioToCents; exports.resolveAlgorithmVersion = _chunkE3F4AHAHcjs.resolveAlgorithmVersion; exports.resolveMeters = _chunkK4ZJUGF4cjs.resolveMeters; exports.secondsToBeats = _chunkNLEU4QSEcjs.secondsToBeats; exports.soundingNotesOnly = _chunkQ2WGKJNNcjs.soundingNotesOnly; exports.spelledInterval = _chunkQ2WGKJNNcjs.spelledInterval; exports.stepOf = _chunkNLEU4QSEcjs.stepOf; exports.stepsOfCents = _chunkNLEU4QSEcjs.stepsOfCents; exports.tempoAt = _chunkNLEU4QSEcjs.tempoAt; exports.ticksToBeats = _chunkNLEU4QSEcjs.ticksToBeats; exports.toMeterData = _chunkK4ZJUGF4cjs.toMeterData; exports.toNoteData = _chunkQ2WGKJNNcjs.toNoteData; exports.toSpelledInterval = _chunkQ2WGKJNNcjs.toSpelledInterval; exports.transposeByInterval = _chunkQ2WGKJNNcjs.transposeByInterval; exports.transposeNote = _chunkQ2WGKJNNcjs.transposeNote; exports.tryParseInterval = _chunkQ2WGKJNNcjs.tryParseInterval; exports.tryParseKeyName = _chunkQ2WGKJNNcjs.tryParseKeyName; exports.tryParseNote = _chunkQ2WGKJNNcjs.tryParseNote; exports.tryParseTimeSignature = _chunkK4ZJUGF4cjs.tryParseTimeSignature; exports.tuplet = _chunkK4ZJUGF4cjs.tuplet;
227
+
228
+
229
+
230
+
231
+ exports.ALGORITHM_VERSION = _chunkCGBADIO5cjs.ALGORITHM_VERSION; exports.ARTICULATIONS = _chunkS5BKZZGMcjs.ARTICULATIONS; exports.BASS_4_STRING = _chunkCGBADIO5cjs.BASS_4_STRING; exports.BASS_5_STRING = _chunkCGBADIO5cjs.BASS_5_STRING; exports.BudgetExceededError = _chunkS5BKZZGMcjs.BudgetExceededError; exports.ConsonanceClass = _chunkS5BKZZGMcjs.ConsonanceClass; exports.DEFAULT_GENERATION_BUDGET = _chunkS5BKZZGMcjs.DEFAULT_GENERATION_BUDGET; exports.GUITAR_DROP_D = _chunkCGBADIO5cjs.GUITAR_DROP_D; exports.GUITAR_STANDARD = _chunkCGBADIO5cjs.GUITAR_STANDARD; exports.InvalidInputError = _chunkS5BKZZGMcjs.InvalidInputError; exports.JUST_RATIOS = _chunkNM7UAMC3cjs.JUST_RATIOS; exports.LIMBS = _chunkCGBADIO5cjs.LIMBS; exports.MIN_ALGORITHM_VERSION = _chunkCGBADIO5cjs.MIN_ALGORITHM_VERSION; exports.NOTE_VALUES = _chunkNM7UAMC3cjs.NOTE_VALUES; exports.NoSolutionError = _chunkS5BKZZGMcjs.NoSolutionError; exports.TWELVE_TET = _chunkNM7UAMC3cjs.TWELVE_TET; exports.assertDegree = _chunkS5BKZZGMcjs.assertDegree; exports.assertFiniteNumber = _chunkS5BKZZGMcjs.assertFiniteNumber; exports.assertFiniteSemitones = _chunkS5BKZZGMcjs.assertFiniteSemitones; exports.assertGenerationBudget = _chunkS5BKZZGMcjs.assertGenerationBudget; exports.assertInteger = _chunkS5BKZZGMcjs.assertInteger; exports.assertMeterMap = _chunkS5BKZZGMcjs.assertMeterMap; exports.assertMidiPitch = _chunkS5BKZZGMcjs.assertMidiPitch; exports.assertNoteEvent = _chunkS5BKZZGMcjs.assertNoteEvent; exports.assertNoteEvents = _chunkS5BKZZGMcjs.assertNoteEvents; exports.assertOneOf = _chunkS5BKZZGMcjs.assertOneOf; exports.assertPositiveInt = _chunkS5BKZZGMcjs.assertPositiveInt; exports.assertRange = _chunkS5BKZZGMcjs.assertRange; exports.assertTimeSignature = _chunkS5BKZZGMcjs.assertTimeSignature; exports.barIndexAt = _chunkS5BKZZGMcjs.barIndexAt; exports.barPositionToBeat = _chunkS5BKZZGMcjs.barPositionToBeat; exports.barPositionToPulse = _chunkS5BKZZGMcjs.barPositionToPulse; exports.barStartBeat = _chunkS5BKZZGMcjs.barStartBeat; exports.beatToBarPosition = _chunkS5BKZZGMcjs.beatToBarPosition; exports.beatsPerBar = _chunkS5BKZZGMcjs.beatsPerBar; exports.beatsPerBarAt = _chunkS5BKZZGMcjs.beatsPerBarAt; exports.beatsToDuration = _chunkNM7UAMC3cjs.beatsToDuration; exports.beatsToSeconds = _chunkNM7UAMC3cjs.beatsToSeconds; exports.beatsToTicks = _chunkNM7UAMC3cjs.beatsToTicks; exports.beatsToTiedDurations = _chunkNM7UAMC3cjs.beatsToTiedDurations; exports.canSound = _chunkCGBADIO5cjs.canSound; exports.centsBetweenFreq = _chunkNM7UAMC3cjs.centsBetweenFreq; exports.centsFromNearestStep = _chunkNM7UAMC3cjs.centsFromNearestStep; exports.centsOfSteps = _chunkNM7UAMC3cjs.centsOfSteps; exports.centsToRatio = _chunkNM7UAMC3cjs.centsToRatio; exports.clampToMidi = _chunkS5BKZZGMcjs.clampToMidi; exports.classifyInterval = _chunkS5BKZZGMcjs.classifyInterval; exports.createNoteEventIndex = _chunk35NBV2FTcjs.createNoteEventIndex; exports.createPositionalRng = _chunkCGBADIO5cjs.createPositionalRng; exports.createRng = _chunkCGBADIO5cjs.createRng; exports.deriveSeed = _chunkCGBADIO5cjs.deriveSeed; exports.detectNoteNameSystem = _chunkS5BKZZGMcjs.detectNoteNameSystem; exports.diatonicLetterOf = _chunkS5BKZZGMcjs.diatonicLetterOf; exports.dropSilentNotes = _chunkS5BKZZGMcjs.dropSilentNotes; exports.durationToBeats = _chunkNM7UAMC3cjs.durationToBeats; exports.durationToSeconds = _chunkNM7UAMC3cjs.durationToSeconds; exports.edo = _chunkNM7UAMC3cjs.edo; exports.fingeringsFor = _chunkCGBADIO5cjs.fingeringsFor; exports.foldIntoRange = _chunkCGBADIO5cjs.foldIntoRange; exports.formatBarPosition = _chunkS5BKZZGMcjs.formatBarPosition; exports.formatKeyName = _chunkS5BKZZGMcjs.formatKeyName; exports.formatNote = _chunkS5BKZZGMcjs.formatNote; exports.formatTimeSignature = _chunkS5BKZZGMcjs.formatTimeSignature; exports.frequencyOf = _chunkNM7UAMC3cjs.frequencyOf; exports.includeAt = _chunkCGBADIO5cjs.includeAt; exports.instrumentRange = _chunkCGBADIO5cjs.instrumentRange; exports.intervalSemitones = _chunkS5BKZZGMcjs.intervalSemitones; exports.isCompound = _chunkS5BKZZGMcjs.isCompound; exports.isConsonantInterval = _chunkS5BKZZGMcjs.isConsonantInterval; exports.isLibcantusError = _chunkS5BKZZGMcjs.isLibcantusError; exports.isPerfectInterval = _chunkS5BKZZGMcjs.isPerfectInterval; exports.isStrongBeat = _chunkS5BKZZGMcjs.isStrongBeat; exports.justDeviationCents = _chunkNM7UAMC3cjs.justDeviationCents; exports.meterAt = _chunkS5BKZZGMcjs.meterAt; exports.metricWeight = _chunkS5BKZZGMcjs.metricWeight; exports.midiToNote = _chunkS5BKZZGMcjs.midiToNote; exports.naturalPitchClassOf = _chunkS5BKZZGMcjs.naturalPitchClassOf; exports.nearestStep = _chunkNM7UAMC3cjs.nearestStep; exports.noteToMidi = _chunkS5BKZZGMcjs.noteToMidi; exports.noteToPitchClass = _chunkS5BKZZGMcjs.noteToPitchClass; exports.parseInterval = _chunkS5BKZZGMcjs.parseInterval; exports.parseKeyName = _chunkS5BKZZGMcjs.parseKeyName; exports.parseNote = _chunkS5BKZZGMcjs.parseNote; exports.parseTimeSignature = _chunkS5BKZZGMcjs.parseTimeSignature; exports.pitchClassOf = _chunkS5BKZZGMcjs.pitchClassOf; exports.playability = _chunkCGBADIO5cjs.playability; exports.pulseBeats = _chunkS5BKZZGMcjs.pulseBeats; exports.pulsesPerBar = _chunkS5BKZZGMcjs.pulsesPerBar; exports.ratioToCents = _chunkNM7UAMC3cjs.ratioToCents; exports.resolveAlgorithmVersion = _chunkCGBADIO5cjs.resolveAlgorithmVersion; exports.resolveMeters = _chunkS5BKZZGMcjs.resolveMeters; exports.secondsToBeats = _chunkNM7UAMC3cjs.secondsToBeats; exports.soundingNotesOnly = _chunkS5BKZZGMcjs.soundingNotesOnly; exports.spelledInterval = _chunkS5BKZZGMcjs.spelledInterval; exports.stepOf = _chunkNM7UAMC3cjs.stepOf; exports.stepsOfCents = _chunkNM7UAMC3cjs.stepsOfCents; exports.tempoAt = _chunkNM7UAMC3cjs.tempoAt; exports.ticksToBeats = _chunkNM7UAMC3cjs.ticksToBeats; exports.toInstrumentProfile = _chunkCGBADIO5cjs.toInstrumentProfile; exports.toMeterData = _chunkS5BKZZGMcjs.toMeterData; exports.toNoteData = _chunkS5BKZZGMcjs.toNoteData; exports.toSpelledInterval = _chunkS5BKZZGMcjs.toSpelledInterval; exports.toStringedProfile = _chunkCGBADIO5cjs.toStringedProfile; exports.transposeByInterval = _chunkS5BKZZGMcjs.transposeByInterval; exports.transposeNote = _chunkS5BKZZGMcjs.transposeNote; exports.tryParseInterval = _chunkS5BKZZGMcjs.tryParseInterval; exports.tryParseKeyName = _chunkS5BKZZGMcjs.tryParseKeyName; exports.tryParseNote = _chunkS5BKZZGMcjs.tryParseNote; exports.tryParseTimeSignature = _chunkS5BKZZGMcjs.tryParseTimeSignature; exports.tuplet = _chunkS5BKZZGMcjs.tuplet;
228
232
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/libcantus/libcantus/dist/core/index.cjs"],"names":[],"mappings":"AAAA,0GAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,yDAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,6uMAAC","file":"/home/runner/work/libcantus/libcantus/dist/core/index.cjs"}
1
+ {"version":3,"sources":["/home/runner/work/libcantus/libcantus/dist/core/index.cjs"],"names":[],"mappings":"AAAA,0GAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,m3MAAC","file":"/home/runner/work/libcantus/libcantus/dist/core/index.cjs"}
@@ -1,11 +1,11 @@
1
- export { D as DurationData, I as IndexedNoteEvent, J as JUST_RATIOS, N as NOTE_VALUES, a as NoteEventIndex, b as NoteEventIndexOptions, c as NotePlacement, d as NoteValue, O as OnsetTieBreak, P as PlayabilityIssue, e as PlayabilityIssueType, f as PlayabilityLayer, g as PlayabilityReport, S as SpelledDuration, T as TWELVE_TET, h as TempoEvent, i as TempoMap, j as TuningTable, k as Tuplet, l as beatsToDuration, m as beatsToSeconds, n as beatsToTicks, o as beatsToTiedDurations, p as centsBetweenFreq, q as centsFromNearestStep, r as centsOfSteps, s as centsToRatio, t as createNoteEventIndex, u as durationToBeats, v as durationToSeconds, w as edo, x as frequencyOf, y as justDeviationCents, z as nearestStep, A as playability, B as ratioToCents, C as secondsToBeats, E as stepOf, F as stepsOfCents, G as tempoAt, H as ticksToBeats } from '../index-CGpRv5sl.cjs';
2
- import { g as NoteEvent } from '../index-B9MNZboQ.cjs';
3
- 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, 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.cjs';
4
- import { f as StringedProfile } from '../positional-DvH_sd8u.cjs';
5
- export { I as InstrumentProfile, a as InstrumentProfileCommon, b as InstrumentProfileLike, L as LIMBS, c as Limb, P as PercussionProfile, d as PositionalRng, S as SeedPath, e as StringFingering, g as canSound, h as createPositionalRng, i as deriveSeed, j as fingeringsFor, k as foldIntoRange, l as includeAt, m as instrumentRange } from '../positional-DvH_sd8u.cjs';
1
+ export { D as DurationData, I as IndexedNoteEvent, J as JUST_RATIOS, N as NOTE_VALUES, a as NoteEventIndex, b as NoteEventIndexOptions, c as NotePlacement, d as NoteValue, O as OnsetTieBreak, P as PlayabilityIssue, e as PlayabilityIssueType, f as PlayabilityLayer, g as PlayabilityReport, S as SpelledDuration, T as TWELVE_TET, h as TempoEvent, i as TempoMap, j as TuningTable, k as Tuplet, l as beatsToDuration, m as beatsToSeconds, n as beatsToTicks, o as beatsToTiedDurations, p as centsBetweenFreq, q as centsFromNearestStep, r as centsOfSteps, s as centsToRatio, t as createNoteEventIndex, u as durationToBeats, v as durationToSeconds, w as edo, x as frequencyOf, y as justDeviationCents, z as nearestStep, A as playability, B as ratioToCents, C as secondsToBeats, E as stepOf, F as stepsOfCents, G as tempoAt, H as ticksToBeats } from '../index-cHvbYgJI.cjs';
2
+ import { h as NoteEvent } from '../index-Cy15oTvh.cjs';
3
+ export { A as ARTICULATIONS, a as Articulation, B as BudgetExceededError, I as IntervalData, b as IntervalLike, c as IntervalQualityLabel, d as InvalidInputError, K as KeyName, e as KeyScale, L as LibcantusError, f as LibcantusErrorCode, N as NoSolutionError, g as NoteData, i as NoteLike, j as NoteNameOptions, k as NoteNameSystem, P as ParseResult, S as SpelledInterval, l as detectNoteNameSystem, m as diatonicLetterOf, n as formatKeyName, o as formatNote, p as intervalSemitones, q as isLibcantusError, r as midiToNote, s as naturalPitchClassOf, t as noteToMidi, u as noteToPitchClass, v as parseInterval, w as parseKeyName, x as parseNote, y as pitchClassOf, z as spelledInterval, C as toNoteData, D as toSpelledInterval, E as transposeByInterval, F as transposeNote, G as tryParseInterval, H as tryParseKeyName, J as tryParseNote } from '../index-Cy15oTvh.cjs';
4
+ import { f as StringedProfile } from '../positional-DMZer-FM.cjs';
5
+ export { I as InstrumentProfile, a as InstrumentProfileCommon, b as InstrumentProfileLike, L as LIMBS, c as Limb, P as PercussionProfile, d as PositionalRng, S as SeedPath, e as StringFingering, V as ValidatedPercussionProfile, g as ValidatedProfile, h as ValidatedStringedProfile, i as canSound, j as createPositionalRng, k as deriveSeed, l as fingeringsFor, m as foldIntoRange, n as includeAt, o as instrumentRange, t as toInstrumentProfile, p as toStringedProfile } from '../positional-DMZer-FM.cjs';
6
6
  export { C as ConsonanceClass, c as classifyInterval, i as isConsonantInterval, a as isPerfectInterval } from '../index-DInQqT8Q.cjs';
7
- import { c as MeterMap, T as TimeSignature } from '../index-BkGmlyI3.cjs';
8
- export { B as BarPosition, M as MeterChange, a as MeterData, b as MeterLike, d as barIndexAt, e as barPositionToBeat, f as barPositionToPulse, g as barStartBeat, h as beatToBarPosition, i as beatsPerBar, j as beatsPerBarAt, k as formatBarPosition, l as formatTimeSignature, m as isCompound, n as isStrongBeat, o as meterAt, p as metricWeight, q as parseTimeSignature, r as pulseBeats, s as pulsesPerBar, t as resolveMeters, u as toMeterData, v as tryParseTimeSignature, w as tuplet } from '../index-BkGmlyI3.cjs';
7
+ import { c as MeterMap, T as TimeSignature } from '../index-BMweUlm5.cjs';
8
+ export { B as BarPosition, M as MeterChange, a as MeterData, b as MeterLike, d as barIndexAt, e as barPositionToBeat, f as barPositionToPulse, g as barStartBeat, h as beatToBarPosition, i as beatsPerBar, j as beatsPerBarAt, k as formatBarPosition, l as formatTimeSignature, m as isCompound, n as isStrongBeat, o as meterAt, p as metricWeight, q as parseTimeSignature, r as pulseBeats, s as pulsesPerBar, t as resolveMeters, u as toMeterData, v as tryParseTimeSignature, w as tuplet } from '../index-BMweUlm5.cjs';
9
9
 
10
10
  /**
11
11
  * Electric bass in standard tuning: E1 A1 D2 G2 over a 24-fret neck.
@@ -34,105 +34,6 @@ declare const GUITAR_STANDARD: StringedProfile;
34
34
  */
35
35
  declare const GUITAR_DROP_D: StringedProfile;
36
36
 
37
- /**
38
- * The reproducibility contract for generated output.
39
- *
40
- * A saved project is a seed plus parameters, and it only reopens as the same
41
- * piece if the library still turns them into the same notes. Package versions
42
- * cannot carry that promise: a bug fix inside a generator is a patch release
43
- * and still moves every note. The algorithm version is the separate number
44
- * that does carry it, declared here and recorded by the caller alongside the
45
- * seed.
46
- */
47
- /**
48
- * The generator algorithm version this build produces by default.
49
- *
50
- * The guarantee it carries: for a fixed algorithm version, the same inputs —
51
- * seed, version and every documented parameter — produce the same generated
52
- * output from any build of this library that accepts that version. It covers
53
- * what the generators return, and nothing else: analysis results, error
54
- * messages and output taken under a different version are outside it.
55
- *
56
- * Changing what a generator returns for a version it already accepts is a
57
- * defect. New behaviour raises this constant instead, and the older version
58
- * keeps producing what it produced. Withdrawing an accepted version is a
59
- * breaking change, and a project pinned to a withdrawn or not-yet-known
60
- * version is rejected rather than reinterpreted.
61
- *
62
- * @category Utilities
63
- */
64
- declare const ALGORITHM_VERSION = 1;
65
- /**
66
- * The oldest algorithm version this build still produces.
67
- *
68
- * @category Utilities
69
- */
70
- declare const MIN_ALGORITHM_VERSION = 1;
71
- /**
72
- * Resolve the algorithm version a request runs under.
73
- *
74
- * An unpinned request runs at {@link ALGORITHM_VERSION}, which is what a
75
- * caller who wants the current behaviour means; a caller who wants the piece
76
- * back records the resolved number and passes it next time. A version this
77
- * build does not produce is rejected — a project saved by a newer build cannot
78
- * be reproduced by an older one, and quietly rendering it at another version
79
- * would return a different piece under the same name.
80
- *
81
- * @param requested The pinned version, or undefined for the current one.
82
- * @returns The version to generate under.
83
- * @throws If the version is not an integer this build produces.
84
- * @example
85
- * ```ts
86
- * import { ALGORITHM_VERSION, resolveAlgorithmVersion } from '@libraz/libcantus';
87
- * resolveAlgorithmVersion(undefined); // ALGORITHM_VERSION
88
- * resolveAlgorithmVersion(ALGORITHM_VERSION); // the pinned value, unchanged
89
- * ```
90
- * @category Utilities
91
- */
92
- declare function resolveAlgorithmVersion(requested?: number): number;
93
-
94
- /**
95
- * Deterministic seeded pseudo-random number generation shared across the
96
- * generative modules (rhythm, drums, bass, groove, counter-melody). A single
97
- * mulberry32 core exposes the small set of samplers those modules need; given a
98
- * seed the stream is fully reproducible.
99
- *
100
- * Around that core sit the pieces that make a whole project reproducible: seeds
101
- * derived hierarchically from one project number, draws addressed by position
102
- * rather than by call order, and the algorithm version the output is pinned to.
103
- */
104
-
105
- /**
106
- * A deterministic PRNG with the sampling helpers the generators need.
107
- *
108
- * @category Utilities
109
- */
110
- type Rng = {
111
- /** Next float in [0, 1). */
112
- next: () => number;
113
- /** True with probability `p`. */
114
- prob: (p: number) => boolean;
115
- /** Integer in the inclusive range [lo, hi]. */
116
- range: (lo: number, hi: number) => number;
117
- /** Float in [lo, hi). */
118
- float: (lo: number, hi: number) => number;
119
- };
120
- /**
121
- * Create a seeded PRNG (mulberry32) exposing the shared samplers.
122
- *
123
- * @param seed The 32-bit seed; the same seed always yields the same stream.
124
- * @returns The seeded generator.
125
- * @example
126
- * ```ts
127
- * import { createRng } from '@libraz/libcantus';
128
- * const rng = createRng(42);
129
- * rng.next(); // deterministic float in [0, 1)
130
- * rng.range(1, 6); // deterministic integer in [1, 6]
131
- * ```
132
- * @category Utilities
133
- */
134
- declare function createRng(seed: number): Rng;
135
-
136
37
  /**
137
38
  * Default upper bound for synchronous event/window/candidate generation.
138
39
  *
@@ -195,7 +96,10 @@ declare const soundingNotesOnly: typeof dropSilentNotes;
195
96
  * @param allowed Every accepted name.
196
97
  * @param name What the value is, for the error message.
197
98
  * @returns The value, narrowed to the allowed union.
198
- * @throws If the value is not one of `allowed`.
99
+ * @throws If the value is not one of `allowed`. The message names the value by
100
+ * its type unless it is a string, and echoes at most the head of that string,
101
+ * so building it cannot itself fail on a circular object and cannot grow with
102
+ * the size of what was pasted into the field.
199
103
  *
200
104
  * @category Core
201
105
  */
@@ -230,7 +134,13 @@ declare function assertTimeSignature(ts: TimeSignature, name?: string): TimeSign
230
134
  *
231
135
  * The first entry also governs everything before it, so a map need not start at
232
136
  * beat 0 — that is what lets a pickup at a negative beat be read in the
233
- * signature the piece opens in.
137
+ * signature the piece opens in. Where the first entry is written does not move
138
+ * the bar lines: the opening signature counts its bars from beat 0 either way,
139
+ * so beat 0 is the downbeat of bar 0 and the pickup before it is bar -1.
140
+ *
141
+ * The map is also bounded, the way an event array is: a map is consulted once
142
+ * per analysed slot, so its length is a per-slot cost and not only a one-time
143
+ * one.
234
144
  *
235
145
  * @category Core
236
146
  */
@@ -272,4 +182,108 @@ declare function assertNoteEvent(event: NoteEvent, name?: string, options?: Note
272
182
  */
273
183
  declare function assertNoteEvents(events: readonly NoteEvent[], name?: string, options?: NoteEventAssertOptions): NoteEvent[];
274
184
 
185
+ /**
186
+ * How generated output is pinned across builds.
187
+ *
188
+ * A saved project is a seed plus parameters, and it reopens as the same piece
189
+ * only while the library turns them into the same notes. The algorithm version
190
+ * is the number that says which reading of those parameters a project was
191
+ * written against. It is drawn into every seed, so two versions never draw the
192
+ * same stream, and a caller records it beside the seed.
193
+ */
194
+ /**
195
+ * The generator algorithm version this build produces by default.
196
+ *
197
+ * What it carries: for a fixed algorithm version, the same inputs — seed,
198
+ * version and every documented parameter — produce the same generated output
199
+ * from a given build. It covers what the generators return, and nothing else:
200
+ * analysis results, error messages and output taken under a different version
201
+ * are outside it.
202
+ *
203
+ * What it does not carry is a reading frozen against correction. The
204
+ * generators hold one implementation rather than one per version, so pinning
205
+ * an older number selects a different draw of the current implementation and
206
+ * does not restore what that number produced before: a fix to output that was
207
+ * musically wrong moves the notes of a version already in use, ships as a
208
+ * patch, and is stated in the changelog. Reproducing a piece exactly therefore
209
+ * means recording the package version alongside the seed and this number.
210
+ *
211
+ * Raising this constant marks a deliberate change of approach rather than a
212
+ * correction. A project pinned to a version this build does not know is
213
+ * rejected rather than reinterpreted.
214
+ *
215
+ * @category Utilities
216
+ */
217
+ declare const ALGORITHM_VERSION = 1;
218
+ /**
219
+ * The oldest algorithm version this build still accepts.
220
+ *
221
+ * @category Utilities
222
+ */
223
+ declare const MIN_ALGORITHM_VERSION = 1;
224
+ /**
225
+ * Resolve the algorithm version a request runs under.
226
+ *
227
+ * An unpinned request runs at {@link ALGORITHM_VERSION}, which is what a
228
+ * caller who wants the current behaviour means; a caller who wants the piece
229
+ * back records the resolved number and passes it next time. A version this
230
+ * build does not produce is rejected — a project saved by a newer build cannot
231
+ * be reproduced by an older one, and quietly rendering it at another version
232
+ * would return a different piece under the same name.
233
+ *
234
+ * @param requested The pinned version, or undefined for the current one.
235
+ * @returns The version to generate under.
236
+ * @throws If the version is not an integer this build produces.
237
+ * @example
238
+ * ```ts
239
+ * import { ALGORITHM_VERSION, resolveAlgorithmVersion } from '@libraz/libcantus';
240
+ * resolveAlgorithmVersion(undefined); // ALGORITHM_VERSION
241
+ * resolveAlgorithmVersion(ALGORITHM_VERSION); // the pinned value, unchanged
242
+ * ```
243
+ * @category Utilities
244
+ */
245
+ declare function resolveAlgorithmVersion(requested?: number): number;
246
+
247
+ /**
248
+ * Deterministic seeded pseudo-random number generation shared across the
249
+ * generative modules (rhythm, drums, bass, groove, counter-melody). A single
250
+ * mulberry32 core exposes the small set of samplers those modules need; given a
251
+ * seed the stream is fully reproducible.
252
+ *
253
+ * Around that core sit the pieces that make a whole project reproducible: seeds
254
+ * derived hierarchically from one project number, draws addressed by position
255
+ * rather than by call order, and the algorithm version the output is pinned to.
256
+ */
257
+
258
+ /**
259
+ * A deterministic PRNG with the sampling helpers the generators need.
260
+ *
261
+ * @category Utilities
262
+ */
263
+ type Rng = {
264
+ /** Next float in [0, 1). */
265
+ next: () => number;
266
+ /** True with probability `p`. */
267
+ prob: (p: number) => boolean;
268
+ /** Integer in the inclusive range [lo, hi]. */
269
+ range: (lo: number, hi: number) => number;
270
+ /** Float in [lo, hi). */
271
+ float: (lo: number, hi: number) => number;
272
+ };
273
+ /**
274
+ * Create a seeded PRNG (mulberry32) exposing the shared samplers.
275
+ *
276
+ * @param seed The 32-bit seed; the same seed always yields the same stream.
277
+ * @returns The seeded generator.
278
+ * @example
279
+ * ```ts
280
+ * import { createRng } from '@libraz/libcantus';
281
+ * const rng = createRng(42);
282
+ * rng.next(); // deterministic float in [0, 1)
283
+ * rng.range(1, 6); // deterministic integer in [1, 6]
284
+ * ```
285
+ * @category Utilities
286
+ */
287
+ declare function createRng(seed: number): Rng;
288
+
275
289
  export { ALGORITHM_VERSION, BASS_4_STRING, BASS_5_STRING, DEFAULT_GENERATION_BUDGET, GUITAR_DROP_D, GUITAR_STANDARD, MIN_ALGORITHM_VERSION, MeterMap, NoteEvent, type NoteEventAssertOptions, type Rng, StringedProfile, TimeSignature, assertDegree, assertFiniteNumber, assertFiniteSemitones, assertGenerationBudget, assertInteger, assertMeterMap, assertMidiPitch, assertNoteEvent, assertNoteEvents, assertOneOf, assertPositiveInt, assertRange, assertTimeSignature, clampToMidi, createRng, dropSilentNotes, resolveAlgorithmVersion, soundingNotesOnly };
@@ -1,11 +1,11 @@
1
- export { D as DurationData, I as IndexedNoteEvent, J as JUST_RATIOS, N as NOTE_VALUES, a as NoteEventIndex, b as NoteEventIndexOptions, c as NotePlacement, d as NoteValue, O as OnsetTieBreak, P as PlayabilityIssue, e as PlayabilityIssueType, f as PlayabilityLayer, g as PlayabilityReport, S as SpelledDuration, T as TWELVE_TET, h as TempoEvent, i as TempoMap, j as TuningTable, k as Tuplet, l as beatsToDuration, m as beatsToSeconds, n as beatsToTicks, o as beatsToTiedDurations, p as centsBetweenFreq, q as centsFromNearestStep, r as centsOfSteps, s as centsToRatio, t as createNoteEventIndex, u as durationToBeats, v as durationToSeconds, w as edo, x as frequencyOf, y as justDeviationCents, z as nearestStep, A as playability, B as ratioToCents, C as secondsToBeats, E as stepOf, F as stepsOfCents, G as tempoAt, H as ticksToBeats } from '../index-G1uwGGWQ.js';
2
- import { g as NoteEvent } from '../index-B9MNZboQ.js';
3
- 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, 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';
4
- import { f as StringedProfile } from '../positional-Cptlj-xs.js';
5
- export { I as InstrumentProfile, a as InstrumentProfileCommon, b as InstrumentProfileLike, L as LIMBS, c as Limb, P as PercussionProfile, d as PositionalRng, S as SeedPath, e as StringFingering, 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 { D as DurationData, I as IndexedNoteEvent, J as JUST_RATIOS, N as NOTE_VALUES, a as NoteEventIndex, b as NoteEventIndexOptions, c as NotePlacement, d as NoteValue, O as OnsetTieBreak, P as PlayabilityIssue, e as PlayabilityIssueType, f as PlayabilityLayer, g as PlayabilityReport, S as SpelledDuration, T as TWELVE_TET, h as TempoEvent, i as TempoMap, j as TuningTable, k as Tuplet, l as beatsToDuration, m as beatsToSeconds, n as beatsToTicks, o as beatsToTiedDurations, p as centsBetweenFreq, q as centsFromNearestStep, r as centsOfSteps, s as centsToRatio, t as createNoteEventIndex, u as durationToBeats, v as durationToSeconds, w as edo, x as frequencyOf, y as justDeviationCents, z as nearestStep, A as playability, B as ratioToCents, C as secondsToBeats, E as stepOf, F as stepsOfCents, G as tempoAt, H as ticksToBeats } from '../index-9eoQs2C1.js';
2
+ import { h as NoteEvent } from '../index-Cy15oTvh.js';
3
+ export { A as ARTICULATIONS, a as Articulation, B as BudgetExceededError, I as IntervalData, b as IntervalLike, c as IntervalQualityLabel, d as InvalidInputError, K as KeyName, e as KeyScale, L as LibcantusError, f as LibcantusErrorCode, N as NoSolutionError, g as NoteData, i as NoteLike, j as NoteNameOptions, k as NoteNameSystem, P as ParseResult, S as SpelledInterval, l as detectNoteNameSystem, m as diatonicLetterOf, n as formatKeyName, o as formatNote, p as intervalSemitones, q as isLibcantusError, r as midiToNote, s as naturalPitchClassOf, t as noteToMidi, u as noteToPitchClass, v as parseInterval, w as parseKeyName, x as parseNote, y as pitchClassOf, z as spelledInterval, C as toNoteData, D as toSpelledInterval, E as transposeByInterval, F as transposeNote, G as tryParseInterval, H as tryParseKeyName, J as tryParseNote } from '../index-Cy15oTvh.js';
4
+ import { f as StringedProfile } from '../positional-DJgs6ltD.js';
5
+ export { I as InstrumentProfile, a as InstrumentProfileCommon, b as InstrumentProfileLike, L as LIMBS, c as Limb, P as PercussionProfile, d as PositionalRng, S as SeedPath, e as StringFingering, V as ValidatedPercussionProfile, g as ValidatedProfile, h as ValidatedStringedProfile, i as canSound, j as createPositionalRng, k as deriveSeed, l as fingeringsFor, m as foldIntoRange, n as includeAt, o as instrumentRange, t as toInstrumentProfile, p as toStringedProfile } from '../positional-DJgs6ltD.js';
6
6
  export { C as ConsonanceClass, c as classifyInterval, i as isConsonantInterval, a as isPerfectInterval } from '../index-DInQqT8Q.js';
7
- import { c as MeterMap, T as TimeSignature } from '../index-Cj49F892.js';
8
- export { B as BarPosition, M as MeterChange, a as MeterData, b as MeterLike, d as barIndexAt, e as barPositionToBeat, f as barPositionToPulse, g as barStartBeat, h as beatToBarPosition, i as beatsPerBar, j as beatsPerBarAt, k as formatBarPosition, l as formatTimeSignature, m as isCompound, n as isStrongBeat, o as meterAt, p as metricWeight, q as parseTimeSignature, r as pulseBeats, s as pulsesPerBar, t as resolveMeters, u as toMeterData, v as tryParseTimeSignature, w as tuplet } from '../index-Cj49F892.js';
7
+ import { c as MeterMap, T as TimeSignature } from '../index-CL4b4gUQ.js';
8
+ export { B as BarPosition, M as MeterChange, a as MeterData, b as MeterLike, d as barIndexAt, e as barPositionToBeat, f as barPositionToPulse, g as barStartBeat, h as beatToBarPosition, i as beatsPerBar, j as beatsPerBarAt, k as formatBarPosition, l as formatTimeSignature, m as isCompound, n as isStrongBeat, o as meterAt, p as metricWeight, q as parseTimeSignature, r as pulseBeats, s as pulsesPerBar, t as resolveMeters, u as toMeterData, v as tryParseTimeSignature, w as tuplet } from '../index-CL4b4gUQ.js';
9
9
 
10
10
  /**
11
11
  * Electric bass in standard tuning: E1 A1 D2 G2 over a 24-fret neck.
@@ -34,105 +34,6 @@ declare const GUITAR_STANDARD: StringedProfile;
34
34
  */
35
35
  declare const GUITAR_DROP_D: StringedProfile;
36
36
 
37
- /**
38
- * The reproducibility contract for generated output.
39
- *
40
- * A saved project is a seed plus parameters, and it only reopens as the same
41
- * piece if the library still turns them into the same notes. Package versions
42
- * cannot carry that promise: a bug fix inside a generator is a patch release
43
- * and still moves every note. The algorithm version is the separate number
44
- * that does carry it, declared here and recorded by the caller alongside the
45
- * seed.
46
- */
47
- /**
48
- * The generator algorithm version this build produces by default.
49
- *
50
- * The guarantee it carries: for a fixed algorithm version, the same inputs —
51
- * seed, version and every documented parameter — produce the same generated
52
- * output from any build of this library that accepts that version. It covers
53
- * what the generators return, and nothing else: analysis results, error
54
- * messages and output taken under a different version are outside it.
55
- *
56
- * Changing what a generator returns for a version it already accepts is a
57
- * defect. New behaviour raises this constant instead, and the older version
58
- * keeps producing what it produced. Withdrawing an accepted version is a
59
- * breaking change, and a project pinned to a withdrawn or not-yet-known
60
- * version is rejected rather than reinterpreted.
61
- *
62
- * @category Utilities
63
- */
64
- declare const ALGORITHM_VERSION = 1;
65
- /**
66
- * The oldest algorithm version this build still produces.
67
- *
68
- * @category Utilities
69
- */
70
- declare const MIN_ALGORITHM_VERSION = 1;
71
- /**
72
- * Resolve the algorithm version a request runs under.
73
- *
74
- * An unpinned request runs at {@link ALGORITHM_VERSION}, which is what a
75
- * caller who wants the current behaviour means; a caller who wants the piece
76
- * back records the resolved number and passes it next time. A version this
77
- * build does not produce is rejected — a project saved by a newer build cannot
78
- * be reproduced by an older one, and quietly rendering it at another version
79
- * would return a different piece under the same name.
80
- *
81
- * @param requested The pinned version, or undefined for the current one.
82
- * @returns The version to generate under.
83
- * @throws If the version is not an integer this build produces.
84
- * @example
85
- * ```ts
86
- * import { ALGORITHM_VERSION, resolveAlgorithmVersion } from '@libraz/libcantus';
87
- * resolveAlgorithmVersion(undefined); // ALGORITHM_VERSION
88
- * resolveAlgorithmVersion(ALGORITHM_VERSION); // the pinned value, unchanged
89
- * ```
90
- * @category Utilities
91
- */
92
- declare function resolveAlgorithmVersion(requested?: number): number;
93
-
94
- /**
95
- * Deterministic seeded pseudo-random number generation shared across the
96
- * generative modules (rhythm, drums, bass, groove, counter-melody). A single
97
- * mulberry32 core exposes the small set of samplers those modules need; given a
98
- * seed the stream is fully reproducible.
99
- *
100
- * Around that core sit the pieces that make a whole project reproducible: seeds
101
- * derived hierarchically from one project number, draws addressed by position
102
- * rather than by call order, and the algorithm version the output is pinned to.
103
- */
104
-
105
- /**
106
- * A deterministic PRNG with the sampling helpers the generators need.
107
- *
108
- * @category Utilities
109
- */
110
- type Rng = {
111
- /** Next float in [0, 1). */
112
- next: () => number;
113
- /** True with probability `p`. */
114
- prob: (p: number) => boolean;
115
- /** Integer in the inclusive range [lo, hi]. */
116
- range: (lo: number, hi: number) => number;
117
- /** Float in [lo, hi). */
118
- float: (lo: number, hi: number) => number;
119
- };
120
- /**
121
- * Create a seeded PRNG (mulberry32) exposing the shared samplers.
122
- *
123
- * @param seed The 32-bit seed; the same seed always yields the same stream.
124
- * @returns The seeded generator.
125
- * @example
126
- * ```ts
127
- * import { createRng } from '@libraz/libcantus';
128
- * const rng = createRng(42);
129
- * rng.next(); // deterministic float in [0, 1)
130
- * rng.range(1, 6); // deterministic integer in [1, 6]
131
- * ```
132
- * @category Utilities
133
- */
134
- declare function createRng(seed: number): Rng;
135
-
136
37
  /**
137
38
  * Default upper bound for synchronous event/window/candidate generation.
138
39
  *
@@ -195,7 +96,10 @@ declare const soundingNotesOnly: typeof dropSilentNotes;
195
96
  * @param allowed Every accepted name.
196
97
  * @param name What the value is, for the error message.
197
98
  * @returns The value, narrowed to the allowed union.
198
- * @throws If the value is not one of `allowed`.
99
+ * @throws If the value is not one of `allowed`. The message names the value by
100
+ * its type unless it is a string, and echoes at most the head of that string,
101
+ * so building it cannot itself fail on a circular object and cannot grow with
102
+ * the size of what was pasted into the field.
199
103
  *
200
104
  * @category Core
201
105
  */
@@ -230,7 +134,13 @@ declare function assertTimeSignature(ts: TimeSignature, name?: string): TimeSign
230
134
  *
231
135
  * The first entry also governs everything before it, so a map need not start at
232
136
  * beat 0 — that is what lets a pickup at a negative beat be read in the
233
- * signature the piece opens in.
137
+ * signature the piece opens in. Where the first entry is written does not move
138
+ * the bar lines: the opening signature counts its bars from beat 0 either way,
139
+ * so beat 0 is the downbeat of bar 0 and the pickup before it is bar -1.
140
+ *
141
+ * The map is also bounded, the way an event array is: a map is consulted once
142
+ * per analysed slot, so its length is a per-slot cost and not only a one-time
143
+ * one.
234
144
  *
235
145
  * @category Core
236
146
  */
@@ -272,4 +182,108 @@ declare function assertNoteEvent(event: NoteEvent, name?: string, options?: Note
272
182
  */
273
183
  declare function assertNoteEvents(events: readonly NoteEvent[], name?: string, options?: NoteEventAssertOptions): NoteEvent[];
274
184
 
185
+ /**
186
+ * How generated output is pinned across builds.
187
+ *
188
+ * A saved project is a seed plus parameters, and it reopens as the same piece
189
+ * only while the library turns them into the same notes. The algorithm version
190
+ * is the number that says which reading of those parameters a project was
191
+ * written against. It is drawn into every seed, so two versions never draw the
192
+ * same stream, and a caller records it beside the seed.
193
+ */
194
+ /**
195
+ * The generator algorithm version this build produces by default.
196
+ *
197
+ * What it carries: for a fixed algorithm version, the same inputs — seed,
198
+ * version and every documented parameter — produce the same generated output
199
+ * from a given build. It covers what the generators return, and nothing else:
200
+ * analysis results, error messages and output taken under a different version
201
+ * are outside it.
202
+ *
203
+ * What it does not carry is a reading frozen against correction. The
204
+ * generators hold one implementation rather than one per version, so pinning
205
+ * an older number selects a different draw of the current implementation and
206
+ * does not restore what that number produced before: a fix to output that was
207
+ * musically wrong moves the notes of a version already in use, ships as a
208
+ * patch, and is stated in the changelog. Reproducing a piece exactly therefore
209
+ * means recording the package version alongside the seed and this number.
210
+ *
211
+ * Raising this constant marks a deliberate change of approach rather than a
212
+ * correction. A project pinned to a version this build does not know is
213
+ * rejected rather than reinterpreted.
214
+ *
215
+ * @category Utilities
216
+ */
217
+ declare const ALGORITHM_VERSION = 1;
218
+ /**
219
+ * The oldest algorithm version this build still accepts.
220
+ *
221
+ * @category Utilities
222
+ */
223
+ declare const MIN_ALGORITHM_VERSION = 1;
224
+ /**
225
+ * Resolve the algorithm version a request runs under.
226
+ *
227
+ * An unpinned request runs at {@link ALGORITHM_VERSION}, which is what a
228
+ * caller who wants the current behaviour means; a caller who wants the piece
229
+ * back records the resolved number and passes it next time. A version this
230
+ * build does not produce is rejected — a project saved by a newer build cannot
231
+ * be reproduced by an older one, and quietly rendering it at another version
232
+ * would return a different piece under the same name.
233
+ *
234
+ * @param requested The pinned version, or undefined for the current one.
235
+ * @returns The version to generate under.
236
+ * @throws If the version is not an integer this build produces.
237
+ * @example
238
+ * ```ts
239
+ * import { ALGORITHM_VERSION, resolveAlgorithmVersion } from '@libraz/libcantus';
240
+ * resolveAlgorithmVersion(undefined); // ALGORITHM_VERSION
241
+ * resolveAlgorithmVersion(ALGORITHM_VERSION); // the pinned value, unchanged
242
+ * ```
243
+ * @category Utilities
244
+ */
245
+ declare function resolveAlgorithmVersion(requested?: number): number;
246
+
247
+ /**
248
+ * Deterministic seeded pseudo-random number generation shared across the
249
+ * generative modules (rhythm, drums, bass, groove, counter-melody). A single
250
+ * mulberry32 core exposes the small set of samplers those modules need; given a
251
+ * seed the stream is fully reproducible.
252
+ *
253
+ * Around that core sit the pieces that make a whole project reproducible: seeds
254
+ * derived hierarchically from one project number, draws addressed by position
255
+ * rather than by call order, and the algorithm version the output is pinned to.
256
+ */
257
+
258
+ /**
259
+ * A deterministic PRNG with the sampling helpers the generators need.
260
+ *
261
+ * @category Utilities
262
+ */
263
+ type Rng = {
264
+ /** Next float in [0, 1). */
265
+ next: () => number;
266
+ /** True with probability `p`. */
267
+ prob: (p: number) => boolean;
268
+ /** Integer in the inclusive range [lo, hi]. */
269
+ range: (lo: number, hi: number) => number;
270
+ /** Float in [lo, hi). */
271
+ float: (lo: number, hi: number) => number;
272
+ };
273
+ /**
274
+ * Create a seeded PRNG (mulberry32) exposing the shared samplers.
275
+ *
276
+ * @param seed The 32-bit seed; the same seed always yields the same stream.
277
+ * @returns The seeded generator.
278
+ * @example
279
+ * ```ts
280
+ * import { createRng } from '@libraz/libcantus';
281
+ * const rng = createRng(42);
282
+ * rng.next(); // deterministic float in [0, 1)
283
+ * rng.range(1, 6); // deterministic integer in [1, 6]
284
+ * ```
285
+ * @category Utilities
286
+ */
287
+ declare function createRng(seed: number): Rng;
288
+
275
289
  export { ALGORITHM_VERSION, BASS_4_STRING, BASS_5_STRING, DEFAULT_GENERATION_BUDGET, GUITAR_DROP_D, GUITAR_STANDARD, MIN_ALGORITHM_VERSION, MeterMap, NoteEvent, type NoteEventAssertOptions, type Rng, StringedProfile, TimeSignature, assertDegree, assertFiniteNumber, assertFiniteSemitones, assertGenerationBudget, assertInteger, assertMeterMap, assertMidiPitch, assertNoteEvent, assertNoteEvents, assertOneOf, assertPositiveInt, assertRange, assertTimeSignature, clampToMidi, createRng, dropSilentNotes, resolveAlgorithmVersion, soundingNotesOnly };