Subpatches argumentos, send, receive, mensajes (;), flujo (route, moses, spigot, change)

From Gmv

Jump to: navigation, search

Abstractions y subpatches (chap. 7.1, pp. 39-43 tutorial Pd)

Pd brinda dos formas de crear "subpatches" o "funciones". Ambas utilizan los objetos "inlet" y "outlet" vistos la pasada semana, por lo que ambos permiten utilizan el concepto de "entradas y salidas de una función".

Las diferencias básicas entre las dos, es que las "abstractions" (terminología utilizada por Pd) permite crear funciones o subprogramas reutilizables en diferentes programas, así como el uso de argumentos. Los "subpatches" no se pueden reutilizar, ni permiten parámetros. En cierta forma, los subptaches no son más que ventanas en las que podemos "esconder" código o objetos GUI.


Send y receives (chap 7.2, pp. 44-48)

Estos dos objetos facilitan el mantenimiento de patches más "limpios" y "ordenados", minimizando la proliferación de cables.

Los objetos de tipo GUI, utilizan este mismo concepto sin la necesidad de utilizar explícitamente estos objetos; en estos casos, las conexiones "virtuales" entre diferentes objetos de tipos GUI, se realiza editando/configurando sus propiedades.

Los mensajes, permiten también utilizar este concepto mediante el símbolo ";" Este símbolo (;) colocado delante de un nombre, en cualquier mensaje, significa que este nombre será eldestinatario de aquello que siga en el mensaje.


Control de flujo

Hasta ahora habíamos visto control de flujo mediante el objeto "sel" (que funciona de forma similar a un "switch" en lenguajes como C, C++, Java, javascript, etc.) (chap. 8.1, pp. 49-56 tutorial Pd)

Hoy comentamos otros objetos en Pd complementan a "sel", como "moses" o "spigot" (dejamos los restantes objetos de Pd relacionados con el control de flujo, como "route", para más adelante). Aquí os podéis bajar varios pequeños ejercicios relacionados con este tema, incluyendo los patches del manual de Pd, así como unos pequeños patches (8.3 y 8.4) que emulan las típicas estructuras "for" o "while".

Download ejercicios


Ejercicio de Minicomposición algorítmica

Para poner en práctica todos estos conceptos, proponemos un ejercicio de "minicomposición algorítmica" a realizar para la próxima semana.

En sesiones anteriores habíamos visto como generar una caja de ritmos MIDI, utilizando básicamente los objetos "metro", un contador, "%", "sel" y "noteout". Después le añadimos algunos conceptos probabilisticos, utilizando objetos como "random" y "moses".

Ahora proponemos generar melodías de una forma más interactiva. Antes que nada, el hecho de generar melodías (y no utilizar por lo tanto sonidos percusivos, que tienen la ventaja y facilidad de terminar "por si solos") nos obliga a tener en cuenta un factor nuevo: la duración de las notas. Este problema se resuelve de forma muy simple en Pd, mediante el objeto "makenote" (cfg. chap. 6.4, pp. 36-37 del tutorial. De hecho, todo el chap. 6 puede ser de utilidad para realizar este ejercicio).

A continuación proponemos algunas premisas (orientativas, a modo de guía):

  • Realizar un generador de notas monofónico (una sola nota a la vez), ya que resultará más sencillo de gestionar en su totalidad. Sin embargo, el "problema" de "como no generar una nueva nota hasta que haya terminado la anterior" no es nada trivial (tiene que ver con las decisiones lógicas comentadas anteriormente), aunque se puede resolver de bastantes formas diferentes.
  • Será indiferente utilizar MIDI o audio. En principio, el audio ofrece más posibilidades de control, y por lo tanto será posiblemente más complejos, pero las diferencias en el planteamiento sólo se producirán en la última fase del ejercicio (después del "makenote").
  • Control interactivo de algunos parámetros, mediante "sliders" de Pd (en los casos de control continuo) o teclas QWERTY (en los casos de control discreto como en los acordes), o incluso si se desea, mediante dispositivos o controladores adicionales.


A continuación se sugieren algunos de los parámetros que se pueden controlar interactivamente.

  • Tempo (muy sencillo, ya que basta con controlar el parámetro de "metro")
  • Duración de las notas (en múltiplos de una unidad, que vendrá dada por la periodicidad del metro, por ejemplo corcheas o semicorcheas). Es decir si nuestra unidad fuese semicorcheas (por ej.), "metro" iría disparando semicorcheas, y nosotros decidiríamos si la duración de la nota será ésta misma, esta misma multiplicada por 2 (corcheas), por 3 (corcheas con puntillo), por 4 (negras), por 6 (negras con puntillo) etc.
  • Registro (controlar a grosso modo si la nota será grave, aguda, etc.). Para controlar esto, sin controlar directamente la nota en cuestión se podría controlar la octava. Sabemos que todas las notas MIDI múltiplos de 12 (0,12,24,36...) corresponden a un DO. Podemos hacer que el programa decida algorítmica o aleatoriamente, que nota producir (DO, DO#, RE, etc.) y nosotros decidir la octava. El resultado (la nota) final sería: num.octava*12 + nota (entre 0 y 11).
  • Acorde. Seleccionar el acorde, mediante por ejemplo, las teclas del ordenador. Con 3 acordes diferentes, los resultados podrán ser suficiente convincentes. El acorde determinará en cada momento, cuales son las notas que podrán ser generadas. Los que sepais algo de música, sabréis que hacer con ello y hacerlo más o menos complicado... Para los que no sepais, aquí una "receta" muy sencilla:
 * en el primer acorde (Tónica), permitid las notas 0,4,7 (siempre partiendo de la base de que las notas varían entre 0-DO y 11-SI)
 * para el segundo acorde (Subdominante) las notas 0,5,9
 * para el 3er acorde (Dominante) las notas 2,7,11. 
  • Stacatto/legato: Es posible controlar que la duración de las notas sea menor que la duración entre nota y nota. Esto se puede controlar multiplicando la duración original (en makenote) por un factor menor que uno, pero no adelantando la salida de una nueva nota.
  • Densidad: controlar que no siempre suene una nota, sinño permitir que algunas veces (por ejemplo en un %) se produzca silencio en lugar de nota.
  • Ecos o repeticiones: mediante el objeto "pipe" podéis crear ecos interesantes (i.e. notas que se repiten varias veces a intervalos regulares, con una amplitud o velocidad menor cada vez).
Personal tools