0% ont trouvé ce document utile (0 vote)
226 vues23 pages

Variables et Positionnement en LUA

Ce document décrit les différents types de variables disponibles dans Aegisub pour les lignes et les syllabes, notamment les variables de temps, de position et de dimensions. Il présente également des exemples d'utilisation de ces variables.

Transféré par

Narendra Shrivas
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
226 vues23 pages

Variables et Positionnement en LUA

Ce document décrit les différents types de variables disponibles dans Aegisub pour les lignes et les syllabes, notamment les variables de temps, de position et de dimensions. Il présente également des exemples d'utilisation de ces variables.

Transféré par

Narendra Shrivas
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Tutoriel Karaoke

Partie 4 : Les variables, types de template, classes de code, les opérateurs, blocs
de code, fonctions mathématiques, alternances notables, une initiation à la
programmation LUA et quelques exercices.
Remarque : Avant de commencer à voir les variables, il est nécessaire d’indiquer que toute les
variables intégrés dans Aegisub commencent par un dollar « $ ». Ils fonctionnement uniquement
dans les lignes de templates et pas dans les lignes de code. Vous pourrez cependant les utiliser dans
les blocs de code.

Les variables de ligne :

Les lignes ont des propriétés comme le temps de début, de fin ou leur durée. Ainsi il est naturel de
pouvoir avoir accès à ces variables pour la création d’effets.

layer Le numéro de calque de la ligne.


lstart Temps de début de la ligne en millième de secondes.
lmid Temps de milieu de la ligne en millième de secondes.
lend Temps de fin de la ligne en millième de secondes.
ldur Durée de la ligne en millième de secondes.
style Nom du style de la ligne. (cadre Style)
actor Nom de l’acteur de la ligne. (cadre Acteur)
margin_l Marge gauche de la ligne.
margin_r Marge droite de la ligne.
margin_v Marge verticale de la ligne.
margin_t Marge du haut de la ligne. (Identique à la marge verticale)
margin_b Marge du bas de la ligne.
syln Nombre de syllabe dans la ligne.
li Indice de la ligne.
lleft Position gauche de la ligne.
lcenter Position du centre de la ligne.
lright Position droite de la ligne.
ltop Position du haut de la ligne.
lmiddle Position du milieu de la ligne.
lbottom Position du bas de la ligne.
lx Position x de la ligne lorsque vous utilisez l'alignement par défaut.
ly Position y de la ligne lorsque vous utilisez l'alignement par défaut.
lwidth Largeur de la ligne en pixels. C'est une valeur arrondi et peut ne pas
correspondre exactement avec les variables de positionnement.
lheight Hauteur de la ligne en pixels. C'est une valeur arrondi et peut ne pas
correspondre exactement avec les variables de positionnement.

Voici quelques images représentant quelques variables de ligne :

Tutoriel par Spyne21


Dans cette première image, nous pouvons remarquer que les variables disponibles sont en
concordance avec les paramètres de ligne.

L’image ci-dessus, nous montre à quoi correspond les variables « lleft, lcenter et lright » sur une
ligne. Elles sont situées respectivement à gauche, centre et à droite de la ligne. Ils correspondent à
des positions suivant l’axe X.

Pour celle-ci, nous mettons en évidence les variables « lbottom, lmiddle et ltop » sur une ligne. Si
nous commençons depuis le bas, nous pouvons distinguer le bas, milieu et haut de la ligne. Ils
correspondent à des positions suivant l’axe Y.

Cette image montre deux variables « lwidth et lheight ». La variable « lwidth » met en évidence la
largeur de la ligne et « lheight » la hauteur de la ligne.

Tutoriel par Spyne21


Si vous vous souvenez bien. Dans la partie précédente sur les balises, nous avons vu les balises \pos
ou \move permettant de positionner le texte et de déplacer. Ainsi les variables suivant l’axe X et Y
s’utilisent ensemble.

Voici une liste de positions de ligne que vous pouvez avoir en les combinant :

<1> lleft, lbottom


<2> lcenter, lbottom
<3> lright, lbottom
<4> lleft, lcenter
<5> lcenter, lcenter
<6> lright, lcenter
<7> lleft, ltop
<8> lcenter, ltop
<9> lright, ltop

Exemple : exemple_positionnement_lignes.ass

Remarque : Il est préférable d’utiliser les variables de position correspondant aux noms plutôt que
« lx » et « ly ». Cela vous permettra de mieux cerner ce que vous êtes en train de faire, et votre script
sera plus compréhensible.

Pour plus d’informations complémentaires : Karaoke Templater Reference : Inline variables

Les variables de syllabe :

Ici nous passons à l’intérieur des lignes. Cela nous donne accès à d’autres variables qui sont destinées
aux syllabes. Puisque les syllabes sont contenues à l’intérieur de lignes, vous pouvez toujours utiliser
les variables de ligne suivant vos besoins.

sstart Temps de début de la syllabe.


