lundi 9 mars 2009

Customiser VisualSubSync sans connaître Delphi

Ajouter quelques boutons sur l'interface, redimensionner et déplacer les éléments déjà présents, tout cela est facile même sans s'y connaître en programmation Delphi. Il suffit d'utiliser ResHack, un petit utilitaire permettant d'extraire, éditer, et recompiler certaines ressources des exécutables. Un peu d'observation, de logique, pas mal de copier-coller et d'essais, et bien sûr un peu de patience... rien d'effrayant pour les sous-titreurs, donc.

Petit exemple en image :

Les habitués verront aisément les différences avec la version officielle...

J'ai d'abord repositionné quelques "contrôles" (boutons ou autres éléments graphiques et fonctionnels de l'interface) par rapport à l'original. Notamment les boutons contrôlant le zoom de la waveform, et le compteur temps de la prévisualisation vidéo (à droite, tombant plus facilement sous le regard quand on lance la dite vidéo, avec une police légèrement plus grosse). Bon, question de préférences personnelles, c'est clair.

Ensuite, j'ai ajouté ajouté six boutons :
Car j'ai la flegme d'aller dans les menus ; et j'utilise déjà une floppée de raccourcis-clavier.

1 - afficher/cacher les keyframes (changement de scène)
2 - afficher/cacher le text-pipe.
3, 4, 5 - montrer (fenêtre vidéo) les images début(4)/ fin(5) d'affichage du sous-titre sélectionné, et celle relative à la position du curseur(4). Je me sers beaucoup de ces fonctions de VSS. (hop : et trois raccourcis clavier de moins)
6 - afficher/masquer la vidéo. (même avec un 28" j'aime admire la waveform dans toute sa splendeur)

Vous l'aurez compris, ces "ajouts" sont limités à la gestion de l'interface et ne lancent que des fonctions déjà définies par le programme. Donc, même si ça ne casse pas trois pattes à un canard, ça marche, ça rend service, et c'est assez fun. Accessoirement, cela pourrait donner l'envie à certains de franchir l'étape suivante, en étudiant vraiment quelques bases de Delphi histoire d'aller plus loin dans l'enrichissement de VSS.

La Méthode
1 - Télécharger l'utilitaire Ressource Hacker.

2 - Faire une copie de sauvegarde de l'exécutable VisualSubSync. ResHack ne fera qu'un backup... à chaque recompilation/sauvegarde, donc le backup lui-même pourrait être écrasé si vous faites plusieurs essais (plus que probable).

3 - lancer ResHack. MenuFile/Open, et choisissez l'exécutable visualsubsync.exe dans le répertoire où vous avez installé celui-ci.

4 - dans la colone de gauche, déployez le dossier RCData et, à nouveau, déployez TMAINFORM. Sélectionnez l'icône unique qu'il contient, "0". La fenêtre de droite affiche alors le script de création d'interface de VSS ; cf.screenshoot :

4b - Ne paniquez pas, vous n'êtes pas dans la matrice. Je le redis : la suite n'a rien de sorcier.

5 -
Ok, jetez un coup d'oeil : ce long script commence par définir les principales parties de l'interface, précisant ensuite la nature des contrôles, menus et boutons, et leur éventuelle action pour ceux qui sont cliquables. ces actions sont définies plus loin. Chaque nouvel élément est défini comme un objet, dont la nature est aussitôt précisée "Splitter"(d'interface), paneau(partie d'interface regroupant différent éléments, menu, bouton ou zone d'information. Exemple : utilisez la fonction recherche de ResHack (Ctrl+F), tapez: MemoTextPipe.
Le premier point du script ne nous intéresse pas vraiment ("object SplitterMemoTextPipe: TSplitter"), pressez F3 pour trouver la deuxième instance : "object MemoTextPipe: TTntRichEdit". Les lignes qui suivent définissent position et dimensions par défaut, police de caractère, en bref l'apparence de la zone éditable du text-pipe de VSS. un "end" referme la définition de cet élément. Pour la suite, changeons vraiment un autre élément.

6 - Pour un premier test, déplacer le compteur temps de la préview vidéo. Déroulez le script si vous avez la patience d'un moine boudhiste, sinon utilisez à nouveau la fonction recherche texte avec : "00:00:00.000" (sans les guillemets bien sûr). C'est un élément, pardon, un objet de type TPanel. :
object plCursorPos: TPanel
Left = 706
Top = 0
Width = 186
Height = 33
Hint = 'Cursor Position'
BevelOuter = bvLowered
Caption = '00:00:00.000'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -28
Font.Name = 'Arial'
Font.Style = [fsBold]
ParentFont = False
ParentShowHint = False
ShowHint = True
TabOrder = 1
object TntButton2: TTntButton
Left = 8
Top = 0
Width = 33
Height = 25
Caption = 'TntButton2'
TabOrder = 0
Visible = False
OnClick = TntButton2Click
end

Les parties qui nous intéressent : Left = 210 (sa deuxième ligne), et éventuellement Width et Height si vous souhaitez modifier la taille d'affichage (via : Font.Height). Mais pour l'instant contentons-nous d'une seule modif sur la position horizontale, en pixel; par exemple: Left = 750.

Note - pour se faciliter la vie :
Vous pouvez télécharger un autre petit utilitaire : Pixel Ruler.
générallement utile pour les webmasters et graphistes, cette règle virtuelle permet de prendre la mesure exacte de tout ce qui se trouve à l'écran. fonctionne avec toutes les applications.


7 - Si VSS est ouvert, fermez-le. Dans ResHack, cliquez sur le bouton "Compile Script", puis sauvegardez (conseil : vous pouvez très bien donnez un nom bidon, ex: VSScustom.exe, placé dans le même répertoire que VisualSubSync il n'y aura pas de problème pour vos tests). Lancez alors cet exécutable modifié et comparez. Evidemment, tout fonctionne comme à l'habitude.

Soyons un peu plus ambitieux : ajoutons un bouton. Il suffira de repomper joyeusement sur les éléments existant, de trouver une position en pixel qui convienne, et d'associer l'action voulue. Un exemple :

8 - Lancez une recherche sur "bttShowHideVideo". Vous devriez trouver la définition du bouton afficher/cacher la vidéo :
object bttShowHideVideo: TSpeedButton
Left = 337
Top = 0
Width = 23
Height = 25
Action = ActionShowHideVideo
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
20000000000000040000(...)}
ParentShowHint = False
ShowHint = True
end


9 -
Sélectionnez au curseur et copiez (ctrl+c) tout ce bloc, de "object..." à "end", inclus. Ouvrez le notepad de windows et collez-y (ctrl+v) ce gabarit de travail. Pour en faire votre nouveau bouton, qui permettra par exemple d'afficher/cacher les keyframes dans la waveform, il faut chercher dans ResHack la fonction correspondante. On sait que VSS permet cette fonction via le menu View--Show/HideSceneChange. Une recherche avec "SceneChange" donne plusieurs résultats. Faites F3 jusqu'à avoir la définition de cette action :
object ActionShowHideSceneChange: TTntAction
Tag = 1
Caption = 'Show/Hide scene change'
OnExecute = ActionShowHideSceneChangeExecute
end

Ayant le nom exact, repompons allègrement "ActionShowHideSceneChange" et modifions dans Notepad notre nouveau bouton. Par exemple, dans ma version les lignes modifiées sont :
object bttShowHideSceneChange: TSpeedButton
Left = 254
Top = 28
Width = 23
Height = 25
Action = ActionShowHideSceneChange

Choisissez évidemment une position Left/Top correspondant à un emplacement libre dans VSS.
Note : Pour changer l'icône, vous pouvez copier les données hexa "Glyph.Data" d'un autre bouton défini dans le script original, ou pas, carr ne pas en préciser pour certaines fonctions (showstartframe, par exemple) n'empêche pas forcément vss de se débrouiller pour trouver l'icône correspondant). Il y à sûrement d'autres méthodes, à explorer.

10 - Copiez ce nouveau bouton de NotePad vers le ResHack, en prenant simplement soin de le coller entre deux définitions (d'autres boutons, plutôt que n'importe-où tant qu'à faire, ce sera plus simple pour vous y retrouver plus tard), donc entre un "end" et un "objet" d'autres éléments. Sinon, ça ne marchera pas.

11 - Compilez le script, sauvegardez, testez. Voilà pour les exemples. Kawa et/ou clop(s) seront bien mérités pour continuer à expérimenter vos propres bidouilles.

- Crysta669.

samedi 13 septembre 2008

CPS AutoChecker 0.6.beta

Ajouts disponibles dans cette mise-à-jour :

- Le bouton 'Set' recalcule une durée optimisée en fonction du CPS maximal. par défaut 24
- Clic-droit sur l'icône, en barre de notification : option pour configurer ce seuil.
- Aucun changement n'est fait si une pression du bouton Set impliquerait un chevauchement avec le sous-titre suivant.
- correction de bugs mineurs.


Pour rappel :
CPS AutoChecker est un mod Non-officiel pour SubitleWorkshop 2.51, qui "greffe" un outil de vérification du nombre de caractères affichés par seconde, pour chaque sous titre, et se met à jour en temps réel.

Liens de Téléchargement :

- zShare.

- MegaUpload.

vidéo (en flash) de démonstration : ICI.

dimanche 2 mars 2008

FFDShow rev1515(et +) : le SSA mieux géré

Depuis la mise-à-jour du 28 fevrier, rev.1874(lien)+, améliore (enfin) la gestion des sous-titres ASS/SSA par ce couteau-suisse du décodage vidéo, essentiellement des problèmes de hauteur de lignes occasionnels lorsqu'on le conjuguait avec Vobsub/vsfilter (mariage quasi systématique sur le PC du sous-titreur lambda...).

La dernière version de la librairie Libavcodec est également incluse, ce qui devrait garantir une meilleure précision d'affichage pour la synchro, entre autres améliorations.

Enfin, parmis un changelog toujours aussi touffu, notons simplement que la traduction française à été un légèrement mise-à-jour elle aussi (sur les options récentes du recadrage/autocrop notamment), et que la gestion des x264 et autres codecs de haute-volée continue d'être peaufinée...

FFDShow était déjà un excellent atout pour tout utilisateur d'un PC windows, avec cette mise-à-jour il confirme une maturité et des qualités plus qu'intéressantes pour les sous-titreurs.

mardi 19 février 2008

"CPS AutoChecker" - version 03.beta

Mod Non-officiel pour SubitleWorkshop 2.51, CPS AutoChecker greffe un outil de vérification du nombre de caractères affichés par seconde, pour chaque sous titre, et se met à jour en temps réel.

Pour ceux qui ont la flegme de lire ce qui suit,
voici une Petite vidéo de Démo en Flash.

Comme vous voyez, rien de compliqué, mais ça manquait un peu, et ça peut rendre service pour checker rapidement ses timings tout en traduisant. J'ai passé bien plus de temps (Allez, disons.... 300x plus) pour obtenir un overlay (le GUI greffon) à l'affichage stable et fluide. Mais c'est bon : même si vous déplacez, réduisez/restaurez ou dimensionnez la fenêtre principale de Subtitle Workshop il suivra gentiment.

Ce n'est pas encore parfait à mon goût (mais ça viendra)... hhmmm'enfin l'illusion est assez crédible, utile (tant qu'à faire, hein...?), et surtout cela ouvre la porte à pas mal d'idées, pour le logiciel d'Urusoft ou pour d'autres.

Comme d'habitude, ce petit Mod est "portable", n'altère en rien l'exécutable principal de Subtitle Workshop 2.51, n'altère pas la couche d'ozone ni n'ajoute aucune entrée au Registre, etc.

Lien de Téléchargement : ***ICI***.

Sur ce, braves gens, bonne nuit. :)

mardi 29 janvier 2008

SPT 097_D Compatible VSS 0.9.14

... tout est dans le "_D".

Juste une mise à jour, pour rendre à nouveau compatible les SPT avec les dernières versions de VSS (à l'évolution délicieusement survoltée, ces temps-ci)

Edit : Pour le "split at cursor" je vous conseille pour me moment de n'utiliser que la fonction interne à VSS.

Le Lien de Téléchargement Via Megaupload.

.