Electronique > Réalisations > Interfaces > Interfaces MIDI > Interface MIDI 031 

Dernière mise à jour : 21/04/2024

Présentation

Cette interface MIDI permet de transposer en temps réel des notes MIDI (vers le haut ou vers le bas).


interface_midi_031a_pcb_3d_front  interface_midi_031b_pcb_3d_front  interface_midi_031ab_pcb_3d_front  

Elle possède 1 entrée MIDI IN et 1 sortie MIDI OUT et est basée sur un microcontrôleur PIC 16F1827. Un confortable buffer d'entrée de 128 octets permet de ne louper aucune note, même sous le feu d'un jeu très rapide avec trois accords par doigt. Le temps de transit (retard apporté par le traitement, temps de latence) est de l'ordre de 1 ms.

Plusieurs versions ont été pensées :

- Schéma 031a : transposition limitée à +/-1 octave - Free
- Schéma 031ab : idem 031a, mais schéma et PCB renforcés pour usage scène - Pro 
- Schéma 031b : transposition jusqu'à +/-3 octaves, par saut d'octave ou par pas de 1/2 ton - Pro
- Schéma 031c : transposition jusqu'à +/-3 octaves par commutateur rotatif, -3/-2/-1/0/+1/+2/+3 - Pro 


Schéma 031a

Il s'agit du schéma "le plus simple" (ce qui ne signifie pas que les autres sont très compliqués).


interface_midi_031a

Les deux boutons-poussoirs SW1 et SW2 permettent de régler la valeur de transposition à -1 octave, 0 ou +1 octave.

Remarque : dans cette version 031a, les deux boutons-poussoirs SW1 et SW2 peuvent être remplacés par un unique inverseur à 3 positions de type ON-OFF-ON momentané (fugitif). Dans ce cas, la broche centrale du commutateur doit être reliée à la masse et ses deux extrémités doivent être reliées sur les entrées Cde1 et Cde2.

Le voyant LED1 (LED-Rx) s'allume lors de la réception des notes MIDI pour confirmer leur bonne prise en compte.
Le voyant LED2 (LED-PL) s'allume lorsque la valeur de transposition est négative (Pitch Lower).
Le voyant LED3 (LED-PC) s'allume lorsque la valeur de transposition est nulle (Pitch Centered).
Le voyant LED4 (LED-PH) s'allume lorsque la valeur de transposition est positive (Pitch Higher).
   
Fonctionnement général

Le logiciel du PIC réceptionne les notes MIDI qui arrivent à la queue-leu-leu et les place dans un buffer temporaire afin de n'en perdre aucune, même si elles arrivent à un rythme effrené. Les notes réceptionnées sont ensuite traitées (transposées) avec la valeur négative ou positive spécifiée par l'utilisateur. Sitôt transposées, les notes sont émises sur la sortie MIDI OUT.

   
Comportement avec les notes "hors plage"

Sachant que l'étendue des notes MIDI va de Do-2 à Sol#8 et que cette interface MIDI peut hausser la tonalité jusqu'à +1 octave ou la descendre de -1 octave, on est en droit de se demander ce qu'il advient des notes très graves transposées vers le bas ou des notes très aigues transposées vers le haut. L'interface ignore simplement la note si après sa transposition elle sort de la plage normalisée du MIDI (les valeurs < 0 ou > 127 sont en effet interdites).

Rappel : la note MIDI la plus grave et la note MIDI la plus aigue sortent toutes deux de la zone d'audition humaine normale (qui pour rappel couvre la plage de 20 Hz à 20 kHz).
   
Alimentation
Le circuit est alimenté sous une tension continue stabilisée de +5V grâce au régulateur de tension U101. L'entrée de ce régulateur doit recevoir une tension continue de valeur comprise entre +8V et +12V, par le biais du connecteur J101. La diode D101 assure la protection contre toute inversion accidentelle de polarité, tandis que les condensateurs C101 et C102 assurent le filtrage général et la stabilité du régulateur. Si vous disposez déjà d'une source de tension régulée de +5V, cette partie du système peut être retirée. Le condensateur C103 est indispensable et doit être placé au plus près des broches d'alimentation du PIC (broches 5 et 14). J'ai choisi pour lui un CMS soudé en face inférieure (côté "soudures"), mais un classique modèle traversant peut également être utilisé si on le soude à plat.

   

Schéma 031b

Même structure de base que le schéma 031a, mais avec 2 boutons-poussoirs en plus pour permettre le réglage de la transposition de hauteur par pas de 1/2 ton.

interface_midi_031b

Les deux boutons-poussoirs SW1 et SW2 permettent de régler la valeur de transposition par saut de X octave(s).
Les deux boutons-poussoirs SW3 et SW4 permettent de régler la valeur de transposition avec un pas de 1/2 tons.

