Scripting
Chaque cue peut porter un petit programme JavaScript. Il s’exécute pendant que la cue joue, et peut lire et modifier ce qu’elle fait — le niveau d’un son, le texte à l’écran, la couleur d’une image.
- api.md — tout ce qu’un script peut atteindre :
log,time,every,after,random - properties.md — ce que chaque type de cue expose via
this.<nom> - examples.md — des recettes à copier
Écrire un script
Sélectionnez une cue, ouvrez l’onglet Script de l’inspecteur, cochez Activé, et écrivez. Une nouvelle cue part de ce squelette :
function onStart() {
// Appelé au démarrage de la cue
}
function onTick(delta) {
// Appelé à chaque frame pendant la cue, delta en secondes
}
function onEnd() {
// Appelé à la fin de la cue
}
Les trois hooks sont facultatifs. Un script qui n’en a besoin que d’un ne déclare que celui-là ; un script qui n’en déclare aucun est valide et ne fait rien.
Compiler
Appuyez sur Compiler (ou Ctrl/Cmd+S dans l’éditeur) pour vérifier le script. Le panneau sous l’éditeur indique le résultat :
- Compilation réussie — la source est correcte, et c’est celle que la cue jouera. Le bouton Compiler se grise jusqu’à la prochaine modification.
- Erreurs — la liste de ce qui ne va pas, par exemple
SyntaxError: Unexpected token '{'. La dernière source qui compilait est conservée : une modification cassée ne la perd pas.
La compilation vérifie la syntaxe sans exécuter le script : appuyer dessus est toujours sans risque.
Une cue dont le script est activé et ne compile pas est marquée Invalide dans la liste et ne joue pas — le même traitement qu’une cue sonore sans fichier. Désactivez le script et la cue rejoue, script et erreurs intacts.
Quand les hooks s’exécutent
| Hook | Quand |
|---|---|
onStart() | Au moment où la cue commence à jouer. Après son délai, s’il y en a un — une cue arrêtée pendant l’attente ne démarre jamais son script. |
onTick(delta) | À chaque frame du moteur pendant que la cue joue. delta est le nombre de secondes depuis la frame précédente. |
onEnd() | Quand la cue est relâchée : elle s’est terminée, elle a été arrêtée, ou elle redémarre. Toujours exactement une fois, toujours en pendant du onStart correspondant. |
Ce que vous obtenez dépend de la durée de vie de la cue :
- Les cues qui restent (image, texte, html, webcam, youtube, visio, screen, lancement multiple, liste de lecture) tournent jusqu’à ce qu’on les arrête.
- Les cues qui ont une durée (sonore, vidéo, fondu, fondu global) tournent jusqu’à leur fin.
- Les cues à envoi unique (osc, midi, mqtt, http, démarrage, arrêt, arrêt
global, chargement de spectacle) font leur travail et disparaissent.
onStartetonEnds’exécutent tous les deux ; il peut n’y avoir aucun tick entre les deux.
L’état du script
Tout ce que le script déclare au niveau supérieur vit aussi longtemps que la cue, et les hooks le partagent :
let flashs = 0;
function onTick() {
flashs++;
}
function onEnd() {
log.info('flashé', flashs, 'fois');
}
Les scripts de deux cues ne voient jamais les variables l’un de l’autre, et le script d’une cue repart de zéro à chaque lancement.
La source est compilée au démarrage de la cue : modifier un script pendant que sa cue joue ne change rien avant le prochain lancement.
Quand un script se trompe
Un script a le droit d’être faux, et rien de ce qu’il fait ne peut faire tomber le spectacle :
- Un hook qui lève une erreur est signalé une fois dans la console du navigateur, puis abandonné pour le reste du lancement. Les autres hooks continuent, et la cue continue de jouer.
- Un callback de timer qui lève une erreur est signalé et abandonné ; les hooks ne sont pas touchés.
- Tout ce qu’un script écrit est vivant uniquement : le spectacle enregistré n’est jamais modifié.