stringtranslate.com

Datos puros

Pure Data ( Pd ) es un lenguaje de programación visual desarrollado por Miller Puckette en la década de 1990 para crear música interactiva por computadora y obras multimedia . Si bien Puckette es el autor principal del programa, Pd es un proyecto de código abierto con una gran base de desarrolladores que trabajan en nuevas extensiones. Se publica bajo la cláusula BSD-3 . Se ejecuta en Linux , MacOS , iOS , Android y Windows . Existen puertos para FreeBSD e IRIX .

Pd es muy similar en alcance y diseño al programa Max original de Puckette , desarrollado mientras estaba en IRCAM , y es hasta cierto punto interoperable con Max/MSP, el predecesor comercial del lenguaje Max. Pueden discutirse colectivamente como miembros de la familia de lenguajes Patcher [2] .

Con la adición del entorno gráfico para multimedia (GEM) externo y los externos diseñados para funcionar con él (como Pure Data Packet/PiDiP para Linux, Mac OS X ), framestein para Windows, GridFlow (como procesamiento matricial de n dimensiones, para Linux, Mac OS X , Windows), es posible crear y manipular vídeo, gráficos OpenGL , imágenes, etc., en tiempo real con amplias posibilidades de interactividad con audio, sensores externos, etc.

Pd está diseñado de forma nativa para permitir la colaboración en vivo a través de redes o Internet, permitiendo a los músicos conectados a través de LAN o incluso en partes diferentes del mundo crear música juntos en tiempo real. Pd utiliza FUDI como protocolo de red.

Similitudes con Max

Pure Data y Max son ejemplos de lenguajes de programación de flujo de datos . Los lenguajes de flujo de datos modelan un programa como un gráfico dirigido de los datos que fluyen entre operaciones. En Pure Data y Max, las funciones u "objetos" están vinculados o "parcheados" en un entorno gráfico que modela el flujo del control y el audio. Sin embargo, a diferencia de la versión original de Max, Pd siempre fue diseñado para realizar control de velocidad y procesamiento de audio en la unidad central de procesamiento (CPU) del host, en lugar de descargar la síntesis de sonido y el procesamiento de señal a una placa de procesador de señal digital (DSP) ( como el Ariel ISPW que se utilizó para Max/FTS). El código Pd forma la base de las extensiones MSP de David Zicarelli al lenguaje Max para realizar procesamiento de audio por software. [3]

Al igual que Max, Pd tiene una base de código modular de elementos externos u objetos que se utilizan como bloques de construcción para programas escritos en el software. Esto hace que el programa sea arbitrariamente extensible a través de una API pública y anima a los desarrolladores a agregar sus propios controles y rutinas de audio en el lenguaje de programación C , o con la ayuda de otros externos, en Python , Scheme , Lua , Tcl y muchos otros. Sin embargo, Pd también es un lenguaje de programación. Las unidades de código modulares y reutilizables escritas de forma nativa en Pd, llamadas "parches" o "abstracciones", se usan como programas independientes y se comparten libremente entre la comunidad de usuarios de Pd, y no se requiere ninguna otra habilidad de programación para usar Pd de manera efectiva.

Características del idioma

Objetos de datos puros. Las cadenas de texto a la derecha de los cuadros son comentarios.

Al igual que Max, Pd es un lenguaje de programación de flujo de datos. Como ocurre con la mayoría del software DSP , existen dos velocidades principales a las que se pasan los datos: velocidad de muestreo (audio) , generalmente de 44.100 muestras por segundo, y velocidad de control, de 1 bloque por 64 muestras. Los mensajes de control y las señales de audio generalmente fluyen desde la parte superior de la pantalla hacia la parte inferior entre "objetos" conectados mediante entradas y salidas.

Pd admite cuatro tipos básicos de entidades de texto: mensajes, objetos, átomos y comentarios. Los átomos son la unidad de datos más básica en Pd y constan de un flotante , un símbolo o un puntero a una estructura de datos (en Pd, todos los números se almacenan como flotantes de 32 bits). Los mensajes están compuestos por uno o más átomos y proporcionan instrucciones a los objetos. Un tipo especial de mensaje con contenido nulo llamado bang se utiliza para iniciar eventos y hacer que los datos fluyan, de manera muy similar a presionar un botón.

Los objetos nativos de Pd van desde los operadores matemáticos , lógicos y bit a bit básicos que se encuentran en todos los lenguajes de programación hasta funciones DSP de velocidad de audio generales y especializadas (designadas por un símbolo de tilde (~)), como osciladores de tabla de ondas , la transformada rápida de Fourier (fft ~) y una gama de filtros estándar . Los datos se pueden cargar desde un archivo, leer desde una placa de audio, MIDI , a través de Open Sound Control (OSC) a través de una conexión FireWire , USB o de red, o generarse sobre la marcha y almacenarse en tablas, que luego se pueden volver a leer. y utilizados como señales de audio o datos de control.

