Have been looking around now at literally hundreds (probably missed hundreds due to all the copies out there though) of Arduino boards and now getting very confused with them all.
I'm basically looking for a board that will have Native USB support (pretty sure that's what I'm looking for anyway) as I'm going to be making a MIDI controller device and would like to just be able to plug it in via USB to my Mac and have it work out of the box without having to use anything like Hairless MIDI and what-not.
The problem is though that looking at eBay, Amazon and other sites for all these boards not a lot of them mention whether they have native usb support or not (still wondering if I'm correct in if that's what I'm meant to be looking for though?).
So basically I'm just wondering if there's a list somewhere that tells you which boards have native usb support or not?
I came across http://www.arduino.cc/en/products/compare but that (as far as I understand it anyway) just tells you if the board has a USB connector on it and not whether or not it has native USB support for communicating with a computer or not?
So basically just wondering how you know if a board has native usb support if it doesn't mention it? I've probably come across some that do have native support but just not realised as they haven't said.
markbowendesign:
I'm basically looking for a board that will have Native USB support (pretty sure that's what I'm looking for anyway) as I'm going to be making a MIDI controller device and would like to just be able to plug it in via USB to my Mac and have it work out of the box without having to use anything like Hairless MIDI and what-not.
I'm not familiar with music or MIDI - I can just about play a CD.
However I think your first requirement is to describe what your Arduino will be doing and what it needs so that it can communicate with whatever program you are using on your MAC (which you have not told us). Consequently I suggest you edit your Original Post and change the Title to add "for a MIDI project with a MAC" so you can attract the attention of people who can help you.
The Arduino boards with a 32u4 microprocessor such as the Leonardo and Micro have native USB support which means they can pretend to be a keyboard or a mouse. Some of the high-end Arduino boards can probably also do that, but I am not familiar with them. For most applications native USB support is not necessary.
Many thanks for the reply. As per your suggestion I've edited the title of the post, thanks for that.
Basically I'd like to be able to plug an Arduino board in and have it work out of the box with my DAW (Logic Pro X). Currently I have one working but I have to use the Hairless MidiSerial App that is available for this type of thing but I'm aware that if you get a board which has native USB support then you can literally just plug it in and play so was just wondering how you tell which boards have native usb support.
Are the Leonard and the Micro the only boards that have native USB support then? Crikey I was thinking with the massive myriad of options out there that there would be more?
USB Libraries (Leonardo, Micro, Due, Zero and Esplora)
Keyboard - Send keystrokes to an attached computer.
Mouse - Control cursor movement on a connected computer.
Further, Robin mentioned the 32U4; that means, any board that you find that has that micro. So you will also find e.g. the SparkFun Pro Micro and a number of Pololu boards.
Looking at the number of people (here on the forum) that have problems with cheap ebay crap ProMicro clones, I would opt for originals (the brands that I mentioned), definitely for the first one. More expensive, but probably less hassle.
Basically, if you can compile the examples that come with the MIDIUSB library, it means that you should be able to use native MIDI over USB. You can try this before actually buying the board in question.
Most of the product pages on the Arduino store also mention native USB support, either in the overview, or in the technical specifications table. If it's not mentioned, if it mentions a second USB chip, or if it only mentions "power over USB", then it's probably not supported.
Since you're using the Control Surface library, it might be good to know that my main development platforms are Teensy 3.x, Teensy 4.x and Arduino Leonardo (ESP32, ESP8266 and Arduino Uno are tested as well, but they don't support MIDI over USB).
Other boards should be supported as well (e.g. MegaAVR and SAMD21 boards), the examples are compiled in the CI workflow, but they are not tested on actual hardware.
**E.T.A.**Oops sorry! Just re-read what you posted above and you mentioned the MIDIUSB library. I'd thought you'd meant your library. Haven't tried those ones out in that way. Will do in a bit. I'd just automatically thought of your library and thought that if those compiled then they would work but guess things are different between your library and the MIDIUSB library then?
Hi Pieter,
Many thanks for that. Will take a look at that page a bit later on.
I did actually try compiling for my board and it did go through without any problems but then I uploaded it to the board and it didn't work (had unit plugged into Mac but no changes were happening when moving the fader and also the [not red power light but the other one on the board] was flashing which it doesn't normally do) so don't think that board does support MIDI over USB unless I'm missing something somewhere.
markbowendesign:
I did actually try compiling for my board and it did go through without any problems but then I uploaded it to the board and it didn't work (had unit plugged into Mac but no changes were happening when moving the fader and also the [not red power light but the other one on the board] was flashing which it doesn't normally do) so don't think that board does support MIDI over USB unless I'm missing something somewhere.
You'll have to tell us what board you're using.
What do you expect to be happening on the Mac? Usually, you have to select the right MIDI device in your DAW settings, and create a control mapping.
I was using the Arduino Nano (compatible [read rip-off] ;-)) board and it did compile although as mentioned that was with your library, I haven't tried with the MIDIUSB library examples yet.
What do you expect to be happening on the Mac? Usually, you have to select the right MIDI device in your DAW settings, and create a control mapping.
I was thinking that if it compiled then the Mac would just automatically pick up the input and utilise it inside my DAW (Logic Pro X). I don't need to map anything as the controllers are all set in the software instruments that I use anyway and work out of the box.
markbowendesign:
I was using the Arduino Nano (compatible [read rip-off] ;-)) board and it did compile although as mentioned that was with your library, I haven't tried with the MIDIUSB library examples yet.
When I try to compile the MIDIUSB library examples for an Arduino Nano, I get:
In file included from ~/Arduino/libraries/MIDIUSB/examples/MIDIUSB_read/MIDIUSB_read.ino:9:0:
~/Arduino/libraries/MIDIUSB/src/MIDIUSB.h:18:2: error: #error MIDIUSB can only be used with an USB MCU.
#error MIDIUSB can only be used with an USB MCU.
^~~~~
Using library MIDIUSB at version 1.0.4 in folder: ~/Arduino/libraries/MIDIUSB
markbowendesign:
I was thinking that if it compiled then the Mac would just automatically pick up the input and utilise it inside my DAW (Logic Pro X). I don't need to map anything as the controllers are all set in the software instruments that I use anyway and work out of the box.
I don't know if that's the case (never used Logic Pro), but usually you have to select which controllers you want to use, and what profile to use. Some commercial control surfaces might be detected and configured automatically because Logic recognizes them, but for a DIY controller, often that's not the case.
Yep just tried the simple MIDIUSB_write example from the MIDIUSB library and as you mention it doesn't compile for the Nano. Guessing therefore that your library does something a bit different for MIDI USB and that's why it compiles for my board?
markbowendesign:
Yep just tried the simple MIDIUSB_write example from the MIDIUSB library and as you mention it doesn't compile for the Nano. Guessing therefore that your library does something a bit different for MIDI USB and that's why it compiles for my board?
Yes, Control Surface silently falls back to Serial MIDI over the USB Serial interface if true USB MIDI isn't available. This is to support custom ATmega16U2 firmwares, as explained on the MIDI over USB page (and so I can use USBMIDI_Interface in all examples for all boards).
Going to buy an Arduino Leonardo Pro Micro compatible board (I know, I know I really should buy the original board but it's only £3 and I don't have a lot to spend unfortunately.) and the seller has assured me this has native USB support as he uses one as a keyboard input to his computer.
Will try it all out again when that arrives. For now I'm going to either just use it with Hairless or see about making the MIDI Out connector work.