Can I take DMX input into Processing?

edited June 2016 in Raspberry PI

Hi all! I am brand new to the whole world of Processing so thank you for reading this ! I want to do a project where I take DMX into processing and change colors on a screen. I am using a raspberry pi.

Is this possible?

Thank you!!!

Tagged:

Answers

  • Yes, if you can find a Java library that can connect to a DMX input device. The answer will then very much depend on your setup. Are you using a program or a standalone device? Do you have an interface? Are you working with art-net? Do you need to use DMX or can it be something else like osc?

  • thank you!

    I dont really know what I am doing yet... my idea was to use Processing to output a single color to the screen. I don't necessarily NEED to use DMX, it is just the most familiar to me.

    Basically I am trying to use 30 CRT tvs (they take composite video in) and have each one be its own color that i can change via a DMX controller or a master computer.

    any ideas?

  • 30! That would be hard without a very expensive video card, even if they are analog. Do they just need to be an uniform colour? Maybe you can create a tool that converts digital RGB data to the analog input your tvs require. I don't know enough about tv standards to help you further though.

  • No i want all the TVs to change color according to DMX input. Essentially they will each be their own lighting fixture (think of them as a standard RGB LED)

    Im just trying to figure out if I can use Processing to read DMX input and output a single color to the monitor.

  • edited June 2016

    basically i want to do something like this:: (each pixel will be a TV) and be able to change the color of each pixel (tv) how i want. I work in the lighting industry so I was thinking about using the DMX protocol.

  • Never mind the controlling! How are you thinking of interfacing the TVs to the computer/raspi? If you have an RGB value in Processing, how are you going to get that to a TV?

  • ahhh I forgot to mention that I'm going to have a raspi per TV :)

  • I figured each pi would be running an instance of Processing

  • OK! That makes things a bit easier. Hmmmmm... I suppose you want one DMX input connector for the whole array and not a DMX input/output for each device? That might get expensive as in the latter case you would need a DMX interface for each Raspi. You could have one master computer send out signals to each raspi using maybe a network protocol if you can get that working. It's probably cheaper and more flexible. You could even have the master computer accept DMX from an interface. I'm not familiar with a Raspi so maybe you know of a better way to connect them? Heck maybe even MIDI works.

  • what would a program look like that would change the color on the screen when given a certain input?

  • It could be something really simple like

    import netP5.*;
    import oscP5.*;
    
    OscP5 oscP5;
    
    color c;
    
    void setup()
    {
      fullScreen();
      oscP5 = new OscP5(this, 12000);
    }
    
    void draw()
    {
      background(c);
    }
    
    void oscEvent(OscMessage message)
    {
      if(message.checkAddrPattern("/color") && message.checkTypetag("iii")) 
      {
        c = color(message.get(0).intValue(), message.get(1).intValue(), message.get(2).intValue());
      }
    }
    

    if you end up going with OSC. This is the program that would run on the Raspis.

    The controlling program would be more complicated. It would need to detect Raspis on the local network (there are Java libraries for this) and send the correct RGB values to them. Maybe you can design some kind of 2D grid with buttons that you can click on to change the IP address and change the colour of that screen. There are probably ways to retrieve some kind of unique ID from a Raspi like MAC address or something. The master program can then poll for the ID of every Raspi it can detect on the local network and map it to the correct colour.

    I advise you to only send an OSC message once a colour changes, not on every draw() iteration.

    You could also try to load and save configuration files of the master program and try opening arbitrary image files and animations...

Sign In or Register to comment.