sort of. check this out. This might be the issue, I'm still reading it.:
http://arduino.cc/forum/index.php?action=printpage;topic=115111.0
I'll need to check out how the UNO is wired to the Atmega...
sort of. check this out. This might be the issue, I'm still reading it.:
http://arduino.cc/forum/index.php?action=printpage;topic=115111.0
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:
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
}
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
https://docs.google.com/file/d/0B98iPi66Ayy4QTFRQkdSQW9MSGs/edit
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
The current on the LED pins will depend on the LED and the resistors you have put in the circuit, so you can calculate based on theory and see if it is close.
The current on D1 should be the MIDI serial interface.
D1 = 7.6mA (probes on D1 and 5v power supply)
The MIDI OUT DIN pins 4,5 = 4.5mA (is as high as it goes).
This is without the led inserted into the MIDI DIN. I guess my thought is that, according to what I've read, MIDI operates on 5mA to 0mA. The MIDI OUT spec only shows 220ohm resistors on pins 4,5 respectively. So where am I losing .5mA or how can I ramp up the mA? be gentle.
The current should drive an optocoupler (effectively a LED), so in my opinion the 0.5mA is not going to make a big difference to how the LED lights up in the coupler.
Have you checked that the opposite (ie, sending 0xff continuous) gives a current that is at least close to 0mA? That couls also be a problem as the LED would stay at lkeast partially lit.
One other thing that may be worth doing is cheking the specs on the Roland cable to see what is expected there. You may have done this already but there is not info on these posts.