Electronique > Réalisations > Interfaces > Interfaces MIDI > Interface MIDI 020 [Pro]

Dernière mise à jour : 09/10/2016

Présentation

Cette interface MIDI est une version modifiée de l'interface MIDI 019, elle a été conçue pour "midifier" un synthé analogique Solina 49 notes paraphonique.

interface_midi_020_pcb_3d_a 

Elle dispose d'une entrée MIDI et de circuits de commande analogiques destinés à "remplacer" l'appui sur les touches (connexions sur deux busbar). Chaque circuit analogique réagit à une note MIDI, sur une plage ajustable (détails dans le texte descriptif). L'interface est construite autour d'un PIC 18F26K22 (moins de broches que le 18F45K22) auquel sont associés des commutateurs analogiques LC78212.

Schéma

Le coeur du montage est un microcontrôleur PIC 18F26K22 cadencé par un quartz de 8 MHz. La commande des commutateurs analogiques se fait via un bus de liaison série "propriétaire" mais on ne peut plus classique, avec deux lignes horloge (Clock) et données (Data).

interface_midi_020

Fonctionnement général
L'interface possède une entrée MIDI reliée à un microcontrôleur PIC, et un ensemble de commutateurs analogiques. Quand un événement MIDI de type Note (NoteOn ou NoteOff) se présente à l'entrée, l'interface décode les octets de l'événement et chaque changement d'état (note enfoncée ou relâchée) est enregistré dans une mémoire tampon. Immédiatement après, les commutateurs analogiques qui correspondent aux notes reçues sont mis à jour (ouverts ou fermés) pour refléter l'état des notes reçues. L'ensemble est polyphonique mais il va de soi que le synthé qui suit, s'il ne l'est pas, ne peut profiter pleinement de cette possibilité. Un buffer circulaire de 1 KO permet de gérer correctement l'arrivée des notes même si elles arrivent en grand nombre et dans un temps court (rappelons au passage que chaque note MIDI - on ou off - est composée de trois octets).

Horloge / base de temps
Pour des questions de stabilité en fréquence, l'oscillateur interne du PIC n'est pas utilisée. Les lignes RA7/OSC1 et RA6/OSC2 du PIC sont donc exploitées pour y connecter un quartz de 8 MHz avec deux condensateurs céramiques de faible valeur (22 pF / 63 V) dont le rôle est d'entretenir les oscillations. La PLL x4 du PIC est activée et le logiciel tourne donc en interne à 32 MHz (4 x 8 MHz) - valeur bien sûr ramenée à 8 MHz pour Fosc/4.

Entrée MIDI
L'entrée MIDI est composée de l'optocoupleur U2 raccordé sur la prise DIN 5 broche J1, via une résistance de limitation de courant (R1) et une diode (D1) qui protège l'optocoupleur en cas d'inversion de polarité des lignes d'entrée de la prise DIN (broches 4 et 5). La sortie de l'optocoupleur permet de récupérer le signal MIDI au format TTL, grâce à la présence de la résistance de charge R2 raccordée au +5 V. Les données MIDI mises en forme aboutissent à l'entrée RC7/RX1 du PIC et sont traitées par l'UART intégré dans ce dernier. Ces données MIDI reçues ne sont traitées que si leur canal MIDI correspond au canal défini par la position des interrupteurs branchés sur les lignes RA0 à RA3 du PIC (canal MIDI 1 à 16 codé en binaire sur 4 bits, valeurs 0 à 15). La LED LED1 s'allume (clignote) lors de la réception des données MIDI. La LED LED2 s'allume quand au moins une note est en cours de jeu (NoteOn), elle ne s'éteind qu'après réception du ou des événements NoteOff correspondants. Tous les commutateurs analogiques sont désactivées (ouverts) si l'interface reçoit un message de "Mode canal" de valeur comprise entre 123 et 127 (All Notes Off).

Conversion MIDI vers commutateurs analogiques
Chaque commutateur analogique s'active sur réception de la note MIDI correspondante : NoteOn = activation de la porte correspondante et NoteOff = désactivation. Comme la norme MIDI prévoit 128 notes et que le clavier qu'on veut midifier en possède moins (ici 49 notes), il est inutile de disposer de plus de commutateurs. L'utilisation de 7 circuits LC78212 répond juste à un besoin d'homogénéité, le dernier (U9) n'est pas pleinement exploité. Cette interface est dotée d'une configuration qui permet de définir la première note qui correspond au premier commutateur analogique. Les interrupteurs raccordés sur les lignes RB0 à RB3 du PIC permettent de spécifier à partir de quelle note MIDI l'interface commence à réagir, voir tableau qui suit.

