# Audio-Schnitt-Tool — Konzept Stand: 2026-06-01 · Atlas · Status: zum Review · KEIN CODE BIS THOMAS-OK ## Zweck Tool-Seite (eigene URL, nicht Spiel) zum **Schneiden, Anordnen und Speichern** der Audio-Timeline pro Mission. Wie Cubase/DaVinci, aber speziell für unsere Heli-Missionen. Was im Tool definiert ist, **spielt das Spiel deterministisch ab** (Tool = Wahrheit, Engine folgt). ## Grundprinzipien 1. **Eine Timeline pro Mission** — horizontale Zeitachse, links→rechts, scrollbar, zoombar 2. **Pro Audio = ein Balken** auf der Timeline. Balken-Länge = echte MP3-Dauer (gemessen, gecacht). Verschieben per Drag&Drop. 3. **Niemals zwei Audios gleichzeitig** — Tool verhindert visuell und logisch Überlappungen 4. **Strecken sind variabel** — die Karten-Animations-Dauer im Spiel passt sich der Audio-Inhalts-Länge an, nicht umgekehrt. Lange Inhalte = langsamerer Flug zwischen den Wegpunkten. 5. **Phase-Gating im Spiel:** der nächste Wegpunkt wird erst sichtbar, wenn das aktuelle Audio fertig ist. Klick vorab erlaubt, Audio läuft trotzdem. ## Tool-UI ``` ┌──────────────────────────────────────────────────────────────────────┐ │ ← M1 Damüls M2 ▶ [M1] [M2] [M3] ... [M25] │ ← Mission-Switcher ├──────────────────────────────────────────────────────────────────────┤ │ PLAN ▏ FLUG ▏ Abflug | Landung | Ende │ ← Phasen-Track │ ───────────────────────────────────────────────────────────────── │ │ 0:00 0:30 1:00 1:30 2:00 2:30│ ← Zeitachse (sec) │ ╿ │ │ ▌▌r_mission_intro_m1 (12s) ▌▌r_wp_geo_thueringen (7s) │ ← Audio-Track │ ▌▌r_wp_geo_zwischenwasser (8s) │ │ ▌▌r_wp_geo_damuels │ │ ───────────────────────────────────────────────────────────────── │ │ 🚩Plan-Start 🟢WP1 thueringen 🟢WP2 zwischenwasser 🟢WP3 damuels │ ← Event-Marker │ │ │ ┌─ Audio-Pool ────────────────────────────────────────────────┐ │ ← Audio-Pool unten, │ │ 🔊 r_mission_intro_m1 12s Sarah/Tower │ │ Drag→Timeline │ │ 🔊 r_wp_geo_thueringen 7s Briefing │ │ │ │ 🔊 r_wp_geo_zwischenwasser ... [Filter: alle / verwendet] │ │ │ └────────────────────────────────────────────────────────────┘ │ │ │ │ [💾 Speichern] [▶ Vorschau abspielen] [↩ Reset auf Default] │ ← Aktionen └──────────────────────────────────────────────────────────────────────┘ ``` ### UI-Details - **Mission-Switcher** oben: vor/zurück (Pfeile) + alle 25 Missionen als Tabs/Dropdown - **Phasen-Track** zeigt Phasen-Sektionen (Plan, Flug, Abflug, Landung, Ende) in unterschiedlichen Farben/Schraffuren - **Zeitachse** in Sekunden, zoombar via Mausrad/Buttons (z. B. 1 px = 0,1 s, 0,2 s, 0,5 s, 1 s …) - **Audio-Track** zeigt Audio-Balken — Länge proportional zur Dauer. Klick auf Balken → markiert + zeigt Audio-ID + Text + Aktionen (löschen, verschieben, „Inhalt prüfen"). Drag verschiebt. - **Event-Marker** als vertikale Linien mit kleinem Label (Wegpunkt erreicht, Phase-Wechsel, etc.). Werden teils automatisch gesetzt (z. B. pro Wegpunkt aus `mission.waypoints`), teils manuell. - **Audio-Pool unten** als Liste/Tabelle mit Such-/Filterfunktion. Drag auf Timeline → fügt Balken hinzu. Audios die schon platziert sind, sind im Pool ausgegraut. - **Speichern** → POST an PHP-Endpoint → schreibt `audio-timeline-m1.json` ins Verzeichnis - **Vorschau** → spielt die Timeline im Browser ab (sequenziell, mit Events als Subtitel-Anzeige) - **Reset** → lädt Default-Timeline aus dem Regelwerk (für leere Missionen) ### Sequenz-Garantie (Tool-Verhalten) Wenn der User einen Balken so verschiebt, dass er einen anderen überlappt: - **Tool springt automatisch hinter den vorherigen Balken** (+ konfigurierbarer Gap, z. B. 0,5 s) - Visuelles Feedback (rote Outline beim Drag wenn Überlappung droht, snappt dann ein) ## Datenmodell ### Pro Mission: `App/sims/heli/data/audio-timeline-.json` ```json { "_doc": "Audio-Timeline fuer M1 Damüls. Wird von /heli-audio-editor gespeichert + vom Spiel deterministisch abgespielt.", "missionId": "m1", "version": 1, "lastSaved": "2026-06-01T10:30:00", "gap": 0.5, "phases": [ { "id": "plan", "label": "Routenplanung", "color": "#4a7c8a", "events": [ { "id": "ev-plan-start", "t": 0, "label": "Plan-Start" }, { "id": "ev-wp1", "t": 14, "label": "Wegpunkt sichtbar: thueringen", "waypoint": "thueringen" }, { "id": "ev-wp2", "t": 22, "label": "Wegpunkt sichtbar: zwischenwasser", "waypoint": "zwischenwasser" }, ... { "id": "ev-plan-end", "t": 65, "label": "Plan fertig" } ], "audios": [ { "id": "a1", "audioId": "r_mission_intro_m1", "t": 0, "dur": 12.3 }, { "id": "a2", "audioId": "r_wp_geo_thueringen", "t": 14, "dur": 7.1 }, { "id": "a3", "audioId": "r_nav_plan_correct", "t": 22, "dur": 3.2 }, { "id": "a4", "audioId": "r_wp_geo_zwischenwasser", "t": 26, "dur": 8.5 }, ... { "id": "aN", "audioId": "r_nav_plan_done", "t": 60, "dur": 5.0 } ] }, { "id": "flug", "label": "Kartenflug", "color": "#5a8a5e", "events": [ ... ], "audios": [ ... ] } ], "_notes": "Editor erlaubt nur Plan + Flug. Abflug + Landung werden vom alten Engine-Pfad gespielt (separate Phase-Markierung im Tool als grauer Block, nicht editierbar)." } ``` ### Audio-Dauer-Cache: `App/sims/heli/data/audio-durations.json` ```json { "_doc": "Audio-Dauern in Sekunden. Tool laedt MP3s clientseitig und liest