CrazITeam
Watching rather than fansubbing
Karaoke con Automation 4

PREMESSA: questa guida risale al 2015, potrebbe funzionare ancora come no, in caso lasciate un commento

Creare karaoke con effetti complessi tramite Aegisub non è sempre una passeggiata. Certo il Karaoke Templater è uno script molto potente ed è molto comodo, ma ha anche dei grossi limiti (specialmente con i loop multipli e la manipolazione “char by char”). Per questo motivo alle volte è indispensabile scrivere uno script in lua che faccia tutto il lavoro sporco.

Per chi ha già buone conoscenze di programmazione creare script in lua è una passeggiata in quanto si tratta di un linguaggio molto semplice e flessibile. Scrivere buone macro però richiede una buona conoscenza del framework di Aegisub (settare le varie finestre di dialogo, far avanzare la progression-bar e così via…). E non è finita qui, bisogna avere molta familiarità con le strutture dati nelle quali sono salvate la battute dei nostri karaoke.

Per questo motivo negli anni è stato creata e perfezionata una libreria che si occupa di eseguire in automatico tutte le funzioni sopra citate per permettere ai karaoker di concentrarsi sulla creazione di effetti “nudi e crudi”.

Materiale utile

Per seguire la guida al meglio sono necessarie delle buone conoscenze di programmazione e dimestichezza con in tag di Aegisub. Qui sotto troverete elencate delle ottime guide con cui partire (vi consiglierei di leggerle prima di andare avanti qui):

Karaskel.lua

Le funzioni che mette a disposizione questa libreria sono molteplici. Le due qui sotto sono fondamentali e si dovrebbero conoscere e padroneggiare, tuttavia, come vedremo più avanti, non ci servirà richiamarle in modo diretto.

  • karaskel.collect_head: legge il file dei sottotitoli per raccogliere tutte le definizioni, le informazioni di intestazione, gli stili, e facoltativamente genera anche nuovi stili per i layout Furigana. Questa solitamente è la prima funzione che si chiama quando si scrive uno script per karaoke.
  • karaskel.preproc_line: calcola dimensione, posizione e altre informazioni per una singola riga del sottotitolo. Questa funzione chiama karaskel.preproc_line_text, karaskel.preproc_line_size e karaskel.preproc_line_pos in ordine. Questa funzione è da richiamare ogni qualvolta si manipola una riga o una sua parte.

Per il loro utilizzo vi rimando alla documentazione ufficiale.

Quelli che invece utilizzeremo noi saranno i Karaoke skeletons, che vedremo subito

Karaoke Skeletons

Un karaoke skeleton è un framework per la creazione di effetti karaoke. Di solito funziona scrivendo qualche funzione per la creazione dell’effetto vero e proprio; le varie funzioni verranno poi chiamate una o più volte secondo regole ben precise.

Nell’ultima versione di Aegisub vi sono due di questi framework:

  • Effect library
  • Classic advanced

Io preferisco utilizzare la prima in quanto trovo che ponga meno vincoli al programmatore, per cui sarà anche quella che andrò a spiegare nei passaggi successivi.

Effect Library

Questa speciale funzione è di fatto l’unica che dovete richiamare perché lo script funzioni. Essa svolge nell’ordine:

  1. Registra una macro con nome e descrizione presi da variabili nominate secondo lo standard. Se non sapete di cosa sto parlando vi conviene scrollare fino alla sezione “Materiale utile” e leggervi la guida di Lyger.
  2. Per ogni riga valida chiama la funzione associata al campo “effetto” (lo vedremo in dettaglio tra qualche istante).
  3. Aggiorna correttamente la progress bar per l’avanzamento dello script.

La firma della funzione è la seguente:

karaskel.use_fx_library_furi(use_furigana, add_macro)

Entrambi i parametri sono dei booleani: il primo indica se generare ed aggiungere anche gli stili furigana all’output, il secondo se registrare la macro in Aegisub (io ve lo consiglio vivamente, è estremamente comodo avere la macro nel menù automation… altrimenti non saprei nemmeno che farmene).

Siccome la maggioranza degli script non fa uso di stili furigana, esisite una funzione più comoda e anche più leggibile con questa firma:

karaskel.use_fx_library(add_macro)

Ora che avete istruito il framework ad utilizzare le vostre funzioni personalizzate è ora di passare all’azione.

Le funzioni hanno una nomenclatura specifica: fx_nomeeffetto, il nome dell’effetto dovrebbe avere un minimo di senso (buone regole di programmazione) e sarà quello da utilizzare nel campo “effetto” delle righe a cui volete applicare il karaoke (senza il prefisso fx_).

La funzione va implementata così:

function fx_effect(subtitles, meta, styles, line, fxdata)  
-- il vostro codice personalizzato  
-- il ritorno può essere true o false:  
-- false per commentare le linee originali, true altrimenti  
return false  
end  

Ah… quasi dimenticavo, dovete ricordarvi di includere la libreria karaskel in questo modo:

include("karaskel.lua")

Per ora è tutto, non voglio rendere il tutorial eccessivamente lungo, nei prossimi giorni posterò qualche mini-tutorial per quacosa di più specifico, come ad esempio scorrere il testo sillaba per sillaba, carattere per carattere, come formattare l’output e così via.

Vi lascio qui in fondo il link al file che io uso come template di base di modo che possiate avere una visione di insieme del codice.


Last modified on 2019-04-30