@libraz/libcantus 1.0.0 → 1.0.1

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.
@@ -25,7 +25,7 @@ var _chunkMXO72PLYcjs = require('../chunk-MXO72PLY.cjs');
25
25
 
26
26
 
27
27
 
28
- var _chunk3JXCW6DXcjs = require('../chunk-3JXCW6DX.cjs');
28
+ var _chunkB6XNKWZVcjs = require('../chunk-B6XNKWZV.cjs');
29
29
 
30
30
 
31
31
 
@@ -105,5 +105,5 @@ require('../chunk-Q2WGKJNN.cjs');
105
105
 
106
106
 
107
107
 
108
- exports.MODAL_SCALE_NAMES = _chunkOE6WK2Y2cjs.MODAL_SCALE_NAMES; exports.NoteSafety = _chunkUADYAYATcjs.NoteSafety; exports.analyzeArrangement = _chunk3JXCW6DXcjs.analyzeArrangement; exports.analyzeChord = _chunkOE6WK2Y2cjs.analyzeChord; exports.analyzeVoice = _chunk3JXCW6DXcjs.analyzeVoice; exports.augmentedSixthChord = _chunkOE6WK2Y2cjs.augmentedSixthChord; exports.augmentedSixthFromPitchClasses = _chunkOE6WK2Y2cjs.augmentedSixthFromPitchClasses; exports.augmentedSixthKind = _chunkOE6WK2Y2cjs.augmentedSixthKind; exports.borrowedSource = _chunkOE6WK2Y2cjs.borrowedSource; exports.chordTimelineFromChords = _chunk3JXCW6DXcjs.chordTimelineFromChords; exports.chordTimelineFromNotes = _chunk3JXCW6DXcjs.chordTimelineFromNotes; exports.chordToRoman = _chunkOE6WK2Y2cjs.chordToRoman; exports.compareMelodies = _chunk3JXCW6DXcjs.compareMelodies; exports.createArrangementSession = _chunk3JXCW6DXcjs.createArrangementSession; exports.detectCadence = _chunkOE6WK2Y2cjs.detectCadence; exports.detectCadences = _chunk3JXCW6DXcjs.detectCadences; exports.detectChord = _chunkOE6WK2Y2cjs.detectChord; exports.detectChordBest = _chunkOE6WK2Y2cjs.detectChordBest; exports.detectKey = _chunkOE6WK2Y2cjs.detectKey; exports.detectKeyBest = _chunkOE6WK2Y2cjs.detectKeyBest; exports.detectKeyFromNotes = _chunkOE6WK2Y2cjs.detectKeyFromNotes; exports.detectModulations = _chunk3JXCW6DXcjs.detectModulations; exports.explainRoman = _chunkOE6WK2Y2cjs.explainRoman; exports.extractMotifs = _chunk3JXCW6DXcjs.extractMotifs; exports.functionOf = _chunkOE6WK2Y2cjs.functionOf; exports.hypermeter = _chunk3JXCW6DXcjs.hypermeter; exports.isBorrowedChord = _chunkOE6WK2Y2cjs.isBorrowedChord; exports.isDiatonic = _chunkOE6WK2Y2cjs.isDiatonic; exports.isMinorKey = _chunkOE6WK2Y2cjs.isMinorKey; exports.keyTimelineFromNotes = _chunk3JXCW6DXcjs.keyTimelineFromNotes; exports.melodicContour = _chunk3JXCW6DXcjs.melodicContour; exports.melodicSimilarity = _chunk3JXCW6DXcjs.melodicSimilarity; exports.motifFromNotes = _chunk3JXCW6DXcjs.motifFromNotes; exports.phrasesFromTimeline = _chunk3JXCW6DXcjs.phrasesFromTimeline; exports.pivotChords = _chunkOE6WK2Y2cjs.pivotChords; exports.prevailingKeyOf = _chunk3JXCW6DXcjs.prevailingKeyOf; exports.reduceProgression = _chunk3JXCW6DXcjs.reduceProgression; exports.relateMotifs = _chunk3JXCW6DXcjs.relateMotifs; exports.romanToChord = _chunkOE6WK2Y2cjs.romanToChord; exports.secondaryDominant = _chunkOE6WK2Y2cjs.secondaryDominant; exports.secondaryDominantOf = _chunkOE6WK2Y2cjs.secondaryDominantOf; exports.sectionsFromNotes = _chunk3JXCW6DXcjs.sectionsFromNotes; exports.spellAugmentedSixth = _chunkOE6WK2Y2cjs.spellAugmentedSixth; exports.spellLine = _chunkMXO72PLYcjs.spellLine; exports.structuralCadences = _chunk3JXCW6DXcjs.structuralCadences; exports.tensionCurve = _chunk3JXCW6DXcjs.tensionCurve; exports.tensionCurveFrom = _chunk3JXCW6DXcjs.tensionCurveFrom; exports.toVoiceNotes = _chunk3JXCW6DXcjs.toVoiceNotes;
108
+ exports.MODAL_SCALE_NAMES = _chunkOE6WK2Y2cjs.MODAL_SCALE_NAMES; exports.NoteSafety = _chunkUADYAYATcjs.NoteSafety; exports.analyzeArrangement = _chunkB6XNKWZVcjs.analyzeArrangement; exports.analyzeChord = _chunkOE6WK2Y2cjs.analyzeChord; exports.analyzeVoice = _chunkB6XNKWZVcjs.analyzeVoice; exports.augmentedSixthChord = _chunkOE6WK2Y2cjs.augmentedSixthChord; exports.augmentedSixthFromPitchClasses = _chunkOE6WK2Y2cjs.augmentedSixthFromPitchClasses; exports.augmentedSixthKind = _chunkOE6WK2Y2cjs.augmentedSixthKind; exports.borrowedSource = _chunkOE6WK2Y2cjs.borrowedSource; exports.chordTimelineFromChords = _chunkB6XNKWZVcjs.chordTimelineFromChords; exports.chordTimelineFromNotes = _chunkB6XNKWZVcjs.chordTimelineFromNotes; exports.chordToRoman = _chunkOE6WK2Y2cjs.chordToRoman; exports.compareMelodies = _chunkB6XNKWZVcjs.compareMelodies; exports.createArrangementSession = _chunkB6XNKWZVcjs.createArrangementSession; exports.detectCadence = _chunkOE6WK2Y2cjs.detectCadence; exports.detectCadences = _chunkB6XNKWZVcjs.detectCadences; exports.detectChord = _chunkOE6WK2Y2cjs.detectChord; exports.detectChordBest = _chunkOE6WK2Y2cjs.detectChordBest; exports.detectKey = _chunkOE6WK2Y2cjs.detectKey; exports.detectKeyBest = _chunkOE6WK2Y2cjs.detectKeyBest; exports.detectKeyFromNotes = _chunkOE6WK2Y2cjs.detectKeyFromNotes; exports.detectModulations = _chunkB6XNKWZVcjs.detectModulations; exports.explainRoman = _chunkOE6WK2Y2cjs.explainRoman; exports.extractMotifs = _chunkB6XNKWZVcjs.extractMotifs; exports.functionOf = _chunkOE6WK2Y2cjs.functionOf; exports.hypermeter = _chunkB6XNKWZVcjs.hypermeter; exports.isBorrowedChord = _chunkOE6WK2Y2cjs.isBorrowedChord; exports.isDiatonic = _chunkOE6WK2Y2cjs.isDiatonic; exports.isMinorKey = _chunkOE6WK2Y2cjs.isMinorKey; exports.keyTimelineFromNotes = _chunkB6XNKWZVcjs.keyTimelineFromNotes; exports.melodicContour = _chunkB6XNKWZVcjs.melodicContour; exports.melodicSimilarity = _chunkB6XNKWZVcjs.melodicSimilarity; exports.motifFromNotes = _chunkB6XNKWZVcjs.motifFromNotes; exports.phrasesFromTimeline = _chunkB6XNKWZVcjs.phrasesFromTimeline; exports.pivotChords = _chunkOE6WK2Y2cjs.pivotChords; exports.prevailingKeyOf = _chunkB6XNKWZVcjs.prevailingKeyOf; exports.reduceProgression = _chunkB6XNKWZVcjs.reduceProgression; exports.relateMotifs = _chunkB6XNKWZVcjs.relateMotifs; exports.romanToChord = _chunkOE6WK2Y2cjs.romanToChord; exports.secondaryDominant = _chunkOE6WK2Y2cjs.secondaryDominant; exports.secondaryDominantOf = _chunkOE6WK2Y2cjs.secondaryDominantOf; exports.sectionsFromNotes = _chunkB6XNKWZVcjs.sectionsFromNotes; exports.spellAugmentedSixth = _chunkOE6WK2Y2cjs.spellAugmentedSixth; exports.spellLine = _chunkMXO72PLYcjs.spellLine; exports.structuralCadences = _chunkB6XNKWZVcjs.structuralCadences; exports.tensionCurve = _chunkB6XNKWZVcjs.tensionCurve; exports.tensionCurveFrom = _chunkB6XNKWZVcjs.tensionCurveFrom; exports.toVoiceNotes = _chunkB6XNKWZVcjs.toVoiceNotes;
109
109
  //# sourceMappingURL=index.cjs.map