smid Temps de milieu de la syllabe.
send Temps de fin de la syllabe.
sdur Durée en millième de secondes de la syllabe.
skdur Durée en centième de secondes de la syllabe.
si Indice de la syllabe.
sleft Position gauche de la syllabe.
scenter Position du centre de la syllabe.
sright Position droite de la syllabe.
Tutoriel par Spyne21
stop Position du haut de la syllabe.
smiddle Position du milieu de la syllabe.
sbottom Position du bas de la syllabe.
sx Position absolue x de la syllabe lorsque vous utilisez l'alignement par défaut.
sy Position absolue y de la syllabe lorsque vous utilisez l'alignement par défaut.
swidth Largeur de la syllabe en pixels. C'est une valeur arrondi et peut ne pas
correspondre exactement avec les variables de positionnement.
sheight Hauteur de la syllabe en pixels. C'est une valeur arrondi et peut ne pas
correspondre exactement avec les variables de positionnement.

Voici quelques images représentant quelques variables de syllabe :

L’image ci-dessus, nous montre à quoi correspond les variables « sleft, scenter et sright » d’une
syllabe. Elles sont situées respectivement à gauche, centre et à droite de la syllabe. Ils correspondent
à des positions suivant l’axe X.

Pour celle-ci, nous mettons en évidence les variables « sbottom, smiddle et stop » d’une syllabe. Si
nous commençons depuis le bas, nous pouvons distinguer le bas, milieu et haut de la syllabe. Ils
correspondent à des positions suivant l’axe Y.

Cette image montre deux variables « swidth et sheight ». La variable « swidth » met en évidence la
largeur de la syllabe et « sheight » la hauteur de la syllabe.

Tutoriel par Spyne21


C’est la même chose que pour le positionnement des lignes, sauf qu’ici on positionne les syllabes sur
la largeur de la ligne. En effet lorsque vous allez travailler directement sur les syllabes et non les
lignes, Vous n’aurez qu’une syllabe par ligne. La position de cette syllabe équivaudra à la position
qu’elle a sur la ligne quand elle en fait partie intégrante.

<1> sleft, sbottom


<2> scenter, sbottom
<3> sright, sbottom
<4> sleft, scenter
<5> scenter, scenter
<6> sright, scenter
<7> sleft, stop
<8> scenter, stop
<9> sright, stop

Exemple : exemple_positionnement_syllabes.ass

Remarque : Il est préférable d’utiliser les variables de position correspondant aux noms plutôt que
« sx » et « sy ». Cela vous permettra de mieux cerner ce que vous êtes en train de faire, et votre script
sera plus compréhensible.

Pour plus d’informations complémentaires : Karaoke Templater Reference : Inline variables

Les variables automatiques :

Il s'agit d'un ensemble de variables qui peuvent affecter à la fois les lignes comme les syllabes. En
clair vous n’avez pas besoin de préciser dans ces variables si vous utilisé des variables de ligne ou de
syllabe. Ils s’adaptent en fonction des templates que vous utilisez.

start Temps de début de la ligne/syllabe. Absolue pour les lignes et relatif pour les
syllabes.
mid Temps de milieu de la ligne/syllabe. Absolue pour les lignes et relatif pour les
syllabes.
end Temps de fin de la ligne/syllabe. Absolue pour les lignes et relatif pour les
syllabes.
dur Durée en millième de secondes de la ligne/syllabe.
kdur Durée en centième de secondes de la ligne/syllabe.
i Indice de la ligne ou syllabe.
Tutoriel par Spyne21
left Position gauche de la ligne/syllabe.
center Position du centre de la ligne/syllabe.
right Position droite de la ligne/syllabe.
top Position du haut de la ligne/syllabe.
middle Position du milieu de la ligne/syllabe.
bottom Position du bas de la ligne/syllabe.
x Position x de la ligne/syllabe lorsque vous utilisez l'alignement par défaut.
y Position y de la ligne/syllabe lorsque vous utilisez l'alignement par défaut.
width Largeur de la ligne/syllabe en pixels. C'est une valeur arrondi et peut ne pas
correspondre exactement avec les variables de positionnement.
height Hauteur de la ligne/syllabe en pixels. C'est une valeur arrondi et peut ne pas
correspondre exactement avec les variables de positionnement.

Remarques : Afin de faire la distinction entre variable de ligne et de syllabe, il est conseillé de
toujours utiliser les variables de ligne ou de syllabe et pas les variables automatiques. Ainsi vous
éviterez de confondre les notions et vous pourrez ainsi acquérir des bases solides. Il est préférable
d’utiliser les variables de position correspondant aux noms plutôt que « x » et « y ». Cela vous
permettra de mieux cerner ce que vous êtes en train de faire, et votre script sera plus compréhensible.

Pour plus d’informations complémentaires : Karaoke Templater Reference : Inline variables

Les variables en langage LUA :

Les variables « $ » que nous avons vu précédemment, sont des variables ou l’écriture y est simplifié.
En effet les variables à l’origine sont sous la syntaxe d’écriture du langage LUA. Ainsi il peut être
courant de voir directement ce genre de variable dans les scripts ASS.

Voici une liste des équivalences entre les variables :

Les variables LUA Equivalences Les variables $

Variables de ligne

