Sending Art-Net packets natively? (vanilla Max objects)
I've been using the imp.dmx objects (https://cycling74.com/forums/art-net-externals-v1-0-beta-64-bit-and-multiple-universes) for a few years, and they have been working great. But I've been using an older (v0.8 32bit) version. I recently tested the newer (v1.0 64bit) version and the cpu use is pretty high (double the previous version).
I figured since I'm not doing anything complicated with art-net, literally just broadcasting to one universe, with a handful of DMX channels (12 channels total), that it would be possible to format the Art-Net packets 'manually'.
It looks like the spec isn't too complicated (wiki copypasta below), but I've never done something like this.
Packet format
The following table shows a typical packet, ArtDMX, for transmitting lighting values. It is sent to the fixed UDP port 0x1936 (6454 decimal).
The pink portion is the same on all Art-Net packets; the green portion is variable. The opcode tells the recipient this is a packet containing DMX data in the data portion, intended to be output of the specified universe. Sequence is a sequential number allowing the recipient to reorder packets to address out-of-order delivery; physical is an information packet showing the original physical universe of this data, if required. Then follows up to 512 lighting values in the range 0 to 255. Conceptually, this packet is broadcast to all nodes; but is ignored by all nodes except the one which is configured to listen for this universe. In practice the packet is typically unicast to the correct node.