Le voyant LED1 (LED-Rx) s'allume lors de la réception des notes MIDI pour confirmer leur bonne prise en compte.
Le voyant LED2 (LED-PL) s'allume lorsque la valeur de transposition est négative (Pitch Lower).
Le voyant LED3 (LED-PC) s'allume lorsque la valeur de transposition est nulle (Pitch Centered).
Le voyant LED4 (LED-PH) s'allume lorsque la valeur de transposition est positive (Pitch Higher).

   

Schéma 031c

Là encore, on dispose de la même structure de base, mais cette fois le choix de la valeur de transposition est assuré par un commutateur rotatif et ne s'effectue que par saut d'octave (pas de réglage possible par pas de 1/2 ton).

interface_midi_031c

La valeur de transposition peut aller jusqu'à +/-3 octaves en sélectionnant la position idoine du commutateur rotatif SW1 (-3/-2/-1/0/+1/+2/+3). Ce commutateur SW1 est un modèle à 1x12 positions, avec mise en place d'un bridage mécanique pour limiter l'étendue à 7 positions (5 positions sont donc non utilisées). Il est également possible d'utiliser un commutateur à 2x6 positions, mais dans ce cas l'étendue du réglage de transposition sera limitée à -3/+2 octaves ou -2/+3 octaves, voire -2/+2 octaves.

Ici, aucune LED d'indication de transposition n'a été prévue, car la position du bouton du commutateur SW1 indique déjà la valeur de transposition. Il serait toutefois possible d'ajouter un indicateur visuel additionnel, à la condition de lire la commande utilisateur en mode hexadécimal et non en mode décimale comme cela est fait actuellement (réduction du nombre de fils de 6 à 3, donc libération de trois lignes du PIC pour attaquer un système d'affichage annexe), car le nombre de lignes du PIC est limité.

   

Schéma 031ab

Equivalent au schéma 031a, mais "renforcé" pour un usage professionnel sur scène.

interface_midi_031ab

Les modifications se situent au niveau des entrées de commande (poussoirs au pied) ainsi qu'en sortie de l'optocoupleur de l'entrée MIDI (pour cette application, j'ai conservé le 6N137 avec des composants supplémentaires pour parfaire le transfert des données MIDI). Bien sûr, ces renforts sont aussi valables pour les deux autres version 031b et 031c.

   

Prototype

Réalisé selon le dessin de PCB V031b visible plus loin. Même PCB utilisé pour test des versions 031a, 031ab et 031b.

interface_midi_031b_proto_rm_001a interface_midi_031b_proto_rm_001b

Système fonctionnel, mais sans les LED d'indication de positionnement de la transposition. Testé avec optocoupleurs 6N137 et 6N139 et avec trois claviers MIDI (Yamaha PSS-595, Evolution MK-149 et Roland D50).

J'ai modifié le logiciel d'origine, car j'avais omis d'y intégrer le mode Running status qui est utilisé sur certains claviers. Cette modification logicielle est répercutée sur toutes les versions (031x).

Remarque : le PIC 16F1827 étant compatible broche à broche avec le 16F628, j'ai essayé de le remplacer par un 16F648 (identique au 16F628, mais avec davantage de mémoire). Moyennant une adaptation du code logiciel et en acceptant une fréquence d'oscillateur moindre, le circuit fonctionne aussi. Ce n'était que pour m'amuser et parce qu'il me restait des 16F648 en stock, car à ce jour il n'y aurait pas d'intérêt particulier à préférer le 16F648 (et encore moins le 16F628).

   

Logiciel du PIC

Le fichier binaire compilé (*.hex) de la version 031a est disponible en libre service dans l'archive dont le lien suit.
Les logiciels en version complète 031b et 031c ne sont pas disponibles en libre service, mais le sont (ou le seront) en version limitée LE(*).
Interface MIDI 031 - PIC 16F1827 - 10/04/2024
Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, merci de consulter la page PIC - Sources.
(*) Dans les versions limitées 031b_LE et 031c_LE, le système se bloque après quelques notes transposées, mais cela suffit pour tester.

   

Circuit imprimé (PCB)

Réalisé en double face. Les PCB versions 031a et 031b n'incluent pas les LED d'indication de transposition (LED2, LED3 et LED4). Le PCB version 031ab est quant à lui "complet".

   
interface_midi_031a_pcb_components_top
Circuit 031a
   
interface_midi_031b_pcb_components_top
Circuit 031b
   
interface_midi_031ab_pcb_components_top
Circuit 031ab
   
---

   

Historique

21/04/2024
- Ajout schéma 031ab.

14/04/2024
- Ajout photos prototype 031b.
- Ajout développement logiciel PIC version 031c.
- Ajout compatibilité avec le Running status en réception MIDI pour toutes les versions.
- Allongement de la durée d'allumage de la LED Rx lors de la réception dévénements MIDI : 600 us au lieu de 15 us (on voyait la lumière, mais seulement avec l'oeil au dessus).

31/03/2024
- Première mise à disposition.