Introducción a la programación en PD
Docente: Diego Azar
Carga horaria: 24 horas
descripción
Pure Data (PD) es un entorno de programación gráfica para procesamiento de audio, video y gráficos. Es una de las ramas de los lenguajes conocidos como Max (Max/FTS, ISPW Max, Max/MSP, jMax, etc.) originalmente desarrollados por Miller Puckette y otros en el IRCAM a fines de los 80' y principios de los 90'. PD es desarrollado y mantenido por Miller Puckette y una comunidad de desarrolladores en la modalidad de Software Libre. Es multiplataforma y existen versiones para Win32, GNU/Linux y MacOS X. El curso brinda un panorama introductorio y a la vez completo de la programación en PD.
requisitos
Conocimientos básicos de síntesis de sonido.
Conocimientos básicos de programación.
programa
- Introducción
Instalación en Linux y Windows y cómo verificar que todo anda: audio I/O, periféricos, MIDI, red.
Configuración: frecuencia de muestreo, latencia, drivers de audio recomendados (linux).
Ejemplos en ambos sistemas operativos. Ventajas y desventajas de cada uno.
Comentario sobre formas de usar Pd sin entorno gráfico y ventajas de trabajar en red.
- Ambiente de trabajo
Ambiente de trabajo: entradas, salidas, como cargar librerías hechas en Pd o externals hechos en C.
Flags importantes. Definiciones: objetos, mensajes, números, símbolos, comentarios.
Tipos de datos: float, int, symbol, list.
Conexión entre objetos.
Diferencia entre señales de audio o de control.
Formas de transformar señales de audio a señales de control y viceversa. Como hacer un subpatch y como crear librerías propias.
- Control
Problemas de orden de ejecución de procesos (depth-first, trigger, pack). Operadores matemáticos básicos. Contadores. Operadores condicionales: select, route, moses, spigot, until, if-else. Operadores de tiempo: delay, pipe, timer, metro. Rampa line de control. Comunicación inalámbrica dentro de Pd: send, recieve, variables locales de un subpatch o globales. Formas de comunicación: mandar mensajes a variables concretas, hacer que variables numéricas o de símbolos se comuniquen sin conexiones de cables. Arrays: tablas y gráficos. Cómo graficar una función matemática en una tabla.
- Audio
Operadores básicos de audio: osc~, phasor~. Tipos de envolventes: line~, vline~. Operadores de filtros: lop~, hip~, bp~, vcf~. Reverberadores implementados en Pd: rev1~, rev2~, rev3~. Tablas, cómo llenarlas, cómo leerlas: tabplay~, tabread4~, tabwrite~. Lineas de delay estáticas y variables: delwrite~, delread~, vd~. Formas de interpolación usadas en los objetos antedichos. Operador clip y cómo generar pulsos.
Comunicación vía audio: throw~ y catch~ (suma de señales), send~ y recieve~, tabsend~, tabrecieve~.
- Síntesis
Síntesis aditiva, síntesis de anillo, síntesis FM. Phase vocoder.
- Análisis y detección
Transformadas de Fourier real y compleja. Convolución. Definir tamaño de ventana para operadores que trabajan de ésta forma: block~ y switch~. Construir el análisis de una señal y graficarlo. Phase vocoder en tiempo real. Operador fiddle~ para detección de pitch. Operador bonk~ para detección de ataques de tipo percusivo. Operador env~ para seguimiento de envolvente.
- Entrada y salida
Cómo leer y escribir archivos .wav o aiff: readsf~, writesf~. Cómo asignar funciones a teclas (key, keyname). Cómo asignar funciones al ratón (hid). Lectura de cualquier periférico. (solo para Linux).
- Partituras o Secuencia
Formas de escribir partituras en Pd o simplemente la lectura de archivos de texto que mandan datos para hacer una tarea programada (qlist, textfile). Análisis más profundo de los tipos de datos list (list append, list prepend, list split, etc). Strcucts, pointers. Visualización gráfica de los structs y formas de alterar los valores de cada campo gráficamente. Creación de formas geométricas en el subpatch de datos de un struct (polygon, filledpolygon, etc). Ejemplos de cómo asignar éstos datos a parámetros de filtros o de síntesis. Operador para compatibilidad Pd-Csound: csoundapi~.
- MIDI
Operadores Midi: notein/out, ctrlin/out, sysex. Polifonía y otros operadores: poly, stripnote, makenote. Posibilidades de comunicación con otras aplicaciones vía MIDI.
- Ethernet
Trasmisión de mensajes vía ethernet: netsend, netrecieve. Ejemplos.
- Interfaz de usuario
Faders, knobs, etc, y sus formas de comunicación con objetos. Formas de eliminar cables inútiles y mejorar un patch para que pueda ser controlado fácilmente en tiempo real. Graphic Canvas. Vuómetros. Gráficos con etiquetas.
bibliografía
- Puckette, M. S.
- documentación en linea de PD.
http://www-crca.ucsd.edu/~msp/Pd_documentation/index.htm
- Puckette, M. S.
- Theory and Techniques of Electronic Music.
http://www-crca.ucsd.edu/~msp/techniques.htm
- Puckette M. S., T. Apel, and D. D. Zicarelli.
- Real-time audio analysis
tools for Pd and MSP. Proceedings of the International Computer Music Conference, 1998.
(ps)
- Zmölnig, Johannes M.
- HOWTO: write an External for puredata
(pdf)
- Karmanby, G. G.
- PD's Data Structures Tutorial
(pdf)
-
- Documentación sobre Pure Data en español
wiki
enlaces
Instaladores de PD extended para Linux, Windows y Mac OS X.
64Studio distro de Linux para audio.
ejemplos
ejemplo de varios operadores (spigot, until, moses, route, etc).
ejemplo de lectura de tablas, enventanado, etc.
ejemplo de varios operadores, samplehold, analog_synth, filtros, clip, tren de pulsos.
ejemplo de modulacion de anillo, conexiones inalambricas, sintesis aditiva, lineas de delay.
ejemplo de fft, fiddle, lectura y grabacion, keyname, hid.
ejemplo de structs, textfile, qlist.