@pepperhorn/chordl-core 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/dist/chord-sheet/codec.d.ts +1 -1
  2. package/dist/chord-sheet/codec.js +1 -1
  3. package/dist/chord-sheet/codec.js.map +1 -1
  4. package/dist/chord-sheet/defaults.d.ts +1 -1
  5. package/dist/chord-sheet/index.d.ts +3 -3
  6. package/dist/chord-sheet/index.js +3 -3
  7. package/dist/chord-sheet/index.js.map +1 -1
  8. package/dist/engine/auto-fingering.js +1 -1
  9. package/dist/engine/auto-fingering.js.map +1 -1
  10. package/dist/engine/highlight-mapper.d.ts +1 -1
  11. package/dist/engine/highlight-mapper.js +2 -2
  12. package/dist/engine/highlight-mapper.js.map +1 -1
  13. package/dist/engine/keyboard-layout.d.ts +1 -1
  14. package/dist/engine/keyboard-layout.js +1 -1
  15. package/dist/engine/keyboard-layout.js.map +1 -1
  16. package/dist/engine/mei-builder.d.ts +27 -0
  17. package/dist/engine/mei-builder.js +138 -0
  18. package/dist/engine/mei-builder.js.map +1 -0
  19. package/dist/engine/staff-glyphs.js +5 -10
  20. package/dist/engine/staff-glyphs.js.map +1 -1
  21. package/dist/engine/staff-layout.js +2 -2
  22. package/dist/engine/staff-layout.js.map +1 -1
  23. package/dist/index.d.ts +48 -42
  24. package/dist/index.js +32 -28
  25. package/dist/index.js.map +1 -1
  26. package/dist/parser/natural-language.d.ts +1 -1
  27. package/dist/parser/natural-language.js +432 -36
  28. package/dist/parser/natural-language.js.map +1 -1
  29. package/dist/parser/progression-parser.d.ts +1 -1
  30. package/dist/parser/progression-parser.js +1 -1
  31. package/dist/parser/progression-parser.js.map +1 -1
  32. package/dist/pipeline.d.ts +1 -1
  33. package/dist/pipeline.js +46 -25
  34. package/dist/pipeline.js.map +1 -1
  35. package/dist/progression/index.d.ts +5 -5
  36. package/dist/progression/index.js +3 -3
  37. package/dist/progression/index.js.map +1 -1
  38. package/dist/progression/progression-resolver.js +5 -5
  39. package/dist/progression/progression-resolver.js.map +1 -1
  40. package/dist/progression/roman-numeral.js +1 -1
  41. package/dist/progression/roman-numeral.js.map +1 -1
  42. package/dist/resolver/auto-layout.d.ts +1 -1
  43. package/dist/resolver/auto-layout.js +2 -2
  44. package/dist/resolver/auto-layout.js.map +1 -1
  45. package/dist/resolver/chord-resolver.d.ts +11 -1
  46. package/dist/resolver/chord-resolver.js +28 -2
  47. package/dist/resolver/chord-resolver.js.map +1 -1
  48. package/dist/resolver/scale-resolver.d.ts +5 -2
  49. package/dist/resolver/scale-resolver.js +28 -8
  50. package/dist/resolver/scale-resolver.js.map +1 -1
  51. package/dist/themes/boomwhacker.d.ts +1 -1
  52. package/dist/themes/boomwhacker.js +1 -1
  53. package/dist/themes/boomwhacker.js.map +1 -1
  54. package/dist/themes/crf.d.ts +1 -1
  55. package/dist/themes/crf.js +1 -1
  56. package/dist/themes/crf.js.map +1 -1
  57. package/dist/themes/index.d.ts +1 -1
  58. package/dist/themes/index.js +3 -3
  59. package/dist/themes/index.js.map +1 -1
  60. package/dist/themes/simple.d.ts +1 -1
  61. package/dist/themes/simple.js +1 -1
  62. package/dist/themes/simple.js.map +1 -1
  63. package/dist/theory/constrained-variants.d.ts +46 -0
  64. package/dist/theory/constrained-variants.js +117 -0
  65. package/dist/theory/constrained-variants.js.map +1 -0
  66. package/dist/theory/degree-labels.d.ts +39 -0
  67. package/dist/theory/degree-labels.js +102 -1
  68. package/dist/theory/degree-labels.js.map +1 -1
  69. package/dist/theory/hand-constraints.d.ts +104 -0
  70. package/dist/theory/hand-constraints.js +214 -0
  71. package/dist/theory/hand-constraints.js.map +1 -0
  72. package/dist/types.d.ts +26 -1
  73. package/package.json +4 -4
