Dernière mise à jour :
13/10/2013
Présentation
Ce contrôleur MIDI dispose de sept voies distinctes et permet d'envoyer
des données MIDI de type Program Change ou Control Change à partir de
simples potentiomètres.
Un potentiomètre peut ainsi être
utilisé pour envoyer un message MIDI de type Program Change alors qu'un
autre peut être utilisé pour envoyer des messages MIDI de type Control
Change (volume ou panoramique par exemple). Quand on ne touche à aucun
potentiomètre, aucune donnée MIDI n'est envoyée. Au départ, je l'avais
réalisé
pour...
pour quoi, au
fait ? Je ne sais plus. En tout cas, ça m'a servi pour mettre au
point un nouvel instrument de musique MIDI doté d'un accéléromètre fixé
sur un corps humain et baptisé
AcceloMidi.
Schéma
Même principe de base que mon
interface
MIDI 003, avec les différences suivantes pour le montage
présenté ici :
- 7 entrées analogiques au lieu de 8;
- pas d'entrée numérique;
- remplacement du (plus coûteux) PIC 16F877 par un (moins coûteux) PIC
16F88.
Ne cherchez pas un autre bout de schéma, celui qui précéde est complet,
si on fait exception du bloc d'alimentation.
Fonctionnement général
Ce contrôleur permet d'envoyer 7 messages différents à un récepteur /
instrument MIDI, par le biais de 7 potentiomètres séparés.
L'utilisateur peut spécifier quel type de message envoyer pour chaque
potentiomètre. On peut par exemple décider d'affecter le
potentiomètre RV1 à l'envoi de données de type Program Change et le
potentiomètre RV2 à l'envoi de données de type Control Change. Pour
spécifier le type de données que l'interface doit envoyer sur
sa
sortie MIDI OUT, il faut lui envoyer sur son entrée MIDI IN,
des
"codes" qui lui diront quoi faire. Rien de compliqué puisque ces
codes sont de simples notes. Des exemples de
configuration
seront donnés au paragraphe procédure de configuration.
Entrée MIDI
L'entrée
MIDI est constitué de quelques composants qui permettent d'isoler le
contrôleur de l'appareil auquel on le raccorde. C'est toujours comme ça
et je n'ai pas envie de faire autrement. On retrouve donc le
traditionnel optocoupleur (U2) qui assure cette fonction d'isolation,
avec deux résistances (R1 et R2) et une diode (D1) qu'on ne peut pas
supprimer sans savoir ce qu'on fait (les économies c'est bien, mais
restons sérieux). Les données MIDI réceptionnées par le contrôleur se
retrouvent en bonne et due forme sur la broche RB2/RX du PIC 16F88.
Sortie MIDI
La
sortie MIDI ne devrait pas engendrer trop de questions. Elle permet de
délivrer les données qu'on souhaite envoyer et pour lesquelles on a
pris la peine de transpirer pour configurer le contrôleur. Les données
MIDI sortent de la broche RB5/TX du PIC et arrivent sereines
sur le connecteur MIDI OUT J1.
Choix des potentiomètres
Crantés
ou non crantés ? Piste carbone, plastique, Cermet ? Faites comme vous
le sentez. Pour ma part je considère
que cette interface est plus un "circuit de tests" qu'un
organe de
commande à part entière. Une chose est sûre : si vous ne voulez pas
qu'au bout de quelques mois elle envoie des paquets de
données non sollicités, évitez les potentiomètres à 50 cents
qui cracheront rapidement. Les modèles à piste plastique me semblent un
bon choix pour ce type d'application. Pour la valeur, pas vraiment
critique, vous pouvez aussi bien utiliser des 4,7 kO que des 10 kO ou
22 kO.
Procédure de configuration
La configuration de chaque potentiomètre est très simple :
1) Fermer l'interrupteur SW1 (RA5 = 1) pour passer en mode
Configuration.
2)
Positionner le curseur du potentiomètre auquel vous souhaitez affecter
une action :
- soit au minimum pour envoi de Program Change,
- soit au
centre pour
envoi de Control Change codé sur 7 bits (MSB seulement),
- soit
au maximum pour envoi de Control Change codé sur 14 bits (MSB
et
LSB).
3) Envoyer sur l'entrée MIDI IN, une note MIDI dont les caractéristiques sont définies de la façon suivante :
- hauteur correspondant au potentiomètre à configurer
: Do3 pour RV1 à Si3 pour RV7;
- canal MIDI correspondant au canal sur lequel les
données seront envoyées;
- vélocité correspondant au numéro de contrôleur à envoyer, de 0 à 95
(les valeurs supérieures à 95 sont ignorées);
Par exemple, si on veut que le potentiomètre
RV3 envoie des données de Control Change N°7 (volume) sur le canal MIDI
n°11, il
faut placer RV3 au centre et envoyer au contrôleur, une note MIDI ayant
les caractéristiques suivante :
- hauteur de la note = Mi3 (pour RV3)
- numéro de canal = 11
- vélocité = 7 (code de Control Change correpondant au réglage du
volume)
Autre exemple : si on veut que le potentiomètre
RV5 envoie des données de Program Change
sur le canal MIDI n°2, il faut placer RV5 au minimum et envoyer une
note MIDI ayant les caractéristiques suivantes :
- hauteur de la note = Sol3 (pour RV5)
- numéro de canal = 2
- vélocité = peu importe (valeur non prise en compte pour les Program
Change)
Prototype
Réalisé avec ma platine EasyPic7 et mon
adaptateur entrée/sortie MIDI 011.
Bon,
les premiers tests m'ont donné des sueurs, une erreur dans mon code
provoquait l'envoi de control change à la queue-leu-leu, sans que je ne
touche à aucun potentiomètre. Une fois mis hors tension le contrôleur (pas encore au point),
l'ordinateur sur lequel je vérifiais la réception des données à
continué de traiter les données entrantes pendant plusieurs secondes,
le temps de vider le buffer d'entrée ! Pas grave, on répare et on
continue. Après quelques optimisation, le code s'est révélé fonctionnel
et suffisant pour ce que je voulais faire avec.
Circuit imprimé
Non réalisé.
Logiciel du PIC
Fichier compilé pour PIC (binaire *.hex).
Contrôleur MIDI 001 - 16F88 - (13/10/2013)
Si
vous souhaitez recevoir par la poste un PIC préprogrammé
et prêt à utiliser, merci de consulter la page
PIC - Sources.
Historique
13/10/2013
- Première mise à disposition.