PatchsTableau résumé- Matériel / Logiciel / OutilsLogiciels et langages- Pure Data- Max MSP- Isadora- EyesWeb- VVVV- Processing- UsineTraitement de données- Outils- Filtres pour capteurs- Communication OSC, ponts entre logicielsDidacticiels- Réception en Midi- Pure Data / Gem- Proxi Mini + SonMatérielAutonomes- ZIP Z Interprêteur de PatchCaptationInterfaces sans fil- Mini-HF vers Midi- WiwiInterfaces filaires- 12 Ana / 16 Num- 16 capteurs OSC- 8 Ana / 8 Num Midi 2003- 2 Analogiques- 1 AnalogiqueCapteurs autonomes- Télémètre simple- Télémètre synchro- Tapis sensitif- RFIDCapteurs simples- Capteur piezo- Capteur pyro- Capteur Vitesse Doppler- Proxi Mini + SonCommunication- Midi vers DMX- Booster / Split / MergerActionActionneurs autonomes- 2 Servo / 4 Lampes- 8 Ana Out 0-10V- 8 Servo 128 pas- 8 Servo 3500 pas- 64 LEDCommande - Cartes filles- 8 Transistors- 8 Relais 2RT / 1RT / Reed- Inversion de moteurs![]() |
Matériel - Capteurs
|
import promidi.*; MidiIO midiIO; |
Dans la fonction setup, il faut détecter les périphériques Midi, en choisir un et ouvrir le port correspondant.
void setup() |
Les méthodes utilisées ici sont :
-
getInstance() pour ouvrir la possibilité de gérer les entrées/sorties Midi ;
-
printDevices() pour imprimer dans la console la liste des périphériques Midi disponibles. Cette étape n'est pas absolument nécessaire mais permet 1) de vérifier rapidement que l'appareil branché est bien reconnu en Processing et 2) de connaître son numéro d'identification dans la liste des ports Midi ;
- openInput(int,int) permet d'ouvrir un des ports de la liste en choisissant aussi un canal particulier. La structure est midiIO.openInput(numero du peripherique,canal).
Ce n'est pas la seule façon de choisir et d'ouvrir un port Midi mais c'est celle qui a été utilisée dans les sketches téléchargeables sur ce site.
Il est maintenant possible de récupérer les Control Change et les Note On dans notre sketch.
Définissons une variable globale, commodément appelée valeur. Selon les cartes de captation, cette variable peut être un int ou un array. Dans cette page, nous resterons dans le cas le plus simple.
int valeur; void controllerIn(Controller controller, int device, int channel){ |
Cette variable est utilisée dans une fonction controllerIn, où la variable valeur prend la valeur courante du capteur pour un numéro de Control Change donné. Le numéro de CC est récupéré grâce à controller.getNumber() et, s'il correspond aux critères de tri de la fonction, la valeur est récupérée grâce à controller.getValue().
Les Note On sont récupérés de façon équivalente, à l'aide d'une fonction noteOn. Là aussi le mieux est de définir auparavant une variable globale, par exemple un array d'integers nommé velocite_8 à 8 cases qui contiendra les informations venues de 8 interrupteurs branchés sur des entrées numériques.
int[] velocite_8 = new int[8]; void noteOn(Note note, int device, int channel){ |
Le numéro de Note On est obtenu grâce à note.getPitch(). Si les conditions de tri sont remplies (ici si le pitch est compris entre 0 et 7), la variable prend la valeur du Note On reçu à l'aide de note.getVelocity() et l'engrange à la bonne place de l'array, place correspondant au numéro de Note On.
Les variables valeur et velocite_8[] sont ensuite utilisables à volonté dans le sketch.
Ces fonctions sont communes aux sketches disponibles sur ce site pour les différentes cartes, avec les variantes spécifiques à chacune. Pour les traitements et les tris spécifiques de chaque carte, consulter les pages correspondantes.
Attention, il y a quelques précautions à prendre pour que tout se passe bien. Lorsqu'on teste un code, on relance régulièrement son exécution. Il faut éviter en Processing avec le Midi de faire simplement Stop / Run de nombreuses fois de suite. En effet, au bout d'un moment, l'accès au Midi se bloque complètement et plus rien ne semble fonctionner... Il devient impossible de relancer proprement Processing, il faut redémarrer la machine, avec le bouton Reset, d'ailleurs...
Pour éviter cet inconvénient relativement désagréable, il faut penser à fermer régulièrement Processing avant de tester une modification (peutêtre pas à tous les coups, mais souvent). Cela permet à Processing de fermer proprement les prots Midi, ce qu'il ne fait pas quand on se contente d'enchaîner les Run/Stop.
Il faudrait aussi explorer la méthode closeInput, cependant elle ne permet pas de fermer le port lui-même.
Liste des sketches Processing disponibles sur le site
Paragraphe en cours de rédaction.
Paramètres du node MidiController :
- Channel : 0. Dans vvvv les canaux Midi sont comptés de 0 à 15 et non de 1 à 16.
- Controller : numéro de control change.
- Buffer length : 10 par défaut.
- Enabled : 1
- Midi input Port : choisir l'entrée Midi sur laquelle est connectée le matériel.
En sortie : les données des capteurs sortent transformées entre 0 et 1 et non entre 0 et 127.
Liste des patches vvvv disponibles sur le site