03 - Abstracciones en PD y el uso del signo $

Jugando un poco con PD por estos dias y despues de leer por algunos lugares sobre las "abstracciones" en PD, no terminaba de entender bien como usarlas, entonces encontre en el foro de PD un tutorial sobre el uso de las abstracciones y el porque de usar el signo $ en muchas de ellas.

Basicamente una abstracción en PD es un patch de PD que se puede usar dentro de otro cuantas veces uno quiera, y la utilidad principal radica en hacer pequeños patches de cosas que usamos mucho, para no tener que estar armandolas desde cero cada vez que las necesitamos.

Bueno, este es el post del foro original: http://puredata.hurleur.com/sujet-5853-abstraction-why-use-etc y esta es una traducción que hice para poder entenderlo mejor (y de paso aprendi como hacer un reproductor de audio simple!). Espero que les sirva, cualquier cosa me avisan y los ayudo.

Salutres!

 

Qué es una abstracción, y por qué usar $0, $1, etc.

Esta es una breve explicación del papel de las abstracciones en PD, y por qué es útil el uso de $0, $1, etc. dentro de estas abstracciones.

Bueno, suponga que desea crear un reproductor de muestras muy simple, entonces haría algo como esto:

Por lo tanto, haría clic en el Bang 1 para cargar la muestra, a continuación, haría clic en el Bang 2 para reproducir el sample. Bastante simple, ¿no?

Bien... ¿qué pasa si usted desea hacer una copia de ese patch para que pueda ejecutar dos reproductores a la vez?

Una opción es copiar el patch anterior, pegarlo, y luego simplemente cambiar “mi-sample” por otra cosa, por ejemplo: “mi-sample2”. Si sólo quiere dos reproductores, pues, es probablemente la forma más fácil de hacerlo.

Pero si lo que desea son 4 o 10 reproductores todos corriendo al mismo tiempo, es una verdadera molestia tener que cortar, pegar y cambiar nombres de tabla. Aquí es donde las abstracciones son útiles.

Así que lo que debes hacer es: salvar tú reproductor de muestras en forma de patch poniéndole un nombre como "reproductor-sample.pd”, por ejemplo.

Por el momento, guarde este patch en su escritorio y ciérrelo.

Ahora abra un nuevo patch (sin título) en PD y trate de crear un objeto llamado [reproductor-sample].

¿Un poco de suerte? probablemente no, ¿verdad? esto se debe a que PD no puede encontrar el patch para utilizarlo como una abstracción. Usted tiene que poner el parche en algún lugar para que PD pueda encontrarlo. Hay algunas maneras de hacer esto, pero esta es la que no implican cambiar las rutas en PD.

Busque un lugar en su disco y cree una carpeta nueva, y coloque el archivo "reproductor-sample.pd” dentro de esa carpeta.

Ahora, vuelva a PD, abra un nuevo patch sin título y sólo hay que poner cualquier objeto antiguo o un mensaje en él. Entonces, salve el patch como “reproductor-multisample.pd” dentro de la misma carpeta que el patch “reproductor-sample.pd”.

Cierre “reproductor-multisample.pd” y a continuación vuelva a abrirlo desde la nueva carpeta.

Ahora, elimine todo en “reproductor-multisample.pd” e intente crear un objeto llamado "reproductor-sample”. Ya que “reproductor-multisample.pd”  y "reproductor-sample.pd” están en la misma carpeta, PD puede encontrar "reproductor-sample.pd” y usarlo como una abstracción, una abstracción actúa como un objeto normal en PD.

Bueno, haga clic derecho en el objeto [reproductor-sample], y seleccione "Abrir". Ahora podrá ver el código original.

Ahora vamos a modificarlo a fin de que los objetos Bang queden en la interfaz gráfica de usuario y también vamos a agregar los $0, $1, etc.

