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/