Skip to content

Releases: libraz/midi-sketch-bach

v0.3.1

12 Jun 19:31

Choose a tag to compare

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

07 Jun 17:36

Choose a tag to compare

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

06 Jun 17:00

Choose a tag to compare

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
  • CLIbach_cli now rejects unknown arguments instead of silently proceeding

Full diff: v0.2.0...v0.2.1

v0.2.0

06 Jun 16:36

Choose a tag to compare

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/