Librería (effector)
¿Para qué sirve?
Section titled “¿Para qué sirve?”Esta librería es el núcleo de gestión del propio Kara Effector. Contiene las funciones que manejan la creación y guardado de nuevos efectos, la importación de librerías, la configuración de la posición y el estado del efecto, y la lógica principal que ejecuta los efectos sobre los subtítulos. La mayoría de estas funciones son para uso interno del script, pero algunas como effector.create_fx o effector.addfx son esenciales para expandir la funcionalidad de Kara Effector.
Funciones
Section titled “Funciones”- effector.create_fx
- effector.keeptags
- effector.pos
- effector.knj
- effector.import
- effector.addfx
- effector.savefx
- effector.modify_pos
- effector.new_pos
- effector.default_val / effector.default_val2
- effector.decide
- effector.print_error
- effector.time
- effector.pos_config
- effector.run_fx
- effector.preprosses_styles
- effector.preprosses_macro
- effector.preprosses_lines
- effector.macro_fx
La función fundamental para definir un nuevo efecto y añadirlo a las librerías de Kara Effector. Toma todos los parámetros de configuración de un efecto (los mismos que se ven en la ventana “Modify”) y los empaqueta en una estructura que Kara Effector puede usar.
new_fx_type: string: El tipo de efecto. Debe ser uno de:"LIfx"(leadin),"HLfx"(hilight),"LOfx"(leadout),"SHfx"(shape),"TLfx"(translation), o"FTfx"(function)....(34 argumentos): Una secuencia de 34 valores (stringoboolean) que corresponden exactamente a cada una de las casillas de la ventana “Modify”, en orden.
Ejemplo
Section titled “Ejemplo”-- Define un nuevo efecto de lead-in llamado "Mi Efecto"Mi_Efecto = effector.create_fx("LIfx", "Mi_Efecto", "Syl", true, false, ...)Recupera las etiquetas originales de una sílaba o palabra (excluyendo las etiquetas de karaoke y posición) para que puedan ser conservados en el efecto final. Esto es útil para no perder, por ejemplo, cambios de color o \fad que ya existían en la línea original.
template_type: string: El tipo de plantilla que se está ejecutando (ej."Syl","Word").keeptags_type: string: La unidad de la cual se quieren preservar las etiquetas (ej."Line","Word","Syl").
Una función de utilidad interna para generar las etiquetas \pos, \move y \org basándose en los parámetros del efecto, incluyendo la corrección por el ángulo de la línea ($l_angle).
t_move: number: Un código que indica si es un\pos: 1o un\move: >=2.t_pos: table: Una tabla de coordenadas.t_time: string: La parte de tiempo de la etiqueta\move.
Kanji. Calcula las coordenadas para texto vertical (kanji). Reajusta la posición (x, y) basada en el índice de la sílaba o caracter para apilarlos verticalmente en lugar de horizontalmente.
v_knj: boolean: Activa o desactiva el modo kanji.reverse_fx?: boolean, opcional: Si estrue, invierte el orden del apilamiento.
Carga un archivo de librería Lua externo, haciendo sus funciones y variables disponibles para Kara Effector. Es un alias de la función include.
Lua_file: string: El nombre del archivo.luaa importar (sin la extensión).
Permite añadir dinámicamente un efecto existente a la cola de procesamiento actual. Esto es útil para crear “funciones” que aplican una secuencia de otros efectos.
Library_fx: string | number: El nombre o índice de la librería del efecto (ej."lead-in",1).Name_fx: string | number: El nombre o índice del efecto dentro de esa librería.
Añade una nueva línea de texto al final de un archivo especificado. Se usa internamente para guardar nuevas configuraciones de efectos.
New_fxname: string: El texto a añadir.File_fx: string: La ruta al archivo.
Calcula el desfase (offset) de posición de un objeto karaoke causado por la presencia de etiquetas \pos o \an en la línea original.
Offset_x?: boolean, opcional: Si estrue, devuelve los offsets por separado{x, y}. Si no, los devuelve combinados.
Genera una etiqueta \pos o \move a partir de coordenadas absolutas, teniendo en cuenta la posición y movimiento base del objeto (fx.move_x1, etc.).
posx, posy: number: Las coordenadas de destino.
Funciones internas que inicializan o resetean las variables globales del efecto (fx.*) y las variables de conveniencia (val_*) para el objeto karaoke actual (sílaba, caracter, etc.).
Una función de seguridad interna que comprueba la integridad de los archivos del script (nombre, autor, versión, etc.) para evitar modificaciones no autorizadas que puedan romper Kara Effector. Si detecta una discrepancia, detiene la ejecución con un error.
El sistema de manejo de errores de Kara Effector. Comprueba si un argumento pasado a una función es del tipo correcto. Si no lo es, detiene la ejecución y muestra un mensaje de error detallado y amigable para el usuario.
argument: El valor del argumento a comprobar.type: El tipo de dato esperado (ej."string","numbertable").function: El nombre de la función que se está validando.pos: La posición del argumento en la llamada a la función.
Calcula la diferencia entre dos tiempos (en segundos) y la devuelve en formato H:MM:SS. Se usa para mostrar el tiempo de ejecución del script.
Time_i,Time_f: number: Tiempos de inicio y fin (obtenidos conos.time()).
Función interna que se ejecuta en cada iteración del bucle para calcular y actualizar todas las variables de posición del efecto (fx.pos_x, fx.move_l1, etc.) basadas en los parámetros de la GUI.
La función principal que orquesta la aplicación de efectos. Itera sobre las líneas de subtítulos seleccionadas y llama a effector.do_fx para cada una.
Analiza los estilos presentes en el archivo de subtítulos y los usa para poblar el menú desplegable “**Apply to Style:” **en la GUI.
Procesa la selección del usuario en la GUI para determinar a qué conjunto de líneas se aplicará el efecto (líneas seleccionadas, todas las líneas, o líneas de un estilo específico).
Pre-procesa todas las líneas de diálogo del archivo, creando la tabla interna linefx que contiene toda la información de tiempos, posiciones y estructura de cada línea, sílaba, palabra, etc. Es una de las operaciones más importantes y se ejecuta antes de aplicar cualquier efecto.
La función de entrada principal para la macro. Se encarga de mostrar la GUI, recoger la configuración del usuario y lanzar el proceso de aplicación de efectos.
