DMX Video Geekery
A crazy idea I had last night after seeing a few of these LED battens. I wish I had enough money to see this idea in action:
Oops, stupid error. Should go like this:
awesome! thanks for the ideas...
...do you by chance know how to format data for the ArtNet protocol? via udpsend or jit.net.send? I know it's got to be simple, but...
anyone??
I'm currently trying to make a patch for ArtNet communication. Once I've finished I'll be posting it on http://prodavid.wordpress.com so check there.
If you have a mac though, you can use OLA (http://www.opendmx.net/index.php/Open_Lighting_Architecture) and the OlaOutput object (http://www.opendmx.net/index.php/OlaOutput_Max_External) for now. This allows you to send ArtNet from Max, although there's no solution for receiving yet.
Looking forward to it... would like to see it on a new thread here too. I'm on PC so can't use OLA. Would be really psyched to see how to do the formatting, it's a real hangup at this point!
Even just the sending from Max would be great, much less need for receive.
Have just finished the Art-Net patches. However if you're on Windows you're out of luck. They use aka.datagram which is mac only. I'm looking for an alternative...
Posted about them here anyway:
you can use java to replace aka.datagram.
new DatagramPacket(buffer, packSize, servAddr, port)
holy geez, I must try that.
Still wondering how to format it using standard Max objects, that would help me understand all this... but in the meantime... the java solution is fantastic, thanks!
If you look at my abstractions you will see how to format it. The only non-standard Max object used is aka.datagram, which is merely for encoding a datagram from raw bytes.
A broadcast Art-Net packet is comprised of an 18-bit header followed by up to 512 bits of DMX data.
The first 8 bits are always 65 114 116 45 78 101 116 0. This is an identifier and spells 'Art-Net' followed by a null in ASCII.
Bits 9 and 10 are the Opcode, transmitted low bit first.
Bits 11 and 12 are the Art-Net protocol revision number, currently 14. Transmitted high bit first.
Bit 13 is the sequence number. This increases by 1 with each Art-Net packet broadcast, to ensure the packets are processed in the order they were sent when they reach their destination.
Bit 14 is a code for a physical location. This is only for user information (so you can see where the information came from).
Bit 15 and 16 is the sub-net and universe address. Transmitted low bit first.
Bit 17 and 18 is the length of list of DMX data being transmitted. Transmitted high bit first.
Awesome, thanks so much for the detailed info. Will look into your abstraction.
"If you look at my abstractions you will see how to format it. The only non-standard Max object used is aka.datagram, which is merely for encoding a datagram from raw bytes."
That's exactly the part that's messing with me... probably need to read up more on how to do this. Some kind of header/shell around the data I imagine. An abstraction to do just this (take whatever data you want in the packet and turn it into a datagram) would solve many things...
Plenty of ways of doing this in Max - I've been working with dmx for some years now in Max, this is one example of the stuff we do:
http://www.youtube.com/watch?v=APOAtzgqENg
jit.spill, a bit of mux demux and then straight off to the dmxusbpro external.
I had some stupid problems with the rig at a show the other day, so my shit is like cut way down, but I'll try to upload something here.
The following is a little snippet of what I used to extract matrices for the above youtube clip:
Hi, do you think it would be possible to migrate this to E1.31? ( ACN ).. And how many universes might this support?