line.actor ⟺ $actor
line.style ⟺ $style
ou
line.styleref.name
line.layer ⟺ $layer
line.start_time ⟺ $lstart
line.end_time ⟺ $lend
line.duration ⟺ $ldur
line.i ⟺ $li
line.left ⟺ $lleft
line.center ⟺ $lcenter
line.right ⟺ $lright
line.top ⟺ $ltop
line.middle ⟺ $lmiddle
line.bottom ⟺ $lbottom
line.x ⟺ $lx
line.y ⟺ $ly
line.height ⟺ $lheight

Tutoriel par Spyne21


line.width ⟺ $lwidth
line.eff_margin_l ⟺ $margin_l
ou
line.styleref.margin_l
line.eff_margin_r ⟺ $margin_r
ou
line.styleref.margin_r
line.eff_margin_t ⟺ $margin_t
ou
line.styleref.margin_t
line.eff_margin_v ⟺ $margin_v
ou
line.styleref.margin_v
line.eff_margin_b ⟺ $margin_b
ou
line.styleref.margin_b
line.kara.n ⟺ $syln

Variables de syllabe

syl.start_time ⟺ $sstart
syl.end_time ⟺ $send
syl.duration ⟺ $sduration
syl.kdur ⟺ $skdur ⟺ $kdur
syl.i ⟺ $si
syl.left ⟺ $sleft - $lleft
syl.center ⟺ $scenter - $lleft
syl.right ⟺ $sright - $lleft
line.left + syl.left ⟺ $sleft
line.left + syl.center ⟺ $scenter
line.left + syl.right ⟺ $sright
syl.height ⟺ $sheight
syl.width ⟺ $swidth

Attention : « $li » ou « line.i » nous informe sur l’indice de la ligne en tenant compte de toute les
autres lignes du script avant celle-ci, à savoir les lignes d’informations et de styles du script ASS.

Afin de mieux comprendre les équivalences de position entre les variables « $ » et les variables LUA,
nous allons voir quelques images.

Tutoriel par Spyne21


Pour qu’un texte soit positionné correctement, il faut tenir compte de la position gauche de la ligne
« line.left » et ajouter ensuite la position de la syllabe. Les variables « $s » sont l’addition de ces
deux valeurs.
Comme vous pouvez le voir, les syl.« left, center ou right », nous donne seulement la position du
début de la ligne jusqu’à leur position de la syllabe. Ainsi il nous suffit donc d’ajouter « line.left »
pour retrouver l’équivalence avec les variables « $s » de position.

Source des images : « KaraBook de Karalaura ».

Voici une liste des autres variables en langage LUA :

Cette liste n’est pas complètes, elle comporte seulement ceux que vous êtes susceptible d’utiliser ou
bien de rencontrer.

Variables LUA Explications

Variables de vidéo

meta.res_x Résolution de la vidéo suivant l’axe X.


meta.res_y Résolution de la vidéo suivant l’axe Y.

Variables de style

line.styleref.class Nom de la classe du style.


line.styleref.fontname Nom de la police défini dans le style de la ligne.
line.styleref.fontsize Taille de la police définie dans le style de la ligne.
line.styleref.color1 Couleur primaire définie dans le style de la ligne.
line.styleref.color2 Couleur secondaire définie dans le style de la ligne.
line.styleref.color3 Couleur de bordure définie dans le style de la ligne.
line.styleref.color4 Couleur d’ombre définie dans le style de la ligne.
line.styleref.bold Le texte en gras défini dans le style de la ligne. « true » ou
« false » pour spécifier « gras » ou « non gras ».
line.styleref.italic Le texte en italique défini dans le style de la ligne. « true »
Tutoriel par Spyne21
ou « false » pour spécifier « italique » ou « non italique ».
line.styleref.underline Le texte souligné défini dans le style de la ligne. « true » ou
« false » pour spécifier « souligné » ou « non souligné ».
line.styleref.strikeout Le texte barré défini dans le style de la ligne. « true » ou
« false » pour spécifier « barré » ou « non barré ».
line.styleref.outline Taille de la bordure définie dans le style de la ligne.
line.styleref.shadow Taille de l’ombre définie dans le style de la ligne.
line.styleref.scale_x Pourcentage de l’échelle suivant l’axe X défini dans le style
de la ligne.
line.styleref.scale_y Pourcentage de l’échelle suivant l’axe Y défini dans le style
de la ligne.
line.styleref.spacing Espacement des lettres défini dans le style de la ligne.
line.styleref.angle L’angle de rotation en degré défini dans le style de la ligne.
line.styleref.borderstyle Retourne « 1 » pour une bordure normale, et « 3 » pour
bordure avec une boite opaque. Ceci est défini dans le style
de la ligne.
line.styleref.align Alignement du texte défini dans le style de la ligne.
line.styleref.encoding Retourne l’ID de l’encodage de la police de caractère défini
dans le style de la ligne.

Variables de ligne

line.class Nom de la classe de la ligne.


