Você está na página 1de 8

2o Congreso Internacional de Acstica UNTREF

Septiembre 2010, Argentina

SOFTWARE LIBRE Y PRODUCCIN MUSICAL


GABRIEL NICOLS GONZLEZ FERREIRA1, GUSTAVO EDUARDO CARR2
1

Administrador de Sistemas GNU/Linux aprobado por RD. N 136/04 Artculo 2, refrentada por O.C.A. N334/05 Facultad de Ingeniera. Universidad Nacional de Mar del Plata, Argentina. gabrielinuz@gmail.com 2 Instituto de Investigacin en Ciencia y Tecnologa de Materiales (INTEMA), Universidad Nacional de Mar del Plata. Provincia de Buenos Aires, Argentina. gecarr@fi.mdp.edu.ar

Resumen Se investig en las posibilidades de utilizacin de software libre para creacin y procesamiento de audio en tiempo real. Se realiz una introduccin a la instalacin y uso de distintas distribuciones GNU/Linux. Se describieron las configuraciones necesarias para el trabajo en produccin musical con un sistema operativo informtico GNU/Linux logrando el mejor aprovechamiento del hardware indicado (procesamiento en tiempo real de los dispositivos de audio). Adems se enumeraron aplicaciones profesionales utilizadas para este cometido, (estacin digital de trabajo de audio, secuenciadores, samplers, plugins de efectos, sintetizadores virtuales, software de masterizacin), desde la generacin de sonidos hasta la post-produccin y masterizacin digital de audio. Por ltimo se present uno de los ms poderosos, verstiles y conocidos lenguajes grficos para la creacin de aplicaciones multimedia y cientficas: Pure Data. Mediante este software se expanden las posibilidades hacia la produccin audiovisual y de tecnologas de la informacin utilizando sistemas operativos GNU/Linux de alta confiabilidad y estabilidad en tiempo real.

1. INTRODUCCIN En el presente trabajo se investig acerca de la posibilidad de utilizar software libre para la produccin musica y procesamiento de seales en tiempo real tanto para ser aplicado tanto en el arte como en la investigacin cientfica. Esta investigacin 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 comn por parte del conjunto de usuarios, artistas e investigadores cientficos. Antes que nada debemos saber que el software libre es aqul que permite: 0. Usar el computador con cualquier propsito. 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 distribucin y/o empaquetado). 3. Mejorar el software y publicar las modificaciones para beneficio de la comunidad . En este trabajo, se denomina como Distribucin del Sistema GNU/Linux al sistema operativo que cada individuo u empresa puede armar para uso comercial

