Patch - Décision + Etats

I - Exemple de programmation d'un projet - suite

Les patchs sont ici.

6 - Décisions

Chaque état est concrétisé par

  • Un point unique de déclenchement sous forme de bang.
  • Un long trigger t b b b b b b b qui permet de régler plusieurs paramètres en assurant un ordre temporel si jamais c'est nécessaire. Sorties surnumémaires : anticiper des corrections futures pour ne pas avoir à recâbler.
  • Un ensemble d'objets send s envoyant à leurs cibles les réglages spécifique de l'état.

Par rapport au schéma fonctionnel, cette page s'occupe des bulles = états.

Suivre le schéma des états pour paramétrer les changements.

Etat 1 - Des cris dans la nuit

  • Déclencher le premier son, en boucle, à volume constant.
  • L'affichage est noir.

Etat 2 - Attaque

  • Déclencher le premier son, en boucle. Cette étape est certes inutile si l'installation était dans l'état 1 mais elle est nécessaire pour tous les autres cas de retour à l'état 2 dès que le phaser bouge.
  • Le volume de ce son suit une rampe régulière d'augmentation sur 30 secondes = 30000 ms, via l'objet line. Le message 0., 1. 30000 signifie un retour instantané à 0 puis une augmentation vers 1 sur 30 s. Les points signalent que les nombres sont en float. Le paramètre 0 dans l'objet line 0. signifie que la rampe est calculée en float et non en integer.
  • La video de combat est choisie et lancée via s choixvisuel.
  • Le volume de la video est gérée de la ême façon que le volume du fichier son, mais avec une rampe inverse qui va de 1. à 0., avec le message 1., 0. 30000 envoyé sur un autre objet line 0..
  • Enfin, la luminosité de la video est calculée au cours du temps et transmise via l'objet s lum.
Calcul de la luminosité

Le calcul doit combiner deux flux de données différents :

  • La rampe régulière sur 30 secondes, qui contrôle aussi le volume
  • Les valeurs du capteur pyro de mouvement qui retranscrivent l'agitation du phaser.

La rampe est déjà entre 0. et 1., donc compatible avec le message brightness s'adressant à l'objet jit.brcosa.
Les valeurs du capteurs subissent une transformation d'échelle grâce à l'objet scale afin de les rendre directement compatibles avec brightness.
scale 0 127 0.3 1. = scale min d'entrée max d'entrée min de sortie max de sortie
En entrée le capteur va de 0 à 127.
En sortie, la luminosité varie de 0.3 à 1.0. Le choix de ne pas descendre à 0. permet de conserver un affichage même si les valeurs du capteurs sont très faibles.

Les deux fluctuations sont combinées grâce à une multiplication avec l'objet * 1.0. Il faut explicitement donner 1.0 en argument afin que l'opération se fasse en float (sinon le résultat est 0 ou 1).

Notion d'entrée froide et entrée chaude : Bases de Max / Environnement
L'objet * 1.0 a une entrée froide passive à droite et une entrée chaude active à gauche.
Le flux d données provenant du line est régulièrement actualisé au cours des 30 secondes. Il donne donc un rythme de mise à jour de la luminosité sans à-coup et se branche sur l'entrée chaude du * 1.0.
Le flux du capteur en revanche change seulement si le phaser bouge, il se branche donc sur l'entrée froide. S'il ne change as, c'est la dernière valeur envoyée qui reste prise en compte pour la multiplication.

Etat 3 - L'oeuf

  • Déclencher le son de tintement, une seule fois, à volume constant.
  • Afficher l'image des œuf de Horta, avec une luminosité de 1.
  • Par précaution le volume de la video est mis à 0.

Etat 4 - Communication

  • Le son étant celui de la video, mettre le volume à 0.
  • Afficher la video de la fusion mentale vulcaine, avec une luminosité de 1. et un volume de 1.

Etat 5 - Trève

  • Déclencher le son de la paix, une seule fois, à volume constant 1.
  • Afficher l'image de la réconciliation interespèce, avec une luminosité de 1.
  • Par précaution le volume de la video est mis à 0.

7 - Corrections

Un test manuel lent dans l'ordre des états montre un fonctionnement correct de l'ensemble des états.
Néanmoins un test rapide, ou bien un test dans le désordre montre qu'il existe en fait une interférence : si le line de l'état 2 n'est pas terminé lorsqu'un autre état est choisi, la luminosité et parfois le volume sont affectés par le line et par les fluctuations du capteur pyro.
Il faut donc limiter ces réglages à l'état 2.
La solution est d'envoyer un message stop sur l'objet line. Comme il active l'entrée chaude de l'objet *, par la même occasion cela coupe les fluctuations du capteur pyro.
Il est prudent d'envoyer ce stop avant tout réglage sur le volume ou la luminosité, donc de le placer complètement à droite du t b b b b b b b général. Le stop est déclanché via l'objet s noline.

Remarquons aussi que l'état 4 n'est pas propre : il est possible de conserver un son résiduel si justement le line de l'état 2 est encore actif. Il empêche le volume d'être à 0. Une commande d'arrêt du son via s arret règle tous ces soucis.
L'arrêt du line de l'état 2 est généralisé à tous les autres états via un objet s noline placé le plus à droite du trigger général. Cela évite toute interférence sur les volumes et luminosités.

Enfin, le message clear de l'état 1 fonctionne si le visuel était auparavant une image fixe mais pas si c'est une video, qui continue à se jouer après 1 frame noire. Il faut commencer par envoyer un message stop à l'objet jit.movie, puis le message clear. Cela se solutionne avec un t b b qui garantit le bon ordre des 2 messages.