line.raw La ligne d’origine.
line.comment Commenter une ligne. C’est un type booleen avec « true » si
la ligne est commenté et « false » si elle n’est pas commenté.
line.effect Nom dans le cadre « effet » de la ligne.
line.text Le texte de la ligne d’origine avec les balises.
line.text_stripped Le texte de la ligne d’origine sans les balises.
line.styleref Une référence à la table de style représentant le style de la
ligne sélectionnée.
line.furistyle Une référence à la table de style représentant le style de la
ligne furigana.
line.halign L'alignement horizontal de la ligne, dérivé de
« line.styleref.align ». Elle peut prendre trois valeurs :
« left », « center » ou « right ».
line.valign L'alignement vertical de la ligne, dérivé de
« line.styleref.align ». Elle peut prendre trois valeurs :
« top», « middle » ou « bottom ».
line.prev, line.next Accéder à la ligne de dialogue avant et après la ligne actuelle.
Elle peut être nulle sur la première et dernière ligne de
dialogue. Les lignes vides, de styles, d'entêtes, ne sont pas
incluses dans cette liste.
line.extlead et line.descent Une image est plus approprié pour comprendre :

Tutoriel par Spyne21


Remarque : line.intlead et
line.ascent n’existe pas avec
Aegisub.

Cependant vous pouvez retrouver la


valeur de line.ascent = line.height –
line.descent

Malheureusement il nous est


impossible de retrouver la valeur de
line.intlead.

Variables de syllabe

syl.tag Le nom de la balise karaoké définis dans la syllabe, sans


backslash « \ ». C'est généralement « k », « K », « kf » ou
« ko ».
syl.text La syllabe du texte d’origine avec les balises.
syl.text_stripped La syllabe du texte d’origine sans les balises.
syl.inline_fx Nom de l’effet de ligne « inline-fx » pour cette syllabe.
syl.prespace, syl.postspace Les espaces en debut/fin de syllabe. Les espaces sont inlus
dans « syl.text_stripped ».
syl.text_spacestripped La syllabe du texte d’origine sans les balises et sans les
espaces en début/fin de syllabe.
syl.prespacewidth, Largeur de « syl.prespace » et « syl.postspace ».
syl.postspacewidth
line.kara[« i »].left Position gauche de la syllabe « i ».
line.kara[« i »].right Position droite de la syllabe « i ».
line.kara[« i »].center Position du centre de la syllabe « i ».
line.kara[« i »].width Largeur de la syllabe « i » en pixels.
line.kara[« i »].height Hauteur de la syllabe « i » en pixels.
line.kara[« i »].start_time Temps de début de la syllabe « i ».
line.kara[« i »].duration Durée en millième de secondes de la syllabe « i ».
line.kara[« i »].end_time Temps de fin de la syllabe « i ».

« i » : Représente l’indice de la syllabe. Vous pouvez être amené à utiliser « $si » (syl.i) ou « $syln »
(line.kara.n) en ajoutant « + ou - » « 1 ou n » comme indice.

Remarque : Les variables LUA sont à utiliser dans des blocs de code lorsque vous les écrivez dans
des templates. De plus ces variables peuvent être utilisés dans les différentes classes de code, ce qui
est impossible pour les variables « $ ». Nous verrons plus loin, comment utiliser ces variables dans
des blocs de code et dans les différentes classes de code.

Pour plus d’informations complémentaires : Automation 4 karaskel.lua

Les différents types de template :

Un « template », est un modèle de ligne. La ligne définis comme modèle, contient des \balises
permettant de générer des effets. Dès lors que vous écrivez template dans une ligne, l’option
d’application de template devient disponible.

Pour écrire un type de template dans une ligne, il faut l’écrire dans le cadre de la ligne dont vous
voulez qu’elle devienne le template :
Tutoriel par Spyne21
Il ne vous reste plus qu’à commenter la ligne, écrire ce que vous voulez avoir comme effet dans cette
ligne, et ensuite l’appliquer en cliquant ici sur « Appliquer le modèle karaoké » :

Vous pouvez retrouver aussi ces informations en allant consulter la première partie du tutoriel.

Remarques : Nous utiliserons le terme « template » plutôt que « modèle », tout simplement par
choix purement subjectif. Le slash « / » entre les termes, signifie que l’on peut utiliser les uns ou les
autres pour ce type de template.

Types de template Explications


template line Permet de spécifier que nous voulons produire une ligne
contenant le texte original sans division.

Exemple : template line.ass

template line/syl keeptags Permet de spécifier que les balises originales doivent être
conservées dans la syllabe après application du template.
Cela n'a aucun effet lorsqu'il est combiné avec char ou multi.

Exemple : template line keeptags.ass

template pre-line Permet de spécifier que nous voulons produire une ligne
contenant le texte original sans les balises karaokés et avec
les effets définis, seulement en début de ligne.

Exemple : template pre-line.ass

template syl Permet de diviser le texte en plusieurs lignes contenant les


syllabes du texte original.

Exemple : template syl.ass

template char Permet de diviser le texte en plusieurs lignes contenant les


caractères du texte original.

Tutoriel par Spyne21


ou
Exemple : template char.ass
template syl char
template pre-line/line/syl/char Permet d’appliquer le template plusieurs fois à une même
multi ligne ou syllabe.

Exemple : template multi.ass

Pour plus d’informations complémentaires : Furigana


karaoke

