Subido por Gabriel Nicolás González Ferreira

Software Libre y Produccion Musical

Anuncio
See discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/281642572
SOFTWARE LIBRE Y PRODUCCIÓN MUSICAL
Conference Paper · September 2010
CITATIONS
READS
0
440
2 authors:
Gabriel Ferreira
G.E. Carr
Universidad Nacional de Mar del Plata
Universidad Nacional de Mar del Plata
1 PUBLICATION 0 CITATIONS
11 PUBLICATIONS 27 CITATIONS
SEE PROFILE
Some of the authors of this publication are also working on these related projects:
Numerical Modelling of the Friction Stir Spot Welding process View project
All content following this page was uploaded by Gabriel Ferreira on 11 September 2015.
The user has requested enhancement of the downloaded file.
SEE PROFILE
2o Congreso Internacional de Acústica UNTREF
Septiembre 2010, Argentina
SOFTWARE LIBRE Y PRODUCCIÓN MUSICAL
GABRIEL NICOLÁS GONZÁLEZ FERREIRA1, GUSTAVO EDUARDO CARR2
1
Administrador de Sistemas GNU/Linux aprobado por RD. N° 136/04 Artículo 2°, refrentada por O.C.A. N°334/05
Facultad de Ingeniería. Universidad Nacional de Mar del Plata, Argentina.
[email protected]
2
Instituto de Investigación en Ciencia y Tecnología de Materiales (INTEMA), Universidad Nacional de Mar del
Plata. Provincia de Buenos Aires, Argentina.
[email protected]
Resumen – Se investigó en las posibilidades de utilización de software libre para creación y procesamiento de
audio en tiempo real. Se realizó una introducción a la instalación y uso de distintas distribuciones GNU/Linux. Se
describieron las configuraciones necesarias para el trabajo en producción musical con un sistema operativo
informático GNU/Linux logrando el mejor aprovechamiento del hardware indicado (procesamiento en tiempo real
de los dispositivos de audio). Además se enumeraron aplicaciones profesionales utilizadas para este cometido,
(estación digital de trabajo de audio, secuenciadores, samplers, plugins de efectos, sintetizadores virtuales,
software de masterización), desde la generación de sonidos hasta la post-producción y masterización digital de
audio. Por último se presentó uno de los más poderosos, versátiles y conocidos lenguajes gráficos para la creación
de aplicaciones multimedia y científicas: Pure Data. Mediante este software se expanden las posibilidades hacia la
producción audiovisual y de tecnologías de la información utilizando sistemas operativos GNU/Linux de alta
confiabilidad y estabilidad en tiempo real.
1. INTRODUCCIÓN
En el presente trabajo se investigó acerca de la
posibilidad de utilizar software libre para la
producción musica y procesamiento de señales en
tiempo real tanto para ser aplicado tanto en el arte
como en la investigación científica. Esta
investigación del estado del arte de las opciones fue
impulsada por la necesidad de independencia de los
usuarios de paquetes comerciales costosos y de
licencias privativas, en busca de un beneficio común
por parte del conjunto de usuarios, artistas e
investigadores científicos.
Antes que nada debemos saber que el software libre
es aquél que permite:
0. Usar el computador con cualquier propósito.
1. Estudiar como funciona el mismo y modificarlo
(adaptarlo a las necesidades del usuario).
2. Distribuir copias del software para ser compartidas
y difundidas (está permitido cobrar o no por la
distribución y/o empaquetado).
3. Mejorar el software y publicar las modificaciones
para beneficio de la comunidad .
En este trabajo, se denomina como “Distribución del
Sistema GNU/Linux” al sistema operativo que cada
individuo u empresa puede armar para uso comercial
o no más el conjunto de software seleccionado para
desarrollar sus actividades.
El objetivo particular de este trabajo es mostrar como
cualquier distribución del Sistema Operativo GNULinux puede configurarse para trabajar con audio en
tiempo real, con “tiempo real”, es decir, a acceder a
los procesos relacionados con el audio, sin latencia.
Un ejemplo de latencia es el tiempo o retraso que se
da entre el disparo de una nota en un teclado o
controlador y salida del sonido producido por un
sintetizador virtual a través de los dispositivos de
audio del equipamiento. La latencia también puede
ser detectada, por ejemplo, cuando la señal de audio
de un micrófono conectado a una computadora
atraviesa varios procesadores de efectos, los cuales
realizan una infinidad de cálculos, hasta que llega a la
salida de la placa de sonido. Tanto en Microsoft
Windows como Mac OSX se precisan controladores
especiales para aprovechar el proceso DSP de las
placas de sonido profesionales y no obtener latencia.
En GNU/Linux existe la ventaja de que no se
precisan drivers ni controladores especiales sino que
el sistema se configura para este propósito, desde el
corazón mismo que se denomina: kernel, permitiendo
así mayor control y rendimiento y no dependiendo de
que los fabricantes de los dispositivos de sonido
provean a los usuarios de drivers de baja latencia.
1
Se realizó la determinación de los pasos genarales
para configurar un sistema GNU/Linux optimizado
para el trabajo con audio y MIDI, en base a una de las
distribuciones GNU/Linux más conocidas. Existen
distribuciones pre-armadas para este fin, sin embargo,
la los autores encontraron mejores resultados a través
de la instalación y configuración de las herramientas
desde cero. Se realizó un análisis del funcionamiento
de herramientas de audio especializadas.
2. INSTALACIÓN O COMPILACIÓN DEL
KERNEL REALTIME
El kernel o núcleo es la parte de más bajo nivel del
sistema operativo (o sea, la más cercana al código
máquina) y es la encargada de las tareas básicas del
sistema como el control de memoria, manejo de
procesos, administración del hardware, comunicación
del hardware con el software. Este núcleo es muy
estable en GNU/Linux y altamente configurable
como en ningún otro sistema operativo.
Un kernel real-time, es un kernel modificado que
permite al usuario acceder y manipular procesos o
tareas del sistema, tales como direcciones de
hardware (IRQ) y el reloj de temporización del
kernel, para poder otorgarles alta prioridad a estos, ya
que son claves en en el procesamiento de audio en
tiempo real.
2.1 Instalación de un kernel empaquetado
Lo más sencillo en este paso de configuración es
instalar un kernel precompilado desde una terminal o
consola de texto (también se puede usar software
manejador de paquetes instalables como es el el
gestor de paquetes Synaptic) en distribuciones
derivadas de Debian como Ubuntu se tipea en un
terminal:
sudo aptitude install linux-image-2.6.33-rt
Figura 1: captura de una consola donde se ve el nombre de
usuario y el nombre del host, el signo $ indica que el
usuario no tiene permisos de administrador, por eso se
utiliza el comando “sudo” para obtener permisos y poder
instalar el kernel .
Se describen los siguientes pasos para compilar un
kernel realtime [1]
Primero se deben descargar el código fuente del
kernel desde www.kernel.org, eligiendo la última
versión estable.
Luego se descarga el “parche” para tiempo real
(Patch RT), desde el siguiente sitio:
http://www.kernel.org/pub/linux/kernel/projects/rt/ ,
eligiendo el número de versión que coincida con la
fuente del kernel que se descargó anteriormente (ej:
kernel 2.6.31.4 / patch 2.6.31.4-rt14).
También se deben instalar unos paquetes para poder
realizar la compilación (usando el comando “sudo
su” o “su” simplemente para hacerlo en modo de
administrador o “root” y poder realizar todos los
pasos con los permisos necesarios. La indicación de
usuario root es un signo # en el prompt de la consola
):
$ sudo su
Luego de introducimos la contraseña, se tipea:
# aptitude install kernel-package libncurses5-dev
Suponiendo que se descargó el código fuente del
kernel (en formato tar.bz) y el patch (en formato .gz)
en el escritorio, se abre una consola y como usuario
root se copian los archivos descargados al
directorio /usr/src:
#cp /home/usuario/Desktop/linux-2.6.31.4.tar.bz
/usr/src/
#cp /home/usuario/Desktop/patch-2.6.31.4-rt14.gz
/usr/src/
Desde ese directorio, se descomprimen el kernel y el
patch:
#cd /usr/src
#tar jxvf linux-2.6.31.4.tar.bz
#gunzip patch-2.6.31.4-rt14.gz
La versión del kernel puede cambiar, así que antes es
conveniente hacer una búsqueda de el paquete linuximage y elegir el que se tenga por sufijo “-rt”. Esto
se puede hacer con el gestor de paquetes Synaptic o
con el comando:
Se crea un enlace simbólico al directorio que
permitirá trabajar directamente sobre éste y no en el
directorio mismo:
aptitude search linux-image
Desde el directorio apropiada se aplica la
modificación para tiempo real (real-time patch) al
código fuente del kernel:
2.2 Compilación de un kernel realtime en un
paquete instalable
# ln -s /usr/src/linux-2.6.31.4 /usr/src/linux
# cd /usr/src/linux/
2
# make-kpkg clean
# patch -p1 <../patch-2.6.31.4-rt14
Una vez aplicado el parche, se ejecuta el menú de
configuración, donde es necesario cambiar algunos
valores:
# make menuconfig
Si al kernel se le aplicó el parche RT aparecerá la
siguiente opción a seleccionar:
Processor type and features > Preemption Mode:
Real Time
Se debe modificar la frecuencia a la que trabaja el
reloj del kernel, que es el encargado de interrumpir al
cpu para que pueda decidir atender o no otro proceso:
Processor type and features > Timer frequency:
1000 Hz
Se elige el tipo de microprocesador, según el caso:
Processor type and features > Processor
Family: Pentium4
En los Kernels más recientes, la siguiente opción
viene activada por defecto. Se debe deshabilitar sí o
sí para tener un rendimiento óptimo en el sistema, de
lo contrario dará una advertencia en la carga del
Kernel.
Kernel hacking > Tracers: Desactivado.
Además, se puede desactivar la siguiente opción, ya
que este módulo está deprecado (fuera de interés de
uso y actualización por los desarrolladores):
# make-kpkg --append-to-version=-soundebian-rt
--initrd kernel_image kernel_headers
donde:
--append-to-version: es el nombre de la versión
tendrá el kernel (ej: 2.6.31.5-soundebian-rt).
--initrd: genera un archivo initrd.img que le indica al
kernel que módulos debe levantar al inicio y donde se
ubican estos módulos (en caso de funcionar siempre
se pueden generar a mano con el comando:updateinitramfs -c -k número de versión del kernel)
kernel_image: indica que compile la imágen del
kernel.
kernel_headers: indica que compile los headers del
kernel.
Luego de ejecutar este comando, se compilará el
kernel, este proceso puede durar horas y depende de
la velocidad del procesador.
Una vez terminado el proceso se pueden instalar los
paquetes:
# dpkg -i *.deb
Para equipos con mas de un procesador, se puede
ejecutar el siguiente comando antes de compilar para
reducir el tiempo aprovechando mejor los núcleos
(declara una variable con el número de procesadores
de que se disponga):
# export CONCURRENCY_LEVEL=`expr $(cat
/proc/cpuinfo |grep -i ‘MHz’|wc -l) + 1`
Es muy importante activar los módulos ALSA
(Advanced Linux Sound Architecture) dedicados al
USB-Audio (Device Drivers > Sound). Es muy
importante recordar tildar las opciones del driver
Alsa y el modelo del chip del dispositivo de audio,
por ejemplo en el caso del producto serie Delta de la
marca M-Audio: ICE1712 [Envy24].
Para mas información, se puede visitar la seccińo
FAQ del Kernel donde se amplían los conceptos
básicos para conocer mas en detalle qué es cada
opción que se modifica.
Es importante recalcar que no es necesario compilar
el kernel, la opción más rápida es usar uno
precompilado. De todas maneras y para un
funcionamiento óptimo, se explican los pasos para
que cada usuario elija el nivel de personalización de
su sistema.
Hay muchas opciones para desactivar y optimizar el
kernel pero depende absolutamente del hardware
de cada computadora y del conocimiento que se tenga
de él y de que se conozca el nombre exacto del
módulo que el kernel le asigna. Finalmente se sale del
programa pulsando sobre “Exit” y se guarda el
fichero aceptando la pregunta.
3. ASIGNAR PRIORIDAD A LAS TAREAS
TIMER Y A LAS IRQ [2]
El parche para tiempo real en el kernel compilado
hace disponible varias tareas IRQ, así como una tarea
timer y una hrtimer, en realidad una por cada núcleo
del microprocesador. Pueden visualizarse con el
comando:
OSS (Device Drivers > Sound)
• Se compila el nuevo kernel y se generan los
paquetes .deb con el comando make-kpkg:
# ps -e| grep irq
3
El inconveniente a la hora de asignar prioridades se
presenta con cualquier dispositivo hardware, ya que
el PID puede cambiar, por lo cual se puede utilizar el
comando pgrep para buscar la línea IRQ/30 en los
PID. A continuación se expone como escribir un
pequeño programa (script) con el editor “nano” para
asignar las prioridades:
#nano /etc/init.d/script-rt.sh
Dentro se tipea lo siguiente:
#!/bin/bash
chrt -f -p 99 5
chrt -f -p 99 12
chrt -f -p 99 20
chrt -f -p 99 27
chrt -f -p 99 `pgrep IRQ/30`
Luego se presiona ctrl-x para finalizar y luego s +
<enter> para guardar los cambios.
Este programa funciona de la siguiente manera:
Figura 2: listado de procesos en una consola.
La tarea sirq-timer hace referencia al temporizador
que se usa para controlar la ejecución de los procesos
en el sistema, por eso interesa que tenga alta
prioridad. La tarea sirq-hrtimer (High Resolution
Timer) es el temporizador introducido por Ingo
Molnar[3] y otros, que maneja con precisión las
tareas en sistemas Real Time.
Las interrupciones (IRQ=Interrupt Request - Petición
de Interrupción) son una forma de notificarle al
microprocesador que hay algo que hacer, este
interrumpe lo que está haciendo, atiende la petición y
luego vuelve a lo que estaba haciendo, sin ellas no se
podría tener un sistema multitarea.
Son de interés las tareas: sirq-timer/0, sirq-hrtimer/0
y la IRQ del dispositivo de audio a ubicar.
Si el dispositivo es usb, hay que identificar número
de bus, por ejemplo ehci_hcd:usbx o uhci_hcd:usbx.
Con el comando lsusb se puede obtener el número de
bus usb en la primera columna. En cambio si el
dispositivo de sonido es de tipo firewire habrá que
levantar la prioridad de la tarea ohci1394. [4]
En este caso, observando la primer columna de la
Figura 2, se encuentran los números llamandos PID
(Process ID – Identificadores de Proceso) de cada
tarea, en este caso es necesario elevar la prioridad del
PID numero 5 y 20 como tareas timer, 12 y 27 como
tareas hrtimer y por último el PID 729 de la IRQ/30hda_intel (que es el dispositivo de audio integrado en
el motherboard). En el caso de no poder determinar
cual es la IRQ de la placa de sonido es necesario
emplear el siguiente comando:
chrt: es el comando que asigna la prioridad de
comunicación entre el kernel y el proceso.
-f: SCHED_FIFO, necesario para nuevos kernels.
-p: el valor de la prioridad de ejecución, que varía
entre 0 y 99, donde 99 es Real Time.
5, 12, 20, 27: son los PID de las tareas timer
`pgrep IRQ/30`: es la búsqueda del PID del IRQ de la
placa de sonido y debe estar escrito entre las comillas
`` para mostrar el resultado del comando.
Luego se le deben dar al programa permisos de
ejecución:
# chmod +x script-rt.sh
Y asimismo, crear un enlace simbólico en los niveles
de inicio para que se ejecute al encender el equipo:
# ln -s /etc/init.d/script-rt.sh /etc/rcS.d/S99realtime
Con esto ya queda configurado la base del sistema
real time. Es necesario aclarar que se hace uso de los
métodos manuales para comprender como funciona
cada proceso, pero actualmente muchos pasos están
automatizados, ejemplos de esto son la existencia del
paquete "rtirq-init" en distribuciones como Ubuntu
que automatizan en alguna medida la asignación de
prioridades [4].
#cat /proc/asound/cards
4
4. INSTALACIÓN Y CONFIGURACIÓN DEL
SERVIDOR DE SONIDO DE BAJA LATENCIA
A partir de ahora lo que se necesita es instalar las
herramientas necesarias para gestionar un sistema
GNU/Linux Real Time. Y la más importante es el
servidor de sonido en tiempo real JACK. En
distribuciones como Ubuntu es muy importante
eliminar antes el servidor que viene instalado por
defecto (actualmente Pulseaudio) que interfiere el
buen funcionamiento de JACK:
#aptitude purge pulseaudio
JACK Audio Connection Kit o simplemente JACK es
un servidor de sonido o demonio que provee
conexión con baja latencia entre aplicaciones, para
audio y datos MIDI. Fue creado por Paul Davis y
otros [5]. Para configurar el servidor se utiliza su GUI
o interfaz gráfica llamada QjackCtl, la cual es
necesario instalar:
# aptitude install qjackctl
Esta herramienta automáticamente instala el demonio
jackd como dependencia y se encarga de preguntar al
usuario si quiere asignar altas prioridades al grupo
“audio”, lo cual es indispensable. Esta configuración
se basa en escribir los siguientes parámetros en el
archivo de configuración que se ubica en el directorio
/etc/security/limits.d/audio.conf :
@audio - rtprio 95
@audio - memlock unlimited
#@audio - nice -19
donde:
@audio: es el grupo de GNU/Linux al que
pertenecen todos lo procesos relacionados con el
audio.
rtprio: es la máxima prioridad con que el usuario del
grupo audio puede ejecutar una tarea o proceso
(entendemos por proceso o tarea a un programa en
ejecución, aunque sea en segundo plano).
memlock: es la máxima cantidad de memoria que un
usuario del grupo audio puede bloquear para una
tarea siendo ejecutada en tiempo real.
Nice: es el mínimo de tiempo con que una tarea
puede ser ejecutada, se trata de la predisposición de
una tarea a liberar tiempo de CPU. (Este valor como
ven tiene un símbolo “#” delante, esto significa que
está comentado y no se aplicará lo que indica la línea,
para activarlo solo basta borrar el símbolo).
Ahora se puede ejecutar la aplicación qjackctl desde
consola o desde su acceso directo del menú “Sonido
y video” existente en distribuciones amigables como
Ubuntu. Es necesario configurar para su
funcionamiento óptimo al que se accede presionando
el botón Setup... o Configuración...:
Figura 3 : captura del panel de configuración de qjackctl
Se detallan sus opciones de configuración, las cuales
se pueden optimizar según el equipo informático en
que se utilice:
Realtime (Tiempo real): Este parámetro deberá estar
activado si se desea ejecutar el servidor de audio
JACK en tiempo real.
No Memory Lock (No bloquear memoria): Este
parámetro permite que el rendimiento de la
computadora mejore ya que el servidor no se apodera
de la memoria.
Unlock Memory (Desbloquear memoria): No
bloquear la memoria de las librerías comunes
(GTK+, QT, FLTK, Wine).
Soft Mode (Modo Tolerante): Activando esta opción,
si el equipo no posee la suficiente capacidad de
procesamiento como para mantener el flujo de audio
sin pérdidas (xruns), esta opción hará que JACK trate
de mantener las conexiones aunque no respondan, es
útil cuando no se corre en tiempo real.
Monitor (Monitorear): Provee los puertos para el
monitoreo de la salida.
Force 16 bit (Forzar 16bit): Si se desea trabajar en 16
bits solamente y ahorrar espacio en disco se puede
activar esta opción. De manera predeterminada
trabajará en 32 bit.
H/W Monitor (Monitoreo por Hardware): Habilita el
monitoreo por hardware en los dispositivos que lo
soporten.
Ignore H/W (Ignorar H/W): Ignorar el tamaño del
buffer/período del hardware.
Verbose messages (Mensajes verbosos): Muestra una
información mas detallada en los mensajes del
servidor.
Driver MIDI (seq): Al activar este driver de
secuenciador MIDI, se pueden conectar los
dispositivos software y hardware MIDI desde la
solapa correspondiente.
Priority (Prioridad): Determina la prioridad del
scheduler (planificador del sistema operativo) para
ejecutarse. Debería ser alta por encima de los 70,
también se puede dejar por defecto.
Frames Periods (Cuadros/Períodos): Son los cuadros
o períodos de demora entre llamadas a procesos
relacionados con el audio, cuanto menos más baja es
la latencia o mayor la velocidad de respuesta, con 128
se consigue 5.8 ms de latencia, se puede utilizar 256
también liberando más el cpu consiguiendo 11.4 ms
de latencia. Esto último recomendado en
computadoras más antiguas.
Sample Rate (Frecuencia de muestreo): Es la
Frecuencia de muestreo con que se desea que trabajen
5
todas las aplicaciones conectadas al servidor JACK.
Periods/Buffer (Períodos/Buffer): Es el número de
peeríodos con que se desea que trabaje el hardware.
Cuanto menor es este valor, mayor velocidad de
respuesta y por consiguiente, menor latencia.
Port Maximum (Puertos Máximos): el máximo de
puertos que podrá manejar JACK.
Timeout (Límite de tiempo): Establece el límite de
tiempo a conectarse por los clientes en milisegundos.
Interface: Permite seleccionar el dispositivo de
sonido que utilicemos.
Dither (Suavizado): Permite elegir el tipo de
suavizado o mejor conocido como dither en la
conversión de audio.
Audio: Permite elegir entre las opciones full-duplex
(grabación y reproducción simultánea), solo captura o
solo reproducción.
Input Device (Dispositivo de entrada): Nos permite
seleccionar el dispositivo de entrada, al haber ya
seleccionado nuestra interface de audio se puede
dejar en default.
Output Device (Dispositivo de salida): Permite
seleccionar el dispositivo de salida.
Input Chanels (Canales de Entrada): Se pueden
especificar manualmente la cantidad de canales de
entrada.
Output Chanels (Canales de Salida): Se pueden
especificar manualmente la cantidad de canales de
salida.
Input Latency (Latencia de entrada): Tiempo de
retardo de la entrada del dispostivo de audio, 0 es lo
ideal.
Output Latency (Latencia de Salida): Tiempo de
retardo de la salida externa, 0 es lo ideal.
Latency (Latencia): Aquí se muestra la latencia
obtenida con la configuración del servidor. A partir
de valores mayores a 50ms se vuelve muy perceptible
e incómoda. En GNU/Linux se pueden obtener muy
bajas latencias.
Se pueden instalar con el gestor de paquetes synaptic
o con el comando aptitude en una consola como root,
de la siguiente manera:
#aptitude install ardour
Ardour: Es un DAW (Digital Audio Workstation Estación de trabajo de Audio Digital) programa
multiplataforma de grabación de audio a disco duro.
Rosegarden: Secuenciador Midi-Audio con opción
de edición de partituras.
Nted o Musescore: Editor de Partituras profesional.
Qsynth: Sampler de Sound Fonts.
Hydrogen: Sampler profesional y máquina de
ritmos.
Audacity: Editor de audio multipista.
Zynaddsubfx: Sintetizador virtual, con varios tipos
de síntesis.
Lmms: “Linux Multimedia Estudio” Alternativa para
los usuarios de Fruity Loops. Es un estudio de
producción musical virtual.
Seq24: Secuenciador MIDI, basado en loops, con una
gran simplicidad de manejo .
Tuxguitar: Editor profesional de tablaturas y
partituras para bajo y guitarra.
Linuxsampler, qsampler y gigedit: Linuxsampler
mediante la interface gráfica qsampler y la utilidad de
edición gigedit. Permite usar samples de la aplicación
Gigastudio en GNU/Linux.
Solfege: Entrenador auditivo.
Plugins LADSPA: Linux Audio Developers Simple
Plugin API, LADSPA es un formato libre para los
plug-ins de audio bajo GNU/Linux. Existe gran
cantidad de estos plug-ins, entre los cuales están los
calf-plugins, de los mejor diseñados.
Kdenlive y Cinelerra: Editor no lineal de video.
Live: Software para Vjs.
Mixx: Software para Djs.
5. EL LENGUAJE DE PROGRAMACIÓN
GRÁFICA PURE DATA (Pd) Y SUS
MÚLTIPLES APLICACIONES
Figura 4: captura de pantalla del panel de configuración de
qjackctl.
4. INSTALACIÓN DE APLICACIONES PARA
PRODUCCIÓN MUSICAL
El lenguaje Pure Data [6] es un sistema de
programación gráfica en tiempo real desarrollado por
Miller S. Puckette [7] para la creación de
instrumentos musicales virtuales. Este software está
escrito en base al sistema Max creado por el mismo
autor en 1988. Mientras Max/MSP (para síntesis y
análisis de audio) y Jitter (para aplicaciones de
síntesis de video) son paquetes comerciales[8], Pure
Data es libre y abierto, por lo cual ha sido extendido
y enriquecido por una creciente comunidad de
usuarios y desarrolladores [9].
Un aporte importante en este sentido fue hecho por
Johannes M. Zmölnig, del Institut für Elektronische
Musik und Akustik, Graz, Austria [10], al brindar a la
comunidad un documento con las instrucciones para
la implementación en C/C++ de la creación de
objetos para el lenguaje [11]. Actualmente, Zmölnig
6
está a cargo del mantenimiento de la extensión GEM
para procesamiento de video [12], originalmente
escrita por Mark Danks y portada a GNU/Linux por
Günther Geiger[13].
Una de las más notables características de este
software es la independencia del motor de control de
programa del motor de cálculo de audio. Existe un
comando de teclado (Ctrl+E) que activa o desactiva
el modo edición y otros diferentes que activan (Ctrl+/
) o desactivan (Ctr+.) el cálculo de audio. Esto
permite modificar la aplicación mientras se están
procesando datos, sea de audio o video.
Los elementos básicos del lenguaje son los átomos:
objetos, números, mensajes y bangs; y las
conexiones: de audio y de control. Los objetos
presentan entradas (inlets) y salidas (outlets)
dependiendo de sus características. Los números son
contenedores de enteros o puntos flotantes. Los
mensajes pueden contener números, símbolos,
punteros y/o texto. Asimismo, el lenguaje maneja
vectores bajo el nombre de “arreglos” o “listas”,
dependiendo de si existe o no un gráfico asociado a
él. Los bangs son impulsos transmitidos entre objetos
que dan inicio o fin a procesos diversos de audio y/o
control, como cálculos, ruteos, escritura a disco, etc.
Pure Data posee también objetos gráficos como
perillas y deslizadores, así como también pulsadores
e interruptores. Los objetos se conectan entre sí
mediante cables de dos tipos: audio y control. La
diferencia entre estos “cables” es la tasa de muestreo
de sus señales, siendo 1KHz para la de control y la de
audio de acuerdo con los parámetros del hardware
(por ej: 44.1KHz).
Pduino se puede operar de manera bidireccional con
el hardware libre Arduino [15, 16].
De esta manera se logra una gran versatilidad y
amplias posibilidades de aplicación.
En la actualidad, existen bibliotecas de objetos y
extensiones para utilizar Pure Data en aplicaciones de
audio, video, robótica, páginas web, composición y
ejecución a través de redes, modelado físico, realidad
virtual, etc. Incluso ha sido portado a diferentes
plataformas móviles, como Android, iPhoneOS o
Maemo.
6. CONCLUSIONES
Se realizó un relevamiento de los sistemas operativos
libres de mayor popularidad y de las aplicaciones
existentes para producción y procesamiento de audio
en tiempo real con alta estabilidad.
Se presentaron las posibilidades y ventajas de la
configuración de un sistema GNU/Linux en tiempo
real, así como también la instalación y uso de
alternativas libres y gratuitas para la creación de
música y aplicaciones de audio, extensibles a video,
robótica, etc.
Es necesario destacar la posibilidad de implementar
software de investigación a partir de estos sistemas
GNU/Linux por su estabilidad y confiabilidad.
En base a lo expuesto, se concluye que es posible
realizar actividades de creación, procesamiento de
información e investigación científica no sólo dentro
del campo del audio, sino también el video, la
robótica y la tecnología de la información con
herramientas libres de alta estabilidad basadas en
sistemas GNU/Linux en tiempo real.
7. REFERENCIAS
Figura 5: captura de pantalla de un programa de paneo
equipotencial escrito en el lenguaje gráfico Pure Data.
En la Figura 5 se puede apreciar el interior de un
módulo de paneo equipotencial, creado por HansChristoph Steiner[14].
Otra de las características importantes del lenguaje es
el encapsulamiento, es decir, la posibilidad de
creación de sub-patches o subrutinas que pueden ser
invocadas en programas que los contienen.
El sistema se comunica con el hardware de audio y
MIDI de manera nativa, así como también puede
hacerlo mediante OSC (Open Sound Control) a través
de conexiones TCP-IP. Utilizando la extensión
[1] Segreto Esteban y González Ferreira Gabriel N.
Soundebian, Sitio web sobre Debian GNU/Linux
aplicado a la producción musical, Como compilar
nuestro
propio
Kernel
RT
en
deb.
http://www.soundebian.com.ar/2009/10/comocompilar-nuestro-propio-kernel-rt-en-deb/. Revisión
10:37 hs , 26 de Octubre de 2009, 2005.
[2] González Ferreira Gabriel N. “Software Libre y
producción musical”. Primeras Jornadas Regionales
de Acústica AdAA 2009. Volumen 1, pp. 73-78.
Editorial Magenta. Rosario, Argentina. Noviembre
2009.
[3] Wikipedia, Online encyclopedia.
Http://en.wikipedia.org/wiki/Ingo_Molnár
[4] http://semicorchux.blogspot.com/2010/05/elscript-rtirq-en-ubuntustudio.html
[5] Real-Time Linux Wiki.
http://rt.wiki.kernel.org/index.php/Main_Page
[6] http://puredata.info/
[7] http://crca.ucsd.edu/~msp/
[8] http://www.cycling74.com/
7
[9] http://puredata.hurleur.com/
[10] http://iem.at/
[11] http://pdstatic.iem.at/externals-HOWTO/pdexternals-HOWTO.pdf
[12] http://gem.iem.at/
[13] http://gem.iem.at/Members/Geiger/
[14] http://at.or.ar/hans/cv.html
[15] http://www.arduino.cc/
[16] http://www.arduino.cc/playground/Interfacing/
PD/
8
View publication stats
Descargar