SweetKaraoké
Sous-titrage
de
karaokés
Annexe
A : Les
codes SSA , ASS (Advanced SubStation Alpha) et ASS2
Les codes
SSA, ASS et ASS2 peuvent
être tapés manuellement, en ouvrant
le script dans un éditeur de texte.
Pour commencer, je vais
expliquer mon système de notation.
Toutes les parties modifiables des codes seront entre <
>. Ce qui
est à l’intérieur devra donc
être
remplacé par des valeurs. Par exemple : {\frx<angle
en
degrés>} ne marchera pas, contrairement à
{\frx0}.
Si entre les < > vous trouvez ce genre de chose
<0/1>,
alors il faut choisir entre 0 et 1.
<1-9> donne le choix sur un chiffre de 1 à 9.
Les codes
sont entourés d'accolades
{ et } pour former une
balise, exeption faite aux
codes \N et
\n.
Ces
caractères sont nécessaires pour
délimiter les
zones contenant du code de celles contenant du texte. On ne peut pas
avoir une structure du genre
{\frx25{\frz25}}, autrement dit, les balises ne sont pas imbricables.
Par contre, il est possible d'avoir plusieurs codes dans une
même
balise : {\frx10\t(0,1000,\frx250)}.
Certains codes contiennent des paramètres entre
paranthèses ( ). Par
exemple : \pos(512,384). N’oubliez pas de fermer vos
parenthèses, même si la plupart des logiciels et
décodeurs lisant les formats SSA/ASS/ASS2,
corrigent ce
type d’erreur.
Allez, maintenant, on commence.
Tous
les codes
concernant le format de script ASS (Advanced SubStation Alpha) sont
écrits en
rouge.
Tous
les codes
concernant le format de script ASS2 (Advanced SubStation Alpha 2) sont
écrits en vert (au moment où j'écris
ces lignes,
il n'existe aucun code spécifique au format ASS2).
- Découpage
d’une ligne
\n
: il s’agit du retour
chariot. \n est
ignoré si le mode “smart-wrapping” (
\q)
(découpage automatique des lignes) est activé.
Ex : Koi wo suru tabi mune\nBon bo ba bon s’affichera :
Koi wo
suru tabi mune
Bon bo ba bon
\N
: il s’agit du retour
chariot. Il doit
être utilisé à la place de \n si le
mode
“smart-wrapping » (
\q)
est activé.
\q<num>
: le mode « smart-wrapping ». Il règle
le
comportement par défaut du retour à la ligne.
"num" peut
prendre les valeurs 0,1,2 ou 3 en fonction du style de
découpage des lignes.
0
= coupe une ligne trop longue en
deux parties à peu
près égales (la ligne la plus longue
étant celle
du dessus).
\N est pris en
compte
contrairement à \n
1
= le découpage se fait en
fin de ligne lorsque le
sous-titre
ne peut plus rentrer dans la vidéo. \N est pris en compte
contrairement à \n
2
= pas de découpe
automatiquement des lignes.
\N et \n ne sont pas pris en compte
3
= coupe une ligne trop longue en
deux parties à peu
près égales (la ligne la plus longue
étant celle
du dessous).
\N est pris en
compte
contrairement à \n
- Les effets
karaoké
On peut créer un effet karaoké à
l’aide des codes
\<k/ko/kf/K><durée
de l’effet
karaoké, en
centièmes de
seconde>.
\k<durée
de
l’effet
karaoké, en
centièmes de
seconde>
: l’effet
karaoké (highlight) se fait mot
à mot
ou syllabe par syllabe.
\K<durée de
l’effet
karaoké, en
centièmes de
seconde>
ou \kf<durée de
l’effet
karaoké, en
centièmes de
seconde>
: l’effet
karaoké (highlight) se fait
progressivement, de gauche à droite, sur un mot ou une
syllabe.
\ko<durée de
l’effet
karaoké, en
centièmes de
seconde>
: l’effet karaoké (highlight) se fait mot
à mot
ou syllabe par syllabe,
sur la bordure du texte.
- Mettre en gras, en italique,
souligné, barré
On peut modifier l'apparence du texte grâce aux codes
suivants :
\b<0/1>
:
gras
\i<0/1>
:
italique
\u<0/1> : souligné
\s<0/1> : barré
"1" active l'effet.
"0", désactive l'effet.
Ex : Texte {\b1}
en
gras {\b0}
et normal
En
spécifiant un chiffre
supérieur à 1, ce paramètre sera
utilisé
pour régler l'épaisseur de la police : 400 =
normal, 700
= gras...
- Bordures et ombres
On
peut grossir la bordure à l'aide du code \bord<pixels>
ou
augmenter le déport de
l’ombre à l’aide du code \shad<pixels>.
\bord
: code permettant de définir
l'épaisseur de la bordure du texte en pixels
\shad
: code permettant de définir la
distance séparant le texte de son ombre, en pixels. Le
déport se fera toujours vers le bas et la droite
pixels : chiffre entier
positif ou
nul.
Ex
: {\bord5}bordure de 5
pixels, {\bord0}sans bordure,
{\shad5}ombre déportée de 5 pixels, {\shad0} sans
ombre.
- Blur edge
\be<0/1>
: Voici
un effet peu
utilisé, pour rendre flous les
contours de la police de caractères. Il fonctionne comme la
mise
en gras :
(be = blur
edge).
- Modifier la police et la
taille du texte
\fn<nom
de la police> : font name (modifier le nom de la police de
caractères).
<nom de la police> est le nom d'une police de
caractères
installée sur
votre ordinateur.
Par exemple : {\fnArial}Texte en Arial.
\fs<taille>
: font size
(modifier la taille du texte) :
<taille> est
un entier
positif, il représente la valeur de la taille du
texte en
pixels.
Par exemple : {\fs20}Taille du texte à 20 pixels
{\fs30}Taille
du texte à 30 pixels.
Sur l'image suivante, la taille du texte augmente
progressivement.
- Distorsion horizontale et
verticale d’une ligne
On
considère que par
défaut le taux de distorsion
du
texte est de 100%.
Parfois
on veut aplatir ou
étirer du texte. On utilise pour
cela, le code
: \fsc<x/y><taux
de
distorsion>
fsc
= font scale
x
= effet horizontal (pour une distorsion horizontale du texte)
y
= effet vertical (pour une distorsion verticale du texte)
taux
de distorsion est un entier
positif ou nul en pourcent. Par défaut
il
est à 100%.
{\fscx80}
permet, par exemple, de
"compacter" la largeur de la ligne
à
80% de l’original.
Nota
: lorsque les distorsions
sont utilisées dans des
fonctions, on ne peut pas distordre une ligne dans le même
sens
plus de deux fois (voir le chapitre sur les fonctions).
- Espacement des lettres
Pour
modifier l’espacement
entre chaque lettre, utilisez : \fsp<pixel>
fsp
= font spacing (espacement
entre les lettres)
pixel
est un entier positif ou nul.
- Les positions (1)
Les positions sont assez spéciales à utiliser.
Ici je ne
parlerai que des positions prédéfinies. Deux
codes
peuvent être utilisées
\a
et
\an.
\a<1-3>+<rien/4/8>.
Les numéros du clavier alphanumérique sont
utilisés pour
définir les positions du texte en bas de l'écran.
a
= alignement
{\a1} placera le texte en bas aligné à gauche,
{\a2} placera le texte en bas centré au milieu,
{\a3} placera le texte en bas aligné à droite,
Ajoutez un 4 à la valeur de A placera le texte en haut de
l'écran,
Ajoutez un 8 à la valeur de A placera le texte au milieu de
l'écran.
Par exemple, pour positionner votre sous-titre en haut et
centré
au milieu de l'écran, il faudra taper {\a6} --->
{\a(2+4)}.
\an<1-9>.
Les positions sont similaires à la disposition des
chiffres 1 à 9 de votre clavier
alphanumérique.
Par
exemple : {\an8} placera votre
texte en haut centré.
an
= alignement numérique
{\an9}
placera le texte en haut
aligné à droite.
Mais
ce n’est pas tout. ce code sert aussi à
déplacer le « centre de gravité
» de la ligne.
Par
défaut celui-ci est en
{\an2} soit en bas au centre.
Pour
bien se rendre compte, imaginez que votre ligne de texte soit
représentée par un rectangle, et le centre de
gravité par un point sur ce rectangle. Maintenant placez le
centre de gravité en {\an4} (au milieu à gauche).
Quel
intérêt ? Aucun
à ce niveau. Mais
il faut
savoir que certains effets utilisent le centre de gravité.
C’est le cas des inclinaisons.
- Les inclinaisons
Petit rappel :
l’espace est
défini par trois axes : hauteur (axe Y), largeur (axe X), profondeur (axe Z).

On retrouve ces trois
axes dans les
fonctions d'inclinaison, avec :
- \frx<angle en
degrés> pour l'axe des X,
- \fry<angle
en
degrés> pour l'axe des Y,
- \frz<angle
en
degrés> pour l'axe des Z.
L'angle
en degrès peut être un nombre (entier ou
non) positif,
négatif ou nul. Un angle
positif incline le texte dans le sens anti-horaire
et un angle
négatif, dans le sens horaire.
Par défaut,
tous les angles
sont à 0
et l'origine
des axes O (également appelé centre de gravité)
se situe
au centre de la phrase, juste en dessous de celle-ci, comme
indiqué sur l'image
suivante.

Il est possible
d'incliner le
texte
selon les axes X, Y et Z en même temps.
{\frx25\frz50\fry20}texte
incliné
{\frz0}autre inclinaison.
Second rappel : un
code
n’est annulé
que si
un deuxième code est utilisé pour
ça.
Par exemple
:
{\frx25\fry50}inclinaison
1{\frx10}inclinaison 2.
Est
égal à :
{\frx25\fry50}inclinaison
1{\frx10\fry50}inclinaison
2.
On
voit donc que dans le premier
cas, l’inclinaison suivant l'axe des Y ({\fry50}) est
conservée
jusqu’au bout de la
ligne.
- Les couleurs
\<1/2/3/4>c&H<code
hexadécimal>
&
1 = couleur de l’intérieur de la police
2 = couleur initiale de karaoké
3 = couleur de bordure
4 = couleur de l’ombre
Le code hexadécimal est en version BVR (bleu vert rouge) et
non
RVB comme dans la plupart des logiciels de dessin (PSP). Il est sur 6
caractères.
Vous pouvez retrouver le code des couleurs en hexadécimal
et en BVR à partir de l'outil "
SweetKaraoké
Color Picker Online" disponible dans la rubrique "
Outils Karaoké".
Nota : {\c&H<code
hexadécimal>&} est équivalent
à {\1c&H<code
hexadécimal>&}
- Transparence
\<1/2/3/4>a&H<code
hexadécimal>&
Comme
pour la couleur sauf que
c’est pour la transparence.
Le
code hexadécimal est sur
deux caractères et va
de 00 =
opaque à FF = invisible.
Les
ombres sont
généralement en 80.
{\alpha&H<code>&}
permet
d’appliquer une
transparence
générale.
- Code qui annule toutes les
autres codes
\r<style>
Ce code permet d’annuler toutes les codes
écrits
précédemment dans la même ligne et les
remplace
soit par le style défini comme style par défaut,
soit
par
un autre style qui aura le nom défini dans
<style>.
Un exemple pour mieux comprendre :
Dialogue: 0,0:00:00.99,0:00:16.84,Style1,,0000,0000,0000,,{\fs28}Here
is some {\c&HFF0000&} overridden text, {\r}but
this is
using Style defaults
A partir de la balise {\r}, le texte sera écrit avec le
style
par défaut.
Les
fonctions :
- Les
positions (2)
Positionner
une ligne se fait avec le code \pos(<X>,<Y>).
X
= abscisse
Y
= ordonnée
La
position 0,0 correspond au coin en haut à gauche.
X
et Y sont des entiers positifs, négatifs ou nuls. Cela veut
dire que l’on peut placer une ligne en dehors de
l’écran.
Attention,
le positionnement tient compte du centre de
gravité
de la ligne.
- Les mouvements (déplacements)
\move(<X1>,<Y1>,<X2>,<Y2>,<T1>,<T2>)
X1,
Y1 = coordonnées du point de départ.
X2,
Y2 = coordonnées du point d’arrivée.
T1
= temps de départ en millième de secondes
après
l’apparition de la ligne.
T2
= temps de fin de déplacement en millièmes de
secondes
après l’apparition de la ligne.
T1
et T2 sont optionnels. S'ils ne sont pas définis, le
déplacement se fera entre le moment où la ligne
apparaît à l'écran et le moment
où elle
disparaît.
Tout
comme les positions, les mouvements tiennent compte du centre de
gravité de la ligne.
- Origine, ou centre de
gravité libre
Il
est possible de définir le centre de gravité
d’une ligne n’importe où dans
l’écran
(ou même en dehors de l’écran).
\org(<X>,<Y>)
X
= abscisse
Y
= ordonnée
C’est
un peu complexe à expliquer…
Essayez
ça avec des inclinaisons ou des rotations.
- Les fonctions
d’animation
Il
s’agit d’unefonction (code) qui va
contenir des effets
(d'autres codes).
\t(<T1>,<T2>,<A>,<effet(s)>)
T1
= temps de départ de
l’animation en
millièmes de
secondes
T2
= temps de fin de
l’animation en millièmes de
secondes
A
= accélération :
de 0 à 1 =
ralentissement /
à partir de 1 = accélération. Il
s’agit
d’un paramètre optionnel.
<effets>
= liste
d’effets obtenus en fin
d’animation.
Généralement
quand
on utilise une animation, on
commence
par définir les effets de départ,
c’est-à-dire donner l’apparence de la
ligne
lorsqu’elle s’affiche.
Ensuite
on place les effets
d’arrivée dans une
fonction,
c’est-à-dire l’apparence finale.
Exemple
: une rotation.
Une
rotation est en fait une
animation
générée
à partir de deux inclinaisons :
{\frz25}{\t(0,1000,\frz-25)}Texte
Pendant
une seconde, la ligne va
effectuer un arc de cercle autour de
l’axe de profondeur.
Voici
la liste des effets qui
peuvent être placés
dans une
fonction d’animation :
- les couleurs
- les transparences
- les bordures
- les ombres
- les inclinaisons
- la taille des polices
- les distorsions
- les espacements de
caractères
- les clips (uniquement les rectangles)
Les
combinaisons sont infinies. On
peut mettre autant
d’effets
que l’on veut dans une fonction, et autant de fonctions que
l’on veut par ligne.
- Apparition et disparition
Deux codes permettent
de faire
apparaître
et disparaître une ligne
en
fondu.
\fad(<temps1>,<temps2>)
temps1
= durée
d’apparition de la ligne
temps2
= durée de
disparition de la ligne
Ce
sont des durées en
millièmes de secondes. Un
seul fade
par ligne.
\fade(<a1>,<a2>,<a3>,<temps1>,<temps2>,<temps3>,<temps4>)
<a1> :
valeur de la
transparence avant le temps <temps1>
<a2> :
valeur de la
transparence entre le temps <temps2> et le temps
<temps3>
<a3> :
valeur de la
transparence après le temps <temps4>
entre
<temps1> et
<temps4> : Temps du début et de la fin de
l'animation en
millisecondes
entre
<temps1> et
<temps2> : la valeur de la transparence, qui sera
interpolée entre <a1> et
<a2>
entre
<temps2> et
<temps3> la valeur de la transparence sera
égale à
<a2>
entre
<temps3> et
<temps4> : la valeur de la transparence, qui sera
interpolée entre <a2> et
<a3>
La valeur de la
transparence est
comprise entre 0 (opaque) et 255 (transparent).
Ex :
{\fade(255,0,255,0,1000,2000,3000)}Effet
de fading
- Les clips ou zones de
visibilité
Un
clip est un rectangle que
l’on définit sur
l’écran dans lequel apparaîtra le texte.
On
peut de cette manière
découper une ligne en
deux et en
voir juste une partie.
Essayez
ce code :
Dialogue:
Marked=0,0:00:00.00,0:00:01.00,Default,NTP,0000,0000,0000,,{\an5\pos(320,55)}Texte
d’essai
Dialogue:
Marked=0,0:00:01.00,0:00:04.00,Default,NTP,0000,0000,0000,,{\an5\pos(320,55)}{\clip(0,0,640,55)}Texte
d’essai
\clip(<X1>,<Y1>,<X2>,<Y2>)
X1,
Y1 = coordonnées du
coin supérieur gauche du
rectangle.
X2,
Y2 = coordonnées du
coin inférieur droit du
rectangle.
Tout
comme les positions, les
valeurs peuvent être
négatives, positives ou nulles.
Le
clip peut également
être un objet que l'on crée avec les commandes de
dessin
et dans lequel apparaîtra le texte.
On
peut de cette manière créer des formes plus
complexes
qu'un simple rectangle.
\clip([<1...5....>,]
<commandes de dessins>)
<1...5....>
a la
même signification que la commande \p. Cette valeur est
optionnelle.
Par défaut, elle sera réglée
à "1".
Les
dessins :
La
commande permettant d'afficher des dessins (objet) à
l'écran est la suivante :
{\p<1...5...>+}
<commandes
de dessins> {\p0}
- La balise {\p<1...5...>+}
(\p<valeur>+) permet d'activer le mode dessin. La valeur
comprise entre les crochets définit l'échelle de
l'objet, en utilisant la formule suivante : 2^(valeur-1). Par exemple,
pour {\p4+}, on a 2^(4-1) = 2^3 = 8. Toutes les coordonnées
de l'objet seront divisées par 8.
- La balise {\p0}
désactive le mode dessin. Tout ce qui se situe
après cette commande sera interprété
comme du texte.
\pbo<y>
: baseline offset (excentrage
de
la ligne de base de "y" pixels).
Par
défaut tous les objets
sont placés sur la ligne de base courante (elle est
définie par la position des sous-titres dans la
vidéo et
par les marges verticales). Le code \pbo<y> permet
d'excentrer de
"y" pixels, la ligne de base courante. Il est, ainsi, possible
d'abaisser (y>0)
ou de
monter (y<0) les objets.
Il
existe sept commandes
de dessins :
- m
<x>
<y> :
déplace le curseur à la position
<x> <y>,
- n
<x>
<y> :
déplace le curseur à la position
<x> <y>. Les objets dessinés,
mais non fermés, seront laissés ouverts,
- l
<x>
<y> : dessine
une ligne entre le point sur lequel se trouve le curseur et le point de
coordonnées <x> <y>,
- b
<x1> <y1> <x2>
<y2> <x3> <y3>
: courbe de Bézier de degré 3 avec 4 points de
contrôle,
Remarque
: une Courbe de Bézier est une courbe
paramétrique qui permet très simplement, par
construction itérée de Barycentres (Algorithme de Casteljau),
de réaliser un arc
de courbe
continu
d'extrémités imposées, et avec des Points de
Contrôle qui
définissent les
tangentes
à
cette courbe.
Tous
les
logiciels de dessin
utilisent les courbes de Bézier de degré 3.
Exemple
de
courbe de Bézier de degré 3 avec 4
points de contrôle A, B, C et D.
- s
<x1>
<y1>
<x2> <y2> <x3>
<y3> ... <xN>
<yN> : courbe
B-spline uniforme de degré 3 à N points. Le
nombre
minimum de
points est de trois.
Une
B-Spline
Uniforme, considérée uniquement du point de vue
géométrique, peut être sommairement
définie
comme une suite de Courbes de Bézier accolées les
unes
aux autres.

Exemple
de
courbe B-spline de degré 3.
- p
<x> <y>
: étend la courbe B-spline jusqu'au
point de coordonnées <x> <y>,
- c
: ferme la courbe
B-spline.
Vous
devez
savoir que :
- Un
dessin doit former un objet fermé,
- Tout
objet non fermé, le sera automatique avec une ligne droite,
- Les
coordonnées des objets
sont relatives. Elles
dépendent de la position du curseur
et du mode d'alignement des sous-titres,
- Les
commandes p
et c
doivent uniquement suivrent des
commandes relatives à des B-spline,
- Les
couleurs des dessins correspondront à celles qui ont
été définies dans les lignes de style
du fichier:
la couleur de l'intérieur (PrimaryColour), des bordures et
de
l'ombre (BackColour).
Voici maintenant quelques exemples d'objets dessinés :
Exemple
de
script pour afficher un carré ou un rectangle (commande m) :
Dialogue:
Marked=0,0:00:00.00,0:00:02.00,Default,NTP,0000,0000,0000,,{\an1}{\p1+}
m 0 0 l 100 0 100 100 0 100 {\p0}
Dialogue:
Marked=0,0:00:02.00,0:00:04.00,Default,NTP,0000,0000,0000,,{\an5}{\p2+}
m 0 0 l 100 0 100 100 0 100 {\p0}
Dialogue:
Marked=0,0:00:04.00,0:00:06.00,Default,NTP,0000,0000,0000,,{\an2}{\p1+}
m 0 0 l 200 0 200 100 0 100 {\p0}
Résultat
:
Exemple
de
script pour afficher un ovale, demi-ovale ou une courbe (commande b) :
Dialogue:
Marked=0,0:00:00.00,0:00:02.00,Default,NTP,0000,0000,0000,,{\p1+} m 50
0 b 100 0 100 100 50 100 b 0 100 0 0 50 0 {\p0}
Dialogue:
Marked=0,0:00:02.00,0:00:04.00,Default,NTP,0000,0000,0000,,{\p1+} m 50
0 b 100 0 100 100 50 100 {\p0}
Dialogue:
Marked=0,0:00:04.00,0:00:06.00,Default,NTP,0000,0000,0000,,{\p1+} m 0 0
b 50 100 100 50 150 25 b 0 100 0 0 50 0 b 100 0 100 100 50 100 {\p0}
Résultat
:
Exemple
de
script pour afficher un cercle ou une courbe (commande s) :
Dialogue:
Marked=0,0:00:00.00,0:00:02.00,Default,NTP,0000,0000,0000,,{\p1+} m 0 0
s 100 0 100 100 0 100 c {\p0}
Dialogue:
Marked=0,0:00:02.00,0:00:04.00,Default,NTP,0000,0000,0000,,{\p1+} m 0 0
s 100 0 100 100 0 100 150 50 c{\p0}
Dialogue:
Marked=0,0:00:04.00,0:00:06.00,Default,NTP,0000,0000,0000,,{\an4}{\p2+}
m 0 0 s 100 100 85 60 0 100 c {\p0}
Résultat
:
Exemple
de
script pour afficher un rectangle vert avec bordure rouge et ombre
violette :
Il est important de noter que les couleurs des dessins sont celles
définies dans vos lignes de style. La couleur primaire est
celle de l'intérieur du dessin et une bordure et une ombre
peuvent être ajoutées au dessin.
Dans cet exemple, j'ai créé un rectangle de
couleur verte
dans lequel apparaîtra une ligne de sous-titre.
[Script
Info]
; This is an Advanced Sub Station Alpha v4+ script.
; For Sub Station Alpha info and downloads,
; go to http://www.eswat.demon.co.uk/
; or email kotus@eswat.demon.co.uk
ScriptType: v4.00+
Collisions: Normal
PlayResX: 640
PlayResY: 100
Timer: 100.0000
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour,
OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX,
ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment,
MarginL, MarginR, MarginV, Encoding
Style:
Dessin,Dolphins,44,&HCCFF66&,&H66CCFF&,&H6633FF&,&HFFCCCC&,0,0,0,0,100,100,0,0.00,1,2,4,7,0,0,0,0
Style:
Texte,Dolphins,44,&HFFCC99&,&H66CCFF&,&H6633FF&,&H000000&,0,0,0,0,100,100,0,0.00,1,1,4,5,0,0,0,0
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV,
Effect, Text
Dialogue: 1,0:00:00.00,0:00:06.00,Dessin,NTP,0000,0000,0000,,{\p1+} m
40 20 l 600 20 600 80 40 80 {\p0}
Dialogue:
2,0:00:00.00,0:00:05.00,Texte,NTP,0000,0000,0000,,{\K400}futari tokeru
toki mo himitsu dayo
Résultat
:
Nombre
total de visiteurs :
