Nem minden USB kliens tudja mindenfélének mondani magát. Úgy tudom, hogy ahhoz hogy ilyet csinálj, az USB protokollt le kell programoznod, vagy legalább fel kell konfigurálnod a kliensen. Ez nagyságrendileg komplexebb, mint FTDI-on keresztül serial kapcsolatot nyitni.
Az Arduino UNO-ban FTDI csip van, ami célhardver arra a célra, hogy USB-serialként látsszon a PC-ről. Ez tudtommal nem programozható MIDI-vé - de nagyon nem olvastam utána. Amit Arduino IDE-ből lehet programozni, az az AVR csip csak serialt lát már, annak semmi köze az USB-hez.
Az Arduino Mini-n egyáltalán nincsen USB csatlakozó, azt eleve USB-TTL serial illesztővel szokás PC-hez kapcsolni.
Ezekben az Arduinoból programozható ATmega328-as csippekben nincsen hardveres USB támogatás.
Viszont tudtommal USB 1.0-t lehet bitmanging módon is csinálni akár AVR csippekkel is, csak fizikailag kell illeszteni az USB-t. Ilyen például a Pocket AVR programmer, amiben egy ATTiny-vel csináltak szoftveres úton USB klienst. Ennek a kódja és a hardver felépítése is nyílt, ezekből kiindulva lehetne egyedi USB klienst hekkelni például olcsón.
Link a Pocket AVR-re: https://www.sparkfun.com/products/9825 (Ilyenem van, és Arduino-ból tinyUSB)
Ehhez hasonló hardver van az USB-serial illesztőkben, valamelyikről olvastam, hogy a csipre egyedi szoftvert téve másféle működésre is bírható. De ebbe sem ástam bele magam jobban: https://www.sparkfun.com/search/results?term=usb+serial
Ezt nem ismerem, csak az AVR USB 1.0 keresőszóra találtam meg, ilyesmi szoftver lehet az ATTiny alapú programozókban és serial konverterekben: https://www.obdev.at/products/vusb/index.html
Ha az USB 1.0 nem elég gyors, és USB 2.0 kell, azt ismereteim szerint csak olyan csippel lehet megcsinálni, ami hardeveresen támogatja. Vannak ilyenek, de azokkal pláne nem foglalkoztam még. Az MBed-nek például az USB-s doksijában ott szerepel az USBMidi kulcssszó, lehet, hogy azzal lenne érdemes nekiállni: https://os.mbed.com/handbook/USBDevice