template syl/char fx « nom » Permet d'appliquer le template seulement aux syllabes qui
ont le nom « nom » spécifié dans la ligne. L'ajout du nom
dans la ligne doit être de la forme « \-nom_de_l'effet », et
ou « nom_de_l'effet » est le même que celui définis dans le
template.
Ce nom affecte la syllabe ou il est placé et toutes les syllabes
qui le suivent jusqu'à la prochaine syllabe comportant un
autre nom.

Remarque : Vous pouvez rencontrer le terme « Inline-fx »


qui correspond à ce que nous avons expliqué plus haut.

Exemple : template syl fx.ass

Pour plus d’informations complémentaires : Karaoke inline-


fx

template syl/char fury Permet de pouvoir positionner, spécifier des effets pour les
furigana.

Vous pouvez spécifier un furigana en l’insérant après une


barre verticale « | » juste après votre kanji. Ça donne :
« kanji|furigana ». Dès lors votre furigana aura la même
durée que votre kanji. De plus vous pouvez en spécifier
plusieurs avec des durées différentes en utilisant :

{\kdurée_kanji}kanji|furigana{\kdurée_second_furigana}
#|furigana{\kdurée_troisième_furigana}#|furigana...n

Exemple : template syl furi.ass

Pour plus d’informations complémentaires : Furigana


karaoke

template pre-line/line/syl/char Permet de placer le template dans un groupe. Pour cela, il


fxgroup « nom » faut spécifier un nom de groupe pour l'effet. Il est
recommandé d'éviter de mettre des mots réservés.

Exemple : template syl fxgroup.ass

Pour plus d’informations complémentaires : Templates with


fxgroup
Tutoriel par Spyne21
template pre-line/line/syl/char all Permet d’appliquer le template à tous les styles, et pas
seulement au style du template définis.

Exemple : template pre-line all.ass

template line/syl/char notext Permet de spécifier que le texte original ne sera pas ajoutée
la ligne de sortie après exécution du template. Ce type de
template est destiné à être principalement utilisé pour les
templates utilisant des balises de dessins et autres similaires
tel que les balises \clip vectoriels.

Exemple : template line notext.ass

template pre-line/syl/char Permet de spécifier que le template ne sera pas appliqué aux
noblank syllabes qui sont considérés comme « blanc » (vide). une
syllabe est considérée comme « vide » si le texte sans les
balises se compose d'espace, de caractères d'espacement ou
bien vide. De plus elle peut être considérée comme « vide »
dès lors, que la durée de la balise karaoké est égale à zéro.

Exemple : template syl noblank.ass

template pre-line/line/syl/char Permet de spécifier que le template sera appliqué « n » fois.


loop « n » « n » correspond au nombre de boucle maximum que vous
avez fixé. La valeur « n » doit être un nombre entier
constant. De plus, elle ne peut pas être une variable ou
provenir d'un calcul.

Remarque : L’utilisation de ce type de template vous


permet d’obtenir deux options importantes. La première
option est « j » qui permet de connaitre l’indice de la boucle.
C’est un compteur qui commence à 1 pour augmenter de 1
jusqu’à « n ». Le second est « maxj », qui correspond à
« n », le nombre maximum de boucle. Ces deux variables
s’utilisent dans des blocs de code. Il n’est pas possible de les
utiliser directement dans des classes de code, cependant vous
pouvez toutefois les faires passés dans une fonction que vous
avez déclarée dans une classe de code.

Exemple : template syl loop.ass

Les différents types de template peuvent se combiner entre eux. Cependant ce n’est pas forcement
toujours le cas pour tous.

Pour plus d’informations complémentaires : Karaoke Templater Reference : Template modifiers

Les différentes classes de code :

Une classe de code est une ligne comme les templates, mais à la différence que nous ne pouvons
générer de template seul à partir de ces lignes. Elles servent à déclarer des variables, conditions,
boucles, fonctions en utilisant du code LUA.

Tutoriel par Spyne21


Ces classes nous permettent de nous insérer comme si nous étions à l’intérieur d’une fonction qui
permet de déclarer des codes communs pour tous « code once », à l’intérieur d’une boucle agissant
sur les lignes « code line », ou bien à l’intérieur d’une boucle agissant sur les syllabes « code syl ».

Attention : Il n’est pas possible d’utiliser des variables « $ » dans ces lignes de code. Seul le langage
LUA est possible.

Remarque : Le slash « / » entre les deux termes, signifie que l’on peut utiliser l’un ou l’autre pour
cette classe de code.

Classes de code Explications


code once Permet de définir du code LUA valable pour tous.

Exemple : code once.ass

code line Permet de définir du code LUA valable pour les lignes.

Exemple : code line.ass

code syl Permet de définir du code LUA valable pour les syllabes.

Exemple : code syl.ass

code once/line/syl all Permet de définir du code LUA valable pour les lignes/syllabes
applicable à tous les styles.

Exemple : code all.ass

Remarque : Comme vous avez pu vous en rendre compte, la classe de code pour les caractères
« char » n’existe pas !!!
De plus « code noblank » est possible d’utilisation, et correspond à la même chose que pour les
templates.