Estructuras de datos

Una de las innovaciones clave en Pd con respecto a sus predecesores ha sido la introducción de estructuras de datos gráficas . Estos se pueden utilizar de una gran variedad de formas, desde componer partituras musicales, secuenciar eventos, hasta crear imágenes para acompañar parches de Pd o incluso ampliar la GUI de Pd .

Haciendo honor al nombre de Pd, las estructuras de datos permiten a los usuarios de Pd crear representaciones gráficas estáticas, dinámicas o animadas arbitrariamente complejas de datos musicales. Al igual que las estructuras C , las estructuras de Pd se componen de cualquier combinación de flotantes, símbolos y datos de matriz que pueden usarse como parámetros para describir la apariencia visual de la estructura de datos o, por el contrario, para controlar mensajes y señales de audio en un parche de Pd. En palabras de Puckett:

Pd está diseñado para ofrecer un entorno extremadamente desestructurado para describir estructuras de datos y su apariencia gráfica. La idea subyacente es permitir al usuario mostrar cualquier tipo de dato que desee, asociándolo de alguna forma con la visualización. Para lograr esto, Pd introduce una estructura de datos gráfica, algo así como una estructura de datos del lenguaje de programación C, pero con una facilidad para adjuntar formas y colores a los datos, de modo que el usuario pueda visualizarlos y/o editarlos. Los datos en sí pueden editarse desde cero o importarse desde archivos, generarse algorítmicamente o derivarse de análisis de sonidos entrantes u otros flujos de datos.

-  Miller Puckette, [4]
Partitura para Solitude de Hans-Christoph Steiner , creada utilizando las estructuras de datos de Pd.

Limitaciones de idioma

Aunque es un lenguaje poderoso, Pd tiene ciertas limitaciones en la implementación de conceptos orientados a objetos. [5] Por ejemplo, es muy difícil crear procesos paralelos masivos porque crear instancias y manipular grandes listas de objetos (generación, etc.) es imposible debido a la falta de una función constructora. Además, las matrices Pd y otras entidades son susceptibles a colisiones de espacios de nombres porque pasar el ID de la instancia del parche es un paso adicional y, a veces, es difícil de lograr.

Proyectos que utilizan datos puros

Pure Data se ha utilizado como base de varios proyectos, como lenguaje de creación de prototipos y motor de sonido. La interfaz de mesa llamada Reactable [6] y la aplicación abandonada para iPhone RjDj incorporan Pd como motor de sonido.

Varios diseñadores de audio han utilizado Pd para crear prototipos de audio para videojuegos. Por ejemplo, EAPd es la versión interna de Pd que se utiliza en Electronic Arts (EA). También se ha integrado en EA Spore . [7]

Pd también se ha utilizado para actuaciones en red, en la Biblioteca de recursos en red para la improvisación colaborativa (NRCI). [8]

Ejemplos de código

  1. El primer parche imprime "hola mundo" en la pantalla.
  2. El segundo parche aplica reverberación a la señal entrante del canal 1 y luego la emite en los canales 1 y 2.
  3. El último parche, más complejo, filtra el ruido blanco a 9000  Hz (con una Q de 20) y luego lo atenua y desaparece cada segundo en el transcurso de medio segundo. En Pd, el tiempo se mide en milisegundos, por lo que '1000' es un segundo y '500' es medio segundo.

Ver también

Notas

  1. ^ ab "Software de Miller Puckette". Miller Puckette . Consultado el 14 de enero de 2022 .
  2. ^ Puckette, M. (1988). El parcheador. En actas de la Conferencia Internacional de Música por Computadora.
  3. ^ "Preguntas frecuentes: Max 4 - Ciclismo '74" . Consultado el 5 de enero de 2017 .
  4. ^ Documentación Pd Capítulo 2 - 2.9. Estructuras de datos
  5. ^ "Posibilidades n.º 2: capa de audio". 2 de marzo de 2010 . Consultado el 5 de enero de 2017 .
  6. ^ Jordá, Sergi; Kaltenbrunner, Martín; Geiger, Gunter; Bencina, Ross (2005). "ICMC2005: La ReacTable" (PDF) . Grupo de Tecnología Musical/IUA, Universitat Pompeu Fabra.
  7. ^ Kosak, Dave (20 de febrero de 2008). "Gamespy: The Beat Goes on: Música dinámica en Spore". JuegoSpy . IGN Entertainment, Inc.
  8. ^ "Recursos en red para la improvisación colaborativa (NRCI)". Centro de Investigación Informática en Música y Acústica . Departamento de Música, Universidad de Stanford.

Referencias

Otras lecturas

enlaces externos