This chapter is obsolete ! See PIOS from Root Home.

I open source the os 9 drivers. I give you the last snapshot available.

This is the last distribution package of the classic driver.
This is the source package of the classic driver (src gm) and the app (src). And some convinience scripts for MPW.
This is a cli version of a softnode artnet with usbdmx on X. (see below)
USBDMX <-> ArtNet Bridge (fixed build:27.2.2003) including ArtNet monitoring

Due to the system architecture of Mac OS X there will be no "driver" file that a user has to install in the system. (For this a bucket of flowers to Apple; merely a trash can full of ;-) You just can run the apps from your hard drive.

1. The USBDMX - ArtNet Softnode (console)
The app finds up to four attached USBDMXes and puts them up as 1 ArtNet Node with upto four input/output. So (that's an ArtNet one !) set your Mac to IP (IP)subnet, and plug in the Ethernet cable.

The usage is quite easy : usbdmxonx.command subnet sendtoip
subnet is a number between 0 and 15 and denotes the ArtNet subnet the emulated node is set to.
sendtoip is the IP the emulated node uses for its output. Usually its, for playing use
Note : Data received is not bound to this IP cause it is received on a port from any IP. (private vs. broadcast) in the dump the senders' IP is displayed - so you can see who sent it.

Note the following : First the software sets up eight buffers for ArtNet. These get the universe number 0 to 7 on the subnet you specified on the commandline. Then the usbdmx devices are counted and mapped onto these eight buffers. This means that universe 0-3 are the inputs (usbdmx receivers) of the emulated node and 4-7 are the outputs (usbdmx transmitter) of the emulated node.

Which means if you do nothing more, connect the Mac to a desk, you have to write to Universe 4-7 of the choosen subnet cause you want to talk to the Output port of the emulated artnet node.
But ... the counter of interest is the received ArtDmx counter cause you receive packets from artnet and put them on a transmitter ! By definition the device receives the ethernet data (via the usb of course) so the device counts them.

If you have a grand MA desk you can use its features to reconfigure the devices to different universes. (ArtView App on Windows works, too, of course). This is the ArtAddress functionality. Note that you, by definition, cannot set different subnets in one (even emulated) node. If you change the subnet via ArtAddress all usbdmx get the new subnet but do not change the universe (unless also reconfigured). Due to missing physical switches the reset of the remote configuration is ignored.
The enumeration goes analog to the count of attached usbdmx devices. This means if you have two devices connected you have an node that has input0,1 and output 0,1 on artnet which equals to universes usbdmx1: in0 out4 andusbdmx2: in1 out5. To identify a usbdmx unplug the dmx cables and see which framecounter stops.

Most recent adds: (Read hints.txt !)

DMX Value dumps for the attached usbdmx devices
So you can monitor what the devices transmit (coming form the desk) and what they receive (and send to the desk).
DMX Value censoring for the attached usbdmx devices. From hints.txt :
if ( in == 'I' ) (*it).statflags = (*it).statflags | gIn;
if ( in == 'i' ) (*it).statflags = (*it).statflags & (~gIn);
if ( in == 'O' ) (*it).statflags = (*it).statflags | gOut;
if ( in == 'o' ) (*it).statflags = (*it).statflags & (~gOut);
This one dumps the buffers of the usbdmx devices (what comes in on DMX and what goes out on DMX)
You have to play with size of the console window to get output that does not flicker.
On 1024*768 and smallest font it is possible to watch all four univereses handled by the four usbdmx on the screen.
Or, of course, two ins and two outs. (I turn off buffering in Terminal)

These values are affected by the censors implemented !
So what goes out is basically the stuff that is recieved from ArtNet for the given subnet / universe....
But the devices censors (min/max) control the values before sending DMX - so there
might be other values being sent out on DMX than received in the ArtNetDmx which came in.
This is no fault because these censors are exactly for that purpose only to send out DMX Data that is within range (for
that channel).

About the censors:
I use this for channels which shall be locked in any way /after/ the programming of the desk is done, or fx-engine stuff
is run live from the desk.
e.g. Using Space Cannons you can lock out tilt positions where the SpaceCannon would blind the audience (min 87, max 177)
Later there will be a legal proof of this to show protocols of this to your insurance company ;-))
e.g. The same like above for moving lights blinding directly into a camera
e.g. Having a translator for deafs on stage I ensure that she is always seen (min 80, max 255) but still be controllable
by the desk /in/ that range.

if ( in == '0' )
This turns off censors in the way of restting all censors (for the four usbdmx devices) to min 0 max 255.

The keys 1 to 9 load these censors from file, dispatch them and write them into the corresponding memory areas.
These files have the name "mods.usbdmx.1" to "mods.usbdmx.9" and have to be in the same directory as the app.
This is only usable for the attached usbdmxes. Not for data being sent to ArtNet from the usbdmx DMX receivers.


2. ArtNet Monitor (console)
Is included in the bridge app. Easy said it's the same app that just does no usb communication. The output uses the terms of the ArtNet protocol standard. So to understand this you better know the standard.

Look for the onscreen instructions and read the hints.txt

If you need more usbdmxes supported, more artnet nodes emulated or more comlex routing : contact me to know how much it is. I have the stuff handy.