Releases: libraz/midi-sketch
Releases · libraz/midi-sketch
v0.2.1
Patch release focused on eliminating residual dissonance in generated output.
Fixes
- Motif: Trim sustained motif notes at dissonant chord changes; reject m2/M2 candidates against overlapping aux notes in repeated-pitch fixing
- Bass: Theoretical chord-tone fallback in tritone-checked note placement; tritone guard added to bass microvariation
- Vocal: Run-break placement now rejects close-second intervals; max same-pitch run reduced 5 → 4; phrase onset filter switched to score-first selection
Full Changelog: v0.2.0...v0.2.1
v0.2.0
First tagged release of midi-sketch — a C++17 MIDI auto-generation library for pop music sketches. WASM-ready, no external dependencies.
Highlights
Generation Engine
- 9-track generation (Vocal, Chord, Bass, Motif, Arpeggio, Aux, Drums, SE, Guitar) orchestrated by a Coordinator with three paradigms: Traditional, RhythmSync, and MelodyDriven
- 9 blueprints (Traditional, RhythmLock, StoryPop, Ballad, and 5 idol variants) with per-blueprint riff policies, tempo control, aux profiles, and percussion policies
- Skeleton-first vocal melody generation with phrase planning, mora-timed rhythm, syllabic subdivision, and hook phrase handling
- Guide chord phantom note system and SecondaryDominantPlanner for harmonic gravity
- Keyboard and fretted-instrument physical models (hand span, playability, fast technique constraints)
Pitch Safety & Quality
- Unified note creation API (
createNote) with collision detection, octave-fold range handling, and full provenance/transform tracking on every note - Dissonance gate: 0 clashes across the 2700-config check matrix
- Melodic discipline evaluator and music analyzer package (melodic / vocal / harmonic / rhythm / arrangement / structure scoring)
- Reference MIDI comparison tooling tuned against real J-pop/vocaloid songs
Determinism & Interop
- Bit-identical generation across macOS, Linux, and WASM
- JSON-based config interchange between C++, CLI, and JS/WASM bindings (TypeScript), with v4 metadata enabling exact regeneration
- SMF1/SMF2 output, MIDI Set Tempo ritardando support
Tooling
- CLI with analysis modes (
--analyze,--dump-collisions-at,--validate, external MIDI input) - ~3350 C++ unit tests, Python analyzer test suite, WASM/CLI output verification