Pour plus d’informations complémentaires : Karaoke Templater Reference : Template modifiers

Les opérateurs mathématiques :

Les opérateurs mathématiques sont des outils permettant d'effectuer des opérations classique voir
plus complexe. En effet, il vous sera parfois nécessaire d'effectuer des calculs pour la création de vos
effets.

Opérateur Signification
+ Addition
- Soustraction
* Multiplication
/ Division
^ Puissance
% Modulo

Les opérateurs de comparaisons :

Tutoriel par Spyne21


Les opérations de comparaison servent à effectuer des comparaisons entre deux nombres ou deux
chaînes. Le résultat d'une comparaison est « true or false » à savoir « vrai ou faux »

Opérateur Signification
== Égal
~= Différent
< Strictement inférieur
> Strictement supérieur
<= Inférieur ou égal
>= Supérieur ou égal

Les opérateurs logiques :

Les opérateurs logiques sont « and », « or », et « not ». Ce sont des mots réservés. Comme les
structures de contrôle (if, while, etc.), tous les opérateurs logiques considèrent à la fois « false » et
« nil » comme faux et tout le reste comme vrai.

L'opérateur de négation « not » retourne toujours « false » ou « true ».

L'opérateur de conjonction « and » retourne son premier argument si cette valeur est « false » ou
« nil », ou son second argument dans le cas contraire.

L'opérateur de disjonction « or » retourne son premier argument si cette valeur est différente de
« nil » et « false », ou son second argument dans le cas contraire.

Les blocs de code (code blocks) :

Un bloc de code est un bloc de code LUA dans une ligne de template. Les blocs de codes sont utilisés
pour insérer des calculs/chaînes de caractères à l'intérieur d'une ligne de template. Les blocs de code
doivent être des expressions LUA simple.

Vous pouvez créer un bloc de code en mettant des points d’exclamation entre ce que vous voulez
ajouter.

Exemple : {\t($start,!$mid+20!,\bord0)}

Remarque : Il est possible d’utiliser les variables intégrés (automatiques, de ligne ou de syllabe)
d’Aegisub dans des blocs de code.

Ajouter une condition dans un bloc de code :

La plupart des expressions mathématiques simples fonctionnent. Cela inclus les différents opérateurs
mathématiques, de comparaison et logique.

Un bloc de code doit toujours retourner une chaîne ou une valeur numérique. Si elle retourne un
booléen (true or false), un tableau ou autre chose, cela peut provoquer un avertissement/erreur de la
ligne. Il en résulte que le bloc de code de cette ligne ne sera pas interprété.

Pour créer une condition dans un bloc de code, vous pouvez utiliser les opérateurs « and » et « or ».

Par exemple : {\k!($sdur>100) and "f" or ""!$kdur}

Tutoriel par Spyne21


Si la durée de la syllabe est supérieure à « 100 ms» alors on ajoute « f » à la balise \k sinon, on
n’ajoute rien. Ainsi la balise \k se transformera en balise \kf.

Les fonctions mathématiques :

Voici une liste de fonctions mathématiques nous permettant d'effectuer des opérations mathématiques
complexes que nous ne pouvons pas faire (facilement) avec les symboles mathématiques seuls.

Fonction Signification
math.abs(n) Retourne la valeur absolue, ou la valeur
positive, de « n ».
math.acos(n) Retourne le cosinus inverse de « n ».
math.asin(n) Retourne le sinus inverse de « n ».
math.atan(n) Retourne la tangente inverse de « n ».
math.atan2(n,m) Retourne la tangente inverse du rapport
« n/m ».
math.ceil(n) Retourne le nombre entier au-dessus de « n ».
math.cos(n) Retourne le cosinus de « n ».
math.cosh(n) Retourne le cosinus hyperbolique de « n ».
math.deg(n) Retourne la conversion des radians (« n ») en
degrés.
math.exp(n) Retourne l'exponentiel de « n ». C'est
l'inverse du logarithme népérien.
math.floor(n) Retourne le nombre entier en-dessous de
« n ».
math.log(n) Retourne le logarithme népérien de « n ».
math.log10(n) Retourne le logarithme décimal de « n ». Le
nombre doit être positif.
math.max(n,m[,…]) Retourne la valeur maximum de « n,m » ou
d'une liste de longueur variable d'arguments.
math.min(n,m[,…]) Retourne la valeur minimum de « n,m » ou
d'une liste de longueur variable d'arguments.
math.mod(n,m) Retourne le reste de « n/m » (modulo).
math.pow(n,m) Retourne le résultat de l’opération « n^m ».
math.rad(n) Retourne la conversion des degrés (« n ») en
radians.
math.random() Retourne un nombre aléatoire entre 0.0 et 1.0.
math.random(n) Retourne un nombre aléatoire compris entre
« 0 » et « n ».
math.random(n,m) Retourne un nombre aléatoire compris entre
« n » et « m » avec « n<m ».
math.randomseed(n) La fonction utilise une base pour le générateur
pseudo-aléatoire. Les bases égales produisent
des ordres égaux de nombres.
math.sin(n) Retourne le sinus de « n ».
math.sinh(n) Retourne le sinus hyperbolique de « n ».
math.sqrt(n) Retourne la racine carrée de « n ».
math.tan(n) Retourne la tangente de « n ».
math.tanh(n) Retourne la tangente hyperbolique de « n ».

