Page 1 of 1

Manipulating pixel values with MIDI

Posted: Tue Oct 29, 2019 2:35 pm
by Isle
Hi there,

We have been using QLC+ for a while now and it has been absolutely fantastic. We managed to create 8 LED bars with 168 pixels each, corresponding to 8 universes with 504 independent channels each. I created a piece of software which is capable of converting video material to raw pixel data in the form of javascript files which QLC can read and output to 8 seperate Raspberry Pi's running OLA.

The next step in the whole process was an idea to have a motion sensor for detecting hand movements, and being able to manipulate pixel values with this, using MIDI values. We tested the ability for QLC to output these video images to the LED bars, while simultaneously using the passthrough function with a MIDI input.

This works! However, I'm running into a problem of which I'm not sure I can solve it.

QLC+ remaps MIDI values sequentially from 1 - 532. This is ideal, as I could theoretically output 504 MIDI values from another piece of software I am writing. Using the throughput function, I managed to manipulate up to 385 color channels using the CONTROL CHANGE, NOTE ON/NOTE OFF and NOTE AFTERTOUCH with the velocity parameter. (in raw MIDI, this means using for example: B0 7F 7F, which will set color channel 128 to a DMX value of 255). But since I have 504 color channels, my problem starts when I want to use the PROGRAM CHANGE function, which carries NO velocity parameter (it contains only 2 bytes instead of 3). As PROGRAM CHANGE in QLC starts at channel 385, and ends at 512, this means that the last 128 channels are always set to a maximum value of 255, as you can see on the provided image.

Is there any way to solve this? I know this is somewhat of an abuse of the MIDI protocol, but it seemed like the easiest solution.

Thanks in advance!