Ahora, haga clic derecho en algún lugar del lienzo en blanco de este patch, y seleccione "propiedades", hay un cuadro denominado "graph on parent",  marque esta casilla y cierre el cuadro propiedades.

Ahora debe haber un pequeño rectángulo de color rojo en el lienzo, poner los dos bangs dentro de esta caja. Guardar el patch y cerrar la ventana, por lo que estaríamos de vuelta en el patch “padre” “reproductor-multisample.pd”.

Ahora debe haber un objeto llamado [reproductor-samples] con 2 bangs en el mismo. Intenta abrir un archivo de sonido y reproducirlo usando el bang, debería funcionar bien.

Ahora, hacer otro objeto también llamada [reproductor-samples] y cargar un archivo de sonido diferente. Ahora tienes dos versiones de la misma abstracción iniciados en un patch “padre”. Se puede hacer 4 o 5 o 500 objetos llamados [reproductor-samples] y todos ellos trabajan de forma independiente.

 

He aquí una explicación de lo que acabamos de hacer: siempre que se crea un objeto a partir de una abstracción, se le asigna un valor de $0, esto es por lo general un número superior a 1000, por ejemplo 1047. Si hace otro objeto desde una abstracción, este recibirá un valor diferente de $0, por ejemplo 1088. No importa cuántas veces usted cree objetos desde abstracciones, cada uno recibirá un valor diferente al azar de $0. Es por eso que podemos usar $0 en abstracciones para enviar/recibir pares únicos para esa instancia de la abstracción. También podemos usar $0 para hacer nombres únicos para las tablas, si su abstracción contiene una tabla denominada [$0-mi-tabla] y luego de una instancia de la abstracción este podría llegar a ser [1066-mi-tabla] y para otra instancia [1092-mi-tabla] y así sucesivamente. Espero que esto explique el uso de $0.

Usando $1, $2, etc. (es un poco más fácil de entender).

Hacer un nuevo patch (sin título) y poner el interior lo siguiente:

Guardar este patch en la carpeta como [dollars.pd]. Abrir otro patch de la misma carpeta y crear un objeto llamado [dollars 5 bananas]. Ahora, si hace clic en el objeto [dollars 5 bananas] y lo abre, puede hacer clic en el bang, y ver lo que aparece en la consola PD. Este imprimirá “5” si hace clic en el bang en primer lugar, y "symbol bananas" si hace clic en el segundo bang. De esta manera usted puede agregar los argumentos de creación de su abstracción.

En lugar de un bang puede usar [loadbang], y estos argumentos se transmiten automáticamente cuando se crea un objeto desde una abstracción.

Esto es útil para hacer algo así como una abstracción ADSR (attack, decay, sustain, release) para establecer los valores iniciales. Dentro de su abstracción, que tendrá los objetos: [f $1] [f $2] [f $3] [f $4] para pasar los valores de ataque, decaimiento, mantenimiento y liberación.

Ahora, cuando armas la abstracción de un objeto puedes escribir el nombre de la abstracción seguido por los valores de $1, $2... etc.

Ejemplo. [mi-ADSR 50 200 20 500]

 

 

P/D: Aqui la traducción en word para el que lo quiera descargar.

FIN

 

