diff --git a/NOTES.md b/NOTES.md index 5a8022d..a84160d 100644 --- a/NOTES.md +++ b/NOTES.md @@ -1190,3 +1190,47 @@ Brausen klingt: melden, dann probieren wir als naechste Kandidaten TITEL-Song2 Beide Fixes committet + gepusht. Naechster Schritt weiterhin offen: echtes Gameplay (Tony auf `W1L0` bewegen). + +## 23.07.2026 -- Hang-Bug gefixt + alle 19 TFMX-Songs fuer Stefan gerendert + +**1) Hang-Bug (Stefans Meldung "nur noch ein schwarzes Bild, verschiebe ich +das Fenster wird der Desktop reingerendert, das Programm haengt"): real, +gefunden, gefixt, verifiziert.** Ursache: `tfmx_audio.render_wav()` rief den +TFMX-Renderer als blockierenden `subprocess.run()` auf -- bei einem frischen, +ungecachten Song (v.a. TITEL, ~109s Musik) dauert das reproduzierbar ~14s, +waehrend derer die pygame-Eventloop NICHT lief. Das OS stuft ein Fenster +ohne Event-Pumping als "nicht reagierend" ein -- exakt Stefans beschriebenes +Bild (schwarz eingefroren, Desktop blitzt beim Verschieben durch). +Fix: `preload_all_audio()` rendert jetzt alle 3 benoetigten Songs (Rauser- +Sting, Factor5-Sound, Titelmusik) EINMALIG vor der eigentlichen Sequenz, per +Hintergrund-Thread + responsivem "Lade..."-Bildschirm +(`render_audio_with_loading()`). Danach greifen alle `run_once()`-Durchlaeufe +nur noch auf fertige WAV-Pfade zu, nie mehr Live-Rendering im Hauptloop. +Verifiziert per Xvfb-Testlauf (`SDL_AUDIODRIVER=dummy`, `--once`): laeuft +jetzt exit-code-0 sauber durch, kein Haengen mehr. +Committet+gepusht (`73b887e`). Nebenbei `__pycache__/` ins `.gitignore` +aufgenommen (`8509cbc`). + +**2) Alle 19 TFMX-Songs gerendert, als MP3-Zip an Stefan uebergeben (NICHT +ins Git-Repo, gleiche Begruendung wie bei raw/PCKELL.DAT -- ist Original- +Spielmaterial/Musik, nur als Download fuer den Privatgebrauch, siehe +`tfmx_audio.py`-Docstring und `.gitignore`):** + - `TITEL.TFX`: song0 (=`TITEL.mp3`, 109s, aktuell die Titelmusik), + song1 (109s, bisher ungenutzt), song2 (~8s, bisher ungenutzt) + - `TITEL2.TFX`: song0 (=Rauser-Sting, 2.04s), song1 (=aktuell als + Factor5-Sound eingebaut, 2.40s -- NICHT durch Reinhoeren verifiziert, + nur aus der Songlaenge geschlossen, siehe Vorbehalt vom 22.07.) + - `ONGAME2.TFX`: 14 Songs (song0-13), vermutlich echte Level-/Gameplay- + Musik, noch keinem Screen/Level zugeordnet + 19 WAVs -> MP3 (ffmpeg, libmp3lame, konvertiert um die Downloadgroesse von + ~300MB WAV auf ~59MB MP3 zu druecken) -> Zip, an Stefan uebergeben. + Dateinamen im Zip = `[_song].mp3` (song0/Default ohne Suffix). + **Stefans Aufgabe:** reinhoeren und mir sagen, welche Datei WIRKLICH nach + Factor5-Brausen klingt -- falls es NICHT `TITEL2_song1.mp3` ist, dann in + `intro_sequence.py`/`run_once()` den `audio_paths.get(('TITEL2', 1))`-Call + auf die richtige Datei/song_index umstellen (Kandidaten laut Laenge: + `TITEL_song2.mp3` ~8s, oder ein kurzer ONGAME2-Song). + +Naechster Schritt weiterhin offen: echtes Gameplay (Tony auf `W1L0` bewegen). +Sobald Stefan den richtigen Factor5-Song bestaetigt hat, kurzer Fix, dann +weiter zu Gameplay.