Capitulo 2. Programando en Pd por primera vez

Tabla de contenidos

2.1 Introducción
2.1.1 Un ejemplo simple
2.1.2 Elementos básicos del Pd
2.1.3 Resumen
2.1.4 Apéndice
2.1.5 Para los especialmente interesados: Atoms
2.2 El nivel control
2.2.1 Operaciones matemáticas y su orden
2.2.2 Diferentes tipos de data
2.2.3 Operaciones de tiempo
2.2.4 Misceláneo

En este capitulo no focalizaremos en producir música sino en entender la forma en que las computadoras y el Pd manejan los datos. Trabajaremos en ejemplos prácticos de escucha lo mas a menudo posible para evitar explicaciones abstractas y técnicas. La precisa forma en que las computadoras producen sonido no la explicaremos hasta el capitulo 3. Ud. debe armar los patches de muestra en el Pd. Esta experiencia de primera mano solidificara los conceptos presentados. A partir del capitulo 3 patches mas extensos se pueden bajar de:
www.kreidler-net.de/pd/patches/patches.zip.


2.1 Introducción

2.1.1 Un ejemplo simple

Una vez ejecutado el Pd, su ventana principal aparece en la pantalla. Abra una nueva ventana de programación haciendo click en el menú File y luego en New.

Una nueva ventana se abre. Agregue un objeto en Put Object, o con el comando desde el teclado: Ctrl+1 (esto funciona en Windows, en otros sistemas operativos pueden ser otras teclas).

...vera una cajita azul pegada al cursor...

Luego click en cualquier lugar de la parte en blanco de la ventana para soltar del mouse el nuevo objeto. Escriba esto dentro de la cajita: "osc~ 440".



