You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Musubi/docs/04-fahrplan.md

4.6 KiB

Fahrplan

Jeder Meilenstein endet mit einem Abnahmetest. Erst wenn er bestanden ist, beginnt der nächste. Termine sind offen.

Absprache 2026-10-21: Die Reihenfolge darf nach Absprache angepasst werden. Langzeittests (z. B. M1: 4 h) laufen gesammelt am Wochenende mit einem getaggten Build (m1-candidate); die Entwicklung von M2 beginnt vorher.

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) – volles NDI ✓, HX3 offen bis ZowieBoxen da sind
  • 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.

Powered by TurnKey Linux.