This is such a great introduction to MIDI! I'd wish I'd found it sooner, but it's just in time for my summer-break-hobby-project - A custom-built MIDI Footswitch to control my NUX MG-30, which will require some tweaking, as that for whatever reason only accepts MIDI values from 0 to 100. Gonna be fun, and even if it doesn't work out as well as I hope, it'll be a good learning experience 😄
I love so much how this series explain all the basics Arduino software coding in details, slow and easy to understand for all. Great work Notes and Volts! Midi and triggers would be a great topic to subscribe, but also visual, with the Pi Pico VGA out, or even the Nano but smaller screen. I'm completely noob when it comes to visualization on small screens. Even identifying the kind of screen is troubling to begin with.
Good stuff! Hope that in a future video you cover MIDI over USB, with the Arduino being recognized as a standard MIDI device on the computer or tablet the USB is connected to.
🤯This Arduino MIDI series is exactly what I need to know, not for creating music, but for creating laser waveform imagery with Teensy board x/y image generators with subroutine keys and CC parameters being MIDI controlled. 🙏 Thank you! Better to be 7 years late, than never, right?. Hoping to find an episode on interfacing with a DAW's timeline to complete the process.😎
Really great video. It's my first time to use arduino and I'm planning to create a velocity-sensitive midi drums. This video will help me get started. Thanks!
Warning! I'm about to talk about Raspberry Pis and not Arduinos... A side effect of the Raspberry Pi Zero having a USB OTG port is that it can be configured and used as a USB Device/Gadget rather than just a host. This offers the potential to build a USB MIDI interface (and possibly also build in some intelligence too). Multiple RPi's in one case could potentially equate to a multi-port interface too. At $5 a piece that's a significant saving over pre-built multi-port midi interfaces....~$250 for a MOTU 8x8 MIDI interface for instance. Have you worked with RPi's? Do you think this'd be a worthwhile project?
While it will work fine and not damage anything, the schematic in the video is slightly wrong compared to the actual MIDI standard. It is missing one 220 ohm resistor on the TX pin. When connected to a MIDI input, that will add up to the correct 660 ohms in series when driven from 5V, and not 440 ohms.
I noticed this resistor missing, as compared to the tutorial Arduino offers. Thanks for mentioning this. If the resistor is missing, does that just mean the optocoupler's (from the previous videos in this series) internal LED gets more voltage than it needs? Oh hey your comment is 2 years old. Anyway, hello from the future!
At time 5:40 the narrator says "the keyboard should be playing middle C at 1 second intervals". But it should be playing middle C at 2 second intervals, no ? (note on + 1 sec delay + note off + 1 second delay = 2 seconds between successive note on's.
Please show us how to implement a Midi Thru , so that the breadboard would have both the Midi In and Out as well as software to pass all Midi input message (notes,CC, anything else?) to output. Thanks!
ultimately i have 2 projects I want to pursue here, I want to make a device which can record/passthrough midi, so that i can record keyboard notes into a midi file for later while also allowing them to pass through to a synth. The second goal is to create some sort of piano roll style midi editor which allows me to edit those recorded midi files, and to allow playback across a midi out port. I am not sure if a piano roll type application which could support a screen/gui with a mouse is feasible on an arduino or if i need to explore using a rasberry pi instead.
Hi, Great video, very clear. I'm hoping someone can help me with the following: I'm attempting to put something together for a friend who has cerebral palsy and is keen to play percussion using his wheel chair control system in our band. His chair has a 3 switch head controller (DX-5SW 5 Switch Module) that can map to some output contacts, and we have a spare Roland TD-9 electronic drum controller with a midi in jack. I was thinking that there must be a way to connect the normally open contacts from the chair to this Arduino circuit so they trigger a drum sound from the TD-9 to the PA. Any suggestions would be greatly appreciated.
+Karl Lorenz Hi Karl. That sounds really cool! I would love to help you with this. The MIDI connection to the TD-9 should be straight forward. You are simply sending note on and off commands to the unit like in the video (a different note for each switch). The output from the chair controller i am guessing uses relays that are open and closed via the buttons on the chair. We just need to know exactly what this device is outputting (a switch or is it outputting a voltage of any kind). Contact me at my email address at www.notesandvolts.com under the "contact" tab if you would like to talk further.
Hi Dave! I've successfully made an arduino midi controller by watching your tutorials, I want to go a bit further and turn that into a wireless one by using bluetooth low energy. Could you please share some tips on how to achieve that or make video if possible? I've seen a few tutorials using adafruit boards but I want to see if that same thing can be achieved by Bluetooth modules like HM-10.
I've watched all your MCU Midi video's and I've finally started my own project. I'm using the code shown in this video and an ESP8266 to send Midi data to my Behringer Neutron (I just switched to 47 ohm resistors because of the 3.3v logic). But for some reason my LFO stops working as soon as I've sent a Midi note. Other than that it works perfectly! Do you have any thoughts on this? I feel like it might be sending some Midi CC data somehow. Thanks for the very informative video's btw!!
I was reading only certain Arduinos are midi class compliant. Like only certain boards are recognized as native midi controllers when you plug in usb. So in this case if you use a 5 pin midi output you can use a regular Arduino uno without flashing it with custom firmware and it can be used as a midi controller?
Thanks for all details. I have question also I have chep old keyboard piano Then i remove old circuit board. It is posible to Replace arduino circuit board for my old keyboard piano??
Noobie question. But how do you turn a button into a playable note. For example, when the button is pressed ( == HIGH) it sends NoteOn message ONCE and when i release it it gives NoteOff message, also only once. Thanks!
Hey, can somebody help me with a problem? I connected my wii drumset with my roland e drumset, so i can play guitar Hero with the e drumset. the problem is, that the midi cable sends 2 information, when i hit the drum. so the game registers 2 notes, while i actually hit the drum once. my plan was to use the arduino as a connector and code it, so that the e drumset just gives one output. does this work?
would there be any differences if I were using a arduino pro mini? I wrote a code to send program changes through midi out, it works perfectly on the arduino uno but when I try to use it on pro mini, the messages that sent through the serial port seem to be totally random
I need some help. I am trying to design a MIDI IN and MIDI OUT circuit for an esp8266. It is a 3.3v system. I have searched all over google and youtube for the right circuits. Some even have the MIDI pins 4 and 5 reversed.. Which pin is more positive than the other? (Pin 4 or 5?) In a MIDI OUT circuit, do I connect the V+ side to 3.3v or 5v? (I am using a esp8266) Would I need an opto-isolator on output to protect it when driving a 5v circuit from a 3v pin? Could you please show us a MIDI IN/OUT circuit designed to work on a 3.3volt system? One last question: Are there any MIDI commands that can be used to tell a servo what position to goto?
hey Dave, is there something else i have to do if i'm using the mega? every thing i've tried( this out test, and a drum sketch ) works as far as the led does what it's supposed to do, but i get nothing going out midi to the computer. i'm thinking that since there are more rx and tx pins on the mega , that maybe both the sketches i've tried are missing something. any ideas?
Great Stuff! I'm using the test program in a pc, (arduino ---> serial midi converter ---> virtual midi keyboard) and somehow i did not get any notes. I set the port to 115200 bps. In the Arduino IDE the code compiles fine, the arduino shows the TX and 13 pin led working... I don't have a real midi keyboard or device...so, I'm checking the signal strength in ableton live, and it shows to be very low signal compared to playing a note with the mouse in the virtual midi keybord... any sugestions?
Hi thanks for videos. i want to make an footswitch, very simple, two button. For my guitar amp. Your procejts very complicated. Can you help me?? Thaks a lot.
Sorry for not really answering your question, but at least I know how to change to another MIDI channel. I plan to make an Arduino based drum machine, so all I did was to just change the 0x90 commands to 0x99 and out from my GM synth came all kinds of drum sounds instead of the piano scale!
I tried using a mega arduino 2560 did not work and another thing the led keeps blinking if it is connected in the usb using a source it does not continue.
Thanks for the video! "before we upload the program, we need to remove the wires from the rx and tx pins" - but they aren't connected to anything anyways when you do it on the vid? :) However, I'm having problems with just this thing, getting: *** [upload] could not open port /dev/cu.wchusbserial213220: [Errno 16] Resource busy: '/dev/cu.wchusbserial213220' and can't upload a new sketch to the nano I'm using. Is there any trick to not make the arduino run a lot of stuff on the serial when powered up for receiving a new sketch? I remember something about doing some timed precess on reset on the Mega that's controlling my 3d printer for this same reason…
Hi Victor. I remove the wires from RX when uploading since it shares the line with the Arduino USB and can cause an error but that should not be the case here. I have not seen that error message before. It looks looks like an OSX thing. Are you using a MAC for this?
how do you make program changes or patch changes with arduino I've been looking for a library or even a sketch to try to work from and have come up empty handed can you help?
Hi MrKk. The ground pin on the Midi Jack is connected on the Output jack only. Not on Input jacks. This is to prevent ground loops between the two instruments.
OK Basically the TX device will shield the cable but @ the receiver (synt) "midi in" side pin 2 is supposed not connected. (I will check this in service manual of my Roland RD700sx :-) I'm seeing Your schetch output through an oscilloscope decoder as per this video: czcams.com/video/9enveiI0eg4/video.html Thanks for the incredible precision of Your Work.
I presume you use the "Hairless MIDI Serial Bridge" to convert Serial Signals into MIDI? If so, take a look into Hairless' Readme.txt: you have to add "Serial.begin(115200);" at the end of the setup() function.
This is such a great introduction to MIDI! I'd wish I'd found it sooner, but it's just in time for my summer-break-hobby-project - A custom-built MIDI Footswitch to control my NUX MG-30, which will require some tweaking, as that for whatever reason only accepts MIDI values from 0 to 100. Gonna be fun, and even if it doesn't work out as well as I hope, it'll be a good learning experience 😄
I love so much how this series explain all the basics Arduino software coding in details, slow and easy to understand for all. Great work Notes and Volts! Midi and triggers would be a great topic to subscribe, but also visual, with the Pi Pico VGA out, or even the Nano but smaller screen. I'm completely noob when it comes to visualization on small screens. Even identifying the kind of screen is troubling to begin with.
Glad you enjoy it! Lots of good ideas for future videos
Good stuff! Hope that in a future video you cover MIDI over USB, with the Arduino being recognized as a standard MIDI device on the computer or tablet the USB is connected to.
that would give alot of access to instruments without the midi connection right?
This basic code actually does work for MIDI over USB. There are other ways to do it, but this totally worked for me.
🤯This Arduino MIDI series is exactly what I need to know, not for creating music, but for creating laser waveform imagery with Teensy board x/y image generators with subroutine keys and CC parameters being MIDI controlled. 🙏 Thank you!
Better to be 7 years late, than never, right?.
Hoping to find an episode on interfacing with a DAW's timeline to complete the process.😎
Really great video. It's my first time to use arduino and I'm planning to create a velocity-sensitive midi drums. This video will help me get started. Thanks!
Warning! I'm about to talk about Raspberry Pis and not Arduinos...
A side effect of the Raspberry Pi Zero having a USB OTG port is that it can be configured and used as a USB Device/Gadget rather than just a host. This offers the potential to build a USB MIDI interface (and possibly also build in some intelligence too). Multiple RPi's in one case could potentially equate to a multi-port interface too. At $5 a piece that's a significant saving over pre-built multi-port midi interfaces....~$250 for a MOTU 8x8 MIDI interface for instance.
Have you worked with RPi's? Do you think this'd be a worthwhile project?
While it will work fine and not damage anything, the schematic in the video is slightly wrong compared to the actual MIDI standard. It is missing one 220 ohm resistor on the TX pin. When connected to a MIDI input, that will add up to the correct 660 ohms in series when driven from 5V, and not 440 ohms.
I noticed this resistor missing, as compared to the tutorial Arduino offers. Thanks for mentioning this. If the resistor is missing, does that just mean the optocoupler's (from the previous videos in this series) internal LED gets more voltage than it needs? Oh hey your comment is 2 years old. Anyway, hello from the future!
@@markfdesimone yes
I'm always stunned how simple some things are with Arduino.. Thanks really needed this to start making a controller for an old synth. Subbed! ❤️😎👍😁
Glad you liked it!
this series is invaluable, thank you!!
You're so welcome!
You just saved my life
I'm glad!
woah that was quick. thought that was a quick overview before you actually showed how to wire it...
This is exactly what I was looking for, thanks!
At time 5:40 the narrator says "the keyboard should be playing middle C at 1 second intervals". But it should be playing middle C at 2 second intervals, no ? (note on + 1 sec delay + note off + 1 second delay = 2 seconds between successive note on's.
Please show us how to implement a Midi Thru , so that the breadboard would have both the Midi In and Out as well as software to pass all Midi input message (notes,CC, anything else?) to output. Thanks!
Awesome video series, thank you!
+Joelifant Thanks Joelifant!
Can you please show us how to add a piezo element as a midi note trigger?
Awesome Video Series! 👍
One Port Type is missing:
How I can make a Midi Thru Port work?
ultimately i have 2 projects I want to pursue here, I want to make a device which can record/passthrough midi, so that i can record keyboard notes into a midi file for later while also allowing them to pass through to a synth.
The second goal is to create some sort of piano roll style midi editor which allows me to edit those recorded midi files, and to allow playback across a midi out port.
I am not sure if a piano roll type application which could support a screen/gui with a mouse is feasible on an arduino or if i need to explore using a rasberry pi instead.
very good video! :)
how about a "midi2CV" to maybe run a 'Korg Monotron Delay' via MIDI?
this would be great!
thx and keep up the good work!
that's a beautiful DX7 or FM Synth
It's a DX-100, the cheap version of the DX7.
Hi, Great video, very clear. I'm hoping someone can help me with the following: I'm attempting to put something together for a friend who has cerebral palsy and is keen to play percussion using his wheel chair control system in our band. His chair has a 3 switch head controller (DX-5SW 5 Switch Module) that can map to some output contacts, and we have a spare Roland TD-9 electronic drum controller with a midi in jack. I was thinking that there must be a way to connect the normally open contacts from the chair to this Arduino circuit so they trigger a drum sound from the TD-9 to the PA. Any suggestions would be greatly appreciated.
+Karl Lorenz Hi Karl. That sounds really cool! I would love to help you with this.
The MIDI connection to the TD-9 should be straight forward. You are simply sending note on and off commands to the unit like in the video (a different note for each switch).
The output from the chair controller i am guessing uses relays that are open and closed via the buttons on the chair. We just need to know exactly what this device is outputting (a switch or is it outputting a voltage of any kind).
Contact me at my email address at www.notesandvolts.com under the "contact" tab if you would like to talk further.
can you say hi to him for me? love from Malaysia :)
Nice work! Great tutorial! Can you do a video to explain how to send/ receive midi SysEx with arduino? thanks
Thanks for sharing.
Sending and receiving midi cc messages would be cool.
Hi Dave! I've successfully made an arduino midi controller by watching your tutorials, I want to go a bit further and turn that into a wireless one by using bluetooth low energy. Could you please share some tips on how to achieve that or make video if possible? I've seen a few tutorials using adafruit boards but I want to see if that same thing can be achieved by Bluetooth modules like HM-10.
I've watched all your MCU Midi video's and I've finally started my own project. I'm using the code shown in this video and an ESP8266 to send Midi data to my Behringer Neutron (I just switched to 47 ohm resistors because of the 3.3v logic). But for some reason my LFO stops working as soon as I've sent a Midi note. Other than that it works perfectly!
Do you have any thoughts on this? I feel like it might be sending some Midi CC data somehow.
Thanks for the very informative video's btw!!
Grate work thank you so much! :D
Is there a list for all the Midi Functions for the Arduino? I've been at the Adruino website but can not locate it.
I was reading only certain Arduinos are midi class compliant. Like only certain boards are recognized as native midi controllers when you plug in usb. So in this case if you use a 5 pin midi output you can use a regular Arduino uno without flashing it with custom firmware and it can be used as a midi controller?
The Uno/Nano can't do USB Midi without modification. Some other models can though. I like using the Teensy micros for USB stuff.
Thanks for all details.
I have question also
I have chep old keyboard piano
Then i remove old circuit board.
It is posible to
Replace arduino circuit board for my old keyboard piano??
you have the din5 connector plugged into the ground at the top with the first 2 pins?What about the 2 pins in the front? There are 7 pins total.
Can you show us how to use a ping distance sensor to modulate a midi notes volume
You could probably just use a cc command in your daw
Noobie question. But how do you turn a button into a playable note. For example, when the button is pressed ( == HIGH) it sends NoteOn message ONCE and when i release it it gives NoteOff message, also only once.
Thanks!
Well that wasnt so hard. The midi library seems flexible.
Curious about possibilities with a 13 key Pedal Board that may not a have a MIDI out socket.
Hey, can somebody help me with a problem? I connected my wii drumset with my roland e drumset, so i can play guitar Hero with the e drumset. the problem is, that the midi cable sends 2 information, when i hit the drum. so the game registers 2 notes, while i actually hit the drum once. my plan was to use the arduino as a connector and code it, so that the e drumset just gives one output. does this work?
would there be any differences if I were using a arduino pro mini? I wrote a code to send program changes through midi out, it works perfectly on the arduino uno but when I try to use it on pro mini, the messages that sent through the serial port seem to be totally random
doesn't work for me
im using a USB-Midi converter, connected to IN cable
Is this possible to do without any PC connection? Running the board externally I mean and still sending MIDI CC's?
I need some help. I am trying to design a MIDI IN and MIDI OUT circuit for an esp8266. It is a 3.3v system.
I have searched all over google and youtube for the right circuits. Some even have the MIDI pins 4 and 5 reversed.. Which pin is more positive than the other? (Pin 4 or 5?)
In a MIDI OUT circuit, do I connect the V+ side to 3.3v or 5v? (I am using a esp8266) Would I need an opto-isolator on output to protect it when driving a 5v circuit from a 3v pin?
Could you please show us a MIDI IN/OUT circuit designed to work on a 3.3volt system?
One last question:
Are there any MIDI commands that can be used to tell a servo what position to goto?
hey Dave, is there something else i have to do if i'm using the mega? every thing i've tried( this out test, and a drum sketch ) works as far as the led does what it's supposed to do, but i get nothing going out midi to the computer. i'm thinking that since there are more rx and tx pins on the mega , that maybe both the sketches i've tried are missing something. any ideas?
Great Stuff! I'm using the test program in a pc, (arduino ---> serial midi converter ---> virtual midi keyboard) and somehow i did not get any notes. I set the port to 115200 bps. In the Arduino IDE the code compiles fine, the arduino shows the TX and 13 pin led working... I don't have a real midi keyboard or device...so, I'm checking the signal strength in ableton live, and it shows to be very low signal compared to playing a note with the mouse in the virtual midi keybord... any sugestions?
Hi thanks for videos. i want to make an footswitch, very simple, two button. For my guitar amp. Your procejts very complicated. Can you help me?? Thaks a lot.
Please. Can u tell me how can I do the same thing in an Arduino Nano? tks
Hi Mario. It should work on a Nano no problem as it is the same processor as the Uno. Just hook it up to the Nano TX pin.
can we do the Same thing with USB input jack...
can it developed sending and receiving midi over bluetooth?
can anybody tell me how to change the timbre ?
Sorry for not really answering your question, but at least I know how to change to another MIDI channel. I plan to make an Arduino based drum machine, so all I did was to just change the 0x90 commands to 0x99 and out from my GM synth came all kinds of drum sounds instead of the piano scale!
Please anyone....where can i get ''ready made'' arduino code for a 76 key midi keyboard .....any idea ???
I tried using a mega arduino 2560 did not work and another thing the led keeps blinking if it is connected in the usb using a source it does not continue.
Any luck with this? Not working here on Mega either. I suspect it may be something about the TX pin (I've tried with TX0 and TX1 and no luck)
Thanks for the video!
"before we upload the program, we need to remove the wires from the rx and tx pins" - but they aren't connected to anything anyways when you do it on the vid? :)
However, I'm having problems with just this thing, getting:
*** [upload] could not open port /dev/cu.wchusbserial213220: [Errno 16] Resource busy: '/dev/cu.wchusbserial213220'
and can't upload a new sketch to the nano I'm using. Is there any trick to not make the arduino run a lot of stuff on the serial when powered up for receiving a new sketch? I remember something about doing some timed precess on reset on the Mega that's controlling my 3d printer for this same reason…
Hi Victor. I remove the wires from RX when uploading since it shares the line with the Arduino USB and can cause an error but that should not be the case here. I have not seen that error message before. It looks looks like an OSX thing. Are you using a MAC for this?
Thanks! Very clear, I have further questions though, how to contact u?
no optoisolation circuit in case of voltage spikes?
It's an output the input on the device you connect it to will be optoisolated
how do you make program changes or patch changes with arduino I've been looking for a library or even a sketch to try to work from and have come up empty handed can you help?
Hi Patrick. I just finished a Live Stream discussing this topic. czcams.com/video/PlCY_ELYAfs/video.html
According to Your previous video the ground pin should NOT be connected . Correct ?
Hi MrKk. The ground pin on the Midi Jack is connected on the Output jack only. Not on Input jacks. This is to prevent ground loops between the two instruments.
OK Basically the TX device will shield the cable but @ the receiver (synt) "midi in" side pin 2 is supposed not connected. (I will check this in service manual of my Roland RD700sx :-)
I'm seeing Your schetch output through an oscilloscope decoder as per this video:
czcams.com/video/9enveiI0eg4/video.html
Thanks for the incredible precision of Your Work.
Friend do you have any Midi converter scheme for USB Host?
Can I write a sketch for managing jog in traktor pro using this library ?
alexey beltukov Hi Alexey. If the traktor responds to standard CC messages over a 5-Pin DIN Midi cable, it should be possible.
Does not work on Arduino Mega?
Yes it certainly does. And on Nano as well.
will d same work with Arduino nano
Hi Jatin. Yes it will.
Does it works on Arduino Nano?
Hi Frank. Yes it does
Optocoupler ???
Only on midi input circuits.
am i high or did you pitched your voice?
Definitely high Cornelius :)
hello, can someone help please, my serial monitor returns strange characters, any ideas ?
I presume you use the "Hairless MIDI Serial Bridge" to convert Serial Signals into MIDI? If so, take a look into Hairless' Readme.txt: you have to add "Serial.begin(115200);" at the end of the setup() function.