Apresentação sobre OSC

Transcrição

Apresentação sobre OSC
Programação Multimédia 2006/2007 – http://teaching.jorgecardoso.org/pm
Programação Multimédia
Open Sound Control (OSC)
03-06-2007
Jorge Cardoso
1
Programação Multimédia 2006/2007 – http://teaching.jorgecardoso.org/pm
Open Sound Control (OSC)
• O que é o OSC?
– “Open Sound Control (OSC) is an open, transportindependent, message-based protocol developed for
communication among computers, sound
synthesizers, and other multimedia devices.” –
http://www.opensoundcontrol.org
• Basicamente, serve para enviar mensagens de
uma aplicação para outra
– As aplicações podem estar em computadores
diferentes
03-06-2007
Jorge Cardoso
2
Programação Multimédia 2006/2007 – http://teaching.jorgecardoso.org/pm
OSC
• Uma aplicação é identificada pelo endereço IP
(identifica o computador) e por uma “porta”
(identifica a aplicação)
– 172.20.85.123:3000
• As aplicações podem receber e enviar
mensagens OSC
• Mensagens OSC:
– Permitem-nos enviar
•
•
•
•
03-06-2007
inteiros
floats
strings
...
Jorge Cardoso
3
Programação Multimédia 2006/2007 – http://teaching.jorgecardoso.org/pm
OSC
• Uma mensagem OSC pode conter vários
valores
– 26 “Jose” 70.45
• As mensagens têm um nome (começam
sempre por ‘/’):
–
–
–
–
–
/idade (/idade 26)
/nome (/nome “Jose”)
/nomepeso (/nomepeso “Jose” 70.45)
etc
A aplicação pode receber vários tipos de mensagens
diferentes
03-06-2007
Jorge Cardoso
4
Programação Multimédia 2006/2007 – http://teaching.jorgecardoso.org/pm
OSC
• Se um programa pretende receber mensagens
de outro programa tem de conhecer os nomes
das mensagens enviadas
• As mensagens são especificadas através do
nome e do tipo de parâmetros
– /nome s
• Mensagem “nome” com um parâmetro do tipo string
– /nomepeso sf
• Mensagem “nomepeso” com dois parâmetros; um do tipo
string e outro do tipo float
03-06-2007
Jorge Cardoso
5
Programação Multimédia 2006/2007 – http://teaching.jorgecardoso.org/pm
OSC em Processing
• É necessário uma biblioteca (conjunto de
métodos) externa ao Processing
– oscP5
03-06-2007
Jorge Cardoso
6
Programação Multimédia 2006/2007 – http://teaching.jorgecardoso.org/pm
oscP5
• Representado por um objecto – OscP5
• Construtor:
oscP5 = new OscP5(this, 10000);
10000 é a porta em que o programa “escuta” as
mensagens vindas de outros computadores
03-06-2007
Jorge Cardoso
7
Programação Multimédia 2006/2007 – http://teaching.jorgecardoso.org/pm
Exemplo OSCReceive
import oscP5.*;
import netP5.*;
OscP5 oscP5;
void setup() {
oscP5 = new OscP5(this, 10000);
}
void draw() {
}
void oscEvent(OscIn msg) {
if(msg.checkAddrPattern("/mensagem")) {
println("mensagem");
}
}
03-06-2007
Jorge Cardoso
8
Programação Multimédia 2006/2007 – http://teaching.jorgecardoso.org/pm
Exemplo OSCSend
import oscP5.*;
import netP5.*;
OscP5 oscP5;
NetAddress alvo;
void setup() {
oscP5 = new OscP5(this, 11000);
alvo = new NetAddress("127.0.0.1",10000);
}
void draw() {
}
void mousePressed() {
OscMessage mensagem = new OscMessage("/mensagem");
mensagem.add(123);
oscP5.send(mensagem, alvo);
}
03-06-2007
Jorge Cardoso
9
Programação Multimédia 2006/2007 – http://teaching.jorgecardoso.org/pm
Exercício #1
1. Crie um programa que escute as seguintes
mensagens OSC na porta 20000:
–
/pos ii
•
(x, y)
1. Quando receber uma mensagem o programa deve
desenhar um rectângulo nas coordenadas
recebidas
2. Crie outro programa que envie mensagens
com o mesmo nome para a porta 20000 de
cada vez que o rato é movido.
03-06-2007
Jorge Cardoso
10