El reactable , el famós instrument de música electrònica de la upf , ens permet a través de reacTIVision crear-nos el nostre propi reactable sense gaires complicacions. ReacTIVision és el sensor de visió del projecte reactable. Es tracta d'una aplicació de software lliure, que envia missatges OpenSound Control via UDP pel port 3333 als clients connectats a l'aplicació. Implementa el protocol TUIO, dissenyat especialment per transmetre l'estat d'objectes tangibles. Resumint, reacTIVision, capta certs objectes, anomenats fiducials, amb una càmera IEEE 1394. I envia en els seus clients la posició i moviment d'aquests objectes. Hi ha TUIO clients implementats per a una gran varietat de plataformes de desenvolupament: c++, processing, max, flash,... però el que ens interessa a nosaltres és el TUIO client de PureData.
Amb reacTIVision i puredata podem, doncs, construir el nostre popi reactable, tal i com expliquem a continuació:
{youtube}kCvQnkj-wLY{/youtube}
·INSTAL·LACIÓ DE REACTIVISON:
Primer de tot descarreguem el software reacTIVision per a la plataforma amb la que vulguem treballar, en el nostre cas un Ubuntu, del que podem baixar directament el paquet .deb , i fent doble click l'instal·larem.
Seguidament, abans d'executar el programa, cal tenir una camera IEEE 1394, en el meu cas es tracta d'una unibrain , una webcam que va per firewire. (NOTA: vaig provar-ho amb una webcam USB i reacTIVision no funciona..).
Un cop connectada la camera, podem executar el programa i comprovar que ens funciona. Ens ha d'aperèixer la imatge captada per la càmera en blanc i negre, tal com es mostra a continuació:
·FABRICACIÓ DELS FIDUCIALS:
Com ja hem comentat, el reacTIVision detectarà unes formes concretes, anomenades fiducials. Per fer els nostres propis fiducials, és tant fàcil com baixar-nos el pdf de la web de reacTIVision, imprimir el document, i retallar els fiducials que necessitem:
·TUIO CLIENT PER A PUREDATA:
En el nostre cas farem servir el client TUIO de puredata. Per tant, abans de tot, hem de tenir el puredata instal·lat. Descarreguem el client TUIO de puredata de la web de reacTIVison. Descomprimim el paquet, anem dins la carpeta que ens crea i descomprimim el fitxer source.zip. Ens crearà la carpeta source, i dins aquesta executem make:
$ make g++ -DOSC_HOST_LITTLE_ENDIAN -DPD -O2 -funroll-loops -fomit-frame-pointer -fPIC -I. -I../../src -c -o TuioClient.o TuioClient.cpp g++ -DOSC_HOST_LITTLE_ENDIAN -DPD -O2 -funroll-loops -fomit-frame-pointer -fPIC -I. -I../../src -c -o OscClient.o OscClient.cpp g++ -DOSC_HOST_LITTLE_ENDIAN -DPD -O2 -funroll-loops -fomit-frame-pointer -fPIC -I. -I../../src -c -o osc/OscTypes.o osc/OscTypes.cpp g++ -DOSC_HOST_LITTLE_ENDIAN -DPD -O2 -funroll-loops -fomit-frame-pointer -fPIC -I. -I../../src -c -o osc/OscReceivedElements.o osc/OscReceivedElements.cpp g++ -DOSC_HOST_LITTLE_ENDIAN -DPD -O2 -funroll-loops -fomit-frame-pointer -fPIC -I. -I../../src -c -o osc/OscPrintReceivedElements.o osc/OscPrintReceivedElements.cpp g++ -DOSC_HOST_LITTLE_ENDIAN -DPD -O2 -funroll-loops -fomit-frame-pointer -fPIC -I. -I../../src -c -o ip/posix/NetworkingUtils.o ip/posix/NetworkingUtils.cpp g++ -DOSC_HOST_LITTLE_ENDIAN -DPD -O2 -funroll-loops -fomit-frame-pointer -fPIC -I. -I../../src -c -o ip/posix/UdpSocket.o ip/posix/UdpSocket.cpp g++ -export_dynamic -shared -o TuioClient.pd_linux TuioClient.o OscClient.o ./osc/OscTypes.o ./osc/OscReceivedElements.o ./osc/OscPrintReceivedElements.o ./ip/posix/NetworkingUtils.o ./ip/posix/UdpSocket.o -lc -lm |
Això ens crearà varis fitxers, entre ells hi ha el fitxer de l'objecte: TuioClient.pd_linux. Copiem aquest fitxer al directori de llibreries de puredata.
cp TuioClient.pd_linux /usr/local/lib/pd/extra/. |
Ara ja podem fer servir el client des de puredata, per provar-ho, primer hem de tenir reacTIVision en execució, i des de puredata obrir el patch TUIO_PureData.pd, que està dins el paquet que ens hem baixat:
A la imatge anterior veiem 3 finestres: la de puredata, el patch TUIO_PureData.pd i reacTIVision. Si observem, hem posat el fiducial nº 1 dins l'àrea de captació de reacTIVision, i en la finestra de puredata ens informa que s'ha detectat aquest fiducial, i des del patch veiem el moviment x, y i rotació.
·CUTRE_REACTABLE v0.0:
Un cop comprovat que el nostre client TUIO en puredata es connecta correctament amb el reacTIVision, podem fer el nostre propi patch per poder disposar del nostre propi reactable. En el meu cas, he generat un patch per als 4 primer fiducials (0, 1, 2 ,3). Evidentment, comparat amb el reactable de la upf, deixa molt de desitjar, però alhora és molt millorable! Una breu descripció de cada fiducial:
·Fiducial 0: amb la rotació es modifica la freqüència del so generat amb l'objecte osc, i amb l'eix X es modifica el volum.
·Fiducial 1: igual que el 0 però amb una freqüència d'inici més alta.
·Fiducial 2: controla la velocitat de reproducció d'un sampler (podem carregar el que vulguem) amb la rotació del objecte.
·Fiducial 3: intenta simular un scratch sobre un fitxer d'àudio ogg amb la rotació del objecte (utilitzant oggread).
El resultat:
{youtube}5vJbt6avids{/youtube}
Descarregar Cutre_reactable_v0.0.pd
·Refs:
wiki puredata (esp.).