Haukcode.ArtNet 5.0.149

There is a newer version of this package available.
See the version list below for details.
dotnet add package Haukcode.ArtNet --version 5.0.149
                    
NuGet\Install-Package Haukcode.ArtNet -Version 5.0.149
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Haukcode.ArtNet" Version="5.0.149" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Haukcode.ArtNet" Version="5.0.149" />
                    
Directory.Packages.props
<PackageReference Include="Haukcode.ArtNet" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Haukcode.ArtNet --version 5.0.149
                    
#r "nuget: Haukcode.ArtNet, 5.0.149"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Haukcode.ArtNet@5.0.149
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Haukcode.ArtNet&version=5.0.149
                    
Install as a Cake Addin
#tool nuget:?package=Haukcode.ArtNet&version=5.0.149
                    
Install as a Cake Tool

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, with request/response matching
  • ✅ ArtTrigger for show control
  • ✅ High-performance UDP communication
  • ✅ Cross-platform (.NET 8.0+)

Standards

Checked against the published documents: every packet Art-Net 4 (rev 1.4dp) defines a layout for, and every PID in ANSI E1.20-2025 (RDM), E1.37-1, E1.37-2, E1.37-7 and the RDM PIDs of E1.33. See the compliance table for details.

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 to a node (Art-Net 4 doesn't allow DMX to be broadcast)
var dmxData = new byte[512];
dmxData[0] = 255;  // Channel 1 at full
await client.SendDmxData(IPAddress.Parse("192.168.1.50"), 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
var node = IPAddress.Parse("192.168.1.50");
await client.SendDmxData(node, 1, dmxData1);
await client.SendDmxData(node, 2, dmxData2);

// Sync all outputs (always broadcast)
await client.SendSync();

Key Methods

// Send DMX data (address must be a node unless AllowDmxBroadcast is set)
Task SendDmxData(IPAddress? address, ushort universeId,
                 ReadOnlyMemory<byte> dmxData, bool important = false)

// Send sync packet (broadcast)
Task SendSync()

// Send any packet
Task QueuePacketForSending(IPAddress? destination,
                          ArtNetPacket packet, bool important = false)

Supported Packets

  • ArtPoll / ArtPollReply - Device discovery
  • ArtDmx, ArtNzs / ArtVlc - DMX data
  • ArtSync - Frame synchronization
  • ArtTrigger, ArtTimeCode, ArtCommand - Show control
  • ArtAddress, ArtInput, ArtIpProg - Node configuration
  • ArtDataRequest / ArtDataReply, ArtDiagData - Product data and diagnostics
  • ArtTodRequest / ArtTodData / ArtTodControl - RDM device discovery
  • ArtRdm / ArtRdmSub - RDM commands (requires RDM package)
  • ArtFirmwareMaster / ArtFirmwareReply - Firmware upload

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 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 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
5.0.150 78 10/21/2026
5.0.149 67 10/21/2026
5.0.148 80 10/20/2026
5.0.147 75 10/20/2026
5.0.146 73 10/20/2026
5.0.145 75 10/20/2026
5.0.144 79 10/20/2026
5.0.143 77 10/20/2026
5.0.140 70 10/20/2026
5.0.139 72 10/20/2026
5.0.138 73 10/20/2026
5.0.137 85 10/20/2026
5.0.136 78 10/20/2026
5.0.135 75 10/20/2026
5.0.134 75 10/20/2026
5.0.133 78 10/20/2026
5.0.132 76 10/20/2026
5.0.131 72 10/20/2026
5.0.130 72 10/20/2026
5.0.129 71 10/20/2026
Loading failed

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