Haukcode.ArtNet
3.0.80
dotnet add package Haukcode.ArtNet --version 3.0.80
NuGet\Install-Package Haukcode.ArtNet -Version 3.0.80
<PackageReference Include="Haukcode.ArtNet" Version="3.0.80" />
<PackageVersion Include="Haukcode.ArtNet" Version="3.0.80" />
<PackageReference Include="Haukcode.ArtNet" />
paket add Haukcode.ArtNet --version 3.0.80
#r "nuget: Haukcode.ArtNet, 3.0.80"
#:package Haukcode.ArtNet@3.0.80
#addin nuget:?package=Haukcode.ArtNet&version=3.0.80
#tool nuget:?package=Haukcode.ArtNet&version=3.0.80
Haukcode.ArtNet
A high-performance ArtNet library for .NET (8.0+) enabling DMX512 lighting control over IP networks.
What is ArtNet?
Art-Net is a royalty-free protocol for transmitting DMX512 lighting control data over UDP/IP networks. It's widely used in professional entertainment, architectural, and theatrical lighting.
Features
- ✅ DMX transmission and reception
- ✅ Multiple universe support (up to 32,768 universes)
- ✅ Device discovery (ArtPoll)
- ✅ Frame synchronization (ArtSync)
- ✅ RDM support (Remote Device Management) - separate package
- ✅ ArtTrigger for show control
- ✅ High-performance UDP communication
- ✅ Cross-platform (.NET 8.0+)
Quick Start
Installation
dotnet add package Haukcode.ArtNet
For RDM support:
dotnet add package Haukcode.ArtNet.Rdm
Basic Usage
using System.Net;
using Haukcode.ArtNet;
var localIp = IPAddress.Parse("192.168.1.100");
var subnetMask = IPAddress.Parse("255.255.255.0");
// Create client
using var client = new ArtNetClient(localIp, subnetMask);
// Send DMX data
var dmxData = new byte[512];
dmxData[0] = 255; // Channel 1 at full
await client.SendDmxData(null, universeId: 1, dmxData);
Receiving DMX
using System.Threading.Channels;
using Haukcode.ArtNet.Packets;
var channel = Channel.CreateUnbounded<ReceiveDataPacket>();
using var client = new ArtNetClient(
localIp, subnetMask,
channelWriter: async (p) => await channel.Writer.WriteAsync(p));
await foreach (var packet in channel.Reader.ReadAllAsync())
{
if (packet.Packet is ArtNetDmxPacket dmx)
{
Console.WriteLine($"Universe {dmx.Universe + 1}: {dmx.DmxData[0]}");
}
}
Device Discovery
// Send ArtPoll to discover devices
await client.QueuePacketForSending(null, new ArtPollPacket());
Frame Synchronization
// Send data to multiple universes
await client.SendDmxData(null, 1, dmxData1);
await client.SendDmxData(null, 2, dmxData2);
// Sync all outputs
await client.SendSync(null);
Key Methods
// Send DMX data (null = broadcast to all)
Task SendDmxData(IPAddress? address, ushort universeId,
ReadOnlyMemory<byte> dmxData, bool important = false)
// Send sync packet
Task SendSync(IPAddress? address)
// Send any packet
Task QueuePacketForSending(IPAddress? destination,
ArtNetPacket packet, bool important = false)
Supported Packets
ArtPoll/ArtPollReply- Device discoveryArtDmx- DMX data transmissionArtSync- Frame synchronizationArtTrigger- Show control triggersArtAddress- Node configurationArtTodRequest/ArtTodData- RDM device discoveryArtRdm- RDM commands (requires RDM package)ArtIpProg- Remote IP configuration
Platform Support
- .NET 8.0+, 9.0+, 10.0+
- Windows, Linux, macOS
Documentation & Examples
📖 Full Documentation: https://github.com/HakanL/Haukcode.ArtNet
🔧 Sample Code: Included in the GitHub repository
Resources
License
MIT License - Copyright (c) 2018-2024 Hakan Lindestaf
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- Haukcode.HighPerfComm (>= 1.0.29)
- Haukcode.Network (>= 1.0.26)
-
net9.0
- Haukcode.HighPerfComm (>= 1.0.29)
- Haukcode.Network (>= 1.0.26)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated | |
|---|---|---|---|
| 3.0.80 | 50 | 2/5/2026 | |
| 3.0.78 | 47 | 2/5/2026 | |
| 3.0.74 | 361 | 11/11/2025 | |
| 3.0.72 | 203 | 10/9/2025 | |
| 3.0.71 | 187 | 10/7/2025 | |
| 3.0.69 | 375 | 5/13/2025 | |
| 3.0.68 | 299 | 5/13/2025 | |
| 3.0.67 | 291 | 5/12/2025 | |
| 3.0.66 | 241 | 4/24/2025 | |
| 2.0.45 | 210 | 4/22/2025 | |
| 2.0.43 | 197 | 4/22/2025 | |
| 2.0.39 | 196 | 3/27/2025 | |
| 2.0.38 | 211 | 3/13/2025 | |
| 2.0.37 | 192 | 1/24/2025 | |
| 2.0.36 | 153 | 1/24/2025 | |
| 2.0.35 | 118 | 1/15/2025 | |
| 2.0.34 | 153 | 1/10/2025 | |
| 2.0.33 | 144 | 1/9/2025 | |
| 2.0.32 | 159 | 1/7/2025 | |
| 2.0.31 | 149 | 1/7/2025 | |
| 2.0.29 | 157 | 12/20/2024 | |
| 2.0.27 | 199 | 12/13/2024 | |
| 2.0.26 | 154 | 12/13/2024 | |
| 2.0.25 | 163 | 12/12/2024 | |
| 2.0.24 | 173 | 12/12/2024 | |
| 1.3.23 | 201 | 12/12/2024 | |
| 1.3.21 | 180 | 12/12/2024 | |
| 1.3.20 | 192 | 12/3/2024 | |
| 1.3.16 | 2,186 | 10/28/2024 | |
| 1.3.15 | 182 | 10/28/2024 | |
| 1.3.14 | 177 | 10/28/2024 | |
| 1.3.13 | 171 | 10/28/2024 | |
| 1.3.12 | 168 | 10/28/2024 | |
| 1.3.11 | 534 | 9/19/2024 | |
| 1.3.9-PR-fix-send-rdm-e201e0ca | 131 | 9/19/2024 | |
| 1.3.8-PR-fix-send-rdm-e201e0ca | 149 | 9/19/2024 | |
| 1.3.7 | 213 | 9/11/2024 | |
| 1.3.6-PR-master-c27de239 | 139 | 9/11/2024 | |
| 1.3.5 | 1,701 | 6/4/2024 | |
| 1.3.4 | 1,240 | 9/14/2023 | |
| 1.3.3 | 1,435 | 2/8/2023 | |
| 1.2.1 | 707 | 10/7/2022 | |
| 1.2.0 | 494 | 10/7/2022 | |
| 1.1.0 | 536 | 10/4/2022 | |
| 1.0.18 | 2,768 | 8/26/2020 | |
| 1.0.17 | 671 | 7/31/2020 | |
| 1.0.16 | 1,507 | 9/23/2019 | |
| 1.0.15 | 732 | 9/23/2019 | |
| 1.0.4 | 733 | 9/23/2019 | |
| 1.0.0 | 933 | 12/5/2018 |
3.0.0 - Split RDM into a separate project
2.0.0 - Rewrite to use HighPerfComm library
1.2.2 - Bug fixes
1.1.0 - Implemented ArtSync
1.0.18 - Fixed bug in RdmPacketFactory
1.0.17 - Fixed bug in ArtNetReplyPacket
1.0.0 - Initial release