UNO + Olimex Midi Shield (Resolved)

Not sure a terminal prog would work. Dont forget, the uno isnt connected via a COM port when its running. Its connected via usb to midi cable, which shows up as a midi device.

connected to the UNO usb port to the pc's usb port:

I downloaded realterm, and I definitely see data coming over.


But I still have no way to see if data comes through my USB to MIDI cable. When it's plugged into the UNO and then into my pc's USB port, it shows up as a MIDI device, not a COM port (to monitor via a terminal app).
edit: I also tried BomeSX MIDI monitoring app, and still I get nothing from the MIDI shield.

Are there any other examples of your midi converter used with the arduino? Looks like something is not workin between the two of them.

sort of. check this out. This might be the issue, I'm still reading it.:

I'll need to check out how the UNO is wired to the Atmega...

The post in link I provided above discussed the USB/MIDI cable that I have, in conjunction with the sparksfun midi shield and the UNO and PRO. but in that scenario, it was the PRO that had 'diminished' mA, as to cause the MIDI signal to be too weak for the USB/MIDI cable to pick it up. But the UNO + Roland UM1 USB/MIDI cable + Sparksfun MIDI shield was not an issue. The measured mA on that was 2,5mA under a load. I have a multimeter, but I'm not really sure how I'd measure mA during a MIDI TX. ?

What I have been able to determine is:

While the UNO is running, the MIDI OUT and MIDI THRU have 5v on both pins 5 & 4 ?

Summary:

PC -> Roland UM-1 USB/MIDI cable - > Olimex MIDI shield -> UNO R3 (powered by 9v battery or USB connection (when uploading sketches)

Software: Arduino IDE 1.0.3, MIDI OX or USBlyzer or SendSX (all are supposed to monitor incoming MIDI or USB ports), MIDI library 3.2

Actions:

  1. Connect UNO + Midi shield (with jumper removed to allow upload of sketch) via USB to computer
  2. upload a simple MIDI TX sketch, such as:
 int velocity = 100;//velocity of MIDI notes, must be between 0 and 127
 //higher velocity usually makes MIDI instruments louder
 
 int noteON = 144;//144 = 10010000 in binary, note on command
 int noteOFF = 128;//128 = 10000000 in binary, note off command

void setup() {
  //  Set MIDI baud rate:
  Serial.begin(31250);
}

void loop() {
  for (int note=50;note<70;note++) {//from note 50 (D3) to note 69 (A4)
    MIDImessage(noteON, note, velocity);//turn note on
    delay(300);//hold note for 300ms
    MIDImessage(noteOFF, note, velocity);//turn note off
    delay(200);//wait 200ms until triggering next note
  }
}

//send MIDI message
void MIDImessage(int command, int MIDInote, int MIDIvelocity) {
  Serial.write(command);//send note on or note off command 
  Serial.write(MIDInote);//send pitch data
  Serial.write(MIDIvelocity);//send velocity data
}
  1. observe that TX led blinks on UNO, serial monitor shows data coming across (although its gibberish)
    a. In addition, using usblyzer, Bulk data transfers are logged.
  2. disconnect USB cable from UNO
  3. connect Roland UM1 USB/MIDI cable to PC and to MIDI OUT of Olimex MIDI shield.
  4. connect 9v power supply to UNO
  5. Observe that TX led no longer lights up
    a. although if I code the LEDs on the Olimex to light during main loop, they do indeed light.
  6. Using MIDI OX, selecting UM1 as the MIDI source, no MIDI data transmitted. Close MIDI OX
  7. Using USBlyzer, select UM1 USB device, No data comes over the wire.
  8. Volt meter shows 5v on MIDI OUT pins 4,5.
  9. 5v on THRU pins, 4,5.

To test the UM1 USB/MIDI cable:

  1. connect UM1 to Korg ES1
  2. press play
  3. loads of MIDI data comes through MIDI OX and USBlyzer

The conclusion that I've reached is that the UNO, by itself, is transferring data across a standard usb cable to the PC/SerialMonitor/USBlyzer (or other port monitor app). But when the MIDI shield is attached and the standard USB cable is not connected, no serial data is being sent.

The question remains, how can I verify that serial data (MIDI data) is being send from the TX pin, out the MIDI OUT and across the wire? I haven't ruled out that it's a mA issue, but that seems unlikely since others have reported the mA under load is about 2,5mA. I'm not sure how to measure the mA using a standard multimeter, but I would doubt that I'd be able to detect it.

update: I picked up some 5v 20mA LEDs and inserted into pin 4 &2 of the MIDI OUT DIN, ran a sketch and the LED blinks. However I'm unable to read any mA's. That could be my meter. I am able to see the voltage drop using my meter. So it would appear something going out the MIDI OUT DIN?

update2: new fuse for my meter. so Ive measured the mA on pins 4 & 5, it's right around 10mA.

Does anyone have any more ideas for this?

Sorry, none from me. It looks like the problem is between systems and I don't have any experience with your other stuff.

question: just a simple sketch to use pinMode to turn on D1 and D7 (led on Olimex board) at the same time and off at the same time : yields strange result: the LEDs are never on at the same time.

shown in video here

Hard to tell if it is strange without seeing any code.

int pinS = 1;  //Serial out pin
int pinF = 7;  //Flag out pin
int pinU = 13;  //Flag out pin
 
void setup()
{
  pinMode(pinS, OUTPUT);
  pinMode(pinF, OUTPUT);
  pinMode(pinU, OUTPUT);
}
 
void loop()
{
  digitalWrite(pinS, HIGH);
  digitalWrite(pinF, HIGH);
  digitalWrite(pinU, HIGH);
  delay(2000);
  digitalWrite(pinS, LOW);
  digitalWrite(pinF, LOW);
  digitalWrite(pinU, LOW);
  delay(2000);
}

sorry, it's been a long week fighting with this thing.

Hold the phone, another generous member here messaged me, and it turns out my LED is a "blinking LED". So this isn't so strange after all.

update: new, correct type of led inserted into pins 4 & 5 = rapid fast blinks. All this seems to say data is being sent. This seems to indicate the issue is the MIDI/USB cable (Roland UM1)?

What if the mA range that is req'd for MIDI to work, isn't being reached? According to this

http://www.personal.kent.edu/~sbirch/Music_Production/MP-II/MIDI/midi_physical_layer.htm

It has to be 5mA to work. If I slow down the baud rate enough, would I be able to detect if it's hitting 5mA to 0mA?

And for those still reading this saga: check out oxmidi project. could be useful.

Olimex finally contacted me and they weren't much help unfortunately. They test these boards by connecting them to each other and sending MIDI back & forth. I don't believe they even test these on MIDI devices! grrr

You can try sending a stream of 0 bytes out the port to measure the current. 0 is defined as 5 mA according to the article.

does that mean that the 'rest-state' of MIDI should be 5mA?

Not sure what you mean by the 'rest state', but the '0' or 'off' signal is 5mA (which is not 'off' at all, but that is the way the hardware standard is defined), sort of inverse logic. I am sure there are good electrical/comms reasons to define it that way, but I don't know whatthey are.

On Olimex board, 7.3 mA on D1 & 5v supply:

4.5mA on MIDI OUT DIN pins 4 &5.

this is with my meter set on 2m. Doesn't that seem low? The running sketch is sending a midi note on and off.

note: I could very well be reading my meter incorrectly. I'm still learning

edit: I updated the readings after I realized the meter should be on 2m