|
|
# 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
|
|
|
- [x] Xcode-Projekt „Musubi“, macOS 14, Universal Build (arm64 + x86_64), Bundle-ID `studio.zielke.musubi`
|
|
|
- [x] Modulstruktur laut `02-architektur.md`
|
|
|
- [x] NDI SDK eingebunden (Modulemap), Version wird beim Start geloggt
|
|
|
- [x] `design/Theme.swift` übernommen, leeres Hauptfenster mit Quellenliste
|
|
|
- [x] 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)_
|
|
|
|
|
|
### M0 – Grundgerüst (bestanden 2026-10-21)
|
|
|
- Abnahme: Release-Build auf Mac Studio (Apple Silicon, Entwicklungsrechner) und Mac mini 2018 (i5-8500B, macOS 15.7.7) gestartet; beide zeigen „NDI Test Patterns“ in der Quellenliste. Das MacBook nutzt denselben arm64-Teil und wurde nicht separat geprüft.
|
|
|
- Xcode 27 baut weiterhin x86_64 für macOS 14.
|
|
|
- NDI SDK 6.3.2: `libndi.dylib` ist universal und hat `@rpath/libndi.dylib` als Install-Name; Einbetten nach `Contents/Frameworks` reicht.
|
|
|
- Hardened Runtime + Ad-hoc-Signatur → dyld lehnt die eingebettete `libndi.dylib` ab („different Team IDs“). Vorerst aus; mit echter Team-ID für die Notarisierung wieder einschalten.
|
|
|
- Mac mini im Leerlauf mit Quellensuche: ca. 2 % CPU, ca. 52 MB RAM.
|
|
|
- Mac mini ist per SSH erreichbar (Entfernte Anmeldung + Bildschirmfreigabe): App per `scp` verteilen, Quarantäne entfernen, Logs mit `log stream` mitlesen.
|