PureData

PUREDATA: EeffecTV, motionDrums i CutreTheremin

Com cada any, abans de l'estiu tinc pensat fer moltes coses que no he tinc temps de fer quan no estic de vacances, però com sempre durant les vacances m'agafen uns atacs de mandra que acabo sense fer res del que tenia planejat,...això em passa cada any. Una de les coses que volia fer, era seguir amb el PureData , i remanar una mica el tema de video, després d'haver provat les libs GEM . Al final, no he començat a remanar això fins que no he començat a currar una altra vegada.
 


Per treballar amb video i pd, necessitarem els externals de PureData PDP (Pure Data Packet) i PiDiP . El primer és el que ens permet accedir al video (camera, arxiu,..) a través dels drivers v4l (en el cas de linux, en mac i windows no ho he provat) i mostrar-lo per pantalla. PiDiP ens permet aplicar una gran quantitat d'effectes al video.
 
Amb tot això he generat 3 patches molt senzills per mirar com funciona:
 
·effectvcascade (ens permet aplicar els efectes EffecTV al video capturat).
·motionDrums (vol simular 3 bombos que els toquem amb el moviment que fem davant la càmera)
·motionCutreTheremin (que amb dues cameres, simula les dues antenes d'un Theremin de forma molt simple).
 

 ·effecTVCascade: 
 
De documentació de PD n'hi ha , però és dispersa i a vegades confusa. La millor manera d'aprendre i entedre el millor és mirar una bona i simple introducció com aquesta , i evidentment, provar i remanar els exemples. Un cop tinguem els conceptes bàsics entesos, el millor és provar la gran quantitat d'exemples i explicacions que hi ha a l'ajuda del programa.
 
Això és el que he fet per generar aquest patch, molt simple. Primer he provat els exemples bàsics de pdp, i seguidament he anat afegint al patch efectes de PiDiP. En concret, els de EffecTV , una aplicació que permet aplicar efectes de video en temps real.
 

 
Tal i com es mostra a continuació aquesta té uns 40 efectes diferents, i connectant una simple webcam i executant effectv obtenim això (L'efecte que trobo molt aconseguit és el RippleTV ).
 
 
 
Bé, doncs amb PiDiP podem utilitzar aquests efectes en PureData i modificar-ne alguns paràmetres. Aquest patch ens permet provar cada efecte o la combinació d'aquests. 
 
Descarregar  effecTVcascade.pd
 

 
·motionDrums v0.0
 
Aquest patch vol simular tres bombos, que els toquem amb el nostre moviment que capta la camera. Resumint: camera connectada al ordinador, amb PureData capturem l'imatge en viu de la camera, analitzem el moviment, i depenent d'aquest generem el sò d'un dels 3 bombos. 
 

 
Explicació del patch:
 
1-Amb l'objecte pdp_v4l capturem la imatge de la camera. En el cas que tinguem varies cameres connectades a l'ordinador, hem de seleccionar quina volem (/dev/video0 o /dev/video1) i si la capturadora de video té varies entrades, segurament haurem de seleccionar la que volem amb channel.
 
2-Amb l'objecte pdp_flip_lr invertim horitzontalment la imatge, de tal forma que el que més tard mostrarem sigui com un mirall, i per tant més intuitiu. 
 
3-pdp_spigot, ens permet fer la mateixa funció que spigot de puredata però amb senyal de video. Per tant, quan l'input dret estigui actiu, l'output actiu serà el dret. Que connecta amb pdp_mgrid, que permet fer detecció de moviment basant-se en la separació de pantalla en una quadrícula. El número de separacions per als eixos X i Y li passem com a paràmetres, en aquest cas són 3 per al eix X i 2 per al Y. Per tant tindrem 6 quadres diferents. La sortides d'aquest objecte són: sortida de video (modificat o no depenent de les opcions de visibilitat de la quadricula), i la posició X i Y del moviment detectat.
 
4-Per tal de fer sonar els bombos, he fet un "intent" d'algorisme per tal que el sò de cada bombo només soni quan fem el moviment de com si anessim a tocar el bombo, és a dir quan passa de Y=1 a Y=2, dins d'un mateix requadre Y (cada requadre Y fa la funció d'un bombo). Aquest procés està dins el subpatch pd bombos
 
5-La sortida del subpatch bombos, són tres outputs que simplement envien un bang al següent subpatch que és selectAudioFile. Aquest selecciona un dels tres tons de bombo depenent de la zona on s'hagi fet el moviment de "tocar el bombo" obrint el fitxer corresponent. Els fitxers d'audio que he utilitzat són del Free Sound Project de la UPF (un projecte molt i molt interessant i molt útil). 
 
6-Un cop obert el fitxer, es passa a readfs, que  com el seu nom indica el llegeix, i la sortida (audio) ja es reprodueix amb dac.
 
7-El video, si el volem reproduir per pantalla (evidentment és molt més útil) fem servir l'objecte pdp_xv, que també té molts paràmetres per tal d'adaptar la sortida al nostre gust (tamany, format, etc..) 
 
És una explicació molt breu. El més fàcil per entendre puredata (en la meva modesta opinió) és obrir patchs, mirar-los, intentar entendra'l, remanar-los, modificar-los, etc.. 
 
El resultat, evidentment no té la precissió molt acurada, però ens mostra com en poc "codi" (en aquest cas esquemes?), podem fer molta cosa:
 
 
 

 
·motionCutreTheremin v0.0:
 
Una de les coses que té PureData és que quan estàs fent un patch t'imagines com podries fer moltes altres més coses, com modificant 4 cosetes pots tenir resultats molt variats. Bé doncs aquest patch té la base del motionDrums, però en aquest cas vol simular un Theremin (el mateix nom del patch inclou la paraula Cutre, en referència al resultat obtingut).
 
Un Theremin, pels que no el conegueu, és un instrument musical força curiós: bàsicament consta de dues antenes a les que quan se'ls hi aplica un corrent altern creen un camp magnètic al seu voltant, i amb aquest es genera un sò. Una de les antenes controla el volum (amplitut) i l'altre controla la freqüencia del sò. Quan el camp magnètic al voltant de les antenes és modificat, el valor d'aquests varia, i les ones del sò que genera també. Així com que només cal modificar el camp magnètic per canviar de sò o modificar l'amplitut del sò generat, no cal que el músic entri en contacte físic amb les antenes, simplement allunyant i apropant les mans de les antenes ja es generen sons. Un exemple de concert de Theremin: Killed the Radio Star
 
Com he comentat, agafant la base del motionDrums he fet aquest patch. La diferència més gran, com podem intuir és que necessitem dues cameres, una ens simularà l'antena de la freqüència i l'altra la de l'amplitut. L'aparença física del intent de Theremin és aquesta: 
 

 
Com que la segona camera serà una webcam xunga, evidentment la qualitat i la precissió alhora de detectar moviment no serà la desitjada. L'aspecte del patch és el següent:
 

 
Explicació bàsica del patch:
 
·Com es pot veure a la imatge de dalt, té dos tractaments del video, i el moviment que s'hi detecta en aquests també estan diferenciats, així com les dues sortides per pantalla també independents:
 

 
·Bàsicament he separat la imatge de la camera 1 (a la imatge de dalt la de la dreta), que representa l'antena que modifica la freqüencia, en diferents parts l'eix X, de manera que el moviment que detectarem serà horitzontal. I la imatge de la segona camera, que representa el volum, en diferents parts l'eix Y, així quan detecti moviment vertical augmentarà o disminuirà l'amplitud del sò generat.
 
·La freqüència del sò generat va en funció de les coordenade X de la camera 1. (he aplicat un logaritma i un sinus) ATENCIÓ: això no és ni de bon tros la funció d'un Theremin real, simplement l'he utilitzat jo per fer aquest patch. Segurament amb PD es podria generar un sò molt més similar al del Theremin, però sóc un ignorant en tema de sò.
 
El resultat d'aquest experiment és aquest (deixa molt a desitjar, però la idea bàsica s'ha aconseguit):
 
 
 

 
Evidentment, com sempre, aquests patches són molt millorables i ampliables. A partir d'aquesta base podriem simular infinitat d'instruments....o ampliar-los i fer altres paranoies. Però lo important és veure que amb PureData podem gran varietat de coses rares.. 
 
blog comments powered by Disqus

Additional information