Rauser-Fade-Bug (Alpha-Cutout), Musik-Laenge-Bug (real_song_end-Erkennung) und Factor5-Melodie gefixt

This commit is contained in:
ARIA
2026-07-22 21:31:33 +00:00
parent 6d196020db
commit 094aca0e1e
4 changed files with 282 additions and 38 deletions
+21 -2
View File
@@ -35,9 +35,28 @@ def _ensure_binary():
subprocess.run(['bash', os.path.join(_PLAYER_DIR, 'build.sh')], check=True)
def render_wav(container, name, seconds=20, force=False):
def render_wav(container, name, seconds=180, force=False):
"""container: kellogg_formats.DATContainer; name: z.B. 'TITEL' (ohne Extension).
Gibt den Pfad zur gerenderten (gecachten) WAV-Datei zurueck."""
Gibt den Pfad zur gerenderten (gecachten) WAV-Datei zurueck.
WICHTIG (Fix 22.07.2026 abends): `seconds` ist nur noch eine Sicherheits-
OBERGRENZE, keine Ziel-Laenge! render_tfmx erkennt das natuerliche Song-
Ende/den Loop-Punkt selbst (tfmx.h real_song_end) und schneidet dort ab --
z.B. ist TITEL tatsaechlich ~109s lang, ONGAME2 ~123s, TITEL2 (der Rauser-
Sting) nur ~2s. Vorher wurde hart bei `seconds` abgeschnitten, was TITEL
(mit frueher genutzten 60s) VOR dem echten Songende kappte -- das war der
Bug hinter "Musik ist zu kurz, da fehlt der Rest". Der Default hier (180s)
ist bewusst grosszuegig ueber die laengsten bekannten Stuecke hinaus
gewaehlt, damit nichts abgeschnitten wird; im Normalfall stoppt render_tfmx
laengst vorher von selbst.
ACHTUNG Cache: der Dateiname ist rein `<name>.wav` OHNE den seconds-Wert.
Wird `seconds` also mal kleiner gewaehlt als die echte Songlaenge (z.B.
fuer einen bewusst kurzen Teaser), MUSS `force=True` gesetzt werden, sonst
liefert diese Funktion den ggf. laenger/kuerzer gerenderten alten Cache-
Treffer zurueck, egal was `seconds` diesmal sagt -- genau das hat den
urspruenglichen Bug mit ausgeloest (ein alter 8s-Debug-Render von TITEL
blieb liegen und wurde stillschweigend weiterverwendet)."""
os.makedirs(_CACHE_DIR, exist_ok=True)
out_path = os.path.join(_CACHE_DIR, f'{name}.wav')
if os.path.exists(out_path) and not force: