1 / 46

TEMA 7. Sistemas visuales interactivos (1)

TEMA 7. Sistemas visuales interactivos (1). Introducción a PD. Principios básicos de funcionamiento. Abstracciones Control de flujo Interfaz gráfica de usuario (IGU) Estructuras de datos en PD. Video y audio en Pd. Refrencias

raziya
Download Presentation

TEMA 7. Sistemas visuales interactivos (1)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. TEMA 7. Sistemas visuales interactivos (1) Introducción a PD. Principios básicos de funcionamiento. Abstracciones Control de flujo Interfaz gráfica de usuario (IGU) Estructuras de datos en PD. Video y audio en Pd. Refrencias Sergi Jordá. “Introducción a Pd”, pdf accesible desde la página personal de Jordá (Taller de música electrónica) http://www.tecn.upf.es/~sjorda/

  2. 1 . Introducción a PD Introducción • PD (MAX) es un lenguaje gestado a inicios de los 80s para control en tiempo real de uno de los primeros sintetizador digitales, fabricado por IRCAM. • Inicialmente se plantea como un sistema de control, sin posibilidad sonoras propias (ni visuales) • Conforme aumenta la potencia de los ordenadores, PD va incorporando otras posibilidades: • Entrada/salida de audio (~1996) • Entrada/salida de imagen (~1999)

  3. 1 . Introducción a PD La familia Max • MAX (cycling74) para Macintosh y Windows (comercial) • Audio con MSP (comercial) • Imagen con NATO o Jitter (ambos comerciales) • JMAX (IRCAM) para Linux (freeware & open source) • Incorpora audio • PD (M. Puckette) para Linux y Windows(freeware & open source) • Incorpora audio • Imagen con GEM y Framestein (ambos libres y open source)

  4. 1 . Introducción a PD Interactividad • De forma general, un ordenador puede responder a: • Datos de Control (teclados, ratones, joysticks ,sensores, red…) • Sonido (procesarlo o escucharlo-analizarlo interpretarlo) • Imagen (procesar ficheros, entrada cámaras..) • Cualquier combinación (e.g. audio + videocámara +sensores…) • El ordenador puede responder con: • Sonido nuevo (MIDI o audio: composición algorítmica, síntesis a t. real, secuencias pregrabadas, alteradas …) • Sonido procesado (a partir del sonido de entrada) • Imágenes (generadas, disparadas, procesadas…/ • 2D, 3D, vídeo…) • Control de dispositivos (proyectores, luces, • robots…)

  5. 1 . Introducción a PD Interactividad con PD • Un lenguaje como PD (ó MAX…) (con algunos plugins o librerías adicionales) admite entradas de tipo: • Audio • MIDI • Mouse + computer keyboard + joystick… • Webcam(u otra entrada de vídeo) • Puertos serie, paralelo… • TCP/IP • Admite salidas de tipo: • Audio • MIDI • Puertos serie, paralelo…(control de dispositivos) • TCP/IP • Imagen: • Disparo y/o procesado de secuencias vídeo • Disparo y/o procesado de imágenes fijas • Generación animaciones sintéticas 2D, 3D

  6. 1 . Introducción a PD Interactividad con PD • Como conclusión podemos decir que PD es un: • Supermapeador • Un sintetizador/procesador de audio • Un sintetizador/procesador de video

  7. 1 . Introducción a PD PD en Internet • Miller Puckette's software

  8. 1 . Introducción a PD Instalación • Bajar y descomprimir pd en cualquier directorio • Esto instalará el ejecutable (pd.exe), librerías básicas, objetos adicionales, ejemplos, documentación, ayudas así como todo el código fuente (por si deseásemos modificar o añadir objetos en C) • Adicionalmente se puede crear un fichero .bat añadiendo opciones adicionales.

  9. 1 . Introducción a PD Puertos Midi Virtuales • Para trabajar en el entorno midi es interesante añadir puertos midi virtuales. (www.midiox.com) • Y teclados midi virtuales.

  10. 2 . Principios básicos de funcionamiento Filosofía • Pd es un lenguaje de programación gráfico y orientado a flujos de eventos, audio y video. • La ejecución del entorno PD, supone la ejecución de una máquina “virtual”, sobre la que se pueden lanzar programas denominados patches (ventanas). • Los diferentes patches que se pueden comunicar en ejecución, puesto que se ejecutan concurrentemente. • Los patches se pueden editar mientras se están ejecutando.

  11. 2 . Principios básicos de funcionamiento Elementos básicos de PD • Objetos, que representan acciones o métodos, responden a entradas y generan salidas después de procesarlas (se pueden definir, pero hay muchos predefinidos) • Mensajes, representan elementos de control para los objetos. • Comentarios • Números y símbolos, son celdas que pueden albergar números y strings. • Canales, establecen las relaciones entre los diferentes elementos. Por los canales pueden discurrir números, strings, eventos de teclado,.. y muestras de audio y video.

  12. 2 . Principios básicos de funcionamiento Ejemplo

  13. 2 . Principios básicos de funcionamiento Elementos básicos de PD • Un elemento “mensaje” admite en principio cualquier texto. • Un elemento “objeto”, solo admite palabras “comprensibles” para PD. • Estas palabras constituyen el vocabulario de PD, y son los equivalente a lo que en cualquier otro lenguaje de programación serían las instrucciones básicas (e.g. IF,<, +…) y las funciones. • Si pulsamos con el botón izquierdo sobre un objeto podemos acceder a la ayuda que también son patches y por lo tanto los podemos ejecutar y copiar en otros patches.

  14. 2 . Principios básicos de funcionamiento Entradas, salidas y canales • Las marcas negras situadas en la parte superior de un objeto (o mensaje) son sus entradas (varían de 0 a varias) • Las marcas negras situadas en la parte inferior de un objeto (o mensaje) son sus salidas (varían de 0 a varias) • Solo se puede conectar las salidas (parte inferior de un objeto o mensaje) con las entradas (parte superior de un objeto o mensaje) y viceversa. • Una salida puede conectarse a varias entradas • Una entrada puede recibir de varias salidas • No todas las salidas y las entradas son compatibles

  15. 2 . Principios básicos de funcionamiento Nombres de objetos • Los nombres de los objetos no pueden contener espacios. Si vemos un objeto en el que aparecen varios nombres (o números) separados por espacios, estaremos ante un objeto con argumentos. • PD distingue entre mayúsculas y minúsculas. En este sentido, la mayoría de objetos PD utilizan sólo minúsculas en el nombre, pero en el caso de que alguno contuviera alguna mayúscula, deberíamos escribirlo tal cual

  16. 2 . Principios básicos de funcionamiento Mensajes especiales • Hay determinados mensajes que producen determinadas acciones en los objetos. Por ejemplo “open” o “close” . • Bang se utiliza para “disparar” cualquier tipo de evento. Significa algo así como “hazlo!”. La mayoría de objetos que reciben un mensaje de tipo “bang” se ponen en marcha y realizan una acción y normalmente producen una salida. • Los valores numéricos constantes se utilizan de la misma forma que en la mayoría de lenguajes de programación. Siempre que queramos guardar un valor numérico con un significado especial, o un valor por defecto.

  17. 2 . Principios básicos de funcionamiento Objetos numéricos (IGU) • El objeto Number se comporta tanto como entrada como salida. Si (en modo ejecución) arrastramos el ratón por encima del objeto, modificaremos su valor. • Estudiar el siguiente ejemplo:

  18. 2 . Principios básicos de funcionamiento Prioridades en la E/S • Dado que de un punto pueden producirse varias salidas y que un objeto puede tener varias entradas (y que en un ordenador no existe realmente el concepto de simultaneidad), la pregunta es ¿En que orden se ejecutan los objetos/patches PD?

  19. 2 . Principios básicos de funcionamiento Entrada Activa • Una primera regla fundamental de PD es que la mayoría de objetos, sólo disparan una salida cuando reciben algo por la entrada más a la izquierda. • La entrada izquierda es la entrada activa • Normalmente, las entradas que va recibiendo un objeto, se van almacenando en su interior, hasta que la entrada izquierda active una salida. Esta salida se calculará con los valores que se habrán ido almacenando. • Probar diferentes conexiones del ejemplo:

  20. 2 . Principios básicos de funcionamiento Orden de salidas • En Pd cuando una salida se dirige a varias entradas, la que primero sale es la primera que se conectó. • Ejemplo:

  21. 2 . Principios básicos de funcionamiento El objeto trigger • El objeto trigger, se debe usar SIEMPRE que queramos que una misma salida se distribuya por varias conexiones. • Este objeto admite una entrada y varios argumentos • Estos argumentos pueden ser los siguientes: float, bang, symbol, list y anything • El número de salidas de trigger será igual al número de argumentos. • trigger permite redistribuir la entrada por varias salidas, garantizando el orden de salida (de derecha a izquierda) y dando la opción de convertir la salida a otro tipo de dato, por ejemplo, convirtiendo un valor numérico en un mensaje de tipo bang

  22. 2 . Principios básicos de funcionamiento Ejemplo de trigger

  23. 2 . Principios básicos de funcionamiento Argumentos en los objetos • Algunos objetos no aceptan argumentos • Otros aceptan un número fijo (e.g. +) • Otros un número variable (e.g. trigger) • Algunos aceptan cualquier símbolo (e.g. print) • Otros sólo símbolos específicos (e.g. valor númerico para los operadores como suma, o los símbolos específicos de select (if))

  24. 2 . Principios básicos de funcionamiento Argumentos en los objetos • En algunos casos, los argumentos determinan un valor inicial por defecto. • En estos casos, las entradas de la derecha suelen modificar este valor (aunque visualmente no se modifique este valor en el patch), como es el caso de la suma: • Inicialmente, todo valor que entra por la izquierda, sale sumado en 10. • Después de que hayamos introducido un nuevo valor por la izquierda (e.g. 18), el sumando toma un nuevo valor (e.g. 18), aunque lamentablemente seguimos visualizando un 10, lo cual puede prestar a confusión.

  25. 2 . Principios básicos de funcionamiento Argumentos en los objetos • Una alternativa a este tipo de argumentos, sería utilizar un loadbang, que manda un bang cuando se abre el patch.

  26. 2 . Principios básicos de funcionamiento Argumentos en los objetos • En algunos casos, los argumentos alteran el comportamiento de un objeto, como en el caso de trigger que acabamos de ver, en que el número de argumento determina incluso el número de salidas del objeto. En estos casos, estos argumentos no suelen poderse modificar en ejecución.

  27. 2 . Principios básicos de funcionamiento Resumen • Los objetos PD disparan una salida cuando reciben algo por la entrada izquierda • Cuando un objeto PD tiene varias salidas diferentes su orden es de derecha a izquierda. • Cuando una misma salida se manda a varias entradas diferentes es difícil garantizar el orden de llegada su orden es el de creación de la conexión, a no ser que se utilice el objeto trigger • Los argumentos se utilizan para inicializar objetos y para modificar su comportamiento.

  28. 3 . Abstracciones Encapsulamiento y abstracciones • En un lenguaje tradicional, una función es un fragmento de código que puede tener varias entradas (parámetros) y hasta una salida (retorno de la función). En PD, una abstracción puede tener varias entradas y también varias salidas. • En Pd, una abstracción se define como un patch donde las entradas se corresponden con los objetos inlets y las salidas con los objetos outlets: • tendrán tantas entradas como objetos inlets • tendrán tantas salidas como objetos outlets • el orden de entradas (y de salidas) en el objeto se corresponderá con su posición espacial en el patch (es decir la entrada de la izquierda corresponderá con el objeto inlet situado más a la izquierda, etc.) • La ventana de una abstracción puede estar cerrada o abierta. Si esta cerrada los números y otros objetos no consumen recursos.

  29. 3 . Abstracciones Ejemplo

  30. 3 . Abstracciones Ubicación de las abstracciones • Para que cualquier patch encuentre los objetos que hemos creado nosotros, es necesario que se cumpla una de las dos condiciones siguientes: • Que nuestro objeto esté salvado en unos de los directorios incluidos en el path de PD . (pantalla principal de pd File>Path..) • Que el objeto y el patch que lo debe contener se encuentren en el mismo directorio (lo cual solo podrá darse, si el patch que lo contiene ya ha sido bautizado y salvado, puesto que antes no está en ningún directorio).

  31. 3 . Abstracciones Subpatches • Los subptaches son una versión reducida de las abstractions. Permiten hacer que nuestro programa sea más limpio pero no nos permite reutilizar objetos. Los subpatches son subventanas de la ventana principal.

  32. 3 . Abstracciones Argumentos • A menudo es útil poder hacer que nuestros patches puedan utilizar argumentos, igual que la mayoría de objetos PD. Esto se consigue mediante el signo $ seguido de un valor numérico.

  33. 3 . Abstracciones Los objetos send y receive • Los objetos send (s) y receive (r) se usan cuando las posiciones de los objetos en una ventana hacen que sea difícil mantener un cierto orden y evitar un confuso amasijo de cables. • Ambos objetos necesitan un parámetro, que se podría asimilar al nombre de una variable en un lenguaje de programación convencional( aunque es un canal) • El objeto send tiene una entrada, y el objeto receive tiene una salida. • Cuando un send recibe algo (e.g. un valor numérico, un mensaje…) inmediatamente lo manda a todos los receives que tengan el mismo argumento • Puede haber un número cualquiera de sends con el mismo argumento(obviamente, también con argumentos diferentes)

  34. 3 . Abstracciones Ejemplo

  35. 3 . Abstracciones send y receive con mensajes • Los mensajes también pueden incluir destinatarios (nombres de objetos receive) lo que permite su uso sin cables. Para indicar el destinatario de un mensaje, basta con anteponer ; (punto y coma) al nombre del destinatario. • Así, cuando un mensaje comienza por ; la primera palabra que le sigue no es el mensaje en si, sino su destinatario. La palabra siguiente sí que es el mensaje.

  36. 3 . Abstracciones El objeto value • Una variante del send y receive es el objeto value (o v en abreviado). Igual que send y receive utiliza un nombre como argumento. A diferencia de los anteriores, la entrada de value no sale automáticamente por la salida. Para que la salida se produzca se necesita un bang en la entrada. • Al igual que con send y receive, los objetos value se comunican aunque estén en ventanas diferentes.

  37. 3 . Abstracciones Los objetos integer y float • integer y float se utilizan para almacenar valores. • No utilizan argumentos, por lo que NO funcionan como variables compartidas (a diferencia de send/receive o value) • Un valor numérico por la entrada derecha almacena este valor (y no lo dispara) • Un valor numérico por la entrada izquierda almacena este valor y lo dispara inmediatamente • Un bang por la entrada izquierda, dispara el valor almacenado

  38. 3 . Abstracciones Ejemplo • Si inicialmente mandamos un 0 a i, dado que esta entrada se produce por la izquierda, inmediatamente sale el mismo 0. • Este 0 llega al objeto + 1, con lo cual, la salida es la entrada incrementada en 1, es decir 1 • Este valor entra de nuevo en el objeto i, pero esta vez por la derecha, con lo cual no sale, pero se almacena • Cuando i recibe un bang, este objeto dispara el valor almacenado, es decir 1, que tras pasar por + 1, entra de nuevo en i con un valor 2 • Este valor no sale y se almacena hasta que volvamos a mandar un bang …

  39. 4 . Control de flujo Análisis por casos • El objeto sel (o select) tiene una única entrada (en algunos casos dos) • Admite un nuevo variable de argumentos • Presenta tantas salidas como argumentos + 1 • Si una entrada coincide con el argumento número N, select manda un bang por la salida número N • Si una entrada no coincide con ninguno de los argumentos, select saca esta entrada inalterada por la salida N+1 (es decir por la de más a la derecha) • Los argumentos de sel pueden ser de cualquier tipo (valores numéricos, palabras, etc.) • Cuando sel tiene un único argumento, presenta además una entrada adicional (por la derecha), que permite modificar el valor a comparar.

  40. 4 . Control de flujo Análisis por casos • Traducción de la instrucción if a pd. If evaluacion print cumple Else print nocumple

  41. 4 . Control de flujo Repeticiones • Para realizar repeticiones se utiliza el objeto until. • Este objeto emite un bang por su salida hasta que le llega un bang por su entrada derecha.

  42. 4 . Control de flujo Ejemplo

  43. 5 . Interfaz gráfica de usuario Elementos de la IGU • Hasta ahora hemos visto el objeto Number que permite introducir valores numéricos mendiante el ratón. • En PD existen otros objetos de interfaz gráfico (GUI). Estos objetos permiten normalmente modificar su aspecto (tamaño, color, etc) y algunas otras opciones de configuración: • 1. Bang • 2. Toggle • 3. Number2 • 4. Vslider • 5. Hslider • 6. Vradio • 7. Hradio • 8. VU • 9. Canvas

  44. 5 . Interfaz gráfica de usuario El objeto Bang • Se comporta exactamente igual que el mensaje bang. • Su aspecto es el de un botón pulsador de tamaño y color configurable por el usuario que manda un bang cada vez que se pulsa con el ratón (o cada vez que recibe cualquier entrada)

  45. 5 . Interfaz gráfica de usuario Propiedades del objeto Bang

  46. 5 . Interfaz gráfica de usuario

More Related