Introduction | Objets fondamentaux | Messages émis et reçus | Interface graphique | Scripts | Référence | Index des fonctions

English version

## Documentation

Les commandes IanniX doivent spécifier une cible à chaque exécution :

- `id` désigne un objet précis.
  Exemple : `remove 2`
- `group_id` désigne le groupe entier qui peut être un mot.
  Exemple : `remove toto`
- `all` désigne tous les objets.
  Exemple : `remove all`
- `current` désigne le dernier objet créé.
  Exemple : `remove current`

## Gestion des objets

### Ajouter un objet

Ajoute un objet sur la partition, mais ne spécifie pas sa position (par défaut l'objet est placé au point de coordonnées (0,0,0)). Le mot clef `auto` attribue automatiquement un ID à votre objet.
add <objet> <id>
Exemple : `add trigger 1`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `add trigger 1);`

### Définir un groupe

Les groupes sont identifiés par un chiffre ou un mot que vous êtes libre de choisir. Les objets n'ont pas l'obligation de faire partie d'un groupe.
setGroup <target> <group name>
Exemple : `setGroup current triggers`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `add trigger 1 setGroup current triggers`

### Space position

Positionne un objet sur la partition via des coordonnées (x,y,z).
setPos <target> <x> <y> <z>
Exemple : `setPos 1 1 2 0`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `add trigger 1 setGroup current triggers setPos 1 1 2 0`

### Activer/désactiver un objet

Un objet est actif par défaut, mais vous pouvez le désactiver.
setActive <target> <0|1>
Exemple : `setActive 1 0`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `add trigger 1 setGroup current triggers setPos 1 1 2 0 setActive 1 0`

### Affecter un message

Cette commande définit le message qu'un objet doit envoyer.
setMessage <target> <period>, <message1> <variables>, <message2>,message2, message3, …
Exemple : `setMessage current 1, osc://127.0.0.1:57120/trigger trigger_id trigger_xPos trigger_yPos cursor_id`

Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `setMessage current 1, osc://127.0.0.1:57120/trigger trigger_id trigger_xPos trigger_yPos cursor_id` | Le trigger ajouté précédemment enverra respectivement : son ID, son abscisse, son ordonnée et l'ID du curseur l'ayant déclenché. Le protocole utilisé est l'OSC, 127.0.0.1 est l'adresse IP de l'ordinateur lui-même (localhost) et 57120 est le port utilisé pour l'envoi.

### Supprimer un objet

Efface un objet de la partition grâce à son ID.
remove <target>
Exemple : `remove 1`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `add trigger 1 setGroup current triggers setPos 1 1 2 0 setActive 1 0 remove 1`

## Trigger

### Temps avant relâche (NoteOff)

Lorsqu'une notre est jouée grâce à un trigger, vous pouvez le configurez pour qu'il coupe la note automatiquement après un délai paramétrable. Ce temps Note-off time peut être défini soit par cette méthode, qui définit le temps qui est toujours utilisé par ce trigger, ou le temps de note-off peut être contrôlé par le paramètre de durée dans le message du trigger. Controller l'off-time dans le message permet au temps de contrôler certaines variables de la partition, changeant au fur et à mesure que la partition joue. Le temps avant la relâche doit être normalement définit à zéro lorsque le temps note-off n'est pas envoyé dans les messages de ce trigger.
setTriggerOff <target> <delay>
Exemple : `setTriggerOff current 0.5`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `add trigger 1 setTriggerOff current 0.5` | Le trigger précédemment créé enverra un message "note off" après une demi-seconde.

### Messages & variables liés au trigger

Vous pouvez utiliser les variables suivantes dans les messages envoyés par les triggers :

- `trigger_id` ID du trigger déclenché
- `trigger_group_id` ID du groupe concerné par le déclenchement
- `trigger_document_id` nom du projet
- `trigger_xPos` abscisse
- `trigger_yPos` ordonnée
- `trigger_distance` straight line distance from the trigger to the cursor at the time of collision
- `trigger_value` 127 quand le trigger est déclenché et 0 lorsque le trigger est éteint
- `trigger_side` 0 when the trigger is on the left of the direction of cursor motion and 1 if on the right

Vous pouvez aussi utiliser n'importe laquelle des variables cursor_ du curseur rencontré ou les variables curve_ du curseur de la courbe.

## Courbe

### Courbes circulaires & ellipses

Les ellipses sont définies par un grand axe et un petit axe. Pour construire des cercles, les deux axes doivent avoir la même valeur.
setPointsEllipse <target> <width> <height>
Exemple : `setPointsEllipse current 2 1`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `add curve 1 setPointsEllipse current 2 1 setPos current 1 1 0`

### Trajectoire droite

Une courbe est définie par une séquence de points. L'index des points débute à 0.
Notez que les coordonnées d'un point sont définies pour être relative à la position de l'objet courbe.
Pour plus de détails, voir la section sur dessiner des ocurbes dans la section script.
setPointAt <target> <point index> <x> <y>
Exemple : `setPointAt current 1 3 3`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `add curve 1 setPos current -1 -1 0 setPointAt current 0 0 0 setPointAt current 1 3 3`

### Courbe de Bézier

Pour ajouter des points à une courbe de Bézier, utilisez :
setPointAt <target> <path>

Les courbes de Bézier sont formées de segments de courbes définis donnant le dernier point pour chaque segment. La courbure est définie par deux "points de contrôle" additionnels par la fonction `setPointAt`, un définit la direction de la tangente de la courbe à son point de départ et l'autre pour contrôler la direction de la tangente de la courbe à son point final.

Pour plus de détails sur comment dessiner avec les courbes de Bézier, voir la section dessiner des courbes dans la section script.

### Texte

Un caractère peut aussi jouer le rôle de courbe.
setPointsTxt <target> <scaling> <font> <text>
Exemple : `setPointsTxt current 0.1 Arial a`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `add curve 1 setPos current 0 0 0 setPointsTxt current 0.1 Arial a`

### Courbe SVG — chemin cubique

Une courbe SVG est définie par un path que vous pouvez importer directement depuis un autre logiciel par copier-coller.
setPointsSVG <target> <width> <height> <svg path>
Exemple : `setPointsSVG current 5 5 M637.599,1569.972c0,0,89.127,0,222.818, 0c8.913,0,18.023,0,27.381,0.113C901, 1570,913,1573,926,1576c67,15,128,43, 198,28c9-2,17.833-4.277,26.554-6.685c8. 72-2.407,17.255-5.074,25.247-8.562C1224, 1567,1239,1514,1256,1469c18-48,69-29, 101-9c81.375,48.125,161.219,103.141, 254.032,110.08c13.259,0.991,26.782, 1.001,40.616-0.129C1716,1574,1788, 1562,1842,1606c39,32,62,97,119, 90c44-6,70-47,101.551-72.846`

| `add curve auto setPointsSVG current 5 5 M637.599,1569.972c0,0,89.127,0,222.818, 0c8.913,0,18.023,0,27.381,0.113C901, 1570,913,1573,926,1576c67,15,128,43, 198,28c9-2,17.833-4.277,26.554-6.685c8. 72-2.407,17.255-5.074,25.247-8.562C1224, 1567,1239,1514,1256,1469c18-48,69-29, 101-9c81.375,48.125,161.219,103.141, 254.032,110.08c13.259,0.991,26.782, 1.001,40.616-0.129C1716,1574,1788, 1562,1842,1606c39,32,62,97,119, 90c44-6,70-47,101.551-72.846 setPos current -3 0 0`

### Courbe SVG — polygones

Le SVG path de ces courbes est simplement une série de points (positionnés de manière absolue).
setPointsSVG2 <target> <scaling> <svg path>
Exemple : `setPointsSVG2 current 1 1,1 1,2 -1,2 -1,-2 -2,0`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `add curve 1 setPos current 0 0 0 setPointsSVG2 current 1 1,1 1,2 -1,2 -1,-2 -2,0`

### Vectorisation automatique

Une courbe peut être directement construite à partir d'une image par une vectorisation automatique.
setPointsImg <target> <scaling> <filename>
Exemple : `setPointsImg current 0.1 ./Examples/trigger_speaker.png`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `add curve 1 setPos current 1 2 0 setPointsImg current 0.1 ./Examples/trigger_speaker.png`

### Taille

La taille des objets peut être changée directement.
setResize <target> <width> <height>
Exemple : `setResize current 2 1`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `add curve 1 setPointsEllipse current 2 1 setPos current 1 1 0 setResize current 2 1`

## Curseur

### Affecter une courbe

Après avoir créé votre curseur, assurez-vous d'avoir défini la courbe que vous voulez qu'il suive. Vous pouvez utiliser le mot clef `lastCurve` pour désigner la dernière courbe ajoutée.
setCurve <cursor target> <curve target>
Exemple : `setCurve 2 lastCurve`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `add curve 1 setPointsEllipse current 2 2 setPos current 0 0 0 add cursor 2 setCurve 2 lastCurve`

### Largeur de la tête de lecture

ous pouvez modifier en temps-réel la largeur d'un curseur pour qu'il active ou non les triggers à proximité.
setWidth <target> <width>
Exemple : `setWidth current 3.5`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `add cursor 1 setWidth current 3.5`

### Position instantanée

La position d'un curseur est modifiable en temps-réel. Cette instruction ne fonctionne pas si vous l'incluez directement dans votre script, car à chaque nouvelle exécution, IanniX effectue un fastrewind.
setTime <target> <time>
Exemple : `setTime 11 0`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `add curve 1 setPointsEllipse current 2 2 setPos current 0 0 0 add cursor 11 setCurve 11 1 add trigger 21 setPos current -2 0 0 setMessage current 10, direct:// setTime 11 0`

### Décalage temporel

Vous pouvez choisir de démarrer votre curseur à un certain point de la courbe (repéré en secondes) puis de le borner entre certaines valeurs (elles aussi en secondes).
Par exemple, le décalage 2 4 6 signifie que votre curseur démarrera votre courbe à la position t=2s puis la parcourra jusqu'au point t=6s pour recommencer au point t=4s.
setOffset <target> <initial> <start> <end>
Exemple : `setOffset current 3 1 7`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `add curve 1 setPointAt current 1 6 6 setPos current -3 -3 0 add cursor 10 setCurve 10 1 setOffset current 3 1 7`

### Mapping des valeurs

Il est possible de paramétrer votre curseur pour qu'il envoie des valeurs comprises dans un intervalle choisi. Par exemple, s'il évolue dans un carré de 3x3, il peut tout de même envoyer ses coordonnées sous forme de valeurs entre 0 et 1.
Utilisez setBoundsSource pour indiquer à IanniX l'intervalle dans lequel se situe votre curseur et setBoundsTarget pour paramétrer l'intervalle de vos valeurs envoyées. Généralement le BoundsSource est correctement paramétré par défaut.
Vous devez utiliser les variables : `cursor_value_x`, `cursor_value_y`, `collison_value_x` ou `collison_value_y` pour que les valeurs envoyées soient celles du BoundsTarget.
setBoundsSource <target> <x-top-left-corner> <y-top-left-corner> <x-bottom-right-corner> <y-bottom-right-corner>
setBoundsTarget <target> <x-top-left-value> <y-top-left-value> <x-bottom-right-value> <y-bottom-right-value>
Exemple : `setBoundsSource 2 0 3 3 0` et `setBoundsTarget 2 0 1 1 0`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `add curve 1 setPos 1 0 0 0 setPointAt 1 1 3 3 add cursor 2 setCurve 2 1` setBoundsSource 2 0 3 3 0 setBoundsTarget 2 0 1 1 0 setMessage 2 250, direct:// cursor_value_x cursor_value_y |

### Messages & variables liées au curseur

Vous pouvez utiliser les variables suivantes dans les messages envoyés par les curseurs :

- `cursor_id` ID du curseur
- `cursor_group_id` ID du groupe concerné par le curseur
- `cursor_document_id` nom du projet
- `cursor_xPos`abscisse du curseur
- `cursor_yPos` ordonnée du curseur
- `cursor_time` position du curseur sur la courbe en secondes
- `cursor_time_percent` position du curseur sur la courbe en pourcentage (entre 0 et 1)
- `cursor_value_x` abscisse en accord avec le BoundsTarget spécifié
- `cursor_value_y` ordonnée en accord avec le BoundsTarget spécifié
- `cursor_angle` angle du curseur par rapport à la courbe
- `cursor_nb_loop` nombre de cycles sur la courbe

Les curseurs peuvent également envoyer des informations concernant la courbe sur laquelle ils se trouvent et les courbes qu'ils croisent.

- `curve_id` ID de la courbe concernée par le curseur
- `curve_group_id` ID du groupe de la courbe
- `curve_document_id` nom du projet
- `curve_xPos` abscisse du premier point de la courbe
- `curve_yPos` ordonnée du premier point de la courbe
- `collision_curve_id` ID de la courbe croisée
- `collision_xPos` abscisse du point de la collision
- `collision_yPos` ordonnée du point de la collision
- `collison_value_x` abscisse du point de la collision en accord avec le BoundsTarget spécifié
- `collision_value_y` ordonnée du point de la collision en accord avec le BoundsTarget spécifié
- `collision_distance` straight line distance between the collision point and the cursor

## La vitesse dans IanniX

La vitesse de déplacement des curseurs est composée de plusieurs paramètres : `speed`, `speedfactor`, `speedf` and `pattern`.
`speed` est la vitesse globale de la partition, `speedfactor` est la vitesse du curseur en lui-même, `speedf` est la vitesse instantanée du curseur et `pattern` sert à définir le nombre et le sens des cycles.
On peut ainsi écrire la vitesse d'un curseur: (`speed`)x(`speedfactor`)x(`speedf`)x(`pattern`) with `pattern`.

### Vitesse de la partition

Vous pouvez modifier la vitesse globale de la partition. Une vitesse négative fera évoluer le temps dans le sens négatif. The speed is a sort of velocity factor that is combined with the speed factor or duration parameter of each cursor to determine the speed, or more intuitively the transit time of the cursor on its curve.

For more details of the determination of cursor speed, see the following section on the "Speed of a Cursor."
speed <speed>
Exemple : `speed 20`

| `setPointsEllipse current 1 1 setPos current 1 0 0 add cursor 10 setCurve 10 1 add curve 2 setPointsEllipse current 1 1 setPos current -1 0 0 add cursor 11 setCurve 11 2 speed 20`

### Vitesse d'un curseur

Les curseurs ont un facteur vitesse indépendant les uns des autres. La durée de parcours d'une courbe est également paramétrable. Une vitesse négative fera évoluer le curseur dans le sens inverse, mais le temps continuera à s'écouler de manière naturelle.

La vitesse d'un curseur peut être mieux compris en pensant en termes de temps requis pour un curseur donné de traverser son chemin en une fois. Si la vitesse globale de la partition est définie à 1.0 (avec la commande "speed" ou la réglette), et le temps d'un curseur est défini à 10.0 secondes, le curseur mettra 10 secondes pour parcourir la courbe une fois. Doubler la vitesse globale à 2 coupera le temps de transit du cursor à 5.0 seconds. Aussi, chaque curseur peut avoir son propre temps de transit (ou inversement, vitesse), proportionnel à la vitesse globale de la partition.

Pour définir la vitesse d'un curseur en termes de durée de temps de transit, utilisez la forme suivante de la commande setSpeed :
setSpeed <target> auto <duration>

Pour définir la vitesse d'une curseur en termes de facteur de vitesse (ex : les vitesses utilisant les mêmes unités que la réglette générale) utilisez la forme suivante de la commande :
setSpeed <target> <speed factor>
Exemple : `setSpeed 11 4`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `add curve 1 setPointsEllipse current 1 1 setPos current -1 0 0 add cursor 10 setCurve 10 1 add curve 2 setPointsEllipse current 1 1 setPos current 1 0 0 add cursor 11 setCurve 11 2 setSpeed 11 4`

### Vitesse instantanée d'un curseur

Les curseurs ont un facteur de vitesse instantanée indépendant, très utile lors des performances en temps-réel. De la même manière qu'avec setSpeed, une vitesse négative est possible et ne modifiera pas la vitesse de lecture globale.
setSpeedF <target> <speed factor>
Exemple : `setSpeedF 11 cursor_yPos`

| `add curve 2 setPointsEllipse current 1 1 setPos current 1 0 0 add cursor 11 setCurve 11 2 add curve 1 setPointAt current 1 0 4 setPos current -1 -2 0 add cursor 10 setCurve 10 1 setMessage current 20, direct:// setSpeedF 11 cursor_yPos`

### Motif de répétition

Ce paramètre désigne le sens et le nombre de cycles. Par exemple pour `1 1 0`, le curseur effectuera deux cycles dans le sens positif et s'arrêtera, l'écriture équivalente est `2 0`.
setPattern <target> 0 0 <pattern>
Exemple : `setPattern current 0 0 1 -1`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `add curve 1 setPointsEllipse current 2 2 setPos current 0 0 0 add cursor 10 setCurve 10 1 setPattern current 0 0 1 -1`

## Navigation dans les partitions

### Effacer une partition

Efface tous les objets de la partition.
clear

Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `clear`

### Zoom

Ajuste le zoom en utilisant le script. Le facteur est en pourcentage. Ex : un facteur de 200 double la taille de la zone affichée.
zoom <zoomfactor>

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `clear" zoom 2000`

### Resize des objets indépendamment du zoom

Activé par défaut, permet d'augmenter ou de diminuer automatiquement la taille des triggers et curseurs lorsque vous zoomer/dézoomer la partition afin de faciliter la lecture. Seul l'aspect visuel est affecté, la taille réelle des objets n'est pas modifiée.
autosize <0|1>

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `add trigger 1 zoom 200 autosize 0`

### Placer un point au centre de l'écran

Place le point (x,y) au centre de l'espace de travail.
center <x> <y>

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `clear zoom 200 center 2 2`

### Changer la direction de la vue

Rotationne la vue en fonction des axes x,y et z
rotate <RotationAboutX-Axis> <RotationAboutY-Axis> <RotationAboutZ-Axis>

Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `rotate 45 0 0`

### Jouer la partition

Déclenche la lecture de la partition.
play

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `play`

### Fast Rewind

Retour à 000:00.000.
fastrewind

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `fastrewind`

## Apparence générale des partitions

### Ajouter du texte

Vous pouvez ajouter une description textuelle de vos objets sur la partition. Afficher/cacher ces descriptions grâce au bouton 7 de la barre d'outils (cf. Interface).

Tous les types de caractères sont acceptés, il n'y a pas de limite en nombre.
setLabel <target> <label>
Exemple : `setLabel current Hello World !`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `add trigger auto setPos current 0 0 0 setLabel current Hello World !`

### Taille des objets

Contrairement à setResize, cette fonction modifie l'épaisseur d'une courbe ou d'un curseur et la taille d'un trigger.
setSize <target> <size>
Exemple : `setSize 1 10`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `add curve 1 add trigger 2 add cursor 3 setCurve 3 1 setPos 2 1.5 1.5 0 setPointsEllipse 1 2 2 setSize 1 10 setSize 2 5 setSize 3 7`

### Format des tracés

Définit un style de pointillé grâce à `dash pattern` qui doit être une suite de 0 et 1, `dash style` définit l'espace entre chaque pointillé.
setLine <target> <dash style> <dash pattern>
Exemple : `setLine 1 2000 1`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `add curve 1 setPointsEllipse 1 2.5 2.5 setLine 1 2000 1`

## Les couleurs

Vous pouvez spécifier directement la couleur d'un objet à l'aide des codes RGB ou HSB avec gestion de l'opacité A.
Les valeurs R G B vont de 0 à 255 et celles H S B vont de 0 à 360. L'opacité A est comprise entre 0 (transparence totale) et 255 (aucune transparence).

### Couleur d'un objet actif n'émettant pas de messages

Modifie la couleur des objets actifs.
setColorActive <target> <variable>
setColorActive <target> <r> <g> <b> <a>
setColorActive2 <target> <h> <s> <b> <a>
Exemple : `setColorActive 1 0 255 0 255`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `add trigger 1 setPos 1 1 1 0 setColorActive 1 0 255 0 255`

### Couleur d'un objet inactif n'émettant pas de messages

Modifie la couleur des objets inactifs.
setColorInactive <target> <variable>
setColorInactive <target> <r> <g> <b> <a>
setColorInactive2 <target> <h> <s> <b> <a>
Exemple : `setColorInactive 1 0 0 255 255`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `add trigger 1 setPos 1 1 1 0 setActive 1 0 setColorInactive 1 0 0 255 255`

### Couleur d'un objet actif émettant des messages

Modifie la couleur d'un objet actif pour lequel un message a déjà été paramétré.
setColorActiveMessage <target> <variable>
setColorActiveMessage <target> <r> <g> <b> <a>
setColorActiveMessage2 <target> <h> <s> <b> <a>
Exemple : `setColorActiveMessage2 1 360 255 255 255`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `add trigger 1 setPos 1 1 1 0 setMessage 1 250, direct:// message setColorActiveMessage2 1 360 255 255 255`

### Couleur d'un objet inactif émettant des messages

Modifie la couleur d'un objet inactif pour lequel un message a déjà été paramétré.
setColorInactiveMessage <target> <variable>
setColorInactiveMessage <target> <r> <g> <b> <a>
setColorInactiveMessage2 <target> <h> <s> <b> <a>
Exemple : `setColorInactiveMessage 1 0 127 127 200`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `add trigger 1 setPos 1 1 1 0 setMessage 1 250, direct:// message setActive 1 0 setColorInactiveMessage 1 0 127 127 200`

### Création d'une variable couleur

IanniX permet également d'enregistrer une couleur comme variable pour la réutiliser avec plus de facilité.
registerColor <variable> <r> <g> <b> <a>
registerColor2 <variable> <h> <s> <b> <a>
Exemple : `registerColor rougeRGB 255 0 0 255` et `registerColor2 rougeHSB 360 255 255 255`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `registerColor rougeRGB 255 0 0 255 registerColor2 rougeHSB 360 255 255 255 add trigger 1 add trigger 2 setPos 1 1 2 0 setPos 2 1 1 0 setColorActive 1 rougeRGB setColorActive 2 rougeHSB setLabel 1 1 setLabel 2 2`

## Textures

Personnalisez votre partition avec vos propres images.
Vous pouvez directement modifier le fond de la partition ou l'apparence des triggers à l'aide des variables:

- `background` background
- `trigger_active` active triggers
- `trigger_inactive` inactive triggers
- `trigger_active_message` active triggers with message
- `trigger_inactive_message` inactive triggers with message

### Création d'une variable texture

Enregistre votre texture sous une variable. Si vous utilisez les variables ci-dessus, l'apparence est directement modifiée, car les textures natives sont enregistrées sous ces variables. Utilisez l'outil "restore triggers original shapes" de l'inspecteur "scripts & styles" pour retrouver les textures originales.
registerTexture <variable> <x-top-left-corner> <y-top-left-corner> <x-bottom-right-corner> <y-bottom-right-corner> <file name>
Exemple : `registerTexture trigger_active -1 1 1 -1 ./Examples/trigger_triangle.png`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `registerTexture trigger_active -1 1 1 -1 ./Examples/trigger_triangle.png add trigger 1 add trigger 2 add trigger 3 setPos 1 1 1 0 setPos 3 -1 -1 0 setActive 3 0 setLabel 1 1 setLabel 2 2 setLabel 3 3`

### Texture d'un objet actif n'émettant pas des messages

Modifie l'aspect d'un seul objet actif. Vous pouvez également utiliser un nom de groupe ou l'une des variables ci-dessus :
setTextureActive <target> <variable>
Exemple : `setTextureActive 1 triangle`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `registerTexture triangle -1 1 1 -1 ./Examples/trigger_triangle.png add trigger 1 add trigger 2 setTextureActive 1 triangle setPos 1 1 1 0 setLabel 1 1 setLabel 2 2`

### Texture d'un objet inactif n'émettant pas des messages

Modifie la texture d'un objet ou groupe d'objets inactifs.
setTextureInactive <target> <variable>
Exemple : `setTextureInactive 2 triangle`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `registerTexture triangle -1 1 1 -1 ./Examples/trigger_triangle.png add trigger 1 add trigger 2 setActive 2 0 setTextureInactive 2 triangle setPos 1 1 1 0 setLabel 1 1 setLabel 2 2`

### Texture d'un objet inactif émettant des messages

Modifie la texture d'un objet ou groupe d'objets actifs avec message.
setTextureActiveMessage <target> <variable>
Exemple : `setTextureActiveMessage triggers triangle`

| Copier/coller cet exemple dans IanniX pour comprendre le fonctionnement du code ! `registerTexture triangle -1 1 1 -1 ./Examples/trigger_triangle.png add trigger 1 add trigger 2 setGroup 1 triggers setGroup 2 triggers setMessage 2 1, direct:// message setTextureActiveMessage triggers triangle setPos 1 1 1 0 setLabel 1 1 setLabel 2 2`

### Texture d'un objet inactif émettant des messages

Modifie la texture d'un objet ou groupe d'objets inactifs avec message.
setTextureInactiveMessage <target> <variable>
Exemple : `setTextureInactiveMessage triggers triangle`

| `registerTexture triangle -1 1 1 -1 ./Examples/trigger_triangle.png add trigger 1 add trigger 2 setGroup 1 triggers setGroup 2 triggers setMessage triggers 1, direct:// message setTextureInactiveMessage triggers triangle setActive 1 0 setPos 1 1 1 0 setLabel 1 1 setLabel 2 2`