La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

1 TEMA 7. Sistemas visuales interactivos (1) 1.Introducción a PD. 2.Principios básicos de funcionamiento. 3.Abstracciones 4.Control de flujo 5.Interfaz.

Presentaciones similares


Presentación del tema: "1 TEMA 7. Sistemas visuales interactivos (1) 1.Introducción a PD. 2.Principios básicos de funcionamiento. 3.Abstracciones 4.Control de flujo 5.Interfaz."— Transcripción de la presentación:

1 1 TEMA 7. Sistemas visuales interactivos (1) 1.Introducción a PD. 2.Principios básicos de funcionamiento. 3.Abstracciones 4.Control de flujo 5.Interfaz gráfica de usuario (IGU) 6.Estructuras de datos en PD. 7.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 2 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) 1. Introducción a PD

3 3 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) 1. Introducción a PD

4 4 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…) 1. Introducción a PD

5 5 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 1. Introducción a PD

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

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

8 8 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. 1. Introducción a PD

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

10 10 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. 2. Principios básicos de funcionamiento

11 11 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. 2. Principios básicos de funcionamiento

12 12 Ejemplo 2. Principios básicos de funcionamiento

13 13 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. 2. Principios básicos de funcionamiento

14 14 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 2. Principios básicos de funcionamiento

15 15 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 2. Principios básicos de funcionamiento

16 16 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. 2. Principios básicos de funcionamiento

17 17 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: 2. Principios básicos de funcionamiento

18 18 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? 2. Principios básicos de funcionamiento

19 19 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: 2. Principios básicos de funcionamiento

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

21 21 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 2. Principios básicos de funcionamiento

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

23 23 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)) 2. Principios básicos de funcionamiento

24 24 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. 2. Principios básicos de funcionamiento

25 25 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. 2. Principios básicos de funcionamiento

26 26 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. 2. Principios básicos de funcionamiento

27 27 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. 2. Principios básicos de funcionamiento

28 28 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. 3. Abstracciones

29 29 Ejemplo 3. Abstracciones

30 30 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). 3. Abstracciones

31 31 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. 3. Abstracciones

32 32 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. 3. Abstracciones

33 33 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) 3. Abstracciones

34 34 Ejemplo 3. Abstracciones

35 35 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. 3. Abstracciones

36 36 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. 3. Abstracciones

37 37 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 3. Abstracciones

38 38 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 … 3. Abstracciones

39 39 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. 4. Control de flujo

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

41 41 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. 4. Control de flujo

42 42 Ejemplo 4. Control de flujo

43 43 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 5. Interfaz gráfica de usuario

44 44 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) 5. Interfaz gráfica de usuario

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

46 46 5. Interfaz gráfica de usuario


Descargar ppt "1 TEMA 7. Sistemas visuales interactivos (1) 1.Introducción a PD. 2.Principios básicos de funcionamiento. 3.Abstracciones 4.Control de flujo 5.Interfaz."

Presentaciones similares


Anuncios Google