Ceci est une liste exhaustive. Elle ne contient pas toute les fonctions, mais seulement les plus
importantes. Par exemple, vous vous servirez beaucoup de la fonction « math.random ».
Tutoriel par Spyne21
Pour plus d’informations, consultez :

- Fonctions mathématiques (Français)


- Fonctions mathématiques (Anglais)

Les alternances notables :

Nom Équation Alternance


Plus//Moins (-1)^(compteur+1) ou -(-1)^compteur 1 et -1
Moins//Plus (-1)^compteur -1 et 1
On//Off (1+(-1)^(syl.i+1))/2 ou (1-(-1)^compteur)/2 1 et 0
Off//On (1+(-1)^compteur)/2 0 et 1
Tout//Rien (A/2)*(1-(-1)^compteur) A et 0
Rien//Tout (A/2)*(1+(-1)^compteur) 0 et A
A//B A + ((B-A)/2)*(1+(-1)^compteur) A et B
B//A B + ((A-B)/2)*(1+(-1)^compteur) B et A

Le « compteur », représente une incrémentation de valeur positive partant pour la plupart du temps
de « 1 » jusqu’à « n ». Le compteur peut être l’index (la position actuelle) des lignes « $li » ou
« line.i » ou syllabes « $si » ou « syl.i », ou bien d’une boucle « j » vu précédemment.

Étant donnée les différentes équations, nous allons expliquer le fonctionnement de l’avant dernière
équation : « A + ((B-A)/2)*(1+(-1)^compteur) »

Afin de mieux comprendre cette équation, nous allons partir de la droite vers la gauche :

- « (-1)^compteur » : Nous retourne soit « -1 » soit « 1 ». En effet, lorsque la valeur du compteur


est « pair », il nous retourne « 1 », et lorsqu’elle est impaire il nous retourne « -1 ».
- « (1+(-1)^compteur) » : Dès lors, vous comprenez qu’en ajoutant « 1 » à la valeur que nous
avons obtenus à la première étape, cette équation nous retournera soit « 0 » soit « 2 ».
- « ((B-A)/2)*(1+(-1)^compteur) » : Dans cette avant dernière étape, nous multiplions la valeur
précédente par « ((B-A)/2) » : L’équation nous retournera donc soit « 0 » soit « B-A ».
- « A + ((B-A)/2)*(1+(-1)^compteur) » : Voici la dernière étape. Ici, nous ajoutons à « A » soit
« 0 » soit « B-A ». Nous obtenons donc la valeur « A » ou la valeur « A+(B-A)=B ». L’operation
« B-A » nous retourne la différence entre les deux. Si nous ajoutons cette différence à « A », il est
normal d’obtenir de nouveau « B ». Il est aussi possible de visualiser ceci en enlevant les
parenthèses « A-A+B =B ».

Il ne tient qu’à vous de retenir ces équations ou bien de savoir les retrouver. Cependant vous pouvez
aussi utiliser le « modulo ». Comme je vous aie expliqué dans le premier tiret de l’équation, le fait
que le compteur soit « pair » ou « impair » est la clé qui permet cette alternance.

En sachant ça, nous pouvons aussi programmer cette alternance :

LUA Bloc de code (code block)


if compteur%2==0 then A else B end !(compteur%2==0) and A or B!

Traduction : Si le reste de l’opération est égale à « 0 » alors nous choisissons « A », sinon nous
choisissons « B ».

Initiation à la programmation LUA :

Tutoriel par Spyne21


Ceci est une petite introduction à la programmation en LUA. Il y a déjà des tutoriels sur internet
traitant de ce sujet de long en large. Ainsi nous aborderons seulement quelques notions nécessaires
pour la création de petit bout de code ou fonction dans Aegisub. Ces notions vont vous aider à mieux
comprendre certains scripts que vous pourrez trouver sur internet.

Affectation d'une valeur dans une variable

Affichage : 1

Affectation de chaînes dans des variables

Affichage : chaîne
Affichage : concatene

Concaténation de deux variables chainés

Affichage : chaîne concatene

Déclaration d'un tableau vide

Affichage : ⌀

Affectation de valeurs dans le tableau

Affichage : 0
Affichage : mot

Taille d’un tableau et d’une chaîne

Affichage : 2
Affichage : 6

Condition simple

Tutoriel par Spyne21


Affichage : 2 ou 0

Dans cette condition c’est soit l’un soit l’autre.

Condition multiple

Affichage : 1 ou 2 ou 3

Vous pouvez comparer autant de valeur que vous voulez, aucune limitation quant à l’utilisation de
« elseif ».

Boucle While

Affichage : 1,2,…,10

Boucle For simple

Affichage : 1,2,…,10

Fonction

Affichage : ⌀

Appel d’une fonction


Tutoriel par Spyne21
Affichage : 6

Les types de variable :

Vous serez peut être amené à utiliser ces types avec les fonction de « chaîne » comme
« string.format() », « string.match » etc…

