- Struktur gemäß §8 (Eigentumsgrenzen), PLAN.md als normative Basis - Pflichtdokumente: STATUS.md, ERRORS.md, TEST_REPORT.md, CHANGELOG.md, ADRs - ADR-0001 Python 3.13-Pin, ADR-0002 GStreamer 1.28.6-Pin (Windows), ADR-0003 IPC TCP+MessagePack v1 - Kernpakete: hms_protocol, hms_domain, hms_parameter, hms_artnet, hms_adaptive, hms_capabilities, hms_plugin_sdk - Renderer-Spike: D3D11-Primärpfad + Dev-GL-Pfad (§36 Nr. 4-5) - Control Core: FastAPI REST + WebSocket (§36 Nr. 9) - Beispielplugins: Passthrough + Gaussian Blur (3 Adaptive-Quality- Varianten, HLSL/GLSL/GLES) - Tools: Art-Net-Emulator, Fixture-Generator (Master32/Layer64-CSV), Capability-Probe - JSON-Schemas: IPC, Plugin, Projekt, Cluster - 121 Unit-/Integrationstests grün, Ruff grün Gate 0 bleibt offen: Hardwaremessungen nur auf echter Windows-Referenz- hardware gültig (§29.7, §33).
3.6 KiB
HMS MediaEngine
Arbeitstitel – der Produktname kann später ohne technische Auswirkung geändert werden.
Modularer Medienserver, VJ-System und generativer Licht-/Pixeleffekt-Server.
- Primärplattform: Windows 11 x64, portabel ohne Installation
- Weitere Zielplattformen: Linux x64, Raspberry Pi 5 / Linux ARM64
- Steuerung: lokale Webanwendung (Browser), Art-Net/DMX, spätere Timeline/Audio/KI
Leitsatz
Python steuert. Native Bibliotheken decodieren. Die GPU rendert. Der Browser bedient.
Projektstatus
Das Projekt befindet sich in Phase 0 – technischer Spike und Go/No-Go.
Aktueller Stand, Gates und nächste Aufgaben: STATUS.md
Fehlerverfolgung: ERRORS.md
Messergebnisse: TEST_REPORT.md
Bauplan (normativ): PLAN.md
Repository-Struktur (Eigentumsgrenzen)
/
├─ apps/ launcher, control_server, renderer, web
├─ native/ render_bridge (Rust oder C++, Entscheidung per ADR)
├─ packages/ domain, protocol, parameter_engine, render_backend,
│ capabilities, adaptive_quality, plugin_sdk, artnet,
│ cluster, content_sync, timeline, audio_analysis,
│ persistence
├─ plugins/ builtin (generators, filters, transitions, outputs), examples
├─ schemas/ project, plugin, ipc, cluster, api
├─ fixture_profiles/ master32, layer64
├─ tests/ unit, integration, rendering, cluster, visual,
│ performance, portability, e2e
├─ tools/ media_probe, shader_validate, artnet_emulator,
│ capability_probe, cluster_test_node, fixture_generator
├─ build/ windows, linux, raspberry_pi
└─ docs/ architecture, adr, plugin-sdk, api, fixture,
performance, operator
Code darf nicht beliebig zwischen Paketen quer importiert werden.
Entwicklung
# Python-Umgebung
uv sync
# Tests
uv run pytest
# Lint + Typprüfung
uv run ruff check .
Frontend (ab Phase 5): pnpm mit Lockfile, Vite-Build, siehe apps/web.
Phasenmodell
Die Entwicklung folgt strikt dem Phasenmodell aus PLAN.md Abschnitt 31.
Jede Phase endet mit einem Gate; keine neue Phase ohne grünes Gate.
| Phase | Inhalt | Gate |
|---|---|---|
| 0 | Technischer Spike, Machbarkeitsnachweis, ADRs | Gate 0: D3D11-HW-Decode, GPU-Compositing, Adaptive Quality, Art-Net-Latenz, portable Auslieferung reproduzierbar grün |
| 1 | Fundament: Supervisor, Control Core, Renderer, IPC, Node-Identität, Discovery, Paarung | Gate 1 |
| 2 | Medien-, Layer-, Basissync-Engine | Gate 2 |
| 3 | Plugin-SDK, Starterpaket Generatoren + Filter | Gate 3 |
| 4 | Art-Net-Fixtures Master32/Layer64 | Gate 4 |
| 5 | Vollständige Browser-Liveoberfläche | Gate 5 / V1.0-Kernrelease |
| 6+ | Cue/Timeline, Audio, Mapping, Pixel-Ausgabe, KI, Pi 5, Härtung | eigene Gates |
Verbindliche Regeln (Auszug)
- Keine Pixelverarbeitung in Python-Schleifen.
- Kein CPU-Readback im normalen HDMI-Renderpfad (Windows: D3D11Memory durchgängig).
- Kein Mock als fertige Funktion gemeldet; Hardwaretests nur auf echter Hardware.
- Jede Architekturabweichung braucht ein ADR und Freigabe.
- Projektschema versioniert, Migrationen getestet.
Dokumentation
- Architektur:
docs/architecture/ - ADRs:
docs/adr/(Vorlage:docs/adr/_template.md) - Plugin-SDK:
docs/plugin-sdk/(ab Phase 3) - Fixture-Handbücher:
docs/fixture/(ab Phase 4)
Lizenz
TBD – wird mit dem ersten Release entschieden (SBOM und Lizenzverzeichnis sind Teil der Release-Anforderungen, PLAN.md Abschnitt 30).