Ricezione segnali MIDI con arduino

Salve a tutti, sto dilettandomi da un po' di tempo con la gestione dei MIDI via Arduino UNO, e la semplicità della cosa mi ha spinto a sviluppare questa strada per far evolvere alcuni progetti.

Ora il sistema di invio di segnali MIDI via arduino è semplicissimo e super intuitivo, ma ho alcuni dubbi:

  • i segnali che invio tramite Serial.write vengono inviati indistintamente sia sul pin TX che sull'USB giusto?
  • la ricezione del segnale seriale avviene in continuo o deve essere "inizializzata" via programma?
  • esistono librerie preimpostate di traduzione del segnale midi in ingresso o devo inserire una tabella di conversione nello sketch?

Essenzialmente l'applicazione su cui sto lavorando fa questo:

Un controller (di qualsiasi tipo, con vari sensori ed attuatori) invia tramite arduino segnali MIDI, che possono essere letti anche via pc o quant'altro, ad un dispositivo che va a tradurre questi segnali tramite un altro arduino e ad azionare degli attuatori/potenziometri, ovviamente in remoto (o via cavo o, in futuro, via bt)

La scelta del protocollo midi è ovviamente volta al fatto che si tratta di applicazioni prettamente audio e quindi per un discorso di compatibilità con altri dispositivi è una scelta obbligata.

Inoltre, in caso di arduino standalone, dotato solo di alimentazione, oscillatore e reset, è necessario dotare la porta midi-in collegata al pin RX di altro hardware per fare in modo che la ricezione avvenga in maniera ottimale?

TheShredding: - i segnali che invio tramite Serial.write vengono inviati indistintamente sia sul pin TX che sull'USB giusto?

I segnali in arrivo dalla USB passano prima dal convertitore software Atmega16U2, che poi li rispedisce ai pin RX/TX dell'Atmega328.

  • la ricezione del segnale seriale avviene in continuo o deve essere "inizializzata" via programma?

La ricezione seriale va inizializzata da codice con il classico Serial.begin.

  • esistono librerie preimpostate di traduzione del segnale midi in ingresso o devo inserire una tabella di conversione nello sketch?

Conosco questa: http://playground.arduino.cc/Main/MIDILibrary Mai usata, tengo a precisare.

Inoltre, in caso di arduino standalone, dotato solo di alimentazione, oscillatore e reset, è necessario dotare la porta midi-in collegata al pin RX di altro hardware per fare in modo che la ricezione avvenga in maniera ottimale?

Se colleghi il chip al PC ti serve un convertitore USB/seriale, non puoi collegare direttamente i pin RX/TX ad una porta USB.

leo72:

TheShredding: - i segnali che invio tramite Serial.write vengono inviati indistintamente sia sul pin TX che sull'USB giusto?

I segnali in arrivo dalla USB passano prima dal convertitore software Atmega16U2, che poi li rispedisce ai pin RX/TX dell'Atmega328.

Ok, chiaro

leo72:

  • la ricezione del segnale seriale avviene in continuo o deve essere "inizializzata" via programma?

La ricezione seriale va inizializzata da codice con il classico Serial.begin.

Anche qui ok, la mia domanda era un'altra, ma mi sono già risposto (in effetti non mi sono espresso in maniera corretta nella domanda)

leo72:

  • esistono librerie preimpostate di traduzione del segnale midi in ingresso o devo inserire una tabella di conversione nello sketch?

Conosco questa: http://playground.arduino.cc/Main/MIDILibrary Mai usata, tengo a precisare.

Si, questa la conosceva già..ma non mi piace molto, non la trovo molto intuitiva

leo72:

Inoltre, in caso di arduino standalone, dotato solo di alimentazione, oscillatore e reset, è necessario dotare la porta midi-in collegata al pin RX di altro hardware per fare in modo che la ricezione avvenga in maniera ottimale?

Se colleghi il chip al PC ti serve un convertitore USB/seriale, non puoi collegare direttamente i pin RX/TX ad una porta USB.

Non sto parlando di USB qui, ma di MIDI IN con la classica porta a 5 pin in uso sulle periferiche midi. La midi out per esempio si collega direttamente ad Arduino sul pin TX e alla 5V e al GND (2 pin sono vuoti). Per l'USB lo so che serve il "traduttore". Ma per il midi in ho vaghi e nebulosi ricordi di un mini-circuitino di interfaccia..ma non lo trovo da nessuna parte e sinceramente non sono neanche sicuro che fosse effettivamente qulla la sua funzione

Intanto grazie per le risposte

--> https://www.olimex.com/Products/Duino/Shields/SHIELD-MIDI/ --> https://www.sparkfun.com/products/9595

Ciao,
se non vuoi usare connettori hw e Arduino è collegata ad un pc via usb, puoi usare questo sw:
http://projectgus.github.io/hairless-midiserial/

Hairless MIDI<->Serial Bridge is the easiest way to connect serial devices (like Arduinos) to send and receive MIDI signals. 100% Free Software. For Mac OS X, Windows & Linux.