I'm having a hell of a time with this, and I'm not a programmer. I bought a duemilanove thinking there was enough documentation to do what I want to do so I could easily learn, but i'm seeing this is not the case.

I'm in a band and I just need to get something built and working well. I don't want to spend a long time learning programming just to get this to work.

In addition to our MIDI IN tread, I can suggest you to have a look at this library http://www.arduino.cc/playground/Main/LedControl and the matrix example.You only need conditions and some "lc.setLed(0,row,col,true);" to light up the leds.

@tep Cool. I had seen the schematic aspect of the MAX7221 section, but had not found the library part. Thank you!

@LiMiT I've checked out those links. My question is: I see folks are building the MIDI in through a standard midi 5-pin connector...can the same thing be done via the USB cable? I need to power all the LEDs in the enclosure, so one USB cable would be better than an external power supply and a MIDI cable. If that greatly complicates the project or makes it less stable somehow though, I can go with the two wire route...

So my basic understanding is I will kludge the midi input with the library for the LED matrix output...but that's where I need the help because I don't know how to gule them together!

All right-I have had some success! I got that software midi input working. I am now able to receive those MIDI feedback notes from Ableton into Arduino! Now I just have to figure out how to tell Arduino what to do with that information!

Good, you see, never give up ! Simplify the matrix code to just manual light on some led, it will be very clear later.For the moment don't look after the blinking leds, just on and off and will look at that later

Thanks for your informations about midi note control in ableton live! I didn't yet looked after that, but the possibilities are great!

// *****************************************************************************************************************// * *// * SpikenzieLabs.com *// * *// * Very Simple Serial to MIDI DEMO *// * *// *****************************************************************************************************************//// BY: MARK DEMERS // May 2009// VERSION: 0.1//// DESCRIPTION:// Demo sketch to play notes from middle C in the 4th octave up to B in the 5th octave and then back down.////// HOOK-UP:// 1. Plug USB cable from Arduino into your computer.// //// USAGE:// 1. Install and Set-up Serial MIDI Converter from SpikenzieLabs// 2. Open, compile, and upload this sketch into your Arduino.// 3. Run Serial MIDI Converter in the background.// 4. Launch your music software such as Garage Band or Ableton Live, choose a software instrument and listen to the music.////// LEGAL:// This code is provided as is. No guaranties or warranties are given in any form. It is up to you to determine// this codes suitability for your application.//

/* Now we need a LedControl to work with. ***** These pin numbers will probably not work with your hardware ***** pin 12 is connected to the DataIn pin 11 is connected to the CLK pin 10 is connected to LOAD We have only a single MAX72XX. */LedControl lc=LedControl(12,11,10,1);

/* we always wait a bit between updates of the display */unsigned long delaytime=100;

void setup() { /* The MAX72XX is in power-saving mode on startup, we have to do a wakeup call */ lc.shutdown(0,false); /* Set the brightness to a medium values */ lc.setIntensity(0,8); /* and clear the display */ lc.clearDisplay(0);}

