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.
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).
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.
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.
|
Version LE |
Version Pro |
Version Pro+ |
Nota |
1 sortie CV "standard" | (1) | |||
1 sortie CV "réglage fin" | (1) (4) | |||
1 sortie CV "réglage extra-fin" | (1) (4) | |||
2 sorties CV "réglage fin" | (1) | |||
Gate/Trigger | ||||
Plages de tension CV 0 V à +5 V (et 0 V à +10 V) | (2) | |||
Plages de tension CV -5 V à +5 V et -16 V à +16 V | (3) | |||
Choix de la note de départ (bas de l'échelle des tensions) | ||||
Courbe de variation Volt/Octave | ||||
Courbe de variation Hertz/Volt | ||||
Courbe de variation personnalisée | (4) | |||
Choix de la polarité des sorties Trigger et Gate | ||||
Choix des canaux MIDI | ||||
Gestion des notes détachées ou liées | ||||
Gestion du GateOff forcé sur notes liées | ||||
Gestion du Pitch Bend : à venir (Pro+) | - | |||
Hauteur note sur CV1 et Velocité sur CV2 | ||||
Gestion du running status |
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.
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).
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).
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 |
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.
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.
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 INQuand 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.
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 :
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).
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) |
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) |
Tension RA5/AN4 |
Version LE |
Version Pro |
Version Pro+ |
|||
CV1 | CV2 | CV1 | CV2 | CV1 | CV2 | |
< 250 mV | Note Oct/V | Note Oct/V | Note Hz/V | Note Oct/V | Note Hz/V | |
750 mV - 1,25 V | Note Hz/V | Note Hz/V | Note Hz/V | Note Hz/V | Note Hz/V | |
1,75 V - 2,25 V | Note Oct/V | Note Oct/V | Note Oct/V | Note Oct/V | Note Oct/V | |
2,75 V - 3,25 V | User | User | ||||
3,75 V - 4,25 V | Note Oct/V | Velocité | ||||
> 4,75 V | Note Hz/V | Velocité |
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).
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.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.
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) |
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.
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+ |
||
1 | MCP4821 | ||||
2 | MCP4822 | ||||
3 | MCP4921 | ||||
4 | MCP4922 |
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;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+ |
||
1 | MCP4821 | 1 sortie CV (ref 4.096 V) | Standard | ||||
2 | MCP4821 | 1 sortie CV (ref 4.096 V) | Fin | ||||
3 | MCP4822 | 2 sorties CV (ref 4.096 V) | Standard | ||||
4 | MCP4822 | 2 sorties CV (ref 4.096 V) | Fin | ||||
5 | MCP4822 | 1 sortie CV (ref 4.096 V) | Extra-fin | ||||
6 | MCP4921 | 1 sortie CV, ref 4.096 V | Standard | ||||
7 | MCP4921 | 1 sortie CV, ref 5.000 V | Standard | ||||
8 | MCP4921 | 1 sortie CV, ref 4.096 V | Fin | ||||
9 | MCP4921 | 1 sortie CV, ref 5.000 V | Fin | ||||
10 | MCP4922 | 2 sorties CV, ref 4.096 V | Standard | ||||
11 | MCP4922 | 2 sorties CV, ref 5.000 V | Standard | ||||
12 | MCP4922 | 2 sorties CV, ref 4.096 V | Fin | ||||
13 | MCP4922 | 2 sorties CV, ref 5.000 V | Fin | ||||
14 | MCP4922 | 1 sortie CV, ref 4.096 V | Extra-fin | ||||
15 | MCP4922 | 1 sortie CV, ref 5.000 V | Extra-fin |
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 | |||
2 | Hertz/Volt | |||
3 | Personnalisée | |||
4 | Vélocité |
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).
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).
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.
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..
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 ;)
Il est possible d'utiliser d'autres optocoupleurs pour l'entrée MIDI, voir page Interfaces MIDI pour plus de détails.
Câblage valable pour les prises MIDI IN, MIDI OUT et MIDI THRU.
Un réalisé sur plaque d'expérimentation, l'autre sur PCB pro.
Prototype réalisé sur plaque d'expérimentation sans soudure et testée avec les CNA MCP4821, MCP4822, MCP4921 et MCP4922.
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% |
Réalisé sur PCB pro, avec convertisseur MCP4922 et référence de tension 4,096 V.
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).
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
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é.
-
Pro - Typon (PCB) non disponible en libre service.
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.