Electronique > Réalisations > Interfaces > Interfaces MIDI > Interface MIDI 017c - Pro

Dernière mise à jour : 13/08/2023

Présentation

Cette interface MIDI 017c est une évolution de mon interface MIDI 017. Elle permet de convertir une note MIDI en sa représentation CV (Control Voltage), avec Gate et Trigger, sur deux voies séparées et selon des courbes Volt/Octave, Hertz/Volt ou personnalisée.


interface_midi_017c_18f26k22_MCP4922_pcb_3d_front
Coeur du montage, sans l'étage de sortie analogique

La courbe personnalisée permet à l'utilisateur de définir n'importe quelle tension pour n'importe quelle note, dans une plage pouvant aller (au maximum) de -16 V à +16 V.

Une version possédant 8 voies de sortie CV et 2 ou 4 entrées MIDI est actuellement en phase de validation (interface MIDI 017d).


Avertissement

Pro - Cette interface a été développée pour répondre à un besoin pro (version Pro). J'ai ensuite ajouté des options au cahier des charges, ce qui a abouti à une version étendue (version Pro+). Les versions Pro et Pro+ ne sont pas disponibles en libre service. Une version allégée du logiciel (version LE) est toutefois disponible en téléchargement.

Un message de copyright est transmis sur la sortie MIDI OUT sous forme de Sysex.


Caractéristiques principales

Au 06/09/2020, cette interface est fonctionnelle (prototype réalisé), mais toutes les fonctions que j'ai prévue d'y inclure ne sont pas encore implémentées.


Tableau récapitulatif des fonctions implémentées et à venir :
 
