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

Regístrate o para poder comentar