The part of the software that translates the users wishes to DMX in real time.
-
Make sure that the following libraries are installed:
- libnl-dev
- libev-dev
- libprotobuf-dev
- libspdlog-dev
- protobuf-compiler
- xsdcxx
- libxerces-c-dev
- libusb-dev
- libftdi-dev
- pkg-config
- liblua5.4-dev
- libasound2-dev
- libeigen3-dev
- libfftw3-dev
- libsox-dev
- libpulse-dev
- libsamplerate0-dev
- libcpptrace-dev (will be removed with C++26)
- libdwarf-dev (required by cpptrace)
If you would also like to run unit tests, you'll also need libboost-test-dev.
If
libcpptrace-devis not available on your system, it can be installed as follows:git clone https://github.com/jeremy-rifkin/cpptrace.git git checkout v0.8.3 mkdir cpptrace/build cd cpptrace/build cmake .. -DCMAKE_BUILD_TYPE=Release make -j sudo make install -
Perform a recursive clone of this repository.
-
Call
gmakeon the root directory of this repo. Tip: issuemake -j<ncores> BUILD_MODE=Releaseif you're building a release.
Please attach the devices using USB and boot them up in CtrlRel Mode with USB as their
interface protocol.
Interfacing with Usb DMX dongles is implemented for FTDI based devices. The corresponding
universe type is called ftdi_universe.
A corresponding entry in the udev rules should be made, allowing the user associated with
running fish to communicate with the dongle without superuser permissions.
USB dmx adapters are bad. The better ones out there (for example the entec ones) use FTDI chips. Even those have bad timing properties and only support a small sub set of the DMX512 specification and should be avoided if a proper Art-Net node (albeit the entec ones are still better than some crap Art-Net nodes out there) can be used.
Interfacing with USB devices is always a synchronous operation. If your USB adapter is using a low speed interface (1.0, 1.1, 2.0, 3.0) this will significantly slow down the event loop!
Communication with the io board is done using an FTDI600Q chip as regular USB2.0 speeds are
nowhere near enough. In order for this to work, the FT60X
driver needs to be installed and loaded. A corresponding entry to /etc/modules should do the trick.
Running the unit tests requires Pulse Audio's pactl to be installed.
It is usually supplied by a package called pulseaudio-utils