# Fahrplan Jeder Meilenstein endet mit einem Abnahmetest. Erst wenn er bestanden ist, beginnt der nächste. Termine sind offen. | | Meilenstein | Ohne neue Hardware testbar? | |---|---|---| | M0 | Grundgerüst | ja | | M1 | Bild | ja (NDI Tools / OBS als Quelle) | | M2 | Ton-Matrix | ja (MOTU M2 vorhanden) | | M3 | Szenen und Fernsteuerung | ja (MacBook + Mac mini) | | M4 | Intercom Stufe 1: Hören + PGM-Vorschau | ja (Heimnetz) | | M5 | Intercom Stufe 2: Sprechen | ja (Heimnetz, HTTPS) | | M6 | Tally | ja (ATEM vorhanden) | | M7 | Generalprobe | nein – braucht ZowieBoxen, Switches, Dante, Ui12 | ## M0 – Grundgerüst - [ ] Xcode-Projekt „Musubi“, macOS 14, Universal Build (arm64 + x86_64), Bundle-ID `studio.zielke.musubi` - [ ] Modulstruktur laut `02-architektur.md` - [ ] NDI SDK eingebunden (Modulemap), Version wird beim Start geloggt - [ ] `design/Theme.swift` übernommen, leeres Hauptfenster mit Quellenliste - [ ] Swift-Testing-Target mit erstem Test für `MusubiCore` - **Abnahme:** Release-Build startet auf MacBook **und** Mac mini 2018; die Quellenliste zeigt eine NDI-Testquelle aus dem Netz. ## M1 – Bild - [ ] NDI-Empfang einer Quelle (HX3 und volles NDI) - [ ] Vollbild auf gewähltem Bildschirm, ohne Menüleiste, Mauszeiger ausgeblendet - [ ] Anzeigemodus 50 Hz setzen, wenn verfügbar - [ ] Zwei Quellen gleichzeitig auf zwei Bildschirmen (Mac mini: PGM + Multiview) - [ ] Ruhezustand blockieren, Auto-Reconnect - **Abnahme:** 4 Stunden, 2 Quellen, 2 Bildschirme auf dem Mac mini 2018 – keine sichtbaren Aussetzer, CPU-Last notiert, verlorene Frames < 0,1 %. ## M2 – Ton-Matrix - [ ] NDI-Ton einer Quelle auf beliebige Ausgangskanäle (z. B. MOTU M2 Out 2) - [ ] Reiner Audio-Empfang (ohne Video-Bandbreite) - [ ] Mikrofon-Eingang (Headset) auf Kanal (Out 1), Sprechtaste (Tastenkürzel, gedrückt halten / umschalten) - [ ] Pegelanzeige, Gain, Mute je Route - [ ] Drift-Ausgleich zwischen NDI-Takt und Interface-Takt - **Abnahme:** 4 Stunden ohne Knacksen und ohne hörbaren Versatz; Sprechtaste reagiert ohne Verzögerung. ## M3 – Szenen und Fernsteuerung - [ ] Szenen speichern, laden, exportieren (JSON) - [ ] Rolle Regie/Knoten; Knoten per Bonjour finden - [ ] Regie setzt Szene am Knoten; Knoten meldet Status zurück - [ ] Beim Start letzte Szene laden - **Abnahme:** Beide Macs neu starten – die Szene „OP-Live“ stellt sich ohne Eingriff wieder her. ## M4 – Intercom Stufe 1 - [ ] Web-Server nur auf der Klinik-Schnittstelle - [ ] QR-Code mit Adresse in der App - [ ] Handy-Seite: Name/Rolle, Talkback hören, PGM-Vorschau (WebRTC) - **Abnahme:** iPhone und Android im Heimnetz, Verzögerung der Vorschau gemessen < 0,5 s. ## M5 – Intercom Stufe 2 - [ ] HTTPS mit eigener Stammzertifizierung (Installationsanleitung fürs Handy) - [ ] Sprechtaste auf dem Handy → Ton-Matrix - [ ] Optional: TURN-Relay als Plan B konfigurierbar (`06-netzwerk.md`) - **Abnahme:** Gegensprechen iPhone ↔ Regie und Android ↔ Regie im selben Durchgang. ## M6 – Tally - [ ] ATEM-Status (PGM/Vorschau) lesen - [ ] Kamera-Eingang einer Handy-Rolle zuordnen - [ ] Handy-Rand rot (PGM) / grün (Vorschau) - **Abnahme:** Schnitt am Micro Panel färbt das richtige Handy in unter 200 ms. ## M7 – Generalprobe - [ ] Kompletter Aufbau laut `05-testplan-hardware.md` - **Abnahme:** 3 Stunden durchgehender Betrieb mit allen Geräten; OBS + DistroAV bleibt als Notlösung auf beiden Macs installiert. ## Erkenntnisse _(nach jedem Meilenstein ergänzen)_