@@ -25,7 +25,7 @@ import {
25
25
  tensionCurve,
26
26
  tensionCurveFrom,
27
27
  toVoiceNotes
28
- } from "../chunk-GOZG57ER.js";
28
+ } from "../chunk-2LCPM3EG.js";
29
29
  import {
30
30
  MODAL_SCALE_NAMES,
31
31
  analyzeChord,
@@ -622,18 +622,22 @@ var MAX_DETECTION_PCS = 6;
622
622
  var INEXACT_CONFIDENCE_FACTOR = 0.85;
623
623
  var DIATONIC_BONUS = 0.5;
624
624
  var EXACT_BONUS = 0.5;
625
- var MISMATCH_PENALTY = 0.3;
625
+ var EXTRA_TONE_PENALTY = 0.6;
626
+ var OMITTED_TONE_PENALTY = 0.15;
627
+ var BASS_ROOT_STANDING = 0.95;
626
628
  function scoreMatch(match, weights, maxWeight, key) {
627
629
  const rootWeight = maxWeight > 0 ? (weights[match.rootPc] ?? 0) / maxWeight : 0;
630
+ const rootStanding = match.inversion === 0 ? Math.max(rootWeight, BASS_ROOT_STANDING) : rootWeight;
628
631
  const tones = chordPitchClasses(makeChord(match.rootPc, match.quality));
629
- let score = rootWeight;
632
+ let score = rootStanding;
630
633
  if (tones.every((pc) => isScaleTone(pc, key))) {
631
634
  score += DIATONIC_BONUS;
632
635
  }
633
636
  if (match.exact) {
634
637
  score += EXACT_BONUS;
635
638
  }
636
- score -= MISMATCH_PENALTY * (match.extraPcs.length + match.missingPcs.length);
639
+ score -= EXTRA_TONE_PENALTY * match.extraPcs.length;
640
+ score -= OMITTED_TONE_PENALTY * match.missingPcs.length;
637
641
  return score;
638
642
  }
639
643
  function chordConfidence(chord, weights, totalWeight, exact) {
@@ -3217,4 +3221,4 @@ export {
3217
3221
  sectionsFromNotes,
3218
3222
  reduceProgression
3219
3223
  };
3220
- //# sourceMappingURL=chunk-GOZG57ER.js.map
3224
+ //# sourceMappingURL=chunk-2LCPM3EG.js.map