o no ms el conjunto de software seleccionado para desarrollar sus actividades. El objetivo particular de este trabajo es mostrar como cualquier distribucin 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 travs de los dispositivos de audio del equipamiento. La latencia tambin puede ser detectada, por ejemplo, cuando la seal de audio de un micrfono conectado a una computadora atraviesa varios procesadores de efectos, los cuales realizan una infinidad de clculos, 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 propsito, desde el corazn 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 determinacin 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 ms conocidas. Existen distribuciones pre-armadas para este fin, sin embargo, la los autores encontraron mejores resultados a travs de la instalacin y configuracin de las herramientas desde cero. Se realiz un anlisis del funcionamiento de herramientas de audio especializadas. 2. INSTALACIN O COMPILACIN DEL KERNEL REALTIME El kernel o ncleo es la parte de ms bajo nivel del sistema operativo (o sea, la ms cercana al cdigo mquina) y es la encargada de las tareas bsicas del sistema como el control de memoria, manejo de procesos, administracin del hardware, comunicacin del hardware con el software. Este ncleo es muy estable en GNU/Linux y altamente configurable como en ningn 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 temporizacin del kernel, para poder otorgarles alta prioridad a estos, ya que son claves en en el procesamiento de audio en tiempo real. 2.1 Instalacin de un kernel empaquetado Lo ms sencillo en este paso de configuracin es instalar un kernel precompilado desde una terminal o consola de texto (tambin 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

Se describen los siguientes pasos para compilar un kernel realtime [1] Primero se deben descargar el cdigo fuente del kernel desde www.kernel.org, eligiendo la ltima versin 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 nmero de versin que coincida con la fuente del kernel que se descarg anteriormente (ej: kernel 2.6.31.4 / patch 2.6.31.4-rt14). Tambin se deben instalar unos paquetes para poder realizar la compilacin (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 indicacin de usuario root es un signo # en el prompt de la consola): $ sudo su Luego de introducimos la contrasea, se tipea: # aptitude install kernel-package libncurses5-dev Suponiendo que se descarg el cdigo 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 Se crea un enlace simblico al directorio que permitir trabajar directamente sobre ste y no en el directorio mismo: # ln -s /usr/src/linux-2.6.31.4 /usr/src/linux Desde el directorio apropiada se aplica la modificacin para tiempo real (real-time patch) al cdigo fuente del kernel: # cd /usr/src/linux/
2

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 .

La versin del kernel puede cambiar, as que antes es conveniente hacer una bsqueda 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: aptitude search linux-image 2.2 Compilacin de un kernel realtime en un paquete instalable

# make-kpkg clean # patch -p1 <../patch-2.6.31.4-rt14 Una vez aplicado el parche, se ejecuta el men de configuracin, donde es necesario cambiar algunos valores: # make menuconfig Si al kernel se le aplic el parche RT aparecer la siguiente opcin 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, segn el caso: Processor type and features > Processor Family: Pentium4 En los Kernels ms recientes, la siguiente opcin 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. Adems, se puede desactivar la siguiente opcin, ya que este mdulo est deprecado (fuera de inters de uso y actualizacin por los desarrolladores): OSS (Device Drivers > Sound) Es muy importante activar los mdulos 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]. 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 mdulo que el kernel le asigna. Finalmente se sale del programa pulsando sobre Exit y se guarda el fichero aceptando la pregunta. Se compila el nuevo kernel y se generan los paquetes .deb con el comando make-kpkg: # make-kpkg --append-to-version=-soundebian-rt --initrd kernel_image kernel_headers donde: --append-to-version: es el nombre de la versin tendr el kernel (ej: 2.6.31.5-soundebian-rt). --initrd: genera un archivo initrd.img que le indica al kernel que mdulos debe levantar al inicio y donde se ubican estos mdulos (en caso de funcionar siempre se pueden generar a mano con el comando:updateinitramfs -c -k nmero de versin del kernel) kernel_image: indica que compile la imgen 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 ncleos (declara una variable con el nmero de procesadores de que se disponga): # export CONCURRENCY_LEVEL=`expr $(cat /proc/cpuinfo |grep -i MHz|wc -l) + 1` Para mas informacin, se puede visitar la seccio FAQ del Kernel donde se amplan los conceptos bsicos para conocer mas en detalle qu es cada opcin que se modifica. Es importante recalcar que no es necesario compilar el kernel, la opcin ms rpida es usar uno precompilado. De todas maneras y para un funcionamiento ptimo, se explican los pasos para que cada usuario elija el nivel de personalizacin de su sistema. 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 ncleo del microprocesador. Pueden visualizarse con el comando: # ps -e| grep irq

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 lnea IRQ/30 en los PID. A continuacin se expone como escribir un pequeo 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 ejecucin 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 precisin las tareas en sistemas Real Time. Las interrupciones (IRQ=Interrupt Request - Peticin de Interrupcin) son una forma de notificarle al microprocesador que hay algo que hacer, este interrumpe lo que est haciendo, atiende la peticin y luego vuelve a lo que estaba haciendo, sin ellas no se podra tener un sistema multitarea. Son de inters 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 nmero de bus, por ejemplo ehci_hcd:usbx o uhci_hcd:usbx. Con el comando lsusb se puede obtener el nmero 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 nmeros 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: #cat /proc/asound/cards

chrt: es el comando que asigna la prioridad de comunicacin entre el kernel y el proceso. -f: SCHED_FIFO, necesario para nuevos kernels. -p: el valor de la prioridad de ejecucin, que vara 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 bsqueda 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 ejecucin: # chmod +x script-rt.sh Y asimismo, crear un enlace simblico 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 mtodos manuales para comprender como funciona cada proceso, pero actualmente muchos pasos estn automatizados, ejemplos de esto son la existencia del paquete "rtirq-init" en distribuciones como Ubuntu que automatizan en alguna medida la asignacin de prioridades [4].

4. INSTALACIN Y CONFIGURACIN 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 ms 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 conexin 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 grfica llamada QjackCtl, la cual es necesario instalar: # aptitude install qjackctl Esta herramienta automticamente 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 configuracin se basa en escribir los siguientes parmetros en el archivo de configuracin 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 mxima prioridad con que el usuario del grupo audio puede ejecutar una tarea o proceso (entendemos por proceso o tarea a un programa en ejecucin, aunque sea en segundo plano). memlock: es la mxima cantidad de memoria que un usuario del grupo audio puede bloquear para una tarea siendo ejecutada en tiempo real. Nice: es el mnimo de tiempo con que una tarea puede ser ejecutada, se trata de la predisposicin de una tarea a liberar tiempo de CPU. (Este valor como ven tiene un smbolo # delante, esto significa que est comentado y no se aplicar lo que indica la lnea, para activarlo solo basta borrar el smbolo). Ahora se puede ejecutar la aplicacin 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 botn Setup... o Configuracin...:

Figura 3 : captura del panel de configuracin de qjackctl

Se detallan sus opciones de configuracin, las cuales se pueden optimizar segn el equipo informtico en que se utilice: Realtime (Tiempo real): Este parmetro deber estar activado si se desea ejecutar el servidor de audio JACK en tiempo real. No Memory Lock (No bloquear memoria): Este parmetro 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 libreras comunes (GTK+, QT, FLTK, Wine). Soft Mode (Modo Tolerante): Activando esta opcin, si el equipo no posee la suficiente capacidad de procesamiento como para mantener el flujo de audio sin prdidas (xruns), esta opcin 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 opcin. 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 tamao del buffer/perodo del hardware. Verbose messages (Mensajes verbosos): Muestra una informacin 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. Debera ser alta por encima de los 70, tambin se puede dejar por defecto. Frames Periods (Cuadros/Perodos): Son los cuadros o perodos de demora entre llamadas a procesos relacionados con el audio, cuanto menos ms baja es la latencia o mayor la velocidad de respuesta, con 128 se consigue 5.8 ms de latencia, se puede utilizar 256 tambin liberando ms el cpu consiguiendo 11.4 ms de latencia. Esto ltimo recomendado en computadoras ms 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 (Perodos/Buffer): Es el nmero de peerodos 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 Mximos): el mximo de puertos que podr manejar JACK. Timeout (Lmite de tiempo): Establece el lmite 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 conversin de audio. Audio: Permite elegir entre las opciones full-duplex (grabacin y reproduccin simultnea), solo captura o solo reproduccin. 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 configuracin del servidor. A partir de valores mayores a 50ms se vuelve muy perceptible e incmoda. 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 Estacin de trabajo de Audio Digital) programa multiplataforma de grabacin de audio a disco duro. Rosegarden: Secuenciador Midi-Audio con opcin de edicin de partituras. Nted o Musescore: Editor de Partituras profesional. Qsynth: Sampler de Sound Fonts. Hydrogen: Sampler profesional y mquina de ritmos. Audacity: Editor de audio multipista. Zynaddsubfx: Sintetizador virtual, con varios tipos de sntesis. Lmms: Linux Multimedia Estudio Alternativa para los usuarios de Fruity Loops. Es un estudio de produccin 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 grfica qsampler y la utilidad de edicin gigedit. Permite usar samples de la aplicacin 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 estn los calf-plugins, de los mejor diseados. Kdenlive y Cinelerra: Editor no lineal de video. Live: Software para Vjs. Mixx: Software para Djs. 5. EL LENGUAJE DE PROGRAMACIN GRFICA PURE DATA (Pd) Y SUS MLTIPLES APLICACIONES El lenguaje Pure Data [6] es un sistema de programacin grfica en tiempo real desarrollado por Miller S. Puckette [7] para la creacin de instrumentos musicales virtuales. Este software est escrito en base al sistema Max creado por el mismo autor en 1988. Mientras Max/MSP (para sntesis y anlisis de audio) y Jitter (para aplicaciones de sntesis 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. Zmlnig, del Institut fr Elektronische Musik und Akustik, Graz, Austria [10], al brindar a la comunidad un documento con las instrucciones para la implementacin en C/C++ de la creacin de objetos para el lenguaje [11]. Actualmente, Zmlnig
6

Figura 4: captura de pantalla del panel de configuracin de qjackctl.

4. INSTALACIN DE APLICACIONES PARA PRODUCCIN MUSICAL

est a cargo del mantenimiento de la extensin GEM para procesamiento de video [12], originalmente escrita por Mark Danks y portada a GNU/Linux por Gnther Geiger[13]. Una de las ms notables caractersticas de este software es la independencia del motor de control de programa del motor de clculo de audio. Existe un comando de teclado (Ctrl+E) que activa o desactiva el modo edicin y otros diferentes que activan (Ctrl+/) o desactivan (Ctr+.) el clculo de audio. Esto permite modificar la aplicacin mientras se estn procesando datos, sea de audio o video. Los elementos bsicos del lenguaje son los tomos: objetos, nmeros, mensajes y bangs; y las conexiones: de audio y de control. Los objetos presentan entradas (inlets) y salidas (outlets) dependiendo de sus caractersticas. Los nmeros son contenedores de enteros o puntos flotantes. Los mensajes pueden contener nmeros, smbolos, punteros y/o texto. Asimismo, el lenguaje maneja vectores bajo el nombre de arreglos o listas, dependiendo de si existe o no un grfico asociado a l. Los bangs son impulsos transmitidos entre objetos que dan inicio o fin a procesos diversos de audio y/o control, como clculos, ruteos, escritura a disco, etc. Pure Data posee tambin objetos grficos como perillas y deslizadores, as como tambin 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 seales, siendo 1KHz para la de control y la de audio de acuerdo con los parmetros 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 aplicacin. En la actualidad, existen bibliotecas de objetos y extensiones para utilizar Pure Data en aplicaciones de audio, video, robtica, pginas web, composicin y ejecucin a travs de redes, modelado fsico, realidad virtual, etc. Incluso ha sido portado a diferentes plataformas mviles, 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 produccin y procesamiento de audio en tiempo real con alta estabilidad. Se presentaron las posibilidades y ventajas de la configuracin de un sistema GNU/Linux en tiempo real, as como tambin la instalacin y uso de alternativas libres y gratuitas para la creacin de msica y aplicaciones de audio, extensibles a video, robtica, etc. Es necesario destacar la posibilidad de implementar software de investigacin 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 creacin, procesamiento de informacin e investigacin cientfica no slo dentro del campo del audio, sino tambin el video, la robtica y la tecnologa de la informacin con herramientas libres de alta estabilidad basadas en sistemas GNU/Linux en tiempo real.

7. REFERENCIAS [1] Segreto Esteban y Gonzlez Ferreira Gabriel N. Soundebian, Sitio web sobre Debian GNU/Linux aplicado a la produccin musical, Como compilar nuestro propio Kernel RT en deb. http://www.soundebian.com.ar/2009/10/comocompilar-nuestro-propio-kernel-rt-en-deb/. Revisin 10:37 hs , 26 de Octubre de 2009, 2005. [2] Gonzlez Ferreira Gabriel N. Software Libre y produccin musical. Primeras Jornadas Regionales de Acstica AdAA 2009. Volumen 1, pp. 73-78. Editorial Magenta. Rosario, Argentina. Noviembre 2009. [3] Wikipedia, Online encyclopedia. Http://en.wikipedia.org/wiki/Ingo_Molnr [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

Figura 5: captura de pantalla de un programa de paneo equipotencial escrito en el lenguaje grfico Pure Data.

En la Figura 5 se puede apreciar el interior de un mdulo de paneo equipotencial, creado por HansChristoph Steiner[14]. Otra de las caractersticas importantes del lenguaje es el encapsulamiento, es decir, la posibilidad de creacin 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 tambin puede hacerlo mediante OSC (Open Sound Control) a travs de conexiones TCP-IP. Utilizando la extensin

[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/

Você também pode gostar