Librería (time)
¿Para qué sirve?
Section titled “¿Para qué sirve?”-
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 vídeo. -
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.
Funciones de conversión de formatos
Section titled “Funciones de conversión de formatos”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.
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.
time_HMS(string | number): Una cadena de texto como0:00:02.50o un número (si es un número, lo devuelve sin cambios). Si se omite, toma el valor defx.offset.time_HMS.
Ejemplo
Section titled “Ejemplo”-- En la casilla "Line Start Time":return HMS_to_ms("0:00:01.25") -- Devuelve: 1250Hace la operación inversa a la anterior. Convierte un número en milisegundos a una cadena de texto con formato HMS.
time_ms(number): Un número que representa los milisegundos a convertir. Si se omite, toma el valor defx.offset.time_ms.
Ejemplo
Section titled “Ejemplo”-- 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)Calcula cuántos fotogramas (frames) del vídeo caben en un tiempo determinado. Utiliza la variable global frame_dur (duración de un fotograma en ms) para hacer el cálculo.
Time: number | string: El tiempo a convertir, ya sea en milisegundos (number) o en formato HMS (string). Si se omite, toma el valor defx.offset.Time.
Ejemplo
Section titled “Ejemplo”El siguiente código devolverá aproximadamente si el video es de 23.976 fps.
time_to_frame(1000)Convierte una cantidad de fotogramas a su equivalente en milisegundos.
frames: number: El número de fotogramas a convertir. Si se omite, toma el valor defx.offset.frames.
Ejemplo
Section titled “Ejemplo”El siguiente código devolverá aproximadamente si el video es de 23.976 fps.
frame_to_ms(10)Convierte una cantidad de fotogramas a su equivalente en formato HMS. Es una combinación de frame_to_ms y ms_to_HMS.
frames: number: El número de fotogramas a convertir. Si se omite, toma el valor defx.offset.frames.
Ejemplo
Section titled “Ejemplo”El siguiente código devolverá algo como "0:00:05.005".
frame_to_HMS(120)Funciones de sincronización de sílabas
Section titled “Funciones de sincronización de sílabas”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).
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.
Delay?: number, opcional: Milisegundos de retardo entre cada unidad. Por defecto40.Mode?: string, opcional: Define la base del tiempo. Puede sersyl(relativo al inicio de la sílaba) oword(relativo al inicio de la palabra). Si se omite, es relativo al inicio de la línea.
Ejemplo
Section titled “Ejemplo”l.start_time + time_li(30)Crea un retardo progresivo inverso, ideal para efectos que desaparecen de derecha a izquierda (line-out).
Delay?: number, opcional: Milisegundos de retardo entre cada unidad. Por defecto40.Mode?: string, opcional: Define la base del tiempo. Puede sersyl(relativo al inicio de la sílaba) oword(relativo al inicio de la palabra). Si se omite, es relativo al inicio de la línea.
Ejemplo
Section titled “Ejemplo”l.end_time + time_lo(30)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).
Delay?: number, opcional: Milisegundos de retardo entre cada unidad. Por defecto30.
Ejemplo
Section titled “Ejemplo”l.start_time + time_mid1(50)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).
Delay?: number, opcional: Milisegundos de retardo entre cada unidad. Por defecto30.
Ejemplo
Section titled “Ejemplo”l.start_time - time_mid2(50)Funciones de sincronización de bucles
Section titled “Funciones de sincronización de bucles”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.
Genera patrones de tiempo para objetos creados en un bucle simple (loop). Depende de las variables j y maxj.
Delay?: number, opcional: Milisegundos de retardo entre cada iteración. Por defecto30.Mode: string: El patrón de tiempo a usar. Aceptali,lo,mid1,mid2.
Ejemplo
Section titled “Ejemplo”retime("fxpretime", time_loop1("mid1", 20), time_loop1("mid1", 20) + 500)Idéntica a la anterior, pero diseñada para bucles anidados o secundarios (replay). Depende de las variables J y maxJ.
Delay?: number, opcional: Milisegundos de retardo entre cada iteración. Por defecto30.Mode: string: El patrón de tiempo a usar. Aceptali,lo,mid1,mid2.
Ejemplo
Section titled “Ejemplo”Dentro de un replay, se puede usar el siguiente código para secuenciar los objetos del bucle anidado.
retime("fxpretime", time_loop2("li", 15), ...)