package/dist/index.js CHANGED
@@ -1,37 +1,41 @@
1
- export { computeKeyboard, computeSvgDimensions } from "./engine/keyboard-layout";
2
- export { mapHighlights, normalizeNote } from "./engine/highlight-mapper";
3
- export { FLAT_TO_SHARP, SHARP_TO_FLAT, FLAT_KEYS, normalizeToSharps, spellForKey, spellWithPreference, PC_SEMITONES, MIDI_A3, assignAscendingOctaves, } from "./engine/note-spelling";
4
- export { autoFingering, assignFingering } from "./engine/auto-fingering";
5
- export { scaleAutoFingering } from "./engine/scale-fingering";
6
- export { computeStaffLayout } from "./engine/staff-layout";
7
- export { getDefaultGlyphs, setDefaultGlyphs, BRAVURA_GLYPHS, PETALUMA_GLYPHS } from "./engine/staff-glyphs";
8
- export { STAFF_LINE_SPACING, HALF_STAFF_SPACING, STAFF_WIDTH, CLEF_AREA_WIDTH, NOTE_COLUMN_X, NOTE_HEAD_RX, ACCIDENTAL_OFFSET, LEDGER_LINE_EXTEND, LEDGER_LINE_STROKE, STAFF_GAP, STAFF_TOP_MARGIN, STAFF_BOTTOM_MARGIN, STAFF_LINE_STROKE, BRACE_WIDTH, SECOND_OFFSET, ACCIDENTAL_COL_WIDTH, } from "./engine/staff-constants";
9
- export { WHITE_KEY_WIDTH, WHITE_KEY_WIDTH_EXACT, WHITE_KEY_HEIGHT_COMPACT, WHITE_KEY_HEIGHT_EXACT, WHITE_KEY_RY, BLACK_KEY_WIDTH, BLACK_KEY_WIDTH_EXACT, BLACK_KEY_HEIGHT_COMPACT, BLACK_KEY_HEIGHT_EXACT, BLACK_KEY_RY, BLACK_KEY_OFFSETS, BLACK_KEY_OFFSETS_EXACT, WHITE_NOTES_WITH_SHARPS, WHITE_NOTE_ORDER, DEFAULT_WHITE_FILL, DEFAULT_BLACK_FILL, DEFAULT_STROKE, DEFAULT_STROKE_WIDTH, } from "./engine/svg-constants";
10
- export { parseChordDescription } from "./parser/natural-language";
11
- export { isProgressionRequest, parseProgressionRequest } from "./parser/progression-parser";
12
- export { resolveChord } from "./resolver/chord-resolver";
13
- export { calculateLayout, whiteIdxHasSharp } from "./resolver/auto-layout";
14
- export { MAX_EXAMPLES, ENABLE_CHORD_LOGGING } from "./config";
1
+ export { computeKeyboard, computeSvgDimensions } from "./engine/keyboard-layout.js";
2
+ export { mapHighlights, normalizeNote } from "./engine/highlight-mapper.js";
3
+ export { FLAT_TO_SHARP, SHARP_TO_FLAT, FLAT_KEYS, normalizeToSharps, spellForKey, spellWithPreference, PC_SEMITONES, MIDI_A3, assignAscendingOctaves, } from "./engine/note-spelling.js";
4
+ export { autoFingering, assignFingering } from "./engine/auto-fingering.js";
5
+ export { scaleAutoFingering } from "./engine/scale-fingering.js";
6
+ export { computeStaffLayout } from "./engine/staff-layout.js";
7
+ export { buildMei } from "./engine/mei-builder.js";
8
+ export { getDefaultGlyphs, setDefaultGlyphs, BRAVURA_GLYPHS, PETALUMA_GLYPHS } from "./engine/staff-glyphs.js";
9
+ export { STAFF_LINE_SPACING, HALF_STAFF_SPACING, STAFF_WIDTH, CLEF_AREA_WIDTH, NOTE_COLUMN_X, NOTE_HEAD_RX, ACCIDENTAL_OFFSET, LEDGER_LINE_EXTEND, LEDGER_LINE_STROKE, STAFF_GAP, STAFF_TOP_MARGIN, STAFF_BOTTOM_MARGIN, STAFF_LINE_STROKE, BRACE_WIDTH, SECOND_OFFSET, ACCIDENTAL_COL_WIDTH, } from "./engine/staff-constants.js";
10
+ export { WHITE_KEY_WIDTH, WHITE_KEY_WIDTH_EXACT, WHITE_KEY_HEIGHT_COMPACT, WHITE_KEY_HEIGHT_EXACT, WHITE_KEY_RY, BLACK_KEY_WIDTH, BLACK_KEY_WIDTH_EXACT, BLACK_KEY_HEIGHT_COMPACT, BLACK_KEY_HEIGHT_EXACT, BLACK_KEY_RY, BLACK_KEY_OFFSETS, BLACK_KEY_OFFSETS_EXACT, WHITE_NOTES_WITH_SHARPS, WHITE_NOTE_ORDER, DEFAULT_WHITE_FILL, DEFAULT_BLACK_FILL, DEFAULT_STROKE, DEFAULT_STROKE_WIDTH, } from "./engine/svg-constants.js";
11
+ export { parseChordDescription } from "./parser/natural-language.js";
12
+ export { isProgressionRequest, parseProgressionRequest } from "./parser/progression-parser.js";
13
+ export { resolveChord } from "./resolver/chord-resolver.js";
14
+ export { calculateLayout, whiteIdxHasSharp } from "./resolver/auto-layout.js";
15
+ export { MAX_EXAMPLES, ENABLE_CHORD_LOGGING } from "./config.js";
15
16
  // Progression
