Analizzatore MIDI con Arduino

In questo articolo vedremo come, combinando la nota piattaforma di prototipazione rapida Arduino con l’Extension Shield di Elektor, sia possibile realizzare un modulo in grado di analizzare il traffico su un’interfaccia MIDI (Musical Instrument Digital Interface). Il modulo è inoltre dotato di un apposito connettore ECC (Embedded Communication Connector) che permette il collegamento ad altre schede a microcontrollore. Il firmware dimostrativo che accompagna il progetto consente di eseguire la decodifica dei messaggi MIDI, visualizzandone il contenuto su un display.

L’interfaccia MIDI

L’interfaccia MIDI, ampiamente utilizzata nel campo della produzione musicale a livello elettronico, si basa sulla trasmissione seriale di byte alla frequenza fissa di 31250 baud [1]. A differenza della RS-232, l’interfaccia non utilizza soglie di tensione predefinite per i livelli basso e alto associati ai bit dati e ai bit di start e stop. Viceversa, l’interfaccia è basata su un loop di corrente da 5 mA creato tra l’uscita (MIDI Out) di un dispositivo e l’ingresso (MIDI In) di un’altro dispositivo. Un flusso di corrente corrisponde allo stato logico zero, mentre l’assenza di corrente corrisponde allo stato logico uno. In Figura 1 è mostrata in dettaglio l’implementazione di questa interfaccia. Le interfacce di ingresso e uscita (MIDI In e MIDI Out) richiedono due pin ciascuna, e due dispositivi MIDI richiedono pertanto due soli fili per il collegamento. Uno dei pin di uscita è collegato in modo permanente alla tensione +5 V tramite una resistenza da 220 Ω. Per trasmettere lo stato logico zero, il secondo pin di uscita viene portato a massa, sempre tramite una resistenza da 220 Ω. Ne consegue che una piccola corrente scorre tra i pin del connettore MIDI In dell’altro dispositivo. Per trasmettere invece lo stato logico uno, il secondo pin di uscita viene portato alla tensione di +5 V, e di conseguenza non si genera alcun flusso di corrente. Il funzionamento è pertanto, entro certi limiti, compatibile con quello di un’interfaccia UART che lavora con i livelli logici TTL. Sul lato MIDI In dell’interfaccia è presente un fotoaccoppiatore dotato di fototransistor. Quando una corrente attraversa il cavo MIDI, questo transistor “tira” l’uscita verso massa; nello stato di riposo, l’uscita si porta alla tensione di +5 V. Possiamo perciò collegare questo segnale direttamente all’ingresso RX di un microcontrollore. I due collegamenti utilizzati per l’ingresso e per l’uscita fanno capo ai pin 4 e 5 di una presa DIN a 5 poli. Dal punto di vista esterno, pertanto, i connettori MIDI In e Out sono identici. Tuttavia, occorre utilizzare delle prese separate per ogni dispositivo che richieda di essere collegato sia in ingresso che in uscita.

Figura 1 – un esempio di interfaccia MIDI

Figura 1: un esempio di interfaccia MIDI

L’hardware

Le caratteristiche menzionate in precedenza implicano che sia relativamente semplice aggiungere la funzionalità MIDI, sia in ingresso che in uscita, a un circuito basato su microcontrollore. La soluzione proposta in questo articolo si basa sull’utilizzo combinato di una board Arduino Uno e dell’Extension Shield di Elektor, alle quali viene collegata l’interfaccia MIDI tramite un connettore ECC (Embedded Communication Connector) [2]. Il circuito risultante è visualizzato in Figura 2. Sul lato sinistro è visibile la parte relativa al MIDI Input, con un accoppiatore ottico di tipo 6N137. La sua uscita è collegata al pin 6 del connettore ECC (K2), il quale a sua volta è collegato al pin RX del microcontrollore. Il pin 5 del [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 3840 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

Una risposta

  1. Avatar photo Maurizio 27 Ottobre 2016

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend