Aller au contenu

Propriétés des cues

Tout ce qu’un script atteint via this, par type de cue. Chaque propriété se lit avec this.<nom>.get(), et s’écrit avec this.<nom>.set(valeur) quand elle est modifiable — une propriété en lecture seule n’a pas de set du tout.

Les écritures sont vivantes : elles changent la cue qui joue, jamais le spectacle enregistré. Modifier le même champ dans l’inspecteur pendant que la cue est à l’antenne écrase ce que le script avait posé, car le moteur y repousse alors la valeur enregistrée.

Tous les types de cue

PropriétéAccèsTypeSignification
durationgetnumber | nullDurée en secondes. null si la cue ne s’arrête jamais d’elle-même.
levelget / setnumberNiveau de lecture, de 0 à 1 — volume pour un son, opacité pour une image. L’écrire est un fondu de durée nulle, le même chemin que le curseur de l’inspecteur. Seulement sur les types marqués ci-dessous.

level existe pour : audio, image, vidéo, texte, html, youtube, webcam, visio, screen. Les cues de contrôle et les groupes n’ont pas de niveau.

audio

PropriétéAccèsTypeSignification
pangetnumberPosition stéréo, -1 à gauche à 1 à droite. Lecture seule : le nœud de panoramique est construit dans le graphe audio au démarrage.

Plus duration et level.

function onTick() {
    // Baisser au quart après dix secondes.
    if (time > 10) this.level.set(0.25);
}

image

PropriétéAccèsTypeSignification
tintget / setstring | nullCouleur posée sur l’image ; null pour aucune
brightnessget / setnumber1 = inchangée
contrastget / setnumber1 = inchangé
saturationget / setnumber1 = inchangée, 0 = noir et blanc
mirrorXget / setbooleanRetourner horizontalement
mirrorYget / setbooleanRetourner verticalement

Plus duration et level.

vidéo

Les six mêmes que pour image, plus :

PropriétéAccèsTypeSignification
audioLevelget / setnumberVolume du son de la vidéo, de 0 à 1

Plus duration et level.

texte

PropriétéAccèsTypeSignification
textget / setstringLe texte à l’écran
fontFamilyget / setstring | nullNom de la police ; null pour celle par défaut
fontSizeget / setnumberTaille en pixels à la résolution de la sortie
textColorget / setstringN’importe quelle couleur CSS
alignget / setstringleft, center ou right
valignget / setstringtop, middle ou bottom
offsetXget / setnumberDécalage horizontal, en fraction de la largeur de sortie
offsetYget / setnumberDécalage vertical, en fraction de la hauteur de sortie
tintget / setstring | nullCouleur posée sur le texte
brightnessget / setnumber1 = inchangée
contrastget / setnumber1 = inchangé
saturationget / setnumber1 = inchangée

Plus duration et level.

const noms = ['ANNA', 'BERT', 'CLARE'];

function onStart() {
    every(2, function (index) {
        this.text.set(noms[index % noms.length]);
    });
}

html

PropriétéAccèsTypeSignification
tintget / setstring | nullCouleur posée sur la page
brightnessget / setnumber1 = inchangée
contrastget / setnumber1 = inchangé
saturationget / setnumber1 = inchangée
audioLevelget / setnumberVolume du son de la page, de 0 à 1

Plus duration et level.

visio et screen

PropriétéAccèsTypeSignification
tintget / setstring | nullCouleur posée sur l’image
brightnessget / setnumber1 = inchangée
contrastget / setnumber1 = inchangé
saturationget / setnumber1 = inchangée
audioLevelget / setnumberVolume du micro de l’invité, de 0 à 1

Plus duration et level.

webcam

PropriétéAccèsTypeSignification
audioLevelget / setnumberVolume du micro de la caméra, de 0 à 1

Plus duration et level. Un flux de caméra n’est pas corrigé en couleur : ni tint, ni brightness, ni contrast, ni saturation.

youtube

PropriétéAccèsTypeSignification
audioLevelget / setnumberVolume de la vidéo, de 0 à 1

Plus duration et level. L’image vit dans une iframe d’un autre domaine, que l’on ne peut pas filtrer : pas de propriétés de couleur.

liste de lecture

PropriétéAccèsTypeSignification
indexgetnumberÉlément en cours, à partir de 1 ; 0 entre deux éléments
countgetnumberNombre d’éléments joués en un passage
passgetnumberPassage en cours, à partir de 1

Plus duration. En lecture seule : l’ordre de lecture appartient à la liste.

function onTick() {
    if (this.index.get() === this.count.get()) {
        log.info('dernier élément du passage', this.pass.get());
    }
}

Tout le reste

lancement multiple, fondu, fondu global, démarrage, arrêt, arrêt global, chargement de spectacle, osc, midi, mqtt et http exposent duration, et rien d’autre. Les cues de message sont à envoi unique : quand un script pourrait toucher un champ, le message est déjà parti.

Volontairement absent

  • inputRect (la sous-zone source d’une cue visuelle) est un objet et non une valeur unique ; l’exposer veut dire s’engager sur sa forme.
  • Tout ce que l’inspecteur enregistre mais que la lecture ne peut pas changer en cours de route — le fichier d’une cue, son routage de sortie, ses réglages de boucle. Les changer suppose de relancer la cue.

En ajouter une

Les propriétés viennent de deux passes, dans src/lib/engine-v2/scriptable-properties.ts :

  1. baseScriptableProperties — ce que toute cue possède (duration, et level quand le runner en déclare un).
  2. le runner de la cue, via getScriptableProperties(cue, ctx), pour ce que seul ce type connaît. Un runner qui renvoie un nom déjà utilisé par la première passe le remplace.

Une propriété déclare un name, une description d’une ligne (c’est ce que l’éditeur affiche à côté), un read(running, ctx) et, facultativement, un write(running, ctx, value). Sans write, la propriété est en lecture seule partout, y compris dans les propositions de l’éditeur.