Programmation

Les codes et programmes d’Interface-Z

Accueil > Matériel > Communication > Conversion Midi vers DMX en Processing

Conversion Midi vers DMX en Processing

Mis à jour le jeudi 9 mars 2017, par zandrine

Outils disponibles :
  1. Patch de test de pilotage d’un actionneur en 256 pas
  2. Patch de test de pilotage d’un actionneur en 128 pas

 

Pleine résolution 256 pas

Les messages Midi acceptent 128 valeurs différentes tandis que les instructions DMX permettent d’avoir 256 pas. La carte Midi vers DMX a deux modes de fonctionnement : soit elle permet de distribuer 256 valeurs sur deux Control Change Midi, donc de piloter un actionneur avec autant de finesse que le permet le protocole DMX, soit elle utilise un seul CC en 128 pas et multiplie les valeurs par 2 pour passer en DMX.

La library Midi utilisée est TheMidiBus.

Midi 2 DMX Sketch .pde : Pilotage d’un actionneur DMX en 256 pas de résolution

Sur la carte, l’interrupteur de configuration n° 5 doit être en position Off.

Code Processing permettant de gérer des actionneurs DMX.
Sketch midi_dmx_envoi256.pde

La valeur envoyée est affichée en vert.

Les valeurs de la glissière sont définies entre 0 et 255.

La variable envoyée en sortie est consignedmx. Le cœur du programme crée les messages Control Change en fonction de la valeur envoyée :

if (consignedmx<0)
consignedmx = 0 ;

if (consignedmx>255)
consignedmx = 255 ;

if (consignedmx<128)
valeurmidi = consignedmx ;
numeromidi = (numerodmx * 2) % 128 ;
canalmidi = ((numerodmx % 512)/64) ;

if (consignedmx>=128)
valeurmidi = consignedmx - 128 ;
numeromidi = ((numerodmx * 2) + 1) % 128 ;
canalmidi = ((numerodmx % 512)/64) ;

myBus.sendControllerChange(canalmidi, numeromidi, valeurmidi) ;

Running status Midi. Attention au phénomène éventuel de running status lié au protocole Midi. Une page dédiée à ce sujet : running status.

Résolution 128 pas

Midi 2 DMX en Max Sketch .pde : Pilotage d’un actionneur DMX en 128 pas de résolution

Sur la carte, l’interrupteur de configuration n° 5 doit être en position On.

Code Processing permettant de gérer des actionneurs DMX.
sketch midi_dmx_envoi.pde

Il n’y a pas besoin de quoi que ce soit de particulier pour traduire du Midi en DMX dans cette configuration.

Envoi d’une rampe sur les 4 premiers canaux DMX :

for(int i=0 ; i<4 ; i=i+1)
lampes[i]=(compteur+i*20)%128 ;
// sendControllerChange(canal, numero, valeur)
// sendControllerChange(channel, number, value)
myBus.sendControllerChange(0, i, lampes[i]) ;

La fonction nécessaire est tout simplement un "sendControllerChange()". Le premier paramètre permet de choisir le numéro de canal Midi (entre 1 et 16) qui correspond aux interrupteurs 1 à 4 sur la carte. Le deuxième sert à choisir le numéro de l’actionneur, qui doit être compris entre 0 et 63. Le troisième sert à envoyer les valeurs à l’actionneur en gradation sur 128 pas (attention à la configuration de la carte, sur l’interrupteur n°5).

Les valeurs des sliders sont définies entre 0 et 127.
La carte se charge de la transposition des valeurs entre 0 et 255 pour les instructions DMX.