Go Down

Topic: Arduino & Resolume ? (Read 21173 times) previous topic - next topic


For the past couple of months I have made few Arduino projects for the purpose of integration various systems with Resolume Arena.
Custom VJ controller's, custom RGB and 12V LED Lights, custom video wall with WS2812 stripe and tested them live on stage few times.

In theory, MIDI and OSC protocols seem to be a good choice for communication, but in practice that has been shown differently...

Arduino projects where hardware mostly need to receive signal or information from the software, the DMX protocol was best choice.
Main goal in such projects is fast communication.

Projects where software receives commands from hardware needs much less communication but goal here is highest possible reliability.
I have managed to get most reliable results sending signals to opensource software MCE Controller which act as tiny server who then
send's keystrokes and other commands to running Arena instance.
Using this method i have minimalise every possible interference with other devices that may be used live on stage which have MIDI as only option for communication.  


Thank you for mentioning  MCE Controller. Looks quite interesting.
Always decouple electronic circuitry.


Hello, is anyone using that code? or has tried to? I want to use more potentiometers but I cannot seem to know enough to make it work. Maybe you can help me out, I want to use some more pots. this is my version of the code.

// include MIDI library
#include <MIDI.h>

// set analog values to 0
int analogValue_1 = 0;
int analogValue_2 = 0;
int analogValue_3 = 0;

// Maximum MIDI value is 127. To notice change, even if first value is 127, the last value is set to 128
int lastanalogValue_1 = 128;
int lastanalogValue_2 = 128;
int lastanalogValue_3 = 129;

void setup() {
  // 115200 Hairless MIDI Serial Bridge baud rate


void loop() {
  // Analog potentiometer

  // Potentiometer gives values up to 1023. MIDI signal ranges from 0 to 127, therefor we devide by 8.

  int analogValue_1 = analogRead(A0) / 8;
  int analogValue_2 = analogRead(A1) / 8;
  int analogValue_3 = analogRead(A2) / 8;

  // Potentiometer could be too sensitive and give different (+-1) values.
  // Check if the last value is more than this minor fluctuation, if so send the signal.
  if ((analogValue_1 - lastanalogValue_1) > 1 || (analogValue_1 - lastanalogValue_1) < -1) {
    // Has the value changed?
    if (analogValue_1 != lastanalogValue_1) {

      // More info: http://arduinomidilib.sourceforge.net/a00001.html
      // Send serial value (ControlNumber 1, ControlValue = analogValue_1, Channel 1)
      MIDI.sendControlChange(1, analogValue_1, 1);

      lastanalogValue_1 = analogValue_1; //Set the current value as the last value

  if ((analogValue_2 - lastanalogValue_2) > 1 || (analogValue_2 - lastanalogValue_2) < -1) {
    if (analogValue_2 != lastanalogValue_2) {
      MIDI.sendControlChange(2, analogValue_2, 1);
      lastanalogValue_2 = analogValue_2;
  if ((analogValue_3 - lastanalogValue_3) > 1 || (analogValue_3 - lastanalogValue_3) < -1) {
    if (analogValue_3 != lastanalogValue_3) {
      MIDI.sendControlChange(3, analogValue_3, 1);
      lastanalogValue_3 = analogValue_3;


Go Up