Constatations
• Sur le plateau, en son, la majorité des faders ont besoins d'une courbe exponentielle.
Nous avons limité le choix des courbes pour des raisons de complexité.
Il n'est possible d'appliquer qu'une courbe linéaire ou exponentielle sur les objets du Lémur.
• L'utilisation de l'interface sans renvoi d'informations (scaling inverse) est très difficile.
La mise en place de cette fonction a été la plus compliquée.
Développements prioritaires
mise en place de deux types de fader
fader solo
Fader permettant de contrôler un paramètre de tapemovie.
Il bénéficie d'un retour d'information de la part du paramètre qu'il contrôle, lorsqu'on bouge le paramètre depuis tapemovie, le fader du lémur bouge aussi en ayant les bonnes positions malgré le mapping et la courbe
variables :
appartenance = nombre : interface auquel le fader appartient (ou plutôt à quel tab du container il appartient
curve = nombre : 0 = linéaire supa 0 et inf à 1 = exponentiel
outmin = nombre : valeur de sortie minimale
outmax = nombre : valeur de sortie maximale
inmin = 0 valeur est fixe
inmax = 1 valeur est fixe
• Comportement différent suivant les valeurs de outmin et outmax
Les formules trouvées lors de la dernière phase de développement ne fonctionnaient pas.
Il a fallut remettre au clair ces équations et mettre en place un système de conditions pour changer de calcul suivant les valeurs des variables.
{ __if (outmax>outmin)__ { decl outmaxsupaoutmin = (range (clamp(pow(x, pow(2,((curve*15)/2))), 0, 1), (outmin-((outmax - outmin)/(1 - 0))*0), ((outmin-(((outmax - outmin)/(1 - 0)))*0))+((outmax - outmin)/(1 - 0)))); { oscout(0, adresse,outmaxsupaoutmin); }}} { __if ((outmin>outmax))__ { decl outminsupaoutmax = (range (1-clamp(pow(x, pow(2,((curve*15)/2))), 0, 1), (outmax-((outmin - outmax)/(1 - 0))*0), ((outmax-((outmin - outmax)/(1 - 0))*0))+((outmin - outmax)/(1 - 0)))); { oscout(0, adresse,outminsupaoutmax); }}}}
• Le renvoi d'information
Il a été necessaire de mettre en place un ordre de communication entre fader et le paramètre.
Lorsque quelqu'un écrit l'autre écoute.
Lorsque le fader est touché, il envoie des informations, le paramètre reçoit ces informations et n'envoie rien, sa porte de sorties d'information en coupée.
Le z du fader (présence d'un doigt sur le fader) est lié avec la fermeture de la sortie du paramètre (adresse osc = /nomduparamètre/external/sw 0), Lorsqu'on utilise le fader -> /nomduparamètre/external/sw 0;
Lorsque le paramètre change de valeur sans l'action sur le lémur (mémoire, automatisation), il envoie des informations au lémur.
Lorsqu'on relâche le doigt -> /nomduparamètre/external/sw 1;
Cette opération nécessite également deux équation suivant les valeurs de outmin et outmax.
{ __if (outmax>outmin)__ { x = pow( clamp((((OSC_ARGS -outmin*(1+0) + (0*outmax))/(outmax-outmin))),0, 1), 1/pow(2,((curve*15)/2)) );}} { __if (outmin>outmax)__ { x = pow( clamp((-1*((OSC_ARGS -outmin*(1+0) + (0*outmin))/(outmin-outmax))),0.000000001, 1), 1/pow(2,((curve*15)/2)) );}}}
• Manipulations pour le mettre en place
slider pour envois multiples
Fader permettant de contrôler plusieurs paramètres de tapemovie.
Il ne bénéficie pas d'un retour d'information
On peut le segmenter et attribuer des affections suivant sa position
exemple (de 0 à 0.25 le fader contrôle le son, de 0.5 à 0.75 le fader contrôle sa spatialisation et de 0.75 à 1 le fader contrôle l'envoi du son dans un delay)
variables :
appartenance = nombre : interface auquel le fader appartient (ou plutôt à quel tab du container il apartient
• Utilisation des mêmes formules mathématiques que pour le fader
mais ici le but étant d'envoyer à plusieurs paramètres avec le même fader
la déclaration de variable globale au fader ne fonctionne plus, il est nécessaire de déclarer les variables dans des sous parties du script
{ decl adresse='/filt.2/center'; decl curve=0; decl inmin=0.; decl inmax=0.25; decl outmin=1.; decl outmax=0.; { if (outmax>outmin) {decl outmaxsupaoutmin = (range (clamp(pow(x, pow(2,((curve*15)/2))), inmin, inmax), (outmin-((outmax - outmin)/(inmax - inmin))*inmin), ((outmin-(((outmax - outmin)/(inmax - inmin)))*inmin))+((outmax - outmin)/(inmax - inmin)))); { oscout(0, adresse, outmaxsupaoutmin); }}} {if (outmin>outmax) { decl outminsupaoutmax = (range (1-clamp(pow(x, pow(2,((curve*15)/2))), inmin, inmax), (outmax-((outmin - outmax)/(inmin - inmax))*inmax), ((outmax-((outmin - outmax)/(inmin - inmax))*inmax))+((outmin - outmax)/(inmin - inmax)))); { oscout(0, adresse, outminsupaoutmax); }}}
• Le fait de copier coller dans le script lorsque la fonction ouscout est écrite, fait planter l'éditeur du lémur
Le principe du fader à envoi multiple tombe en quelque sorte à l'eau en attendant les nouvelles mise à jour.
Ce souci a été contourné avec l'utilisation de fader esclaves.
Pour cela il suffit de copier coller le fader (cette opération ne fait planter l'éditeur)
et de rajouter dans le fader maître un script qui permet de contrôler les faders esclaves.
elevation2.x=x; elevation3.x=x; elevation4.x=x; elevation5.x=x;
Il faut cependant ouvrir le script de chacun des faders esclaves pour changer les adresses et les valeurs.
• Manipulations pour le mettre en place
Amélioration de l'interface de conduite
Script d'initialisations
- Mise en place d'un script dans chaque container des scènes d'une petite initialisation afin de mettre aux bonnes valeurs les objets qui ne possèdent pas les renvois d'informations.