16
- export { resolveProgression, tokenizeProgression } from "./progression/roman-numeral";
17
- export { FORM_TEMPLATES, findTemplate } from "./progression/form-templates";
18
- export { resolveProgressionRequest } from "./progression/progression-resolver";
17
+ export { resolveProgression, tokenizeProgression } from "./progression/roman-numeral.js";
18
+ export { FORM_TEMPLATES, findTemplate } from "./progression/form-templates.js";
19
+ export { resolveProgressionRequest } from "./progression/progression-resolver.js";
19
20
  // Audio
20
- export { generateMidiFile, downloadMidi } from "./audio/midi-export";
21
+ export { generateMidiFile, downloadMidi } from "./audio/midi-export.js";
21
22
  // Logging
22
- export { logChordRequest, LOG_SCHEMA_VERSION } from "./logging";
23
+ export { logChordRequest, LOG_SCHEMA_VERSION } from "./logging.js";
23
24
  // Theory
24
- export { classifyTones, parseInterval, minimalVoicing, dropOrder } from "./theory/chord-tones";
25
- export { intervalToDegreeLabel, degreesForIntervals } from "./theory/degree-labels";
25
+ export { classifyTones, parseInterval, minimalVoicing, dropOrder } from "./theory/chord-tones.js";
26
+ export { intervalToDegreeLabel, degreesForIntervals, degreeLabelsForNotes } from "./theory/degree-labels.js";
26
27
  // Scale resolver
27
- export { resolveScale } from "./resolver/scale-resolver";
28
+ export { resolveScale } from "./resolver/scale-resolver.js";
28
29
  // Themes
29
- export { getTheme, resolveTheme } from "./themes";
30
- export { CRF_PITCH_PALETTE, formatCmyk } from "./themes/crf";
30
+ export { getTheme, resolveTheme } from "./themes/index.js";
31
+ export { CRF_PITCH_PALETTE, formatCmyk } from "./themes/crf.js";
31
32
  // Pipeline
32
- export { processChordRequest } from "./pipeline";
33
+ export { processChordRequest } from "./pipeline.js";
33
34
  // ChordSheet
34
- export { resolveDefaults, chordRef, SYSTEM_DEFAULTS } from "./chord-sheet/defaults";
35
- export { CHORD_SHEET_SCHEMA_VERSION, validateVersion } from "./chord-sheet/schema";
36
- export { encodeChordSheet, decodeChordSheet } from "./chord-sheet/codec";
35
+ export { resolveDefaults, chordRef, SYSTEM_DEFAULTS } from "./chord-sheet/defaults.js";
36
+ export { CHORD_SHEET_SCHEMA_VERSION, validateVersion } from "./chord-sheet/schema.js";
37
+ export { encodeChordSheet, decodeChordSheet } from "./chord-sheet/codec.js";
38
+ // Hand Constraints
39
+ export { midiOf, placeAscending, spanOf, constrainVoicing } from "./theory/hand-constraints.js";
40
+ export { generateConstrainedVariants } from "./theory/constrained-variants.js";
37
41
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EACL,aAAa,EAAE,aAAa,EAAE,SAAS,EACvC,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EACnD,YAAY,EAAE,OAAO,EAAE,sBAAsB,GAC9C,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE5G,OAAO,EACL,kBAAkB,EAAE,kBAAkB,EAAE,WAAW,EAAE,eAAe,EACpE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAClE,kBAAkB,EAAE,SAAS,EAAE,gBAAgB,EAAE,mBAAmB,EACpE,iBAAiB,EAAE,WAAW,EAAE,aAAa,EAAE,oBAAoB,GACpE,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,eAAe,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,sBAAsB,EACxF,YAAY,EACZ,eAAe,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,sBAAsB,EACxF,YAAY,EACZ,iBAAiB,EAAE,uBAAuB,EAC1C,uBAAuB,EAAE,gBAAgB,EACzC,kBAAkB,EAAE,kBAAkB,EAAE,cAAc,EAAE,oBAAoB,GAC7E,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAE5F,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE3E,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAE9D,cAAc;AACd,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAG/E,QAAQ;AACR,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAErE,UAAU;AACV,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAGhE,SAAS;AACT,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAE/F,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAEpF,iBAAiB;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,SAAS;AACT,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG7D,WAAW;AACX,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGjD,aAAa;AACb,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ParsedChordRequest } from "../types";
1
+ import type { ParsedChordRequest } from "../types.js";
2
2
  /**
3
3
  * Extract modifiers first (format, inversion, bass, style, etc.) using
4
4
  * dedicated regexes, then strip ALL matched patterns plus filler words