From 60c485268bcc2683e4f79e4ecd7bc4300503fc41 Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Sat, 17 Oct 2026 08:32:11 +0000 Subject: [PATCH] Round-off: README render routes, tune scripts create midi/ if missing Fresh-clone test passes end-to-end: clone -> build_all.sh -> all four tunes generate, verify, render and pass audio checks with no prior state. --- README.md | 6 ++++-- tunes/01_service_station_2am.py | 1 + tunes/02_kestrel_over_the_fens.py | 1 + tunes/03_late_equaliser.py | 1 + 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7c1824d..2af626a 100644 --- a/README.md +++ b/README.md @@ -31,8 +31,10 @@ python3 tests/smoke_test.py # library self-test python3 tools/make_tune.py tunes/specs/04_tea_break_at_the_terminal.json --render ``` -Rendering needs `timidity` + a GM soundfont (`FluidR3_GM.sf2`). Note: -Debian's timidity build has no `-O2` mode — use `-Ow -s 44`. +Rendering needs `timidity` + a GM soundfont (`FluidR3_GM.sf2`, MIT — +`apt install fluid-soundfont-gm`), or skip soundfonts entirely and render +through OPL3 emulation — see [OPL3 rendering](#opl3-rendering-the-authentic-one). +Note: Debian's timidity build has no `-O2` mode — use `-Ow -s 44`. **AI agents**: see [AGENTS.md](AGENTS.md) — the JSON spec format is the agent-friendly front door; no Python required to make a tune. diff --git a/tunes/01_service_station_2am.py b/tunes/01_service_station_2am.py index 51858e8..5bea961 100644 --- a/tunes/01_service_station_2am.py +++ b/tunes/01_service_station_2am.py @@ -137,6 +137,7 @@ def build(): if __name__ == "__main__": + os.makedirs(os.path.dirname(OUT), exist_ok=True) mf = build() mf.write(OUT) d = verify(OUT, min_sec=40, max_sec=120) diff --git a/tunes/02_kestrel_over_the_fens.py b/tunes/02_kestrel_over_the_fens.py index 8287c19..57cada8 100644 --- a/tunes/02_kestrel_over_the_fens.py +++ b/tunes/02_kestrel_over_the_fens.py @@ -109,6 +109,7 @@ def build(): if __name__ == "__main__": + os.makedirs(os.path.dirname(OUT), exist_ok=True) mf = build() mf.write(OUT) d = verify(OUT, min_sec=50, max_sec=150) diff --git a/tunes/03_late_equaliser.py b/tunes/03_late_equaliser.py index e226fcf..b450549 100644 --- a/tunes/03_late_equaliser.py +++ b/tunes/03_late_equaliser.py @@ -133,6 +133,7 @@ def build(): if __name__ == "__main__": + os.makedirs(os.path.dirname(OUT), exist_ok=True) mf = build() mf.write(OUT) dd = verify(OUT, min_sec=30, max_sec=120)