Pruebas processing + touchosc

He estado haciendo pruebas con el protocolo OSC en processing, usando la libreria OSCP5 y la aplicación touchosc en el ipod touch, con esto podemos comunicar el ipod con la pc por medio de wifi, lo interesante de esto es que puedes disponer de muchos botones e incluso crear tu propio layout para el ipod, se me ocurren bastantes proyectos donde implementar esto, y lo primero que hare sera una lampara RGB, cuanto la termine la subo por acá.

Y el video de las pruebas, es un sketch donde cambia el valor del background obteniendo los valores de 3 elementos rotary.

[youtube http://www.youtube.com/watch?v=PMS0xvJkamI&fs=1&hl=es_ES&rel=0]

Y este es el código que se usó, para que funcione se debe tener la libreria OSCP5 dentro de la carpeta de library en processing. Se usa un layout de touchOSC personalizado hecho con el editor de touchOSC para mac.


Tambien se adjunta la clase para el layout beatmachine. Para que funcione correctamente la pc como el ipod/iphone deben estar conectados en la misma red.

[code language=java]

import oscP5.*;
import netP5.*;
import processing.serial.*;

OscP5 oscP5;
RGBLamp layout;
//Serial serial;

void setup() {
size(800,600);
frameRate(25);

oscP5 = new OscP5(this,12000);
layout= new RGBLamp();
//serial = new Serial(this, Serial.list()[0], 9600);
layout.printAddr();
}

void draw() {
background(layout.Data[0]*255,layout.Data[1]*255,layout.Data[2]*255);
}

void mousePressed() {
layout.printData();
}

void oscEvent(OscMessage theOscMessage) {
layout.check(theOscMessage);
theOscMessage.print();
}

//Layout RGBLamp custom para touchOsc probado en version 1.2/1.4 y Processing 1.0.9
//Libreria oscP5

class RGBLamp {

String[] Addr= {
“/1/rotary1”,
“/1/rotary2”,
“/1/rotary3″,
};

float[] Data= new float[Addr.length];

String Typetag=”f”;

void check(OscMessage theOscMessage) {

for (int i = 0; i < Addr.length; i++) {
if(theOscMessage.checkAddrPattern(Addr[i])==true) {
if(theOscMessage.checkTypetag(Typetag)) {
Data[i] = theOscMessage.get(0).floatValue();
println(Addr[i]+" "+ Data[i]);
}
}
}
}

void printData() {
println(Data);
}

void printAddr() {
println(Addr);
}
}
[/code]

Esta clase se puede usar con la plantilla beatmachine que viene por default en el touchOSC.
[code language=java]
//Layout Beatmachine para touchOsc probado en version 1.2/1.4 y Processing 1.0.9
//Libreria oscP5
class Beatmachine {

String[] Addr= {
"/1/fader1",
"/1/fader2",
"/1/toggle1",
"/1/toggle2",
"/1/push1",
"/1/push2",
"/1/push3",
"/1/push4",
"/1/push5",
"/1/push6",
"/1/push7",
"/1/push8",
"/1/push9",
"/1/push10",
"/1/push11",
"/1/push12",
"/2/multifader/1",
"/2/multifader/2",
"/2/multifader/3",
"/2/multifader/4",
"/2/multifader/5",
"/2/multifader/6",
"/2/multifader/7",
"/2/multifader/8",
"/2/multifader/9",
"/2/multifader/10",
"/2/multifader/11",
"/2/multifader/12",
"/2/multifader/13",
"/2/multifader/14",
"/2/multifader/15",
"/2/multifader/16",
"/3/rotary1",
"/3/rotary2",
"/3/rotary3",
"/3/rotary4",
"/3/rotary5",
"/3/rotary6",
"/3/toggle1",
"/3/toggle2",
"/3/toggle3",
"/3/toggle4",
"/3/toggle5",
"/4/toggle1",
"/4/toggle2",
"/4/toggle3",
"/4/toggle4",
"/4/toggle5",
"/4/xy"
};

float[] Data= new float[Addr.length -1];

float x,y;
String Typetag="f";

void check(OscMessage theOscMessage) {

for (int i = 0; i < Addr.length; i++) {
if(theOscMessage.checkAddrPattern(Addr[i])==true) {
if(theOscMessage.checkTypetag(Typetag)) {
Data[i] = theOscMessage.get(0).floatValue();
println(Addr[i]+" "+ Data[i]);
}
else {
x = theOscMessage.get(0).floatValue();
y = theOscMessage.get(1).floatValue();
println(Addr[i]+" x="+x+" , y="+y) ;
}
}
}
}

void printData() {
println(Data);
println("[x] "+x);
println("[y] "+y);
}

void printAddr() {
println(Addr);
}
}

[/code]

Adrian MB

Me gusta la electrónica, programación y todo lo relacionado. Ing. en Mecatronica de la UPIITA del IPN y estudiante de Diseño Industrial en la UAM. @adrianmtzb http://adrianmb.mx

También te podría gustar...

  • pako

    si ya tengo uno, quiero tb usar arduino pero apenas empiezo aun no soy experto espero un poco de ayuda, quiero orientarlo a robotica, algun tuto que me recomiendes?

    gracias

  • ¿En que sistemas operativos es posible usar lo que estas desarrollando?

  • PAKO

    vientos, esta padre tu proyecto, no me prodrias pasar tu codigo porfa

    • claro, en cuanto tenga un tiempo libre lo subo por acá 😉

    • Listo ya subi el codigo, y que tienes en mente desarrollar??

  • Roger

    Orale, no pues si esta padre, en especial creo que ya que tengas tu iPad por el tamaño de la misma va a se mucho mejor, suerte!!, muy buena entrada.
    Saludos::::..