Electronic – ATMEGA328P send MIDI via USB

atmega328pmidiusb

I've created a circuit on my breadboard including multiple shift registers and a teensy 2.0++.

My program takes inputs from the shift regs and converts them into MIDI messages. Using my teensy in MIDI mode, my project works just fine.

I'm now moving all this to a permanent solution using an ATMEGA328P. I used my teensy as a programer and then as serial-to-USB-bridge. The project works well this way too, and the midi messages are received and interpreted correctly by my DAW.

When all the stuff is moved to the casing and screwed together, I want to use MIDI-over-USB instead of using regular MIDI connectors.

So my question is this: How do I extend my circuit to be compatible with USB HID and send the serial data via USB-MIDI?

Ideally I'd like to have an architecture with exchangeable I/O Boards:

  • My main controller outputs the MIDI commands via a 31250 baud serial bus. This signal could then be sent to:
    • A USB-board that sends the MIDI via USB
    • A standard MIDI-board
    • Or even an ethernet-board to add network support.

Would that be worth the effort?
How could that be done?

Best Answer

The cleanest way to build a USB MIDI device would be to use a microcontroller that supports USB natively, and implement the USB MIDI protocol directly.

Otherwise, the easiest way to get USB MIDI support is to take apart some cheap USB MIDI interface and duct-tape it to your circuit.

Related Topic