Haukcode.ArtNet
3.0.82
See the version list below for details.
dotnet add package Haukcode.ArtNet --version 3.0.82
NuGet\Install-Package Haukcode.ArtNet -Version 3.0.82
<PackageReference Include="Haukcode.ArtNet" Version="3.0.82" />
<PackageVersion Include="Haukcode.ArtNet" Version="3.0.82" />
<PackageReference Include="Haukcode.ArtNet" />
paket add Haukcode.ArtNet --version 3.0.82
#r "nuget: Haukcode.ArtNet, 3.0.82"
#:package Haukcode.ArtNet@3.0.82
#addin nuget:?package=Haukcode.ArtNet&version=3.0.82
#tool nuget:?package=Haukcode.ArtNet&version=3.0.82
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.27)
-
net9.0
- Haukcode.HighPerfComm (>= 1.0.29)
- Haukcode.Network (>= 1.0.27)
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.84 | 87 | 3/20/2026 |
| 3.0.82 | 91 | 3/12/2026 |
| 3.0.80 | 376 | 2/5/2026 |
| 3.0.78 | 97 | 2/5/2026 |
| 3.0.74 | 393 | 11/11/2025 |
| 3.0.72 | 214 | 10/9/2025 |
| 3.0.71 | 195 | 10/7/2025 |
| 3.0.69 | 386 | 5/13/2025 |
| 3.0.68 | 307 | 5/13/2025 |
| 3.0.67 | 298 | 5/12/2025 |
| 3.0.66 | 254 | 4/24/2025 |
| 2.0.45 | 219 | 4/22/2025 |
| 2.0.43 | 202 | 4/22/2025 |
| 2.0.39 | 205 | 3/27/2025 |
| 2.0.38 | 221 | 3/13/2025 |
| 2.0.37 | 200 | 1/24/2025 |
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