Manejar y convertir unidades de tiempo: Facilita la conversión entre milisegundos (ms), el formato Horas:Minutos:Segundos.Centisegundos (HMS) y los fotogramas (frames) del video.
Crear patrones de animación: Proporciona funciones predefinidas para generar secuencias de tiempo comunes en efectos de karaoke (aparición de izquierda a derecha, del centro a los extremos, etc.) sin tener que escribir la lógica matemática cada vez.
Estas funciones te permiten trabajar con diferentes unidades de tiempo de manera flexible. Todas ellas admiten también una tabla como argumento, en cuyo caso procesarán cada elemento de la tabla y devolverán una nueva tabla con los resultados.
HMS_to_ms( time_HMS )Descripción: Convierte una cadena de texto en formato HMS (H:MM:SS.cs) a un número entero que representa milisegundos. Es muy útil para trabajar con tiempos directamente en las casillas de la interfaz.
Argumentos:
time_HMS (string | number): Una cadena de texto como "0:00:02.50" o un número (si es un número, lo devuelve sin cambios). Si se omite, toma el valor de fx.offset.time_HMS.Ejemplo de Uso:
-- En la casilla "Line Start Time":
return HMS_to_ms("0:00:01.25") -- Devuelve: 1250
ms_to_HMS( time_ms )Descripción: Hace la operación inversa a la anterior. Convierte un número en milisegundos a una cadena de texto con formato HMS.
Argumentos:
time_ms (number): Un número que representa los milisegundos a convertir. Si se omite, toma el valor de fx.offset.time_ms.Ejemplo de Uso:
-- En la casilla "Return [fx]:"
-- Crea una línea de texto que muestra la duración de la sílaba en formato HMS.
return "{\\an5}" .. ms_to_HMS(syl.duration)
time_to_frame( Time )Descripción: Calcula cuántos fotogramas (frames) del video caben en un tiempo determinado. Utiliza la variable global frame_dur (duración de un fotograma en ms) para hacer el cálculo.
Argumentos:
Time (number | string): El tiempo a convertir, ya sea en milisegundos (número) o en formato HMS (string). Si se omite, toma el valor de fx.offset.Time.Ejemplo de Uso: time_to_frame(1000) devolverá aproximadamente 24 si el video es de 23.976 fps.
frame_to_ms( frames )Descripción: Convierte una cantidad de fotogramas a su equivalente en milisegundos.
Argumentos:
frames (number): El número de fotogramas a convertir. Si se omite, toma el valor de fx.offset.frames.Ejemplo de Uso: frame_to_ms(10) devolverá aproximadamente 417 si el video es de 23.976 fps.
frame_to_HMS( frames )Descripción: Convierte una cantidad de fotogramas a su equivalente en formato HMS. Es una combinación de frame_to_ms y ms_to_HMS.
Argumentos:
frames (number): El número de fotogramas a convertir. Si se omite, toma el valor de fx.offset.frames.Ejemplo de Uso: frame_to_HMS(120) devolverá algo como "0:00:05.005".
Estas funciones generan retardos de tiempo calculados en base a la posición de la sílaba/palabra actual. Son el corazón de los efectos de karaoke secuenciales. Dependen de las variables automáticas val_i (índice actual) y val_n (número total).
time_li( Delay, Mode )Descripción: Crea un retardo progresivo, ideal para efectos que aparecen de izquierda a derecha (Line-In). Cada sílaba aparece un poco después de la anterior.
Argumentos:
Delay (number, opcional): Milisegundos de retardo entre cada unidad. Por defecto es 40.
Mode (string, opcional): Define la base del tiempo. Puede ser "syl" (relativo al inicio de la sílaba) o "word" (relativo al inicio de la palabra). Si se omite, es relativo al inicio de la línea.
Ejemplo de Uso: l.start_time + time_li(30)
time_lo( Delay, Mode )Descripción: Crea un retardo progresivo inverso, ideal para efectos que desaparecen de derecha a izquierda (Line-Out).
Argumentos:
Delay (number, opcional): Milisegundos de retardo entre cada unidad. Por defecto es 40.
Mode (string, opcional): "syl" o "word". Cambia la base de tiempo para el cálculo.
Ejemplo de Uso: l.end_time + time_lo(30)
time_mid1( Delay )Descripción: Crea un patrón de tiempo donde las sílabas de los extremos aparecen primero y las del centro al final (efecto de "cerrar cortinas"). Se usa sumando al tiempo de inicio (l.start_time).
Argumentos:
Delay (number, opcional): Milisegundos de retardo entre cada unidad. Por defecto es 30.Ejemplo de Uso: l.start_time + time_mid1(50)
time_mid2( Delay )Descripción: Crea el patrón de tiempo opuesto a time_mid1. Las sílabas del centro aparecen primero y las de los extremos al final (efecto de "abrir cortinas"). Se usa restando del tiempo de inicio (l.start_time).
Argumentos:
Delay (number, opcional): Milisegundos de retardo entre cada unidad. Por defecto es 30.Ejemplo de Uso: l.start_time - time_mid2(50)
Estas funciones son análogas a las de sílabas, pero están diseñadas para usarse dentro de un loop y dependen de los contadores j/J y maxj/maxJ.
time_loop1( Mode, Delay )Descripción: Genera patrones de tiempo para objetos creados en un bucle simple (loop). Depende de las variables j y maxj.
Argumentos:
Mode (string): El patrón de tiempo a usar. Acepta "li", "lo", "mid1", "mid2".
Delay (number, opcional): Milisegundos de retardo entre cada iteración. Por defecto es 30.
Ejemplo de Uso: retime("fxpretime", time_loop1("mid1", 20), time_loop1("mid1", 20) + 500)
time_loop2( Mode, Delay )Descripción: Idéntica a la anterior, pero diseñada para bucles anidados o secundarios (replay). Depende de las variables J y maxJ.
Argumentos:
Mode (string): El patrón de tiempo a usar. Acepta "li", "lo", "mid1", "mid2".
Delay (number, opcional): Milisegundos de retardo entre cada iteración. Por defecto es 30.
Ejemplo de Uso: Dentro de un replay, se puede usar retime("fxpretime", time_loop2("li", 15), ...) para secuenciar los objetos del bucle anidado.