Detecting MIDI signals: MEGA to DUE programme conversion

I have a working programme for a MEGA that detects if a midi note ON is received at the serial port. It works great .. but its not working on the DUE.
The programme compiles and uploads fine.

I'm including the midi libraries midi.h / midi_Defs.h etc.
I've also included the line MIDI_CREATE_DEFAULT_INSTANCE()
However, I'm not really using the MIDI library as it's more basic ...

[ ...includes here...]

void setup(){

[ ...stuff here...]



void loop(){

if(Serial.available()>2) {
inByte =

[ then IF statements to check if it's the correct ON byte to listen for etc.]


[ ...stuff here...]


So the MEGA is fine ... but the DUE doesn't detect any messages.

Should I be looking at a hardware issue? ie Could it be that the MIDI shield I am using doesn't work on a DUE
This is the one I have used.. which is pretty basic....

or should I be looking at a software issue?

Anyone have any experience of this?


Have you handled the voltage level difference? The Mega is a 5V device, the Due 3.3V.

Good question! Thanks!
Since I posted I have been in touch with three Arduino midi shield manufacturers. All said their shields were not designed or tested for the Due... and advised me try customising them by making the pin that would connect to the 5V pin link to the 3.3v pin instead. They said things like 'It might just work' looks like it's not an area well explored at the moment.
I've got my soldering iron out to try it... I'll post an update shortly. Thanks again!

Looks like a hardware issue at my end.
Still experimenting ... can get Midi communication on Serial3... but not on others using a 6N139 chip..which runs off 3.3V
Probably need to improve my electronics skills. Thanks for the support.

Modifying the shield to use the 3.3V instead of the 5V might work, but you may need to reduce the TX resistor values to get the current back up to what it would have been with 5V (tricky with surface mount components). Does either MIDI IN or OUT work?