RB3 RB2 RB1 RB0 Première note traitée
0 0 0 0 C-2
0 0 0 1 F-2
0 0 1 0 C-1
0 0 1 1 F-1
0 1 0 0 C0
0 1 0 1 F0
0 1 1 0 C1
0 1 1 1 F1
1 0 0 0 C2
1 0 0 1 F2
1 0 1 0 C3
1 0 1 1 F3
1 1 0 0 C4
1 1 0 1 F4
1 1 1 0 C5
1 1 1 1 F5

Exemple : on veut que le premier commutateur analogique soit activé sur la note C2, que le deuxième commutateur soit activé sur C#2, le troisième sur D2, etc. Pour ce faire, il faut mettre l'entrée RB3 à 1 (inter fermé) tandis que les entrées RB2, RB1, RB0 doivent être à 0 (inters ouverts). Bien sûr les interrrupteurs de configuration peuvent être remplacés par de simples straps ou ponts de soudure.

Temps de transit et temps de traitement
Les données MIDI arrivent dans le PIC, qui les traite au fil de l'eau pour détecter la présence de notes. A chaque changement d'état d'une note (enfoncement ou relâchement d'une touche du clavier synthé), l'état de tous les commutateurs analogiques est mis à jour, même si un seul évenement Note (on ou off) a été reçu. A partir du moment où une note MIDI a été réceptionnée (3 octets), la sortie correspondante est mise à jour au bout de 700 us (0,7 ms) maximum. On peut comparer ce temps de réaction au temps nécessaire pour transférer les trois octets de la note MIDI dans le câble MIDI, qui lui-même avoisine la milliseconde...

Sortie MIDI
Le schéma fait apparaitre une sortie MIDI, cette sortie est facultative. Au démarrage du système, elle sortie délivre une note MIDI brève (Do3) qui permet de s'assurer que le PIC démarre bien et qu'il tourne à la bonne vitesse. Si cette sortie n'est pas souhaitée, il suffit de ne pas la câbler et de ne pas implanter les deux résistances R4 et R5 associées au connecteur J2.

Alimentation
Une source de tension de 5 V est nécessaire pour faire fonctionner la partie commande. N'importe quel bloc secteur standard 5 V convient, vous pouvez aussi utiliser une source de tension plus élevée suivie d'un régulateur de tension +5 V (par exemple LM7805). Côté commutateurs analogique, deux tensions de +/-15 V ont ici été nécessaires (adaptation au synthé Solina).

Choix d'autres optocoupleurs

Il est possible d'utiliser d'autres optocoupleurs pour l'entrée MIDI, voir page Interfaces MIDI pour plus de détails. 

Brochage des prises MIDI

Câblage valable pour les prises MIDI IN, MIDI OUT et MIDI THRU.

midi_din_cablage_001

La borne 2 est reliée à la masse au niveau des sorties mais pas au niveau des entrées, pour éviter toute boucle de masse entre équipements.

Prototype

Simulation sous Proteus (écran signaux logiques ci-après) puis tests pratiques réalisés avec ma platine EasyPic7 et mon clavier maître Roland D50. Mes tests se sont arrêtés au niveau des signaux de commande issus du PIC car je ne possédais pas les commutateurs analogiques.

interface_midi_020_graph_001a 

Plusieurs cartes pro ont ensuite été réalisées par OnOff-Art et testées avec succès avec trois clavier couplés à Logic Audio 9, Ableton Live et MOTU MidiExpress 128.

interface_midi_020_proto_dje_001a  interface_midi_020_graph_001b

Signaux logiques ci-avant relevés sur maquette réelle réalisée par OnOff-Art.

Logiciel du PIC

Demande Pro, logiciel non disponible en libre service.
Interface MIDI 020 - PIC 18F26K22 - 31/07/2016

Circuit imprimé

Non réalisé par mes soins.

Historique

09/10/2016
- Ajout compatibilité Running Status.
10/04/2016
- Ajout photo carte finalisée.
26/12/2015
- Première mise à disposition.