Initial implementation of ArtNet remapping proxy

Channel-level DMX remapping between ArtNet universes with:
- TOML configuration with multiple address formats (net.subnet.universe, plain number)
- ArtPoll discovery for output nodes
- Configurable channel ranges for fixture spillover handling

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Ian Gulliver
2025-12-22 09:27:20 -08:00
commit a709e5498b
11 changed files with 1194 additions and 0 deletions

42
config.example.toml Normal file
View File

@@ -0,0 +1,42 @@
# artmap configuration
[settings]
listen_port = 6454 # ArtNet port (default: 6454)
broadcast_addr = "2.255.255.255" # ArtNet broadcast address
# Universe address formats supported:
# "0.0.1" - Net.Subnet.Universe
# "0:0:1" - Net:Subnet:Universe
# 1 - Universe number only (net=0, subnet=0)
# "1" - Universe number as string
# Example: Remap entire universe
# Maps all 512 channels from universe 0 to universe 5
[[mapping]]
from = "0.0.0"
to = "0.0.5"
# Example: Channel-level remap for fixture spillover
# Maps channels 450-512 from universe 0 to channels 1-63 of universe 1
# Use case: A fixture at the end of universe 0 spills into universe 1
[[mapping]]
from = "0.0.0"
from_channel = 450 # 1-512 (1-indexed, like DMX)
to = "0.0.1"
to_channel = 1
count = 63 # Number of channels to remap
# Example: Using plain universe numbers
[[mapping]]
from = 2
to = 10
# Example: Multiple outputs from same source
# The same source channels can be mapped to multiple destinations
[[mapping]]
from = "0.0.3"
to = "0.0.7"
[[mapping]]
from = "0.0.3"
to = "0.0.8"