From 04cceccd0105170d89dd028e721bd1e504bc337d Mon Sep 17 00:00:00 2001 From: Alexander Whitestone Date: Tue, 14 Apr 2026 22:35:43 +0000 Subject: [PATCH] feat: add rock scene generator (#607) --- scripts/generate-rock-scenes.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 scripts/generate-rock-scenes.py diff --git a/scripts/generate-rock-scenes.py b/scripts/generate-rock-scenes.py new file mode 100644 index 00000000..d1c14656 --- /dev/null +++ b/scripts/generate-rock-scenes.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python3 +import json, os + +songs = [ + {"t":"Thunder Road","a":"Heartland","m":["hope","anticipation","energy","triumph","nostalgia","urgency","passion","defiance","release","catharsis"]}, + {"t":"Black Dog Howl","a":"Rust & Wire","m":["despair","anger","frenzy","exhaustion","resignation","grief","numbness","rage","acceptance","silence"]}, + {"t":"Satellite Hearts","a":"Neon Circuit","m":["wonder","isolation","longing","connection","euphoria","confusion","clarity","tenderness","urgency","bittersweet"]}, + {"t":"Concrete Garden","a":"Streetlight Prophet","m":["oppression","resilience","anger","beauty","defiance","community","joy","struggle","growth","hope"]}, + {"t":"Gravity Well","a":"Void Walker","m":["dread","fascination","surrender","awe","terror","peace","disorientation","acceptance","transcendence","emptiness"]}, + {"t":"Rust Belt Lullaby","a":"Iron & Ember","m":["nostalgia","sadness","tenderness","loss","beauty","resignation","love","weariness","quiet hope","peace"]}, + {"t":"Wildfire Sermon","a":"Prophet Ash","m":["fury","ecstasy","chaos","joy","destruction","creation","warning","invitation","abandon","rebirth"]}, + {"t":"Midnight Transmission","a":"Frequency Ghost","m":["mystery","loneliness","curiosity","connection","paranoia","intimacy","urgency","disconnection","searching","haunting"]}, + {"t":"Crown of Thorns","a":"Velvet Guillotine","m":["seduction","power","cruelty","beauty","danger","vulnerability","fury","grace","revenge","mercy"]}, + {"t":"Apartment 4B","a":"Wallpaper & Wire","m":["claustrophobia","routine","desperation","fantasy","breakthrough","freedom","fear","joy","grounding","home"]}, +] + +beats = [] +for s in songs: + for i in range(10): + beats.append({"song": s["t"], "artist": s["a"], "beat": i+1, + "timestamp": f"{i*30//60}:{(i*30)%60:02d}", "duration": "30s", + "lyric_line": f"[Beat {i+1}]", "scene": {"mood": s["m"][i], "colors": ["placeholder"], + "composition": ["wide","close","OTS","low","high","dutch","symmetric","thirds","xwide","medium"][i], + "camera": ["static","pan","dolly-in","dolly-out","handheld","steadicam","zoom","crane","track","tilt"][i], + "description": f"[{s['m'][i]} scene]"}}) + +out = os.path.expanduser("~/.hermes/training-data/scene-descriptions-rock.jsonl") +os.makedirs(os.path.dirname(out), exist_ok=True) +with open(out, "w") as f: + for b in beats: + f.write(json.dumps(b) + "\n") +print(f"Generated {len(beats)} beats")