2. 2
Conteúdo
• Conhecimento prévio
• Estrutura básica (objectos) para ler um vídeo
• Matrizes
• Atributos
12-02-2010 Jorge C. S. Cardoso
3. 3
Conhecimento prévio
• Objectos fundamentais
j
– Metro
– S, R (send, receive)
– Pak
P k
– Prepend
– Route
– line
– Loadbang
– Patcher (patchers dentro de patchers)
– Construção de mensagens com variáveis
– ...
• Assumo que já sabem isto tudo
– Se não souberem: http://cycling74.com/docs/max5/vignettes/intro/docintro.html
12-02-2010 Jorge C. S. Cardoso
4. 4
Ler um ficheiro de vídeo
• jit qt movie
jit.qt.movie
– Carrega um ficheiro de
vídeo
– Argumentos: largura e
altura do vídeo
– Mensagens
• Read: abre a janela de
j
diálogo para escolher o
ficheiro
• Stop: pára a reprodução
• Start: recomeça a
reprodução
12-02-2010 Jorge Cardoso
5. 5
Ler um ficheiro de vídeo
• metro
– Faz com que o jit.qt.movie
envie a frame actual
– Atenção: o ficheiro continua a
ser lido mesmo sem o metro,
mas nenhuma frame é enviada
– Atributo: intervalo (ms) entre
envio das frames
– I l
Inlet
• 0: pára
• 1: inicia
12-02-2010 Jorge Cardoso
6. 6
Ler um ficheiro de vídeo
• jit.pwindow
– Mostra o vídeo dentro do
patch
• Exemplo #1
12-02-2010 Jorge Cardoso
7. 7
Matrizes
• Estrutura de dados para
guardar um conjunto de
valores
• Normalmente, tem duas 0 1 2 3 4 5 6 7
dimensões 0
– representa-se em forma tabular 1
– casa posição é uma “célula” 2
3
• É a estrutura central em Ji
l Jitter 4
– Todos (ou quase) os objectos 5
J
Jitter recebem e enviam matrizes
12-02-2010 Jorge Cardoso
8. 8
Matrizes - Dimensões
• Uma matriz pode ter duas ou mais dimensões
– Em Jitter, o normal é usar matrizes bi-dimensionais
0 1 2 3 4 5 6 7
0
1
2
3
4
5
12-02-2010 Jorge Cardoso
9. 9
Matrizes para Vídeo
• Uma imagem (frame) pode ser representada como
uma matriz, em que cada célula guarda uma cor
(pixel)
– Uma cor é representada em ARGB, ou seja, o número é
uma composição de quatro valores
• Alpha (transparência)
• Red 50 44 23 31 38 52 75 52
• Green 29 09 15 08 38 98 53 52
08 07 12 15 24 30 51 52
• Blue 10 31 14 38 32 36 53 67
14 33 38 45 53 70 69 40
36 44 58 63 47 53 35 26
68 76 74 76 55 47 38 35
69 68 63 74 50 42 35 32
12-02-2010 Jorge Cardoso
10. 10
Matrizes - Planos
• Cada célula, guarda, de facto, 4 valores
célula guarda facto
• O Jitter separa estes valores em Planos
– Uma matriz de vídeo, em Jitter, é uma matriz bi-
dimensional com (normalmente) 4 p
( ) planos
12-02-2010 Jorge Cardoso
11. 11
Matrizes – Tipo de dados
• Cada célula de uma matriz guarda um valor numérico
numérico.
• Um valor numérico pode ser representado de formas
diferentes consoante os limites (máximo e mínimo)
( )
pretendidos ou o tipo de número (inteiro ou decimal)
• Em Jitter, uma vez que uma célula (de um p
J q ( plano) g
) guarda um
valor que corresponde a apenas um componente de cor,
apenas são precisos valores entre 0 e 255
– O tipo d dados char é o indicado para estes valores
de d d d d l
12-02-2010 Jorge Cardoso
12. 12
Matrizes – jit matrix
jit.matrix
• O objecto jit matrix guarda uma matriz
jit.matrix
– Para criar uma matriz temos de
• dar-lhe um nome,
• indicar o número de planos que queremos
• indicar o tipo de dados (char)
• indicar a dimensão (largura altura)
• Exemplos #2 e #3
12-02-2010 Jorge Cardoso
13. 13
Argumentos
• A maioria dos objectos em Max pode ser
inicializado através de argumentos escritos a
seguir ao nome do objecto (a ordem dos
i d bj ( d d
argumentos indica o seu significado)
– Estes argumentos definem o estado inicial do
objecto
j
– O estado pode ser alterado enviando valores para
os inlets
12-02-2010 Jorge Cardoso
14. 14
Atributos
• Em Jitter, os objectos possuem demasiadas características
para poderem ser inicializadas desta forma
• Os objectos Jitter possuem atributos que p
j J p q permitem inicializar
e alterar o estado do objecto
• Os atributos podem ser definidos como argumentos (usando
p g (
um @ antes do nome do atributo) ou através de mensagens
• Os atributos podem ter um ou mais parâmetros
• Exemplo #4
12-02-2010 Jorge Cardoso
15. 15
Atributos
• Os objectos Jitter respondem a mensagens
“get<nomeatributo>” com o valor actual do
atributo.
ib
– Dá jeito p
j para determinar o estado actual do
objecto
• Exemplo #5
12-02-2010 Jorge C. S. Cardoso
16. 16
Mais Info
• What is a Matrix?
http://www.cycling74.com/docs/max5/tutorials
/jit-tut/jitterwhatisamatrix.html
/ji /ji h i i h l
• What are attributes?
http://www.cycling74.com/docs/max5/tutorials
/jit-tut/jitterwhatareattributes.html
/jit-tut/jitterwhatareattributes html
• Tutorial 1: Playing a QuickTime Movie
http://www.cycling74.com/docs/max5/tutorials
/jit-tut/jitterchapter01.html
j j p
12-02-2010 Jorge Cardoso
17. 17
Exercício #1
• Crie um patcher que comece a reproduzir um
vídeo logo que seja aberto
12-02-2010 Jorge C. S. Cardoso
18. 18
Exercício #2
• Crie um patcher que reproduza um vídeo em
três resoluções diferentes (640x480, 320x200,
160x100)
160 100)
– use um [jit.matrix] intermédio entre o
j
[jit.qt.movie] e o [jit.pwindow] para definir a
resolução
12-02-2010 Jorge C. S. Cardoso
19. 19
Exercício #3
• Crie um patcher que reproduza apenas o
canal verde de um vídeo.
12-02-2010 Jorge C. S. Cardoso
20. 20
Exercício #4
1.
1 Crie um patcher que mostre o mesmo vídeo
em duas janelas (pwindow) diferentes.
1. Uma das janelas deve mostrar o vídeo em
320x240 e apenas o canal vermelho (a vermelho)
2. A outra janela deve mostrar o vídeo em 160x120
e apenas o canal azul ( azul)
p (a )
12-02-2010 Jorge Cardoso