/* This method will display the characters for the word "Arduino" one after the other on the matrix. (you need at least 5x7 leds to see the whole chars) */void writeArduinoOnMatrix() { /* here is the data for the characters */ byte a[5]={B01111110,B10001000,B10001000,B10001000,B01111110}; byte r[5]={B00111110,B00010000,B00100000,B00100000,B00010000}; byte d[5]={B00011100,B00100010,B00100010,B00010010,B11111110}; byte u[5]={B00111100,B00000010,B00000010,B00000100,B00111110}; byte i[5]={B00000000,B00100010,B10111110,B00000010,B00000000}; byte n[5]={B00111110,B00010000,B00100000,B00100000,B00011110}; byte o[5]={B00011100,B00100010,B00100010,B00100010,B00011100};

/* This function lights up a some Leds in a row. The pattern will be repeated on every row. The pattern will blink along with the row-number. row number 4 (index==3) will blink 4 times etc. */void rows() { for(int row=0;row<8;row++) { delay(delaytime); lc.setRow(0,row,B10100000); delay(delaytime); lc.setRow(0,row,(byte)0); for(int i=0;i<row;i++) { delay(delaytime); lc.setRow(0,row,B10100000); delay(delaytime); lc.setRow(0,row,(byte)0); } }}

/* This function lights up a some Leds in a column. The pattern will be repeated on every column. The pattern will blink along with the column-number. column number 4 (index==3) will blink 4 times etc. */void columns() { for(int col=0;col<8;col++) { delay(delaytime); lc.setColumn(0,col,B10100000); delay(delaytime); lc.setColumn(0,col,(byte)0); for(int i=0;i<col;i++) { delay(delaytime); lc.setColumn(0,col,B10100000); delay(delaytime); lc.setColumn(0,col,(byte)0); } }}

/* This function will light up every Led on the matrix. The led will blink along with the row-number. row number 4 (index==3) will blink 4 times etc. */void single() { for(int row=0;row<8;row++) { for(int col=0;col<8;col++) { delay(delaytime); lc.setLed(0,row,col,true); delay(delaytime); for(int i=0;i<col;i++) { lc.setLed(0,row,col,false); delay(delaytime); lc.setLed(0,row,col,true); delay(delaytime); } } }}

void loop() { writeArduinoOnMatrix(); rows(); columns(); single();}

But I'm still not sure how to get the info I'm recieving from the converter to send a signal to the LEDs,

/* Now we need a LedControl to work with. ***** These pin numbers will probably not work with your hardware ***** pin 12 is connected to the DataIn pin 11 is connected to the CLK pin 10 is connected to LOAD We have only a single MAX72XX. */LedControl lc=LedControl(12,11,10,1);

/* we always wait a bit between updates of the display */unsigned long delaytime=100;

void setup() { /* The MAX72XX is in power-saving mode on startup, we have to do a wakeup call */ lc.shutdown(0,false); /* Set the brightness to a medium values */ lc.setIntensity(0,8); /* and clear the display */ lc.clearDisplay(0);}

Well, I used your above code, and I do have the LED at 4,4 blinking...and I do have the little onboard RX led giving me an indication that I'm getting something to the board, but the blinking LED doesn't seem to be interacting with the input...it blinks with any or no input. :-?

Yeah-I'm sorry, but I'm trying to merge these two pieces of code, and just getting errors because I don't know what I'm doing. 4:30am here, so I'm going to have to sleep and try again tomorrow. Thank you so much for your help in getting me this far! I'm glad to know that I want to do is possible.

/* Now we need a LedControl to work with. ***** These pin numbers will probably not work with your hardware ***** pin 12 is connected to the DataIn pin 11 is connected to the CLK pin 10 is connected to LOAD We have only a single MAX72XX. */LedControl lc=LedControl(12,11,10,1);

/* we always wait a bit between updates of the display */unsigned long delaytime=100;

void setup() { /* The MAX72XX is in power-saving mode on startup, we have to do a wakeup call */ lc.shutdown(0,false); /* Set the brightness to a medium values */ lc.setIntensity(0,8); /* and clear the display */ lc.clearDisplay(0);}

/* Now we need a LedControl to work with. ***** These pin numbers will probably not work with your hardware ***** pin 12 is connected to the DataIn pin 11 is connected to the CLK pin 10 is connected to LOAD We have only a single MAX72XX. */LedControl lc=LedControl(12,11,10,1);

/* we always wait a bit between updates of the display */unsigned long delaytime=100;

void setup() { /* The MAX72XX is in power-saving mode on startup, we have to do a wakeup call */ lc.shutdown(0,false); /* Set the brightness to a medium values */ lc.setIntensity(0,8); /* and clear the display */ lc.clearDisplay(0);}

Merge the two codes :- before the setup- the setup- inside the main loop, digitalWrite(statusLed, HIGH); and digitalWrite(statusLed, LOW); will be basically replaced by lc.setLed(0,col,row,true); or lc.setLed(0,col,row,false);