Realizzare un convertitore MIDI to USB per Tastiera MIDI

Ciao a tutti, è da un po’ che non ci sentiamo (da quando cercavo di trasformare il mio Arduino UNO R3 in joystick per il pc…e ci sono riuscito 8) ), stavolta avendo una tastiera MIDI volevo collegarla al PC utilizzando l’Arduino come un convertitore di MIDI to USB.
Ho solo il programma che supporta le tastiere MIDI che potrò utilizzare a lavoro completo.
Il problema è:“E’ possibile trasformare l’Arduino in questo convertitore di porte midi IN-OUT to USB?” per farvi capire meglio di cosa parlo ho aggiunto una foto negli “Attachments” spero non violi il regolamento.

Se è possibile, possibilmente spiegatemi direttamente come, o se non vi è chiaro qualcosa, ovviamente ditemelo. :wink:

P.S.: Non rispondetemi che esistono delle “shield” pronte perché non amo molto spendere soldi per qualcosa che posso fare direttamente a casa con tempo e pazienza; e se bisogna cambiare il firmware dell’Arduino, non ci sono problemi…so come farlo dato che ho avuto in passato già esperienza nel farlo grazie a una realizzazione di joystick,volante e pedaliera per pc. :grin:
Basta che mi dite di quali programmi avrei bisogno per convertire eventuali segnali, i collegamenti da fare, i componenti necessari, un eventuale firmware e ovviamente il codice da inserire prima del firmware.
Inoltre ho fatto molte ricerche su quello che voglio fare e mi sembra di aver capito che si può fare ma dato che i siti che ho visitato e i video tutorial erano in spagnolo e inglese non sono riuscito a capire nulla. :disappointed_relieved:

Confido nel vostro aiuto. :smiley:

midi to usb interface cable.jpg

Nessuno saprebbe aiutarmi?

Sostanzialmente il segnale MIDI è una comunicazione seriale a 31.250 bit/secondo , quindi utilizzando la porta USB di Arduino per il collegamento con il PC e la libreria SoftwareSerial per quello MIDI, con un opportuno sketch "bridge" potresti ottenere ciò che desideri.

Mh...ci avevo pensato però non saprei da dove cominciare. Per la serie, dovrei trovare una libreria MIDI, settare il fattore di comunicazione serial a 31250 e fare uno sketch dove l'Arduino alimenta un pin della porta MIDI della tastiera, ovviamente la GND e il pin digitale 1 o 0 dell'arduino collegato al pin dati della tastiera...ho capito bene? Se tutto questo fosse giusto, mi è sorto un dubbio, quale pin digitale funge meglio per ricevere i dati della tastiera e li invia al computer? Pin Digitale 1? o 0?

A tutto questo ci avevo pensato guarando un po' questo sito: http://www.instructables.com/id/Send-and-Receive-MIDI-with-Arduino/ però l'inglese non essendo il mio forte ho problemi a capire i procedimenti. Io avevo fatto questo tipo di collegamento: http://www.instructables.com/file/FAV6Y9LH337KSBC

La comunicazione con il PC avviene tramite USB che è collegata ai pin 0 (Rx) ed 1 (Tx) alla velocità di 57600 baud. per evitare rallentamenti.

La comunicazione con la tastiera avviene tramite altri due pin (ad esempio 2-Rx e 3-Tx) usati con la libreria SoftwareSerial settata a 31250 baud.

I due pin devono esser collegati a due connettori DIN femmina a 5 pin, uno per il MIDI IN e l'altro per il MIDI OUT, secondo lo schema indicato qui (solo la parte connettori MIDI):

Noterai che è presente anche un optoisolatore sul MIDI IN (2-Rx) per garantire la separazione galvanica.

Nel loop ogni byte ricevuto dal PC (USB) deve essere trasmesso al pin 3-TX (MIDI OUT) e, viceversa, ogni byte ricevuto da 2-Rx deve essere trasmesso al PC (USB).