Midi Light Show using Arduino

For a class, my teammate and I decided to develop a MIDI based system that has a responsive light for each note played.  For example, if you plug our little setup to a keyboard, pending on which note you press, you’ll get a specific color.  You’ll need a list of several items, but the reward is quite nice!  Plus, there are a lot of possible improvements and developments from the original idea, so please take the liberty to expand on this concept once you’ve put everything together.

Arduino Midi Light Show

Step 2: Putting It All Together

The main format of this schematic is that each pin of the LED is connected to a different pin on the Midi Shield.  note the lower voltage for the red leg of our LED. The cathode goes to ground.  The midi shield connects on top of the Arduino, which is why extended headers are necessary for the function of our lights. This is an extremely simple and straightforward build, but it provides a lot of room for expansion as well.

Step 3: Midi Concepts…

To program with Midi, you must understand a few key concepts that determine how the information is read.

Midi sends information with 3 bytes of information at a baud rate of 31250. The first byte determines whether a note is turned on, the next byte determines what pitch is played, and the third byte determines the volume of the note.  It is important to note the order of the information as if you don’t set the code to read in this order for only 3 bytes, funny things start happening. Trust us.

Arduino Midi Light Show Circuit

Consider the following code:

//reads the serial port to see if there is any incoming information
boolean check_midi()
{
   while (Serial.available() >= 3)//when three bytes available
   {
     if (Serial.available())
     {
       digitalWrite(3,HIGH);    
       location_byte = Serial.read();//read first byte
       in_note = Serial.read();//read next byte
       in_volume = Serial.read();//read final byte
       return true;
     }
   }
}
Major Components in Project

What you’ll need…

Step 1 — Materials Needed:
1 Arduino- The Arduiono used for this project was a Freeduino v 1.22.  This did not come pre-assembled, Other boards can be used, as long as the pins are able to line up with those used on the midi shield

1 Midi Shield-  DF Robot Midi Shield (http://www.dfrobot.com/index.php?route=product/product&product_id=526). This Midi Shield did NOT come with extended headers, so we needed to replace the pins connecting the shield to the arduino with extended headers. This process requires desoldering and soldering tools, so consider this when choosing your midi shield.

1 LED- RGB LED (4 pins) — Check the information on your LEDs before using them. You can use an LED calculator http://led.linear1.org/1led.wiz to determine the proper resistors needed for your circuit. The Arduino produces 5 volts.

1 MIDI Cable (USB to MIDI is optional, it depends on the instrument used with your midi shield

2 1kΩ resistors (Brown-Black-Red)

1 560Ω resistor (Green-Blue-Brown)

The resistors used depends on the LED. These resistors produced a consistent brightness between all three colors. the 1kΩ resistors were used for the blue and green legs, and the 560Ω resistor was used with the red leg.

Wires — For the simplest experience, choose Red, Green, and Blue wires for the different legs of the LED, and a black wire as the ground.

Breadboard

4 Extended Headers (Optional) Only used if the Midi shield needs to be modified.

For more detail: Midi Light Show using Arduino


About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:
LinkedinTwitter

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top