|
|
# Musubi
|
|
|
|
|
|
**NDI rein. Bild, Ton und Stimme raus.**
|
|
|
|
|
|
Musubi (結び, japanisch: das Knüpfen, Verbinden) ist eine macOS-App von Zielke Studio für kleine Live-Übertragungen. Sie macht MacBook und Mac mini zu den fehlenden Bausteinen einer Regie:
|
|
|
|
|
|
- NDI-Quellen im Vollbild auf beliebige Bildschirme
|
|
|
- NDI-Ton (auch ohne Bild) gezielt auf einzelne Kanäle eines Audio-Interfaces
|
|
|
- Talkback per Sprechtaste
|
|
|
- Intercom, PGM-Vorschau und Tally fürs Handy im Browser
|
|
|
- Szenen, die Regie-Mac und Bühnen-Mac auf einen Klick einrichten
|
|
|
|
|
|
Erster Einsatz: OP-Liveübertragung (ATEM im OP, Regie im Saal, eine Netzwerkleitung dazwischen).
|
|
|
|
|
|
## Status
|
|
|
|
|
|
M0 abgenommen. M1 (Bild), M2 (Ton-Matrix) und M3 (Szenen und Fernsteuerung) umgesetzt, Langzeittests und Teile der Abnahmen offen. Siehe [docs/04-fahrplan.md](docs/04-fahrplan.md).
|
|
|
|
|
|
## Dokumente
|
|
|
|
|
|
| Datei | Inhalt |
|
|
|
|---|---|
|
|
|
| [CLAUDE.md](CLAUDE.md) | Arbeitsanweisungen für Claude Code |
|
|
|
| [START.md](START.md) | Startbefehl für Claude Code |
|
|
|
| [docs/01-konzept.md](docs/01-konzept.md) | Idee, Rollen, Funktionsumfang |
|
|
|
| [docs/02-architektur.md](docs/02-architektur.md) | Module, Frameworks, Datenflüsse |
|
|
|
| [docs/03-design.md](docs/03-design.md) | Designsystem, Farben, Typografie, Texte |
|
|
|
| [docs/04-fahrplan.md](docs/04-fahrplan.md) | Meilensteine mit Abnahmetests |
|
|
|
| [docs/05-testplan-hardware.md](docs/05-testplan-hardware.md) | Tests, sobald die Hardware da ist |
|
|
|
| [docs/06-netzwerk.md](docs/06-netzwerk.md) | IP-Plan, Schnittstellen, Relay als Plan B |
|
|
|
|
|
|
## Bauen
|
|
|
|
|
|
```bash
|
|
|
brew install xcodegen # einmalig
|
|
|
xcodegen # erzeugt Musubi.xcodeproj aus project.yml
|
|
|
open Musubi.xcodeproj
|
|
|
```
|
|
|
|
|
|
Das `.xcodeproj` ist generiert und nicht im Repo. Nach Änderungen an `project.yml` erneut `xcodegen` ausführen.
|
|
|
|
|
|
Signiert wird mit **Developer ID Application** (Team `XY4C2RG3L5`), Hardened Runtime an. Ohne dieses Zertifikat im Schlüsselbund `CODE_SIGN_IDENTITY`/`DEVELOPMENT_TEAM` in `project.yml` anpassen.
|
|
|
|
|
|
**Installieren immer nach `/Applications`** – in privaten Ordnern blockiert macOS Bonjour (Fernsteuerung).
|
|
|
|
|
|
### Startargumente (für Tests und Knoten ohne Bildschirm)
|
|
|
|
|
|
| Argument | Wirkung |
|
|
|
|---|---|
|
|
|
| `--route "<NDI-Name>=<Bildschirm-Index>"` | Quelle im Vollbild auf Bildschirm (0 = Hauptbildschirm) |
|
|
|
| `--audio-route "ndi:<NDI-Name>=<Gerät>:<Kanal>"` | NDI-Ton auf Ausgangskanal (Gerätename als Teilstring, Kanal ab 1) |
|
|
|
| `--audio-route "input:<Eingang>=<Gerät>:<Kanal>"` | Mikrofon (über die Sprechtaste) auf Ausgangskanal |
|
|
|
| `--load-scene "<Name>"` | gespeicherte Szene laden |
|
|
|
| `--login-item on\|off` | Beim Anmelden starten |
|
|
|
|
|
|
Rolle und Schnittstelle ohne Bildschirm: `defaults write studio.zielke.musubi role node` bzw. `interfaceName en7`.
|
|
|
|
|
|
Protokolle: Console.app, Subsystem `studio.zielke.musubi`. Minuten-Statistik: `~/Library/Logs/Musubi/stats-*.csv` (Bild), `audio-*.csv` (Ton).
|
|
|
Ohne NDI SDK in `Vendor/NDI/` bricht der Build mit einem Hinweis ab. Tests (Swift Testing, 44 Stück): im Schema `Musubi` (⌘U) oder `cd Packages/MusubiKit && swift test` – beides braucht das SDK, weil alle Module mitgebaut werden.
|
|
|
|
|
|
## Struktur
|
|
|
|
|
|
| Pfad | Inhalt |
|
|
|
|---|---|
|
|
|
| `App/` | App-Target: Einstieg, Koordinator (Rolle, Szenen, Live-Stand), Oberfläche, String Catalog |
|
|
|
| `Packages/MusubiKit/` | Module `MusubiCore`, `NDIKit` (+ `CNDI`-Modulemap), `VideoOutput`, `AudioMatrix` (+ `CAudioRing`), `Remote`, `DesignSystem` |
|
|
|
| `design/Theme.swift` | Design-Tokens; im Package als Symlink eingebunden |
|
|
|
| `project.yml` | XcodeGen-Projektdefinition |
|
|
|
|
|
|
## Voraussetzungen
|
|
|
|
|
|
- Xcode (aktuell), macOS auf Apple Silicon zum Entwickeln
|
|
|
- NDI SDK für macOS (nicht im Repo, siehe [Vendor/README.md](Vendor/README.md))
|
|
|
- Zielgeräte: MacBook (Apple Silicon) und Mac mini 2018 (Intel, macOS 15) → Universal Build
|
|
|
|
|
|
© Zielke Studio
|