- MidiFile.set_loop(): one call writes LOOP_START/END, RPR LOOP
START/END (Reaper) and LoopBegin/End markers - every engine finds
its dialect; reader now parses markers and the smoke test asserts
the round-trip
- tools/make_tune.py: declarative JSON spec -> fully arranged MIDI
with style presets (dos_adventure, n64_ambient, chiptune_racing);
the agent-friendly front door, no Python required
- tunes/specs/: demo tune 04 'Tea Break at the Terminal' (Am/112,
loop bars 4-20) generated entirely from JSON
- AGENTS.md: spec schema, score grammar, verification loop, looping
conventions for game BGM
- MIT LICENSE; history audited clean of credentials