Version
LE
Version
Pro
Version
Pro+
Nota
1 sortie CV "standard"  check_ok check_ok check_ok (1)
1 sortie CV "réglage fin"  check_nok check_ok check_ok (1) (4)
1 sortie CV "réglage extra-fin"   check_nok check_nok check_ok (1) (4)
2 sorties CV "réglage fin"   check_nok check_nok check_ok (1)
Gate/Trigger check_ok check_ok check_ok
Plages de tension CV 0 V à +5 V (et 0 V à +10 V) check_ok check_ok check_ok (2)
Plages de tension CV -5 V à +5 V et -16 V à +16 V  check_nok check_ok check_ok (3)
Choix de la note de départ (bas de l'échelle des tensions) check_ok check_ok check_ok
Courbe de variation Volt/Octave check_ok check_ok check_ok
Courbe de variation Hertz/Volt check_nok check_ok check_ok
Courbe de variation personnalisée check_nok check_nok check_ok (4)
Choix de la polarité des sorties Trigger et Gate check_nok check_nok check_ok
Choix des canaux MIDI check_ok check_ok check_ok
Gestion des notes détachées ou liées check_ok check_ok check_ok
Gestion du GateOff forcé sur notes liées check_nok check_nok check_ok
Gestion du Pitch Bend : à venir (Pro+) check_nok check_nok -
Hauteur note sur CV1 et Velocité sur CV2 check_nok check_nok check_ok
Gestion du running status check_nok check_ok check_ok
Nota 1 : précision en standard de 0,1% à 0,8% selon note, toujours < 0,01% avec réglage extra-fin, voir texte pour détails
Nota 2sans l'étage de sortie analogique (sortie directe CNA), plage limitée de 0 V à +5 V
Nota 3 : avec l'étage de sortie analogique. Plage de tension -16 V à +16 V pour courbe Hertz/Volt et courbe personnalisée
Nota 4 : réglage individuel de la tension CV pour chacune des 127 notes MIDI

A chaque note MIDI reçue, l'interface délivre une tension analogique comprise entre deux valeurs extrêmes (par exemple entre 0 V et +5 V) qui dépend de la hauteur de la note (pitch). A chaque réception d'un événement NoteOn (touche clavier enfoncée), deux sorties logiques "Gate" et "Trigger" s'activent. La sortie Trigger ne s'active que très brièvement (pendant 1 ms) alors que la sortie Gate reste activée tant qu'au moins une note est jouée. Le circuit est basé sur un PIC 18F26K22 et un CNA (Convertisseur Numérique Analogique) de type MCP4822 ou MCP4922. Voir aussi (pour informations complémentaires) la page Commande CV_Gate 001.


Schéma

Le coeur du montage est un microcontrôleur PIC 18F26K22 cadencé par un quartz de 16 MHz, auquel est associé un CNA simple (MCP4821 ou MCP4921) ou un CNA double (MCP4822 ou MCP4922).


interface_midi_017c_18f26k22_MCP4922
Coeur du système

interface_midi_017c_outs_scrambled
Etage de sortie analogique CV1 et CV2 configurable (schéma volontairement embrouillé)

Fonctionnement général

L'interface possède une entrée MIDI IN et deux sorties de tension analogique CV1 et CV2. Quand un événement MIDI de type Note se présente à l'entrée, l'interface décode les octets de l'événement et en extrait les valeurs (canal MIDI, hauteur note et vélocité). S'il s'agit du début d'une note (NoteOn), l'information de hauteur est envoyée au convertisseur numérique analogique après traitement. Presque simultanément, la sortie logique Gate correspondante est activée. S'il s'agit de la fin d'une note (NoteOff), le CNA est remis à zéro (tension de sortie nulle) et la sortie logique Gate est désactivée, sauf si une nouvelle note a été reçue entre temps. Lorsque plusieurs notes arrivent "en même temps", c'est la dernière qui a le dernier mot (qui détermine la tension de sortie CV). Le temps de réaction est élevé : une fois reçus tous les bits de l'événement MIDI note, les sorties en tension, Gate et Trigger sont mises à jour en moins de 0,1 ms. Les sorties Gate et Trigger sont activées une fois la sortie en tension mise à jour et stabilisée (entre 10 et 20 us).


Circuit d'horloge / base de temps

Les lignes RA7/OSC1 et RA6/OSC2 du PIC sont connectées à un quartz de 16 MHz avec deux condensateurs céramiques de 22 ou 27 pF. Les temps de réactivité mesurés (latence ou temps de traitement) sont les suivants :


Latence
Nota
Délai entre arrivée note MIDI-ON et CV 50 à 60 us (1)
Délai entre arrivée note MIDI-ON et Trig 50 à 60 us
Délai entre arrivée note MIDI-ON et Gate 50 à 60 us
Délai entre arrivée note MIDI-OFF et CV 50 à 60 us
Délai entre arrivée note MIDI-OFF et Trig - (2)
Délai entre arrivée note MIDI-OFF et Gate 50 à 60 us
Nota (1) : après réception effective des trois octets constituant la note MIDI, laquelle dure environ 1 ms
Nota (2) : la durée du signal Trig est constante (1 ms) et ne dépend pas de la durée de la note

Remarque : les temps spécifiés ci-devant sont quasiment les mêmes pour toutes les configurations (1 ou 2 sorties CV actives), les différences sont de l'ordre de 10 us (environ 50 us en mode 1 sortie CV réglage fin, environ 60 us pour les autres modes).

Entrée MIDI

L'entrée MIDI est composée de l'optocoupleur U2/PC900 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 des deux fils 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 reliée au +5 V. Les données MIDI mises en forme aboutissent à l'entrée RC7/RX1 du PIC.


Sortie MIDI

La sortie MIDI permet un retour (écho) des données de configuration qui peuvent être envoyées sous forme de Control Change ou Sysex sur l'entrée MIDI. En usage normal, La sortie MIDI OUT n'est pas utilisée.


Sortie Gate et Trigger

La sortie Gate est activée tant qu'une note est jouée. La sortie Trigger délivre quant à elle une courte impulsion au début de la note (événement NoteOn). La polarité des signaux Gate et Trigger (en logique positive par défaut) peut être inversée de deux manières :

- soit au niveau logiciel par envoi d'une commande spécifique (SysEx) sur l'entrée MIDI IN
- soit au niveau matériel par l'ajout d'un inverseur logique.
La tension des sorties Gate et Trigger peut prendre d'autres valeurs que celle standard du TTL, par exemple +6 V, +12 V ou +15 V.

Notes séparées ou liées

Quand les notes reçues sont détachées (une seule note à la fois), la sortie Gate se désactive et la tension de sortie CV repasse à zéro à chaque réception d'un événement NoteOff.


interface_midi_017c_graphe_001a
Exemple de notes détachées, échelle "hertz" pour CV1 et "octave" pour CV2

Quand les notes reçues sont liées (une nouvelle note est jouée alors que la précédente n'est pas encore relâchée), la sortie Gate reste active durant la "transition" et la sortie CV change de valeur sans repasser par zéro.

interface_midi_017c_graphe_001b
Exemple de notes liées, échelle "hertz" pour CV1 et "octave" pour CV2

En cas de réception de plusieurs notes "simultanées", c'est toujours la dernière reçue qui met à jour la tension de sortie CV.

GateOff forcé
L'interface peut être configurée (par Control Change ou Sysex) pour que la sortie Gate se désactive pendant un très bref instant (500 us) lors de l'arrivée d'une nouvelle note alors qu'au moins une note est toujours en cours de jeu.

interface_midi_017c_graphe_001c
Exemple de notes liées, mais avec GateOff forcé (voir trace Gate1)

Courbe de conversion MIDI vers CV

Il existe plusieurs "règles" de conversion, avec une approche linéaire Volt/Octave ou exponentielle Hertz/Volt. L'interface MIDI 017c permet de travailler avec les deux courbes :


interface_midi_017x_graphe_002a

L'interface permet en outre de travailler avec un troisième type de courbe entièrement personnalisable par l'utilisateur dans le but de répondre à des besoins très spécifiques (gamme non tempérée, inversion haut/bas, etc).


A - Courbe Volt/Octave
Courbe standard de 1 V / octave (Roland, Moog, Sequential Circuits, Oberheim, ARP...) avec une plage de tension de sortie de 0 V à +5 V permettant de couvrir 5 octaves, ou avec une plage de tension de sortie de 0 V à +10 V permettant de couvrir 8 octaves :

Note Tension CV (CV voltage) Nota
Do0 (C0) 0.000 V
Do1 (C1) +1,000 V
Do2 (C2) +2,000 V
Do3 (C3) +3,000 V
Do4 (C4) +4,000 V
Do5 (C5) +5,000 V
Do6 (C6) +6,000 V (1)
Do7 (C7) +7,000 V (1)
Do8 (C8) +8,000 V (1)
Nota (1) : interface de sortie analogique requise

Remarque : certains instruments, pour une tension CV de 0 V, peuvent jouer une note différente du Do0 (Fa pour le MiniMoog, par exemple). Cette interface permet de spécifier la valeur de la première note, qui correspond à une tension de sortie de 0 V.

B - Courbe Hertz/Volt
Avec cette courbe, la tension de sortie est doublée à chaque fois qu'on passe d'une octave à l'octave supérieure, ce qui augmente la "précision" dans les notes les plus aigues. Par exemple (réglage d'origine) :

Note Tension CV
Exemple #1
Tension CV
Exemple #2
Tension CV
Exemple #3
Nota
La0 (A0) 0,125 V 0,250 V 0,500 V
La1 (A1) 0,250 V 0,500 V 1,000 V
La2 (A2) 0,500 V 1,000 V 2,000 V
La3 (A3) 1,000 V 2,000 V 4,000 V
La4 (A4) 2,000 V 4,000 V 8,000 V (1)
La5 (A5) 4,000 V 8,000 V 16,000 V (1)
La6 (A6) 8,000 V 16,000 V - (1)
Nota (1) : interface de sortie analogique requise pour tension de sortie supérieure à +5 V

C - Courbe personnalisée
La courbe personnalisée permet de délivrer n'importe quelle tension comprise entre -15 V et +15 V, de façon individuelle pour chacune des notes MIDI. Pour aller au-delà de la plage 0 V à +5 V, l'interface de sortie analogique est requise. La courbe personnalisée peut s'appuyer sur une base linéaire Hertz/Volt ou exponentielle Volt/Octave puis être ensuite ajustée selon les besoins. La procédure de réglage n'est pas détaillée ici (elle est décrite dans le manuel utilisateur complet qui ne peut être délivré que dans un cadre pro).
Remarque : une plage de tension allant au-delà de la plage -15 V à +15 V est possible, me contacter pour détails.

Choix du mode de conversion (type de courbe)
Le choix du mode de fonctionnement est déterminé par le mode de programmation #2 tension appliquée sur la broche RA5/AN4 du PIC, selon le tableau suivant.

Tension
RA5/AN4
Version
LE
Version
Pro
Version
Pro+
CV1 CV2 CV1 CV2 CV1 CV2
< 250 mV Note Oct/V check_nok Note Oct/V Note Hz/V Note Oct/V Note Hz/V
750 mV - 1,25 V Note Hz/V check_nok Note Hz/V Note Hz/V Note Hz/V Note Hz/V
1,75 V - 2,25 V Note Oct/V check_nok Note Oct/V Note Oct/V Note Oct/V Note Oct/V
2,75 V - 3,25 V check_nok check_nok check_nok check_nok User User
3,75 V - 4,25 V check_nok check_nok check_nok check_nok Note Oct/V Velocité
> 4,75 V check_nok check_nok check_nok check_nok Note Hz/V Velocité

Remarque : pour la version LE, seuls les MCP4821 ou MCP4921 peuvent être utilisés.

Etage de sortie CV

L'étage de sortie délivrant les tensions analogiques CV a été conçu pour pouvoir fonctionner avec plusieurs plages de tension d'entrée positives (par exemple 0 à +5 V qui est la plus commune) et permet de délivrer une tension dans une plage allant d'une valeur nulle (0 V) à une valeur positive (+15 V maximum), ou d'une valeur négative (-15 V maximum) à une valeur positive (+15 V maximum). Le taux d'amplification de la plage est ajustable, il est également possible d'appliquer un offset pour décaler la plage entière (ajustage du zéro).


Réglage fin de la tension CV

La stabilité et la précision de la tension de sortie CV dépendent de la qualité de l'alimentation, de la résolution du CNA et du coefficient de température de sa tension de référence, des composants utilisés pour l'étage de sortie analogique, de la qualité de fabrication du circuit imprimé (PCB), mais aussi de la plage de notes jouées, surtout pour la courbe Hertz/Volt où la "résolution effective" est meilleure pour les notes aigues que pour les notes graves.

Pour compenser les éventuelles dérives, la ou les tensions de sortie du CNA (et donc la ou les tensions de sortie CV) peuvent être ajustées de manière très fine et de façon individuelle pour chacune des 127 notes (version Pro+), pour n'importe quelle courbe (Volt/Octave, Hertz/Volt ou personnalisé). L'intérêt d'une telle fonction est de pouvoir, entre autre, corriger une éventuelle "non-linéarité" observée sur l'instrument de musique.
En résumé, l'interface 017c permet de définir (avec son étage de sortie analogique) :
- la plage de travail (0 V à 5 V, 0 V à +10 V, 0 V à +16 V, -5V à +5V ou -16 V à +16 V)
- le taux d'amplification dans la plage choisie
- le décalage de la plage complète (offset général pour ajustage du zéro / première note)
- l'ajustage individuel de chaque note (ajustage extra-fin pour la version Pro+)

Mode sortie simple ou double avec réglage fin
Dans ce mode, la précision de la tension de sortie dépend directement de la résolution du CNA. Le CNA 12 bits utilisé ici permet de disposer de 4096 pas pour la plage complète de la tension de sortie CV, ce qui correspond à une résolution théorique de 0,024% pour le haut de l'échelle... et de 0,8% pour le bas de l'échelle !
Dans le mode de réglage fin, les deux boutons-poussoirs T- et T+ permettent de décaler la tension de sortie en plus ou en moins par pas de 1,00 mV (pour la plage 0 V à +4.096 V), par pas de 1,22 mV (pour la plage 0 V à +5 V) ou par pas de 2,44 mV (pour la plage 0 V à +10 V). La plage de réglage de cet offset va de -125 à +125 pas. Ces pas ayant une valeur constante sur toute l'étendue de la plage de sortie du CNA, la précision de réglage est forcément moindre dans les valeurs les plus faibles. Voici un exemple avec conversion Hertz/Volt limitée à une plage 0-4,096V et où le La0 (55 Hz) correspond à une tension de sortie de 0,125 V :
- LA0 (55 Hz), sortie CNA = 0,125 V => résolution réglage (pas) = 1,00 mV => précision 0,80%
- LA1 (110 Hz), sortie CNA = 0,250 V => résolution réglage (pas) = 1,00 mV => précision 0,40%
- LA2 (220 Hz), sortie CNA = 0,500 V => résolution réglage (pas) = 1,00 mV => précision 0,20%
- LA3 (440 Hz), sortie CNA = 1,000 V => résolution réglage (pas) = 1,00 mV => précision 0,10%
- LA4 (880 Hz), sortie CNA = 2,000 V => résolution réglage (pas) = 1,00 mV => précision 0,05%
- LA5 (1760 Hz), sortie CNA = 4,000 V => résolution réglage (pas) = 1,00 mV => précision 0,025%

Mode sortie simple avec réglage extra-fin
Dans ce mode, la tension de sortie CV peut être ajustée avec une très grande finesse, puisque le pas de réglage est 100 fois plus faible que dans le mode de réglage fin. Je dois avouer que l'idée de départ était de vérifier si une telle option était réellement nécessaire (utile) dans la pratique.
Dans le mode de réglage extra-fin, les deux boutons poussoirs T- et T+ permettent de décaler la tension de sortie en plus ou en moins par pas de 10 uV (pour la plage 0 V à +5 V) ou par pas de 60 uV (pour la plage -15 V à +15 V). La plage de réglage de cet offset va de -125 à +125 pas (+/-1.25 mV max, ce qui permet un recouvrement entre deux notes adjacentes). La précision en est grandement accrue, voici ce qu'on obtient en reprenant l'exemple précédent (conversion Hertz/Volt, plage 0-4.096 V, tension de sortie de 0,125 V pour le La0) :
- LA0 (55 Hz), sortie CNA = 0,125 V => résolution réglage (pas) = 10 uV => précision 0,0080%
- LA1 (110 Hz), sortie CNA = 0,250 V => résolution réglage (pas) = 10 uV => précision 0,0040%
- LA2 (220 Hz), sortie CNA = 0,500 V => résolution réglage (pas) = 10 uV => précision 0,0020%
- LA3 (440 Hz), sortie CNA = 1,000 V => résolution réglage (pas) = 10 uV => précision 0,0010%
- LA4 (880 Hz), sortie CNA = 2,000 V => résolution réglage (pas) = 10 uV => précision 0,0005%
- LA5 (1760 Hz), sortie CNA = 4,000 V => résolution réglage (pas) = 10 uV => précision 0,00025%
Ces valeurs purement théoriques mettent en évidence une nette amélioration ! Soyons honnête et modérons notre joie, cette précision est luxueuse quand on pense au coefficient de température des composants, à l'appareil qui va recevoir la tension CV et surtout... à la capacité de l'oreille humaine de déceler de tels écarts. Disons qu'il est bon, de temps en temps, de s'amuser en apprenant. Cela s'applique aussi aux adultes ;)

Pendant la phase de réglage (pression sur T- ou T+) la tension de sortie du CNA correspond à la valeur de la dernière note reçue avec le dernier ajustement (avec application de l'offset). Les valeurs de décalage spécifiées par l'utilisateur sont conservées en mémoire et rappelées lors de la mise sous tension suivante, et peuvent bien sûr être annulées (effacées) à tout moment.

Programmation de l'interface

L'interface MIDI017c peut être configurée grâce aux microswitches câblés sur les lignes RB2 à RB6 du PIC et par les boutons-poussoirs Up et Down câblés sur les lignes RB0 et RB1. Les modifications sont conservées même quand l'interface est hors tension.


Remarque : inter en position off = inter ouvert = état logique 1; inter en position on = inter fermé = état logique 0.

Paramètre ou fonction RB5 RB4 RB3 RB2 Valeur par défaut Nota
15 <mode normal> (hors prog) 1 (off) 1 (off) 1 (off) 1 (off) - (1)
14 Première note 1 1 (off) 1 (off) 1 (off) 0 (on) C0 (2)
13 Première note 2 1 (off) 1 (off) 0 (on) 1 (off) C0 (2)(5)
12 Dernière note 1
1 (off) 1 (off) 0 (on) 0 (on) C5
(2)
11 Dernière note 2 1 (off) 0 (on) 1 (off) 1 (off) C5 (2)(5)
10 Mode CV 1 (off) 0 (on) 1 (off) 0 (on) (3)(5)
9 Courbe CV1 1 (off) 0 (on) 0 (on) 1 (off) Volt/Octave
8 Courbe CV2 1 (off) 0 (on) 0 (on) 0 (on) Volt/Octave (5)
7 Offset notes individuelles 1 0 (on) 1 (off) 1 (off) 1 (off) 0 (5)
6 Offset notes individuelles 2 0 (on) 1 (off) 1 (off) 0 (on) 0 (5)
5 Polarité Gate 1 0 (on) 1 (off) 0 (on) 1 (off) Positive (4)(5)
4 Polarité Trig 1 0 (on) 1 (off) 0 (on) 0 (on) Positive (4)(5)
3 Polarité Gate 2 0 (on) 0 (on) 1 (off) 1 (off) Positive (4)(5)
2 Polarité Trig 2 0 (on) 0 (on) 1 (off) 0 (on) Positive (4)(5)
1 Canal MIDI 1 0 (on) 0 (on) 0 (on) 1 (off) OmniOn
0 Canal MIDI 2 0 (on) 0 (on) 0 (on) 0 (on) OmniOn (5)
Nota (1)en utilisation normale, les lignes RB0 à RB5 du PIC doivent être laissées en l'air (non connectées)
Nota (2)le choix de la note de début ou fin peut se faire avec les boutons Up et Down ou en envoyant la note désirée sur l'entrée MIDI IN
Nota (3)le mode d'utilisation des sorties CV est détaillé ci-après
Nota (4) : bouton Up pour logique positive (état de repos à 0), bouton Down pour logique négative (état de repos à 1)
Nota (5)uniquement version Pro+

Mode normal (hors programmation)

En utilisation normale, les lignes RB2 à RB5 du PIC doivent être laissées en l'air (non connectées) pour les placer à l'état logique haut (1). Si au moins un des quatre interrupteurs de DSW1 est fermé (ligne correspondante à l'état logique bas), alors l'interface se place en mode programmation. Le code binaire formé par les quatre interrupteurs de DSW1 (lignes RB2 à RB5 du PIC) définit le paramètre à modifier.


Choix du CNA

Un CNA simple (MCP4821 ou MCP4921) permet de disposer d'une seule sortie CV, avec réglage standard ou fin. Un CNA double (MCP4822 ou MCP4922) permet de disposer de deux sorties CV, avec réglage standard, fin ou extra-fin.


CNA Version
LE
Version
Pro
Version
Pro+
MCP4821 check_ok check_ok check_ok
2 MCP4822 check_nok check_nok check_ok
3 MCP4921 check_ok check_ok check_ok
4 MCP4922 check_nok check_nok check_ok

Le choix du CNA ne peut pas être défini par l'utilisateur. Il existe un logiciel différent par type de CNA.

Choix des première et dernière note

Le choix des notes de début et de fin de plage peut se faire de deux façons après que les interrupteurs DSW1 aient été placés dans la position adéquate :

- soit avec les boutons Up et Down;
- soit en envoyant la note désirée sur l'entrée MIDI IN.

Mode d'utilisation des sorties CV

L'interface peut fonctionner avec un CNA de type MCP4821, MCP4822, MCP4921 ou MCP4922 (MCP4821 ou MCP4921 seulement pour la version LE). La tension de référence est interne pour les CNA MCP482x et externe pour les CNA MCP492x. Les modes possibles sont les suivants :


CNA Mode Réglage
notes
Version
LE
Version
Pro
Version
Pro+
MCP4821 1 sortie CV (ref 4.096 V) Standard check_ok check_ok check_ok
2 MCP4821 1 sortie CV (ref 4.096 V) Fin check_nok check_ok check_ok
3 MCP4822 2 sorties CV (ref 4.096 V) Standard check_nok check_nok check_ok
4 MCP4822 2 sorties CV (ref 4.096 V) Fin check_nok check_ok check_ok
5 MCP4822 1 sortie CV (ref 4.096 V) Extra-fin check_nok check_nok check_ok
6 MCP4921 1 sortie CV, ref 4.096 V Standard check_ok check_ok check_ok
7 MCP4921 1 sortie CV, ref 5.000 V Standard check_ok check_ok check_ok
8 MCP4921 1 sortie CV, ref 4.096 V Fin check_nok check_ok check_ok
9 MCP4921 1 sortie CV, ref 5.000 V Fin check_nok check_ok check_ok
10 MCP4922 2 sorties CV, ref 4.096 V Standard check_nok check_nok check_ok
11 MCP4922 2 sorties CV, ref 5.000 V Standard check_nok check_nok check_ok
12 MCP4922 2 sorties CV, ref 4.096 V Fin check_nok check_ok check_ok
13 MCP4922 2 sorties CV, ref 5.000 V Fin check_nok check_ok check_ok
14 MCP4922 1 sortie CV, ref 4.096 V Extra-fin check_nok check_nok check_ok
15 MCP4922 1 sortie CV, ref 5.000 V Extra-fin check_nok check_nok check_ok

Choix de la courbe des sorties CV

En fonction de la version du logiciel (LE, Pro ou Pro+), les sorties CV peuvent suivre une courbe d'évolution de type Volt/Octave, Hertz/Volt ou Personalisée, ou encore suivre la valeur d'autres paramètres MIDI tel que la vélocité.


Courbe Version
LE
Version
Pro
Version
Pro+
1 Volt/Octave check_ok check_ok check_ok
2 Hertz/Volt check_nok check_ok check_ok
3 Personnalisée check_nok check_nok check_ok
4 Vélocité check_nok check_nok check_ok

Offset notes individuelles

Version LE : la tension relative à chaque note est définie "en dur" dans le logiciel du PIC, et ne peut être modifiée de façon individuelle. La précision des tensions de sortie CV1 et CV2 dépend de la tolérance du CNA utilisé. La précision suffit dans la grande majorité des cas.
Version Pro : chaque note peut faire l'objet d'un réglage individuel fin (+/-1 mV sur plage 0-5V).
Version Pro+
: chaque note peut faire l'objet d'un réglage individuel extra-fin (+/-10 uV sur plage 0-5V).


Polarité des sorties Gate et Trig

La polarité des sorties Gate1, Gate2, Trig1 et Trig2 peut être définie de façon indépendante en logique positive (repos à l'état bas et activation à l'état haut) ou en logique négative (repos à l'état haut et activation à l'état bas).


Choix du canal MIDI

Le canal MIDI peut être spécifié pour la voie 1 ou la voie 2. Il s'agit soit d'un numéro spécifique compris entre 0 et 15 (canal MIDI 1 à 16), soit d'un mode OmniOn, pour lequel les notes reçues sont interprétées quelque soit leur numéro de canal MIDI.


Reset total

Pour réinitialiser tous les paramètres avec leur valeur d'origine, presser simultanément les deux boutons-poussoirs Down et UP au moment de la mise sous tension de l'interface..


Alimentation

La section microcontrôleur est alimentée sous +5 V et l'étage de sortie analogique est alimenté sous une tension symétrique de +/18 V. Bien évidement, les circuits intégrés analogiques choisis pour cet étage de sortie supportent cette tension sur le long terme ;)


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.

Prototypes

Un réalisé sur plaque d'expérimentation, l'autre sur PCB pro.

Prototype #001

Prototype réalisé sur plaque d'expérimentation sans soudure et testée avec les CNA MCP4821, MCP4822, MCP4921 et MCP4922.


interface_midi_017c_proto_rm_001b interface_midi_017c_proto_rm_001c  miditocv_main_001a

La procédure de test général a consisté à vérifier les courbes Volt/Octave et Hertz/Volt. Les MCP4921 et MCP4922 ont été testés avec une tension de référence externe de +5.000 V et +4.096 V (référence de tension ajustable TL431 pour le 4.096 V, car je n'avais pas de référence plus "sérieuse" sous la main). Pour la vérification des tensions en sortie du CNA, j'ai développé un outil spécifique MidiToCV qui m'a fait gagner beaucoup de temps en faisant à ma place les calculs fastidieux (copie écran ci-devant). Les valeurs mesurées inscrites dans le tableau suivant correspondent aux valeurs relevées sur le prototype avant calibrage par réglage fin. Les valeurs attendues sont les valeur théoriques calculées, elles peuvent être obtenues en pratique après réglage fin (Pro) ou extra-fin (Pro+).

Note MIDI MCP482x
Volt/Octave
Ref interne
MCP492x
Volt/Octave
Ref 4.096 V
MCP492x
Volt/Octave
Ref 5.000 V
MCP482x
Hertz/Volt
Ref interne
MCP492x
Hertz/Volt
Ref 4.096 V
MCP492x
Hertz/Volt
Ref 5.000 V

Do0
(C0)
Mesuré 0.001 V 0.002 V 0.002 V -
-
-

Attendu 0.000 V 0.000 V 0.000 V
Ecart +0.10% +0.20% +0.20%
La0
(A0)
Mesuré -
-
-
0.123 V 0.126 V 0.126 V
Attendu 0.125 V 0.125 V 0.125 V
Ecart -1.62% +0.80% +0.80%
Do1
(C1)
Mesuré 0.818 V 0.821 V 0.999 V -
-
-

Attendu 0.819 V 0.819 V 1.000 V
Ecart -0.12% +0.24% -0.10%
La1
(A1)
Mesuré -
-

0.248 V 0.250 V 0.251 V
Attendu 0.250 V 0.250 V 0.250 V
Ecart -0.80% 0.00% +0.40%
Do2
(C2)
Mesuré 1.634 V 1.636 V 1.999 V -
-
-

Attendu 1.638 V 1.638 V 2.000 V
Ecart -0.12% -0.12% -0.05%
La2
(A2)
Mesuré -
-

0.498 V 0.499 V 0.501 V
Attendu 0.500 V 0.500 V 0.500 V
Ecart -0.40% -0.20% +0.20%
Do3
(C3)
Mesuré 2.449 V 2.456 V 2.996 V -
-
-

Attendu 2.457 V 2.457 V 3.000 V
Ecart -0.32% -0.04% -0.13%
La3
(A3)
Mesuré -
-

0.997 V 0.998 V 1.002 V
Attendu 1.000 V 1.000 V 1.000 V
Ecart -0.30% -0.20% +0.20%
Do4
(C4)
Mesuré 3.272 V 3.276 V 3.998 V -
-
-

Attendu 3.276 V 3.276 V 4.000 V
Ecart -0.12% 0.00% -0.05%
La4
(A4)
Mesuré -
-

1.996 V 2.000 V 2.000 V
Attendu 2.000 V 2.000 V 2.000 V
Ecart -0.20% 0.00% 0.00%
Do5
(C5)
Mesuré 4.083 V 4.095 V 4.993 V -
-
-

Attendu 4.096 V 4.096 V 5.000 V
Ecart -0.31% -0.02% -0.14%
La5
(A5)
Mesuré -
-

3.991 V 4.001 V 3.998 V
Attendu 4.000 V 4.000 V 4.000 V
Ecart -0.22% +0.02% -0.05%

Explication des écarts entre valeur mesurée et valeur attendue
Le plus grand pourcentage de déviation entre valeur mesurée et valeur attendue est observé dans le bas de la gamme, pour les faible valeurs du CNA. Cela n'a rien de surprenant et est tout à fait normal, puisque la résolution effective du CNA diminue au fur et à mesure qu'on descend dans les faibles valeurs (le nombre d'échelons sollicités est plus petit pour une valeur du pas - entre échelons - constante, comme je l'ai écrit ci-devant). Dans le jargon technique du CNA (Convertisseur Numérique Analogique), on parle de DNL (Differential Non-Linearity) et de INL (Integral Non-Linearity) qu'on peut se permettre de désigner comme coupables de ces déviations. De part la nature même du procédé employé pour passer du monde numérique au monde analogique et du fait de la tolérance des composants utilisés pour cette conversion, il est impossible de garantir qu'à tel code numérique correspond effectivement la valeur analogique attendue (il peut y avoir un léger décalage, plus ou moins prononcé). A titre d'exemple et pour mes échantillons de CNA, il fallait envoyer la valeur 123 au MCP4921 et la valeur 127 au MCP4821 (au lieu de la valeur 125 pour les deux) afin d'obtenir la tension de sortie de 125 mV attendue. Ces écarts sont du même ordre de grandeur pour les faibles et grandes valeurs numériques (et par conséquent analogiques), ce qui explique que le problème est plus visible pour les faible valeurs. Et bien entendu, les écarts relevés en pratique dépendent d'un échantillon de CNA à l'autre...

D'où l'intérêt du réglage individuel par note...
Si certaines interfaces MIDI/CV font l'impasse sur cette petite perte de précision dans le bas de la gamme, c'est peut-être parce que cela ne s'entend pas beaucoup... ou que le CNA employé est de très haute qualité ! Pour ma part, je souhaitais mettre en place une correction, car qui peut le plus peut le moins. Les écarts obtenus avec le circuit terminé (écarts qui peuvent différer d'un exemplaire d'interface à l'autre) peuvent donc être annulés grâce à la fonction du réglage fin ou extra-fin qui par une petite astuce augmente de façon artificielle la résolution de la tension de sortie CV aux faibles valeurs et permet un ajustage à quelques dizaines de microvolts près.

Remarques :

Prototype #002

Réalisé sur PCB pro, avec convertisseur MCP4922 et référence de tension 4,096 V.


interface_midi_017c_proto_rm_002a interface_midi_017c_proto_rm_002c

Composants faciles à placer. J'ai juste failli perdre ma référence de tension, quand en essayant de la prendre avec ma brucelle elle a sauté comme une puce. Je l'ai cherchée un bon moment sur ma table de travail, avant de la retrouver... dans un des trous de fixation du PCB !

interface_midi_017c_proto_rm_002e interface_midi_017c_proto_rm_002f

Les tensions de sortie CV obtenues pour les notes fixes que j'avais utilisées comme "référence" avec la maquette précédente sont conformes. Je les ai mesurées ici directement en sortie du convertisseur MCP4922, sans passer par l'interface analogique de sortie. La tension maximale que j'ai pu en sortir est de 4,088 V au lieu de 4,092 V (tension d'alimentation de 5,00V).



Logiciel du PIC (version limitée LE)

LE - Le logiciel compilé (*.hex) disponible en libre service est la version limitée (version LE).
Interface MIDI 017c - PIC 18F26K22 - MCP4x21 - LE
- xx/xx/2021
Logiciel LE pas encore disponible

Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, merci de consulter la page PIC - Sources.
Logiciel LE pas encore disponible


Circuit imprimé (PCB)

Réalisé en double face pour la deuxième phase de prototypage, uniquement pour usage avec un CNA de type MCP4922. L'étage de sortie analogique est séparé.


Version avec PIC 18F26K22 et MCP4922

-

interface_midi_017c_18f26k22_MCP4922_pcb_overlay
Version du 06/06/2021

interface_midi_017c_18f26k22_MCP4922_pcb_components_top
Version du 01/08/2023

Pro - Typon (PCB) non disponible en libre service.


Historique

13/08/2023
- Nouveau dessin de circuit imprimé : changement connecteur MIDI, réduction dimensions PCB.

27/06/2021
- Ajout photos prototype #002 (18F26K22 + MCP4922) réalisé sur PCB pro.

06/06/2021
- Réalisation PCB pour version avec PIC 18F26K22 et CNA MCP4922.

06/09/2020
- Désormais, la tension de sortie de la section analogique CV peut atteindre la valeur de +/-17 V au lieu de +/-15 V. La valeur de 16 V pour la note A5 requise par certains synthés dans le mode de conversion Hertz/volt peut ainsi être obtenue.

01/01/2020
- Première mise à disposition.