Description: A simple Arduino MIDI-to-DMX control was created for a robot band named Science Fiction Children. The setup consists of two inexpensive LED Par56 lights from Stairville, a basic DMX dimmer pack, and Ableton Live for sound management. The objective is to control the various colors and dimming of the lights using MIDI notes, where each note corresponds to a DMX channel and the MIDI velocity indicates the DMX value (brightness). The DMX protocol is a straightforward serial communication method using 3-pin XLR connectors, compatible with standard audio XLR cables. Devices are connected in a chain, with each capable of having multiple channels, allowing for up to 255 channels per chain. For example, to set an LED PAR56 to RGB mode, a value from 0 to 63 is sent to channel 1, followed by brightness values (0-255) sent to channels 1, 2, and 3 for red, green, and blue, respectively. The DMX device start address can be adjusted, shifting the channels accordingly. The circuit includes an optocoupler (4N28) for MIDI input handling, and a serial converter (75176) for DMX output, with alternative options like the MAX481 also being viable.
The Arduino sketch initializes the system by setting up the necessary pin modes and configuring the DMX output. The main loop continuously checks for incoming MIDI data, interpreting note on/off messages and executing corresponding actions. If a note on message is received, the note value is stored, and further incoming data is processed to determine the velocity, which sets the brightness for the respective DMX channel. The playNote function translates the MIDI note and velocity into DMX values, allowing for control of the RGB channels of the LED lights.
The DMX channel configuration is as follows: for device 1, channel 1 sets the DMX mode, channel 2 controls red (MIDI note 1), channel 3 controls green (MIDI note 2), and channel 4 controls blue (MIDI note 3). Device 2 follows a similar structure with its channels starting from channel 8. This setup provides a flexible and efficient method for integrating MIDI control into lighting systems for live performances.I hacked together a quick and dirty Arduino MIDI-to-DMX control for our robot band Science Fiction Children. It`s really simple! And here`s how I did it. I have two really cheap LED Par56 from Stairville (DMX controlled), a simple DMX-Dimmer pack and use Ableton Live for our sound setup.
So all I want is to control the differentcolors and dimmer channels (DMX channels) with each one Midi-Note. The pitch (note) shall represent the channel, the midi velocity shall represent the actual DMX-value (brightness). Some words about the DMX protocol: This is a really simple serial protocol, the connectors are 3-pole XLR and yep you can use normal audio XLR-cables.
The devices (my LED-Par for example) are connected in a chain. Each device can have one or more channels, there are up to 255 channels per chain possible. Let`s have a look at a standard LED PAR56 channel setup: So all we have to do is to send something from 0 to 63 to channel 1 to set the device to RGB Mode and then the brightness value (0. 255) to channel 1. 3 for the brightness of the different colors. Really easy. When you set another start address for the DMX Device, the 5 channels are shifted, e. g. to 7, 8, 9, 10, 11. You have two sections: opto copler 4N28 for handling the MIDI-In. You can probably use other types like the 4N38 as well. Secondly the DMX output section that consists of a serial converter 75176, here you could also use the standard chip MAX481 (see this tutorial ) // welcome to MIDI to DMX by moritz Simon geist.
// Ressources, setup and hardware: // DmxSimple is available from: // Help and support: */ #include byte incomingByte; byte note; byte velocity; int statusLed = 13; // select the pin for the LED int action=2; //0 =note off ; 1=note on ; 2= nada void setup() { pinMode(statusLed, OUTPUT); // declare the LED`s pin as output //start serial with midi baudrate 31250 or 38400 for debugging Serial. begin(31250); /* The most common pin for DMX output is pin 3, which DmxSimple * uses by default. If you need to change that, do it here. */ DmxSimple. usePin(3); /* DMX devices typically need to receive a complete set of channels * even if you only need to adjust the first channel.
You can * easily change the number of channels sent here. If you don`t * do this, DmxSimple will set the maximum channel number to the * highest channel you DmxSimple. write() to. */ DmxSimple. maxChannel(5); } void loop () { if (Serial. available() > 0) { // read the incoming byte: incomingByte = Serial. read(); // wait for as status-byte, channel 1, note on or off if (incomingByte= 144){ // note on message starting starting action=1; }else if (incomingByte= 128){ // note off message starting action=0; }else if (incomingByte= 208){ // aftertouch message starting //not implemented yet }else if (incomingByte= 160){ // polypressure message starting //not implemented yet }else if ( (action=0)&&(note=0) ){ // if we received a "note off", we wait for which note (databyte) note=incomingByte; playNote(note, 0); note=0; velocity=0; action=2; }else if ( (action=1)&&(note=0) ){ // if we received a "note on", we wait for the note (databyte) note=incomingByte; }else if ( (action=1)&&(note!=0) ){ //.
and then the velocity velocity=incomingByte; playNote(note, velocity); note=0; velocity=0; action=0; }else{ //nada } } } void playNote(byte note, byte velocity){ int value=0; if (velocity >10){ value=255; }else{ value=0; } // =DEVICE 1= // DMX CHANEL 1: "2" for seting DMX Mode // DMX CHANEL 2: 0. 255 Control Red ->. MIDI Note "1" (possible C-2) // DMX CHANEL 3: 0. 255 Control Green ->. MIDI Note "2" // DMX CHANEL 4: 0. 255 Control Blue ->. MIDI Note "3" // DMX CHANEL 5: NADA // =DEVICE 2= // DMX CHANEL 8: "2" for seting DMX Mode // DMX CHANEL 9: 0.
255 Control Red ->. MIDI Note 4 // DMX CHANEL 10: 0. 255 Control Green ->. MIDI Note 5 // DMX CHANEL 11: 0. 255 Control Blue ->. MIDI Note 6 // DMX CHANEL
This page covers only the details of MIDI communication on the Arduino module. For a more general introduction to MIDI on a microprocessor, see the MIDI notes on Tom's physical computing site. MIDI, the Musical Instrument Digital Interface, is a...
The timer is activated by the zero-crossing voltage pulse. The time constant is defined by the combination of C5 and the resistors R14 and R15, which determines the conduction angle. The transistors T2 and T3 prevent the power switch from...
Powerful for its size and cost, and extremely easy to learn and use. A voltage monitor was added to a scooter to warn when the battery might need recharging, instead of waiting for the electric starter to fail. An Arduino...
The PhytoBot is a semi-intelligent plant that reacts to external stimuli, specifically light intensity and light location, mimicking the behavior of a phototropic plant. It is designed as an interactive artwork intended for prolonged operation. The motivation behind this design...
The analog to digital sketches have been extensively covered using various components. To progress to more complex circuits and concepts, it is essential to understand these simpler ones. This tutorial will not delve as deeply as others due to the...
The initial step involves selecting software, and CadSoft Eagle was chosen due to the abundance of available tutorials, making it a suitable starting point. Once the process is understood, the choice of software can be reconsidered. For now, the free...
An AC voltage of 30V is rectified. The positive terminal is connected to a fuse and a 100W bulb, while the negative terminal is connected to a thyristor. A Zener diode provides a stable bias voltage. A variable resistor (VR)...
If the number 8 is pressed, it will affect the wire ROW3 and COL2. This allows the microcontroller to determine which key was pressed using only 7 wires from the keypad.
The described circuit involves a matrix keypad configuration, which is...
This circuit generates MIDI clocks and start/stop messages.
The described circuit is designed to produce MIDI clock signals and control messages, which are essential for synchronizing musical devices that utilize the MIDI (Musical Instrument Digital Interface) protocol. The primary function of...
We use cookies to enhance your experience, analyze traffic, and (if you allow) serve personalized ads.
By clicking Accept All, you agree to our use of cookies.
Learn more