Accueil  Tutoriels  Outils Karaoké  Téléchargements  Forum  Multimedia  Contact

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).
  1. 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

  1. 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.



  1. 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...

  1. 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.



  1. 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).



  1. 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.



  1. 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).



  1. 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.



  1. 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.



  1. 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 :

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.



  1. 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>&}



  1. 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.



  1. 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 :

  1. 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.



  1. 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.



  1. 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.

  1. 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 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.

  1. 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



  1. 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}
\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 :
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.
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.


Vous devez savoir que :

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 :