Releases: libraz/midi-sketch-bach
Releases · libraz/midi-sketch-bach
v0.3.1
Patch release focused on fugue macro-structure, figuration variety, and parallel-motion cleanup.
Added
- Fugue tonal plan — fugue harmony is now driven by a piece-level plan: the exposition affirms the home key with the answer on the dominant, middle entries open in their related keys, episodes form diatonic descending-fifths chains, the pedal cycle prolongs the dominant, and the coda stays pinned V–I; episodes restate a full two-bar Fortspinnung model one diatonic step down per stride, and middle entries carry a recurring countersubject in the highest free voice
- Fugue subject catalog — qualified fugue-subject catalog with per-character feature-class selection, backed by corpus stats extraction, pool synthesis, and a qualification gate in the Python tooling
- Figuration variety — sixth-leap cascade and leap-and-fill figures, scale-run and bariolage figures in the cello prelude, scalar-wave rotation in the toccata, and wider per-bar figure rotation across chorale prelude, trio sonata, fantasia, and fugue tails
- Expression — phrase dynamics, graded ritardando, and climax ornaments
- Quality gates — per-form KL-model gate floors and removal of repeated-note stalls
Fixed
- Parallel motion — audible-grain parallel checks across form builders, pedal and embellishment parallel guards, candidate-search visibility aligned with validator checks, and sixteenth-grain re-checks for passacaglia anchors
- Figuration stability — figuration wobble breaker with a pedal-cycle counterline, Goldberg figuration kept in compass, passacaglia ground seam sustained, and the leading-tone ground bar mapped to dominant first inversion
Full diff: v0.3.0...v0.3.1
v0.3.0
Minor release expanding the ornament vocabulary and per-form figuration variety.
Added
- Ornament vocabulary — appoggiaturas, turns, and slides join trills and mordents, with a character-specific grammar selecting which ornaments each character may use; ornaments are distributed across phrase boundaries instead of clustering
- Cadential landings — cadence points are written out explicitly across all forms, and trills are shaped with an upper-note start and held resolution
- Figuration palette — shared palette of arpeggio, figura corta, gesture, and chord-block figures; chorale, cello prelude, trio sonata, and ground variations rotate their figuration per cycle
- Toccata / fantasia materials — archetype-specific materials, including Dramaticus opening gestures and a pedal solo with mordents
- Ground bass — seed-selectable ground bass variants, rhythmic intensification in late passacaglia cycles, and an embellished cantus firmus with aria uplift
- Tooling — the ornament report now classifies ornament kinds
Fixed
- Beat consonance — every beat onset is anchored to chord tones over the ground, eliminating downbeat dissonance in passacaglia and chaconne
Full diff: v0.2.1...v0.3.0
v0.2.1
Patch release focused on fugue listening quality and CLI robustness.
Fixed
- Fugue consonance — figuration anchors now avoid clashing with mid-beat attacks from faster lines (window-aware
consonantChordTone), parallel-dissonance chains are rejected, and lockstep parallel thirds are broken up - Episodes — sequence seeds are rebuilt diatonically (per-step scale-degree walks) instead of literal transposition
- Stretto / coda — the climax stretto follower is transposed into the leader's related key, and the coda gets a full three-voice consonant texture
- CLI —
bach_clinow rejects unknown arguments instead of silently proceeding
Full diff: v0.2.0...v0.2.1
v0.2.0
First tagged release of midi-sketch-bach — a rule-based MIDI generator dedicated to the instrumental works of J.S. Bach (C++17 core + WebAssembly bindings).
Highlights
- Composer engine — single generation pipeline (
ComposeRequest → form fixture → composer → ornament/expression passes → MIDI) with per-form builders, candidate search, and a counterpoint validator (parallel motion, dissonance, suspension rules) - 10 forms — fugue, prelude & fugue, trio sonata, chorale prelude, toccata & fugue, passacaglia, fantasia & fugue, cello prelude, chaconne, goldberg variations
- Texture & parallel-motion gates — corpus-derived enforcement across all forms (subject rhythms, texture metrics, 128-bit rule mask)
- WASM / JS bindings —
@libraz/midi-sketch-bach, browser demo at https://bach.midi-sketch.libraz.net/ - CLI —
bach_cliwith JSON export (generated.v1/provenance.v1schemas) - CI & coverage — GitHub Actions (C++ / Python / WASM+JS / clang-format) with Codecov reporting
- License — AGPL-3.0-only (commercial licensing available)
Status
Alpha — features and APIs may change. Try it in the browser: https://bach.midi-sketch.libraz.net/