¿Te gustó este artículo?
0
Comentarios
  • #1 por frmeran el 28/08/2011
    Wao, No entendí nada :babear:.
  • #2 por monkisound el 29/08/2011
    tengo tantas ganas de iniciarme en PD, pero no se como empezar =/
  • #3 por Nico Auvieux el 29/08/2011
    Hola Monkisound! Es solo cuestion de sentarse un rato y ponerse a probar cosas. Para empezar te recomiendo el blog de Oggro (http://oggro.blogspot.com/).

    Tambien en el foro de Pure Data aqui en Hispasonic hay info buena y links interesantes (http://www.hispasonic.com/foros/post-oficial-pure-data/364707)

    Animate, instala PD y ponte a jugar!

    Cualquier cosa me avisas, Saludos!
  • #4 por monkisound el 30/08/2011
    muchas gracias por la información y la buena energía.
    abrazos.
  • #5 por Nico Auvieux el 31/08/2011
    De nada Monkisound! Cualquier cosa me avisas, siempre es bueno que haya mas puredateros! :)

    Saludos
  • #6 por SOHAM el 01/09/2011
    Eiii!! que guay encontrar este artículo ahora que hace 2 días que conozco Pure Data! Aunque soy programador todavía no he tenido tiempo a mirármelo solo a trastear algunos tutos pero todavía no se muy bien su forma de funcionar pero me da la sensación que es como un Visual Basic pero de código abierto y en expansión (con un kernel y forma de trabajar distintas).

    En tu artículo me he perdido en como hacer la relación entre el proyecto guardado y el nuevo. En programación existen las clases abstractas aunque no se si será lo mismo que en PD.

    http://www.arrakis.es/~abelp/ApuntesJava/ClasesAbstractas.htm

    Aerolus, gracias por los links, no conocía esta sección pero me pongo con ello.
  • #7 por Nico Auvieux el 01/09/2011
    Hola Soham, me alegra que te metas con PD! la verdad que es un mundo muy interesante.

    Yo no se nada de programación pero por lo que lei y algunas cosas que me contaron lo de las abstracciones en PD es parecido al apunte que me pasaste.

    La idea del articulo es que hagas un archivo nuevo y le pones cualquier cosa adentro y lo guardas en la carpeta donde tengas los patches que quieras que sean abstracciones (cualquier patch se supone que que puede ser abstraccion en otro patch). La proxima vez que abras ese patch ya puedes poner cualquier objeto de esa carpeta como abstraccion tantas veces como quieras (siempre y cuando agregues los signos $ donde corresponda).

    Esspero no haber echo mas lio con esta explicacion O_o
    Cualquier cosa me avisan, jeje

    Saludos y a puredatear! :teclear:
  • #8 por Ricardo Fuentes el 05/09/2011
    Y que es PD ? :desdentado:
  • #9 por Nico Auvieux el 05/09/2011
    Hola Sabishii, Pure Data o PD es basicamente un lenguaje grafico de programacion usado para la creacion de musica interactiva, pero tambien te permite crear visuales y muchas mas cosas!
    Lo interesante es que es un proyecto de codigo abierto y los patchs (programitas) son normalmente compartidos por los usarios de PD.

    Para ampliar te dejo este link: http://es.wikipedia.org/wiki/Pure_data

    Espero que sirva, saludos!
  • #10 por Ricardo Fuentes el 09/09/2011
    OOOO!!! que desactualizado que estoy...
    muchisimas Gracias Aerolus :campeon:
  • #11 por Nico Auvieux el 09/09/2011
    jajaja Todos los dias aprendemos algo nuevo!!!

    Salud!
  • #12 por Caro Opazo el 21/04/2013
    Hola necesito saber como puedo subir un archivo de audio a PD y reproducirlo, lo tengo en formato .wav he intentado ya con algunas indicaciones del tutorial de pd, pero no lo consigo estoy trabajando con windows 8
  • #13 por Nico Auvieux el 22/04/2013
    Hola Caro, ya me habia olvidado de este post. Ultimamente no estoy jugando mucho con PD por cuestiones de tiempo, pero te paso este video en donde se explica el uso de archivos de audio en PD:

    http://www.youtube.com/watch?v=-y2SP2B6NxY&list=PL12DC9A161D8DC5DC&index=19

    Este es el video 17 de la serie y podes ver también el 22 que es sobre audio avanzado. Están en ingles pero se entienden perfectamente.
    Espero que te sirva, cualquier cosa me avisas.

    Saludos
    1
  • #14 por Caro Opazo el 30/06/2013
    Gracias Aerolus, no había revisado la respuesta. Finalmente quedé trabajando con Max MSP, mientras cambie el windows que no me esta funcionando para editar y programar.