Introducción a Jitter con Max/MSP
Los objetos jit.qt.movie o jit.movie leen archivos de video.
Con un mensaje podemos llamar el archivo que queremos leer, si éste está en la misma carpeta o ubicación solo tenemos que poner read y el nombre del archivo con su extension, si esta en otra ubicación tendremos que darle la ubicación.
Con un metro le damos el refresh de frames. Metro envía bangs y cada bang mueve un frame. Es decir que si enviamos un bang cada 40 milisegundos tendremos 25 frames por segundo.
Podemos abrir el finder y buscar otro archivo con el mensaje read.
start, stop son mensajes que funcionan para controlar la lectura del video.
stop funciona como una pausa.
Tenemos otros mensajes como:
rate= velocidad de lectura
looppoints = donde comienza y termina el loop
vol = audio
autostart = automatico
interp =interpolación de pixeles
También pedemos usar un playbar
Con jit.movie, también podemos controlar la lectura frame a frame, saltar a algún frame determinado o simplemente obtener la cantidad de frames del video con los mensajes frame, jump, getframecount.
Con un qmetro, y un counter podríamos un contador de frames con el cual podríamos sincronizar varios videos frame a frame. qmetro funciona como metro pero si se sobrecarga la cola de proceso deja caer algunos bangs.
Para reproducir un video también podemos utilizar el objeto jit.playlist que es una abstracción compuesta ve varios objetos con multi-funciones:
Para visualizarlo en una ventana podemos utilizar los objeto jit.window y jit.pwindow, estos objeto ademas nos permiten sacar las coordenadas del raton sobre la ventana, lo cual es muy util para realizar interactivos de pantalla táctil o cualquier tipo de interacción con el raton y la matriz.
Vemos en el ejemplo siguiente que además de las coordenadas X, Y del raton también podemos tener información de combinaciones de teclas del teclado.
El objeto jit.fpsgui nos permite obtener información sobre el video, tanto la lectura de frames, como el tiempo en ms, el tipo, las dimensiones, los planos y el nombre.
El objeto jit.scope analiza valores de la matriz y los visualiza como forma de onda, vectorscopio, histograma, o desfile de data.
Conceptos principales para trabajar con imagen y video.
Matriz:
Se puede definir como un conjunto de variables (también llamado bloque) del mismo tipo que el considerado en matemática, y cuyo acceso se realiza por índices o líneas.
La matriz la utilizaremos para dar coordenadas a los pixeles que corresponden a la resolución de nuestro encuadre. La resolución esta determinada por la cantidad de filas por la cantidad de columnas que tenga nuestra matriz.
Un matriz de video esta compuesta por multiples pixeles los cuales cada uno de ellos describen un color dentro de cada coordenada X, Y. Para determinar el tamaño de la matriz en filas y columnas se han creado ciertos standards de aspecto que corresponden a la relación entre columnas y filas.
El aspecto standard durante muchos años fue 4:3 determinado por el encuadre que daban las antiguas televisiones. Posteriormente se han incorporado otros aspectos como los son 16:9, 16:10 que se acercan mas al Aspecto que determina el formato HD.
Para determinar los colores correspondientes a cada pixel utilizaremos planos RGBA en los cuales podremos determinar el color.
En jitter nos referimos a los planos asi:
A = Alpha = Plano 0.
R (Red) = Plano 1.
G (Green) = Plano 2.
B = Blue = Plano 3.
Y los valores de intensidad de cada color se describen con valores de 0 a 255 que corresponde a 8 bits. Y por lo tanto utilizaremos char de 4 planos.
Para comenzar vamos a ver unos objetos con los cuales podemos editar los planos RGBA:
Con el objeto charmap podemos editar los valores RGBA en cada plano independientemente.
El objeto jit.alphablend nos permite mezclar dos videos en el plano alpha.
El objeto jit.chromakey nos permite ajustar el plano alpha correspondiendo al color que queramos ajustar.
El objeto jit.keyscreen nos permite mezclar el alpha de 3 videos en los 3 planos RGB.
El objeto jit.lumkey hace una mezcla de 2 matrices midiendo la distancia cromática y haciendo un calculo de la luminocidad en cada uno de los 4 planos.
El objeto jit.op nos permite hacer operaciones matemáticas entre dos matrices.
jit.shade hace un xfade entre 2 matrices con un rango determinado por una tercera matriz el fade es calculado en frames.
El objeto jit.xfade se usa para hacer transiciones en xfade entre dos matrices.