Skip to content

v0.2.0

Choose a tag to compare

@libraz libraz released this 06 Jun 16:36
· 51 commits to main since this release

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/
  • CLIbach_cli with JSON export (generated.v1 / provenance.v1 schemas)
  • 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/