Skip to content

Application which sends incoming ArtNet signals to any USBDMX Interface

License

Notifications You must be signed in to change notification settings

rainloreley/artnet-usbdmx-converter

Repository files navigation

ArtNet-USBDMX-Converter

Screenshot of main app window

Send incoming ArtNet signals to the FX5 DMX interface (and other compatible interfaces) to make it compatible with most DMX control programs.

Use case

This application opens an ArtNet receiver, to which various DMX control programs (e.g. ChamSys MagicQ) can send DMX signals to. It then forwards these signals to the FX5 USBDMX interface, and therefore opens it up to a variety of programs, not only the few that support it (QLC+, DMXControl).

Setup on Linux

To use USBDMX-Interfaces on Linux without root privileges you need to add a udev rule:

$ sudo cp 50-usbdmx.rules /etc/udev/rules.d/
# Unplug the interface, then run:
$ sudo udevadm control --reload-rules

Use another interface

If you're using another interface other than the ones listed below, you need to add them to the udev rule manually

First, get all USB devices connected to the computer and find your interface

$ lsusb
Bus 003 Device 021: ID 16c0:088b Van Ooijen Technische Informatica USB DMX
[...]

Then copy the existing udev rules-file like mentioned above, and edit it

$ sudo nano /etc/udev/rules.d/50-usbdmx.rules

Duplicate the last line and change the values after "idVendor" and "idProduct" to match the ID returned by lsusb

Example for ID 1234:5678

KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1234", ATTRS{idProduct}=="5678", MODE="0666"

Save, disconnect the interface and reload the udev rules

$ sudo udevadm control --reload-rules

Compatible interfaces

Automatic restart

To restart the program automatically in case of a crash or another exception, add --autoretry as a command line argument. This does not apply in the following cases:

  • Intentional exit (Crtl+C, "kill" command, closing the terminal)
  • Invalid configuration file

Configuration File

You can optionally add a configuration file containing parameters for the default USBDMX interface and options regarding the ArtNet transceiver.

To use a configuration file, create a file on your system with the options below. Then start the program with --config=<path> as a command line argument. Replace <path> with the absolute path to the file.

Full config

You can omit any options that you don't want to change, the program will use the default options instead (except for "interface").

{
  "interface": {}, // see below
  "dmxnet": { // config for ArtNet transceiver
    "main": { // general options
      "log": {
        "level": "info", // available: error, warn, info, verbose, debug, silly
        "oem": 0, // OEM Code from artisticlicense, default to dmxnet OEM.
        "sName": "Text", // 17 char long node description, default to "usbdmx"
        "lName": "Long description", // 63 char long node description, default to "ArtNet-USBDMX-Converter"
        "hosts": ["127.0.0.1"] // Interfaces to listen to, defaults to ["0.0.0.0"]
      }
    },
    "transmitter": { // ArtNet transmitter options (USBDMX In => ArtNet)
      "ip": "127.0.0.1", // IP to send to, default 255.255.255.255
      "subnet": 0, // Destination subnet, default 0
      "universe": 0, // Destination universe, default 0
      "net": 0, // Destination net, default 0
      "port": 6454, // Destination UDP Port, default 6454
      "base_refresh_interval": 1000 // Default interval for sending unchanged ArtDmx
    },
    "receiver": { // ArtNet receiver options (ArtNet => USBDMX Out)
      "subnet": 0, //Destination subnet, default 0
      "universe": 0, //Destination universe, default 0
      "net": 0, //Destination net, default 0
    }
  }
}

Generate config for interface

To automatically select a USBDMX Interface on startup you need to set its parameters in the configuration file under "interfaces".

You can generate these parameters by running:

$ ./artnet-usbdmx-converter outputconfig

Select the interface and mode to use and copy the output to "interface" inside the configuration file.

Example:

{
  "interface": {
    "serial": "0000000010000492",
    "mode": "6",
    "manufacturer": "Digital Enlightenment",
    "product": "USB DMX"
  },
  [...]
}

Develop & Build

Development

$ git clone https://github.com/rainloreley/artnet-usbdmx-converter.git
$ cd artnet-usbdmx-converter
$ yarn
$ yarn dev

Compiling

# edit package.json -> pkg to add more targets for various platforms
$ yarn make

License

This project is licensed under the MIT License - see the LICENSE file for details