Nous allons parler un peu plus de « string.format() » :

string.format("chaîne de caractère contenant des types de variable" ,variable,...)

Cette fonction retourne une chaîne de caractères formatée.

Exemple :

Attention : Il est nécessaire de mettre deux anti-slash « \\ » puisqu’en langage LUA, l’anti-slash est
un caractère spécial servant à plusieurs choses. De ce fait en ajoutant un second « \ », nous précisons
que nous voulons le caractère « \ ».

Tutoriel par Spyne21


Si jamais vous tombez sur une notion ne figurant pas ici ou bien si vous voulez plus d’informations
complémentaires, consultez les sites suivant :

Programmation Lua (Français) ou Programmation Lua (Français) ou Programmation Lua (Français)

Programmation Lua (Anglais) ou Programmation Lua (Anglais)

Exercices :

Pour tous les exercices, vous pouvez télécharger ce fichier et les faire directement à partir de celui-
ci : Exercice.ass

Exercice 1 :

Vous devez créer un template qui affichera après exécution, seulement l’indice des syllabes sans
ligne vide et sans la syllabe.

Remarque : Vous pouvez remarquer que même sans les vides apparents, ils sont quand même pris
en compte pour l’indexage des syllabes.

Correction : Exercice 1.ass

Exercice 2 :

Même exercice que le premier, sauf qu’ici, nous voulons avoir l’indice des lignes de dialogue et
seulement eux.

Remarque : Dans cette exercice, il n’est donc pas envisageable d’utiliser la variable d’indice de
ligne, puisqu’elle ne répond à l’exercice.

Correction : Exercice 2.ass

Exercice 3 :

Créer un template qui affichera seulement la première et dernière syllabe après exécution.

Correction : Exercice 3.ass

Exercice 4 :

Créer un template qui affichera seulement la syllabe « ni » après exécution. Les autres lignes devront
être vides.

Correction : Exercice 4.ass

Exercice 5 :

Créer une template de type pre-line, qui affichera la couleur secondaire du style
« line.styleref.color2 » en tant que couleur primaire du texte. La position de la ligne devra monter de
« 100 pixels » vers le haut pour la première ligne et « 100 pixels » vers le bas pour la seconde ligne,
en utilisant les variables. Le placement manuel n’est donc pas envisageable. Vous utiliserez la
méthode de bloc de code pour la position vers le haut ou le bas.

Correction : Exercice 5.ass


Tutoriel par Spyne21
Exercice 6 :

Créer un template qui affichera la couleur primaire « &H0000FF& » avant la moitié des syllabes de
la ligne puis « &HFEA32F& » après cette moitié. Vous devez utiliser seulement les blocs de codes.

Correction : Exercice 6.ass

Exercice 7 :

Même exercice que le précédent sauf qu’ici vous ne devez plus utiliser les blocs de codes, mais les
classes de codes.

Correction : Exercice 7.ass

Exercice 8 :

Nous désirons connaitre la position du centre de la prochaine syllabe. Vous devez donc créer un
template de type syl, qui affichera après exécution la position x. Attention à la dernière syllabe !!!

Correction : Exercice 8.ass

Exercice 9 :

Créer une fonction qui retourne la position « y+10 ou y-10 » suivant la parité de l’indice de la
syllabe. Le template affichera des syllabes après exécution. A l’intérieur du template syl, seule la
balise \pos vous sera demandé.

Remarque : Bien qu’il soit possible de le faire assez facilement avec des blocs de code sans avoir à
créer une fonction, cet exercice est juste là pour vous vous faire travailler plusieurs notions.

Correction : Exercice 9.ass

Exercice 10 :

Créer une fonction qui alterne la couleur en fonction de l’indice de la syllabe. Elle retournera la
couleur avec la balise « 1c ». De plus il faudra tenir compte des vides entres syllabes et faire attention
à ce qu’il n’y ait pas deux fois la même couleur qui ce suit. Enfin les couleurs devront être stockés
dans un tableau et renseigné lors de l’appel de la fonction.

Remarque : Même remarque que le précédent exercice.

Correction : Exercice 10.ass

Exercice 11 :

Nous disposons de 3 couleurs. Le but de cet exercice, est d’attribuer successivement les couleurs
définies dans un tableau, aux différentes syllabes.

Exemple : Première couleur du tableau, est assigné à la première syllabe, seconde couleur du
tableau, est assigné à la deuxième syllabe, troisième couleur du tableau, est assigné à la troisième
syllabe, première couleur du tableau, est assigné à la quatrième syllabe, etc…

Tutoriel par Spyne21


Attention : Vous ne pouvez pas utiliser la variable d’indice de syllabe de base. En effet, cela risque
de poser problème lors des « blancs » de synchronisation. Il est donc conseillé de faire sa propre
variable d’indice de syllabe, en tenant compte des « blancs ». L’utilisation de l’opérateur
mathématique modulo est nécessaire !

Remarque : Vous pouvez vous service de cette structure, pour répéter des séquences de valeurs,
comme de chaînes.

Correction : Exercice 11.ass

Tutoriel par Spyne21

Vous aimerez peut-être aussi