Nota del traductor: El símbolo "tilde" : "~" y su ubicación en los distintos teclados. Consulte la "configuración del teclado" en su Sistema Operativo:

    • En el teclado "Español (Latino Americano)" : la combinacion Alt GR + +



    • En el teclado "Español (España)" : la combinacion Alt GR + 4 , espacio



    • En el teclado "Americano (Americano y Americano Internacional)" :
    la combinacion Shift + `



• Con macOS: ⌥ Option+ñ


Para aceptar lo que tipeo en la cajita, click en cualquier lado fuera de la cajita y sobre la superficie blanca:

El símbolo "~" se utilizara muy a menudo en Pd.

Ahora vera una caja rectangular con pequeños rectángulos negros en las esquinas superior e inferior. Los superiores de denominan “inlets”= entradas, y el inferior “outlet”= salida.

Si posiciona el cursor sobre el rectángulo “outlet” este cambia a forma de circulo (lo que evoca una salida para cable).

Clickee sobre el outlet y mueva el mouse sin soltar el botón. Esto dibuja una linea que simboliza un cable.

Como no hemos creado otro objeto al cual conectar este cable desaparecerá cuando soltemos el boton del mouse. Cree otro objeto como la vez anterior pero nombrelo "dac~". Ubiquelo debajo del objeto "osc~" clickeandolo una vez (se tornara azul) luego muévalo hasta la posición deseada y suelte el botón del mouse. Luego inicie un cable desde el outlet de "osc~" conectándolo al inlet izquierdo de "dac~". El cursor se transforma en un circulo cuando el mouse esta sobre un inlet.

Suelte el boton del mouse. El “cable” ahora conecta “osc~ 440” con “dac~”. Debe escuchar un tono. De no ser asi verifique el “check box” antes de "compute audio" en la ventana principal de Pd.

(La función "compute audio" permite programar en Pd sin generar audio. Esto puede liberar la computadora de procesos innecesarios, aunque probablemente no sea mucho en las computadoras de hoy.)

Escuchamos el tono, para ser especifico, un “La” en la frecuencia de 440Hz. (los significados de frecuencia y “Hertz” serán explicados mas adelante). Ahora conecte el outlet de “osc~ 440” con el inlet derecho de "dac~".

Debe escuchar el tono en ambos parlantes de la computadora. Ahora cree un objeto numero (Put Number o el comando Ctrl-3) Conecte su outlet al inlet izquierdo del objeto llamado "osc~". Luego debe cambiar a lo que se denomina "Execute mode" (Edit Edit mode, o el comando Ctrl-E; El cursor se transforma en una flecha ). Clickee en el objeto numero y sin soltar el botón mueva el mouse para arriba y abajo:

Esto modificara la altura del tono. El valor debe ser como mínimo de 100; el rango se puede ajustar mas finamente presionando la tecla SHIFT mientras mueve el mouse como describimos arriba.

Otra forma de introducir valores en los objetos numero es clickear dentro de ellos e ingresar un numero desde el teclado y presionar ENTER.

Ahora vuelva al otro modo, el "Edit mode" (Edit, Edit mode, o el comando Ctrl-E). Mueva el cursor, que debió volver a tener forma de “mano”, sobre la conexión entre "osc~" y "dac~". El cursor se transforma en una X. Clikee allí, el cable se tornara azul.

Luego Edit Cut o simplemente presione BACKSPACE. Esto terminara la conexión. También corte la otra conexión. Luego cree un nuevo objeto "*~ 0" y conéctelo a los demás objetos como se muestra en el gráfico:

Hagamos mas lugar. Agrande la ventana clickeando en su esquina inferior derecha, manteniendo apretado el botón del mouse, arrastrándola hacia abajo y la derecha.

Luego clickee debajo y a la derecha del objeto "dac~" y manteniendo presionado el botón del mouse, forme un rectángulo que contenga los objetos "dac~" y "*~".

Así es como se selecciona parte de un patch. (también así se borran objetos. Después de seleccionar una porción del patch, Edit Cut o simplemente BACKSPACE.)

Cuando suelte el botón del mouse ambos objetos se tornaran azules. Clickee en alguno de los objetos seleccionados y manteniendo apretado el botón de mouse, muévalos hacia abajo para hacer espacio.

Para anular esta selección de objetos, clickee en cualquier parte del fondo blanco.

Luego cree dos mensajes = "Message" (Put Message o Ctrl-2) Ubiquelos como en la figura siguiente e ingrese “0” en uno y “1” en el otro.

Vuelva al “execute mode” (Edit Edit mode or Ctrl-E) el cursor perderá su forma de mano y clickee en los mensajes; click en 1 hay sonido, click en 0 lo apaga.


2.1.2 Elementos básicos del Pd

El ejemplo previo contiene la mayoria de los elementos del Pd. Mirandolos de cerca notaremos 3 tipos de “cajas”: Objeto , Mensaje , y Numero .

Las “cajas” de los Objetos son rectangulares, las “cajas” de los Mensajes tienen el lado vertical derecho distinto de los otros y La “caja” de Numeros tiene el angulo superior derecho cortado.

Todas esta cajas tienen “inlets”= entradas y “outlets”= salidas. Los inlets siempre estan arriba y los outlets abajo. Siempre se establece una conexión desde un outlet hacia un inlet (en ese orden). Hay un “edit mode” y un “execute mode”. Se puede saber en cual estamos mirando el cursor.

(Nota del traductor: estando en Edit Mode es posible alterar el valor de un numero si se opera de la misma forma antes mencionada pero manteniendo apretada la tecla Ctrl. También es útil para emitir los mensajes. Compruébelo en el patch en Edit Mode.)

Miremos mas de cerca: Hay dos tipos de cable, grueso y fino. Un cable fino conecta el numero con “osc~” y un cable grueso sale de “osc~”. Los cables gruesos transmiten signals= señales , mientras que los cables finos transmiten solo control data. Con el “check Box” de “compute audio” determinamos si procesamos las señales. Es mas, todos los objetos que producen señales o trabajan con señales en su entrada (entrada = lo que va a un inlet; salida = lo que sale por un outlet), tienen tilde "~" inmediatamente despues de su nombre. Los otros objetos no. Estos dos niveles se denominan "control level” (donde solo "data de control" fluye, también denominado "message domain") y un "signal level" (donde las señales fluyen, también denominado "signal domain").

El primer objeto que creo fue “osc~ 440” que es un “oscilador” y escucho un tono sinusoide con una frecuencia de 440 Hertz (el significado de Hertz sera explicado mas adelante). Luego creo un “numero” donde ingreso y modifico valores que causaron que la frecuencia del tono se modificara. Esa es la estructura básica del Pd: Un objeto tiene un nombre (si produce señales un tilde "~" sigue despues de su nombre), después hay un espacio y se continua con uno o mas arguments = argumentos (En este caso en particular el argumento inicial fue “440”). Con la mayoría de los objetos, los argumentos pueden ser modificados cuando nuevos valores ingresan por sus inlets.

Si nuevos valores ingresan de esta forma, el argumento en el objeto es ignorado. (en este ejemplo, 300 en lugar de 440).

Podemos ingresar información en los números y en los mensajes. Los mensajes pueden contener letras, las que se denominan symbols = símbolos . A toda esta informacion nos referimos como atoms. Un atomo aparece en un mensaje o en un numero (mas sobre atomos en 2.1.5).

Otro termino importante: El programa que Ud. escribe de denomina patch. El patch primero aparece en blanco sobre el cual Ud. escribe el programa. Este espacio en blanco también se denomina canvas.


2.1.3 Resumen

  • Hay dos modos: edit mode y execute mode (se alternan con Ctrl-E o con Edit Edit mode). Ud. programa todas las partes del patch en edit mode y comienza operaciones de sonido en execute mode.

    (Nota del traductor: En realidad “Execute Mode” impide que el mouse mueva y seleccione objetos, dejándolo mas cómodo para modificar valores en los números, disparar mensajes y modificar otros elementos gráficos. El “check box” de “compute audio” es el que inicia o detiene operaciones de sonido.)

  • Dentro de un patch hay un “control level” y un “signal level” (los objetos de control no tienen tilde "~" al finalizar su nombre y se conectan con cables finos; los objetos de señal tienen tilde "~" al finalizar su nombre y se conectan con cables gruesos.) El “signal level” solo esta activo con el “check box” de “compute audio” en la ventana principal del Pd.

  • Los elementos son objetos, mensajes, y numeros.

  • Un objeto a menudo tiene uno o mas argumentos (a.k.a. "creation arguments"), que pueden ser modificados desde su inlet.

  • Un mensaje es un valor fijo en execute mode y esta guardado en el patch. Cuando un “mensaje” es clickeado con el mouse su contenido se envía a todos los objetos conectados a su outlet. Por el contrario los “números” pueden ser alterados en execute mode y sus valores no son guardados.


2.1.4 Apéndice

Un par de cosas mas que le pueden facilitar el trabajo en Pd:

2.1.4.1 Lista con varios objetos

Si clickea en el fondo blanco ("Canvas") con el botón derecho del mouse y abre el menú Help , aparecerá una lista con varios objetos.


2.1.4.2 Help

Si presiona el botón derecho del mouse sobre un objeto, un menú se abre donde puede seleccionar el help de ese objeto, allí encontrara informacion mas detallada.


2.1.4.3 Duplicación

Pronto sera muy util duplicar partes de un patch. Para esto, seleccione un área, los objetos se tornaran azules (como fue explicado en 2.1.1 en el contexto de hacer mas lugar) y valla a Edit Duplicate o Ctrl-D. Esto duplica el área seleccionada y la copia aparece como área seleccionada que puede mover.(click sobre cualquier objeto de la selección, mantenga apretado el botón del mouse, mueva hasta la ubicación deseada, y suelte el botón del mouse).


2.1.4.4 Short cuts

Es mas rápido y confortable trabajar si utiliza "keyboard shortcuts" = teclas de acceso rápido. Muchas de las funciones que se seleccionan desde los menus tienen estos "keyboard shortcuts", su combinación de teclas aparece luego de cada función en los menus.


2.1.4.5 Comments

Programar puede complicarse rápidamente . Para ayudar a recordar el significado de un patch, se recomienda que agregue comentarios a su patch. Los comentarios se agregan en Put Comment (o con Ctrl-5). Escriba lo que quiera para explicar el patch.


Si entendió todo lo que vimos hasta aquí, entonces entiende los fundamentos esenciales de la interface del usuario en Pd. Ahora podemos pasar a la estructura de la programación.


2.1.5 Para los especialmente interesados: Atoms

Un mensaje para un objeto tiene dos partes: Una designación de método (selector) y cero, uno, o varios valores (arguments). Por ej. si el mensaje es “5”, en realidad el mensaje verdadero es “float 5” y se compone de los atomos “float” y “5”. El mensaje “bang” se compone solo del selector “bang” y no contiene argumentos. El mensaje “1 2 3 4 5” es en realidad “list 1 2 3 4 5” (list = lista).

Existen tres tipos de atoms: un numero (en lenguaje de programación = “float”) que es un valor 32-bit, un símbolo, que es una sucesión de letras, o un “pointer”, que es una especie de dirección (esto lo veremos en el capitulo 5.2.3).

El mensaje “float 5” se compone de dos tipos de designacion, simbolo y float. La parte simbolo tiene el valor “float”(una sucesión de letras) y la parte float tiene el valor “5”.

El selector es siempre un símbolo. Como los objetos reaccionan diferente a diferentes mensajes, el selector efectuá una mas precisa determinación preliminar.