Créer des MIDI maps custom pour TouchOSC sur Pure Data

TouchOsc est une formidable application permettant de créer des interfaces qui vous aideront à piloter aussi bien vos synthés virtuels qu’hardware voir même vos DAW préférées. Elle utilise un protocole de plus en plus utilisé dans le monde de la musique qu’est l’OSC (Open Sound Control). Vos machines ne l’implémentant pas forcément d’origine, il vous faudra utiliser un autre software tels que MaxMsp, Pure Data, Reaktor, ou d’autres qui permettront de traduire les messages envoyés par TouchOsc en midi… et là ça se complique souvent un peu.

Ce tutoriel a pour but de vous aider à créer vos propres patch MIDI. Nous utiliserons Pure Data (qui est un freeware), afin de calibrer celui-ci exactement comme votre patch TouchOsc et ce en ayant à l’esprit que l’on cherche à contrôler des synthés hardware en MIDI uniquement.

Pure Data  (logiciel libre open source : http://puredata.info/)  fait ça très bien, mais n’est pas un modèle de simplicité à prendre en main, la documentation étant peu fournie et en anglais essentiellement. J’ai donc mis les mains dans le cambouis… bien malgré moi… il fallait bien rentabiliser les 3.99€ que m’ont coûté TouchOsc non ? La perspective des heures joyeuses que j’allais passer le nez dans des algos ne m’a qu’à moitié refroidi : en général j’aime bien ça et surtout l’opération m’a semblé bien gérable. Commençons donc…

Note préalable : tout le tuto est construit autour de mon propre exemple : un patch TouchOsc qui me sert à contrôler mon Vermona MARS dont le contrôleur MIDI dédié m’a lâché. Ce synthé à une implémentation MIDI classique mais très complète, et le patch PD peut donc servir de base de travail pour n’importe quel autre synthé hardware recevant du MIDI mais je ne le recommande pas des masses car mes libellés de faders sont un peu foireux (les débuts…) et toutes les sorties MIDI seront à refaire (chaque fabricant faisant sa propre sauce en matière d’implémentation MIDI), mais ce tuto devrait vous rendre capable de le faire par vous même si vous avez bien suivi. A défaut, vous êtes inaptes, débranchez donc votre cerveau du réseau Wi-fi et allez le rendre au constructeur.

I/ Préparer le travail

Il vous faudra d’abord acheter TouchOsc sur votre iPad/iPhone, puis installer TouchOsc Editor (http://hexler.net/software/touchosc) afin de créer votre propre template de contrôleurs. Il faudra ensuite télécharger et installer Pure Data Extended (http://puredata.info/community/projects/software). Attention, à bien prendre la version Extended et non la Vanilla (et me demandez pas pourquoi, je l’ai lu, je le crois et ça marche). Une fois tout cela fait, on peut commencer !

II/ Créer un patch TouchOsc

Première étape dans le processus : avoir une référence. Il vous faudra créer votre patch sur TouchOsc afin de savoir combien de contrôleurs implémenter sur PD et comment les intégrer correctement. Je ne vais pas détailler comment créer un patch perso sur TouchOsc Editor ici, ce soft est très simple d’utilisation et le point essentiel ici est le patch qui fait la passerelle OSC/MIDI sur Pure Data. J’ai donc créé un patch TouchOsc comprenant 4 pages dont voici la première :

Le patch n’est pas au complet, ce n’est que la page 3 (partie VCF et VCA) montrée ici mais c’est suffisant pour se rendre compte. Oui, j’aime les faders, je trouve les potentiomètres parfois agaçants à manipuler. Les labels « VCF » et « VCA » ne sont que des labels, par contre les 5 du bas sont des toggle buttons sur lesquels j’ai mis un label par dessus.

Il faut savoir qu’à partir du moment où l’on crée un patch personnalisé, on peut aussi faire tout un tas de choses bonus… ce qui va se révéler parfois assez pratique.

Dans mon cas, j’ai divisé en 4 pages les paramètres de mon synthé : VCO1 / VCO2 / VCF+VCA / Modultions. Comme il me restait de la place presque partout (sauf en modulations d’ailleurs), j’ai ajouté quelques contrôles en doublon histoire de me faire quelques raccourcis qui vont bien, comme par exemple la vitesse du LFO, dont je trouve un contrôle en page de modulation mais aussi sur la page du VCF afin de pouvoir régler plus rapidement les effets de LFO sur le filtre puisqu’on y est. Il m’a suffit d’intégrer un doublon de chaque élément dans chacun des patchs TouchOsc et PD et de connecter ça bien. Rien n’empêche donc, tant qu’on a des contrôles MIDI sur les paramètres (ou OSC dans le cas de Reaktor, mais on y reviendra), de repenser un peu la façon d’utiliser un synthé… Par exemple programmer avec un seul fader un effet sur plusieurs oscillos d’un synthé FM par exemple 🙂

Bref, les applications sont nombreuses, mais dans mon cas j’ai surtout essayé de transposer le plus fidèlement possible les contrôles de mon Vermona MARS sur TouchOsc. J’ai donc suivi la charte MIDI du synthé (cf le manuel de votre synthé, ce sont les pages illisibles qu’on zappe tout le temps à la fin héhé) et j’ai créé autant de fader/bouton que j’avais de contrôles MIDI, plus quelques extras comme je l’expliquais mais bon, rien de folichon. Pensez à créer le bon type de contrôleur : les switchs ON/OFF utilisent un toggle etc… Pas de bouton radio pour le moment si je ne m’abuse et c’est bien dommage mais bon, on en veut toujours plus…

Il faut essayer d’être le plus exhaustif possible dès le début, afin de ne pas avoir à faire trop d’ajout/suppression après coup car celà peut être un peu galère, sachant qu’il faut programmer en binome Pure Data et TouchOsc Editor… L’aspect esthétique des boutons, potards et faders n’a pas vraiment d’importance, ce sont leurs noms qu’on cherche à « fixer » car ils vont servir de référence à Pure Data. Donc la « maquette » de votre patch finie, vous pouvez ouvrir Pure Data et on passe aux choses sérieuses.

III/ Créer le patch Pure Data

A/ Intro

On rentre dans le dur. On va partir d’un patch quasi vierge pour bien expliquer chaque étape. Avant toute chose, il faut sélectionner une sortie MIDI dans Pure Data et avoir bien sûr relié un cable MIDI de la carte son au synthé à contrôler, ou utiliser un logiciel comme MIDI Yoke pour envoyer les messages MIDI en virtuel dans votre séquenceur ou autre application. Pour sélectionner une sortie MIDI dans Pure Data, allez dans le menu « Media » puis « MIDI settings… ».

Voilà à quoi ressemble le patch de base (je me suis moi-même inspiré du patch « simple MIDI » dispo sur le site hexler, d’où les crédits laissés à bonne intention dirons nous) :

La commande « dumpOSC 8000 » récupères les données émises par TouchOsc en OSC. « OSCroute /1 /2 /3 /4 » route les 4 pages de TouchOsc vers 4 « canvas » (sous-groupes) qui vont abriter des réglages différents. Enfin la commande « s page-1 » (ou numéro de page qui va bien) est une liaison virtuelle qui envoie les données vers un récepteur, ici « r page-1 » placé à l’intérieur du sous-groupe un, qui va re_router ensuite les signaux vers les différents canaux MIDI. La commande du bas « ctlout 1 6 » est une commande d’envoi MIDI normalisée. Ici on envoi le CC #1 sur le canal 6. On peut se servir des entrées auxiliaires (les 2ème et 3ème entrée sur l’objet) pour définir ces valeurs de façon variable, mais dans mon cas je n’en ai pas besoin puisque tout est fixe dans l’architecture de ce patch. On peut créer ces objets très facilement en utilisant la commande « put » du menu puis sélectionner « object » et simplement taper à l’intérieur la commande, pas plus compliqué. La nomenclature veut un espace entre chaque argument puis /, comme pour « OSCroute /… » ou sans « / »pour certains comme les sorties MIDI. On peut accéder à l’aide par un clic droit, très pratique car elle explique au moins la nomenclature de chaque object. Il y a aussi dans le manuel intégré des listes de commandes insérables dans les objets et leurs conditions associées ce qui peut aider à comprendre leur fonctionnement (parfois…). Dans le cas d’un patch MIDI pour contrôler un synthé classiquement, cela reste très simple.

B/ Insérer les ingrédients de base dans le patch

Le patch suivant montre l’étape 1 : 

Dans mon cas, mon patch TouchOsc de la page 3, celle du filtre et du VCA, présente 9 faders et 5 toggle buttons. J’ai donc d’abord inséré dans le patch un routeur « OSCroute /fader1 … /toggle5 » qui va créer autant d’entrées de données que j’en ai à affecter à des commandes MIDI sur TouchOsc. Ensuite j’ai créé 9 objets « * 127 » qui vont servir à rééchelonner les valeurs OSC comprises entre 0 et 1 en valeurs MIDI de 0 à 127. Certains ont des valeurs différentes, j’y reviendrais.

Ensuite, il faut créer les sorties MIDI, que l’on voit en bas du patch. La commande « ctlout 1 6 » répétée ici maintes fois devra être remplacée par les valeurs adaptées au synthé à commander, sachant je le rappelle que c’est # de CC puis canal MIDI d’envoi. Avec le recul, je me dis que j’aurais pu faire cet article avec pour exemple de fond les quelques CC de base comme la ModWheel ou le Bender mais bon on ne sait jamais, des fois qu’il existe un autre utilisateur du Vermona MARS qui passe par ici… xD Bref.

C/ Relier les éléments

On a déjà l’essentiel ici. On peut commencer à relier. Il suffit de tirer la sortie en bas d’objet à gauche (le curseur doit se transformer en petit rond au survol) vers l’entrée en haut à gauche de l’objet de destination, comme sur l’image suivante : 

  Dans mon patch final j’ai ajouté des faders dans PD pour chaque fader créé dans TouchOsc, et ce en « insert » afin de garder un contrôle « physique » si je puis dire sur une commande MIDI envoyée. Il suffit de sortir du mode edit et de bouger le fader pour envoyer une commande MIDI si le fader est relié à une sortie MIDI. Ce qui permet de tester les rares fois où on a un souci. On a aussi une interface PC pour le synthé en passant. Je n’ai pas pris le temps de le faire sur l’exemple mais dans mon cas, la commande d’envoi MIDI aurait dû être « ctlout 31 6 » puisque je veux envoyer le cutoff (CC #31) sur le canal MIDI 6. Autre précision, les sorties du routeur « OSCroute » commencent en bas à gauche puis suivent l’ordre dans lequel vous les avez entrées dans le module. Ici la sortie 1 la plus à gauche va vers le multiplicateur 1 qui va ensuite vers mon fader (sortie) 1, etc.

Il n’y a plus grand chose à faire alors. Voir mon patch final, j’ai inséré les faders comme expliqué ci dessus et j’ai tiré tous les cables. On va voir pour finir les petites subtilités du patch.

Voici le patch final:

On peut voir que tous les contrôleurs standards sont multipliés par 127 (hors résonance qui est spéciale, j’en reparle plus bas). OSC envoie des infos comprises entre 0 et 1, il faut donc les remettre à la norme MIDI sur 127 valeurs.

Ensuite on peut voir que les switch, eux, n’ont pas la même valeur. Pour les switchs « keytrack » et « EG1 inv » ce sont de simples boutons ON/OFF. Un message MIDI de 63 ou plus active ledit paramètre. J’ai donc mis une valeur de 64 comme multiplicateur.

Pour les 3 switchs qui déterminent la source de la résonance, j’ai exploité une fonctionnalité MIDI assez particulière du MARS : la résonance du filtre (controleur 33) est contrôlée par les valeurs 0 à 63 comme dans beaucoup de synthés. Les concepteurs ont donc utilisés les autres valeurs (de 64 à 127) pour permettre de sélectionner une source de modulation pour la résonance (fixée malheureusement à 100% uniquement par contrainte technique évidente). J’ai donc fait en sorte que chaque switch déclenche une source de modulation en choisissant des valeurs adaptées. Bien sûr le constructeur ne donne pas les valeurs exactes puisque ces 3 sources sont censées être sélectionnées par le potard de résonance qui agit en continu. Moi je veux envoyer pile la bonne valeur. Mais il y a 3 sources possibles, la 1ère est donc activée par une valeur 64, juste au dessus de la dernière valeur réservée au contrôle manuel de la résonance (63), la dernière a une valeur 127 automatiquement, donc la seconde est forcément quelque part entre les deux, j’ai donc mis 90, et je suis tombé bon direct. C’est aussi à cause de cette résonance étalée sur 63 valeurs qui m’a obligé à multiplié par seulement 63 le signal venant de touchOSC pour la résonance. En théorie à ce stade, une fois votre patch chargé sur votre iPad dans TouchOSC, ouvrez le patch Pure Data, réglez la sortie MIDI dans Pure Data (il faut la remettre à chaque fois, ce n’est jamais sauvé avec le patch ni direct dans les préférences du soft, du moins à ma connaissance) et testez votre nouveau contrôleur tactile! 🙂

Note technique à propos des boutons MIDI

De la même façon que pour la résonance, les LFO ont plusieurs contrôleurs MIDI dédiés, que j’ai pu exploiter pour créer des boutons de synchro MIDI des LFO. L’idée étant donc d’avoir plusieurs boutons qui vont envoyer chacun une valeur MIDI différente sur un seul et même canal MIDI, ainsi que sur le même #CC. Or envoyer un message unique demande une petite subtilité sur touchOSC. Pourquoi ? Et bien parce que tous les boutons sont en standard paramétrés pour envoyer 0 ou 1. Si vous utilisez un simple bouton poussoir, quand vous appuyez il envoie la valeur que vous avez programmée et quand vous relâchez, il envoie 0… ce qui pose problème si l’on veut conserver la valeur… On pourrait régler le souci en utilisant un bouton toggle certes, mais ce n’est pas satisfaisant avec du MIDI. Admettons que vous avez un CC #70 qui contrôle la synchro du LFO. Le constructeur donne les specs suivantes : 0-30 = MIDI 1/16, 31-62 = MIDI 1/8, 63-99 = MIDI 1/4, 100-127 = OFF. Il me faudra 4 boutons. Chaque bouton enverra une seule valeur, par exemple, dans l’ordre : 0 / 31 / 63 / 127 pour déclencher chacune des synchro au choix. En pratique, une fois votre patch pure data fait avec ces valeurs envoyées sur le bon canal MIDI (le même partout donc), chaque fois que vous pousserez un bouton, il enverra la valeur voulue. Tout va bien. Si c’est un toggle bouton, il restera allumé jusqu’à nouvelle pression. Maintenant admettons que l’on appuie directement sur le 2ème bouton de synchro, toujours un toggle. Il envoie une nouvelle valeur au synthé qui la reçoit, ajuste la synchro, tout va bien. Mais on a deux boutons toggle allumés… pas terrible pour visualiser un patch en cours, mais surtout il va envoyer une valeur 0 quand je vais vouloir en désenclencher un ! Solution : utiliser un simple bouton poussoir (qui se relève quand on relâche le bouton), aller sur votre patch touchOSC et cliquer sur le bouton en question. Dans l’onglet « OSC » à gauche, réglez le « value range » de 1 à 1 au lieu du 0 à 1 par défaut et le tour est joué ! Au relèvement du bouton, la même valeur que celle voulu lorsqu’on a appuyé sera envoyée. Le bouton se comporte alors en simple « trigger manuel » d’une valeur unique via MIDI.

IV/ Conclusion

In fine, mon synthé en rack 1U assez pénible à utiliser a retrouvé une nouvelle jeunesse dans mon home studio grace à touchOSC et Pure Data. J’ai maintenant un contrôleur dédié pour mon synthé qui me permet de passer outre le contrôleur physique qui a rendu l’âme! 🙂 Et ce nouveau contrôleur tactile offre en plus de nombreux avantages sur l’ancien : un confort nettement amélioré avec le multitouch, qui se marie très bien au MIDI, qui peut recevoir de nombreux signaux en même temps, un sélecteur de source pour la modulation de la résonance que je n’avais pas avant et enfin des trigger de synchro pour les LFO, qui me permettent donc de faire très facilement des wobbles sans me fatiguer. :p

Pour conclure je dirais qu’une fois appréhendés les quelques aspects techniques présentés dans cet article, il suffit alors à chacun d’exploiter l’implémentation MIDI de votre machine. Plus celle-ci est complète, plus vous pourrez faire de choses, car Pure Data peut aisément gérer la norme MIDI et TouchOSC permet déjà de faire énormément de choses intéressantes et pratiques.

3 réflexions au sujet de « Créer des MIDI maps custom pour TouchOSC sur Pure Data »

  1. Merci pour ce guide très intéressant.

    Peux tu éclaircir certains points ?
    J’ai préparé la structure de mon patch sur TouchOSC mais dans Pd extended j’arrive pas à ajouter des objets. Je sais pas accéder aux libraires, je me perds dans la doc depuis des heures..je suis sûr que c’est tout con en plus.

    Apparemment les librairies sont toutes chargées au démarrage de Pd extended (vérifiable dans la console), mais comment on y accède pour insérer [OSCroute] par ex ?

    A priori la librairie ocsx ou mrpeach conviendrait bien ? D’autres conseils ?

    J’ai tenté le coup en copiant et modifiant [OSCroute] du patch « simple-midi » mais quand je l’édite en utilisant mes arguments ça ne fonctionne pas , ça créé pas d’e/s sur l’objet. Il en résulte juste un objet invalide.

    Par rapport à ça:
    « Attention, à bien prendre la version Extended et non la Vanilla (et me demandez pas pourquoi, je l’ai lu, je le crois, et ça marche) »
    J’ai compris que la version extended contient toutes les librairies d’objets, pas besoin de les ajouter par la suite.

  2. Ping : Interface TouchOSC (Iphone) pour Studio Electronics ATC1 | SoundKonfusion Le Blog

Laisser un commentaire