Phase 4: Fixture-Engine Master32/Layer64 (§16.2–§16.6)

- Master32Engine: 32-Kanal-Dekodierung: 16-Bit Intensitaet/BPM/Dauer,
  Blackout (hoechste Prioritaet), Freeze, Preset Bank/Index,
  Flanken-Trigger Preset Recall/Tap Tempo/Release, Audio/AI-Freigabe,
  Testpattern, Global Hue/Sat, Fallback; reservierte Kanaele neutral
- Layer64Engine: 64-Kanal-Dekodierung: Enable, 16-Bit Opacity,
  Source-Type Media/Generator/Solid/Live, modusabhaengiger Source-Block
  (Kanal 13-20: Media=Speed/Position/In/Out, Generator=G1-G8),
  Transport-Enum, Blend, 16-Bit signed Position, Scale, Rotation,
  Crop, Color, FX1/FX2 mit P1-P8, Load/Commit-Semantik mit pending
  selection (§16.5: Fader bewegt nichts ohne Flanke), Retrigger
- map_speed (§16.6): Mittelpunkt=Pause, untere Haelfte -4x..0,
  obere 0..+4x, definierter Wert 40960 = exakt 1x; monoton,
  dokumentiert und getestet (Fehler im ersten Entwurf korrigiert:
  32768 war faelschlich 1x statt Pause)
- UniversePlan: kollisionsfreie Bereiche je Node, Ueberschneidung
  = Blocker-Fehler (§16.2), Preflight-Check
- 26 Unit-Tests: Speed-Referenzwerte/-Monotonie, Master32-Kanaele,
  Trigger-Flanken, reservierte Kanaele, Layer64-Modi, Load/Commit,
  Retrigger, FX-Bloecke, Universe-Kollisionen; 8x64=512-Verifikation
- Gesamtsuite 532 gruen, Ruff gruen
This commit is contained in:
HMS MediaEngine Agent
2026-09-11 02:06:58 +02:00
parent 985f156525
commit abffff3711
3 changed files with 776 additions and 0 deletions
+31
View File
@@ -1,10 +1,26 @@
"""hms_artnet Art-Net 4 Steuerung (PLAN.md §16).
ArtDMX-Empfang, ArtPoll/ArtPollReply (Discovery als Media Server, Style 0x02),
Fixture-Engine (Master32/Layer64, §16.3–§16.6), Universe-Plan (§16.2),
konfigurierbare Universen/Adressen, Sequenzprüfung, Signalverlust-Verhalten.
Layouts gegen die offizielle Art-Net-4-Spezifikation verifiziert.
"""
from hms_artnet.fixtures import (
Layer64Engine,
LayerControl,
LayerEvent,
Master32Engine,
MasterControl,
MasterEvent,
SourceType,
TransportCommand,
UniverseCollisionError,
UniversePlan,
UniverseRange,
map_speed,
)
from hms_artnet.mapping import DmxLayerMapper, LayerDmxMapping, RisingEdge
from hms_artnet.packets import (
OPDMX,
OPPOLL,
@@ -33,4 +49,19 @@ __all__ = [
"ArtNetReceiver",
"DmxUpdate",
"LossBehavior",
"DmxLayerMapper",
"LayerDmxMapping",
"RisingEdge",
"Master32Engine",
"MasterControl",
"MasterEvent",
"Layer64Engine",
"LayerControl",
"LayerEvent",
"SourceType",
"TransportCommand",
"map_speed",
"UniversePlan",
"UniverseRange",
"UniverseCollisionError",
]