Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo,...

26
Aplicaciones de audio para tarjetas de desarrollo: procesador de efectos de código abierto Enrique García Manuales y tutoriales gob.mx/cultura

Transcript of Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo,...

Page 1: Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo, usaremos un proyecto sencillo. Planteando un procesador de efectos de audio donde puedas

Aplicaciones de audio para tarjetas de desarrollo: procesador de efectos de código abierto

Enrique García

M a n u a l e sy t u t o r i a l e s

gob.mx/cultura

Page 2: Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo, usaremos un proyecto sencillo. Planteando un procesador de efectos de audio donde puedas

Aplicaciones de audio para tarjetas de desarrollo 2

Introducción

Las nuevas plataformas de desarrollo tecnológico te permiten ampliar las capacidades técnicas al desarrollar tus proyectos artísticos. La creciente oferta de microcomputadoras a manera de tarjetas de desarrollo, abre la posibilidad de utilizar estos disposi-tivos para la generación y procesamiento de audio mediante herramientas de libre modif icación.

En este tutorial encontrarás los procesos técnicos detallados para la generación de un proyecto de audio con la tarjeta de desarrollo BeagleBone Black. Implementarás una solución simple a necesidades de entrada y salida de audio, así como de la creación de una interfaz gráfica para el control de parámetros del audio resultante.

Aplicaciones de audio para tarjetas de desarrollo: procesador de efectos de código abiertoEnrique García

Page 3: Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo, usaremos un proyecto sencillo. Planteando un procesador de efectos de audio donde puedas

Aplicaciones de audio para tarjetas de desarrollo 3

Para cubrir los aspectos clave que permiten trabajar con audio en tarjetas de desarrollo, usaremos un proyecto sencillo. Planteando un procesador de efectos de audio donde puedas conectar un instrumento musical, procesar su sonido y modificar la forma en como se afecta la entrada de sonido. Para esta implementación usarás principalmente el lenguaje gráfico Pure Data (PD) ya que, debido a su portabilidad, puedes incorporarlo a esta plataforma de una manera sencilla, además usarás scripts en el lenguaje Python para crear una interconexión con los controles externos a tu procesador de Audio en PD.

Como última instancia, generarás las rutinas necesarias para que el dispositivo sea autónomo y realice el procesamiento sin necesidad de tener una pantalla o estar conectado a otra computadora. Resulta importante aclarar que este dispositivo tiene como característica el poder modificarse hacia las necesidades particulares de otros proyectos.

Page 4: Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo, usaremos un proyecto sencillo. Planteando un procesador de efectos de audio donde puedas

Aplicaciones de audio para tarjetas de desarrollo 4

Materiales

- Beaglebone Black- Tarjeta SD clase 10, 16GB Kingston- Tarjeta de Audio USB Syba- Protoboard- Resistencia 1kΩ- Potenciómetro 10kΩ- Switch

Page 5: Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo, usaremos un proyecto sencillo. Planteando un procesador de efectos de audio donde puedas

Aplicaciones de audio para tarjetas de desarrollo 5

Inicializando BeagleBone Black

La tarjeta BeagleBone Black funciona mediante un sistema operativo inicializado desde una tarjeta SD, por lo tanto, es necesario descargar una imagen de un sistema operativo, Debian para este caso. Puedes descargarlo desde la siguiente página: https://beagleboard.org/latest-images, busca la última versión de Debian for BeagleBone.

Debian es una distribución de Linux, mediante el programa Pi Filler se montará en la tarjeta SD como imagen de disco. En el siguiente link puede conseguirse el programa: http://ivanx.com/raspberrypi/

Se recomienda formatear la tarjeta SD con el programa SD Formatter para asegurar que se encuentre en el formato correcto, este se puede descargar aquí: https://www.sdcard.org/downloads/formatter/

Page 6: Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo, usaremos un proyecto sencillo. Planteando un procesador de efectos de audio donde puedas

Aplicaciones de audio para tarjetas de desarrollo 6

Antes de comenzar, formatea tu tarjeta SD con SD Formatter, utiliza la opción de Quick Format.

Ahora, instala y abre Pi Filler. Te pedirá seleccionar la imágen de Debian que descargaste previamente, una vez seleccionada, sigue las instrucciones presentadas en pantalla.

Page 7: Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo, usaremos un proyecto sencillo. Planteando un procesador de efectos de audio donde puedas

Aplicaciones de audio para tarjetas de desarrollo 7

Page 8: Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo, usaremos un proyecto sencillo. Planteando un procesador de efectos de audio donde puedas

Aplicaciones de audio para tarjetas de desarrollo 8

Una vez lista la tarjeta de memoria, inserta la tarjeta BeagleBone y conéctala a una computadora vía USB.

Accede a la tarjeta Beaglebone como un disco extraible, allí encontrarás los drivers necesarios para nuestro sistema operativo,-MacOSX en este ejemplo.

Page 9: Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo, usaremos un proyecto sencillo. Planteando un procesador de efectos de audio donde puedas

Aplicaciones de audio para tarjetas de desarrollo 9

Una vez instalados dichos drivers, abre la terminal e inserta la siguiente línea de comando, esta línea te permitirá comunicarte con la BeagleBone por vía remota.

Seguramente te pedirá autorización para el acceso a este dispositivo, después habrás integrado el mismo sin necesidad de una contraseña.

Dependiendo la capacidad de la tarjeta SD que uses, tendrás que expandir el sistema de archivos accediendo a la tabla de particiones mediante:

fdisk /dev/mmcblk0

Una vez dentro de esta utilidad, presiona d para borrar la partición y luego 2 para seleccionar la segunda, a continuación, agrega una nueva partición con n y p indicando que es primaria, usa 2 para crear este número de particiones. Te pedirá ingresar el tamaño de los bloques de memoria, deja los indicados como preestablecidos y guarda los cambios presionando w.

Page 10: Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo, usaremos un proyecto sencillo. Planteando un procesador de efectos de audio donde puedas

Aplicaciones de audio para tarjetas de desarrollo 10

Una vez hecha la partición, reinicia el dispositivo con el siguiente comando:

Shutdown -r now

Ahora debes llenar la imagen con la tabla de partición extendida:

resize2fs /dev/mmcblk0p2

Reinicia una vez más. Una vez reiniciada, tu BeagleBone será funcional para usar como microcomputadora.

Instalando programas a usar

Como se mencionó anteriormente, usarás principalmente Pure Data para el audio y scripts de Python para la interfaz física.

El sistema de actualización e instalación principal en Debian es apt-get, por lo cual debes editar la lista de fuentes con un editor de texto sencillo llamado nano. Desde este momento lo usarás de forma recurrente.

Con la siguiente línea, abre la lista de fuentes:

nano /etc/apt/sources.list

Agrega al final del archivo:

de bhttp://apt.puredata.info/releases wheezy main

Page 11: Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo, usaremos un proyecto sencillo. Planteando un procesador de efectos de audio donde puedas

Aplicaciones de audio para tarjetas de desarrollo 11

Para guardar los cambios usa Ctrl-O y Ctrl-X para salir, una vez guardado este documento, actualiza la hora y fecha de tu BeagleBone mediante el comando:

sudo ntpdate poo.ntp.org

Ahora actualiza el repositorio de apt-get para después instalar PD y herramientas de Python y ALSA (el servidor de Audio para la BeagleBone):

apt-get updateapt-get install puredata pd-extended build-essential python-dev python-pip -y --force-yessudo apt-get install alsa-base alsa-utils

Y finalmente instala la biblioteca de GPIO para BeagleBone de Adafruit

sudo pip install Adafruit_BBIO

Page 12: Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo, usaremos un proyecto sencillo. Planteando un procesador de efectos de audio donde puedas

Aplicaciones de audio para tarjetas de desarrollo 12

Configuraciones de Audio y Video

La tarjeta BeagleBone Black no cuenta con una salida analógica de sonido, sin embargo, lo envía a través de su puerto HDMI, para poder acceder a él de manera separada, deshabilita este puerto y configura la salida de sonido por la tarjeta USB. Esto puedes hacerlo accediendo a un archivo de configuración; para desplazarte entre carpetas del sistema, usa el comando cd seguido de la dirección de la carpeta que quieras acceder, en este caso es el:

cd /boot/nano

Donde se encuentra alojado el archivo uEnv.txt puedes abrirlo con nano, una vez en el editor, quita el signo # a la línea de código indicada en la imagen, esto habilita la ejecución de dicho comando

Ahora busca el archivo de configuración para dispositivos de sonido

/lib/modprobe.d/aliases.conf

Page 13: Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo, usaremos un proyecto sencillo. Planteando un procesador de efectos de audio donde puedas

Aplicaciones de audio para tarjetas de desarrollo 13

Al abrirlo con el editor nano encontrarás lo siguiente:

Cambia el índice de la siguiente línea a -1

options snd-usb-audio index=-2

Guarda y cierra el archivo para reiniciar la BeagleBone con la tarjeta de audio ya conectada; una vez reiniciada, puedes hacer pruebas para saber si la tarjeta está siendo detectada con: aplay -1, se enlistarán todos los dispositivos de audio.

Page 14: Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo, usaremos un proyecto sencillo. Planteando un procesador de efectos de audio donde puedas

Aplicaciones de audio para tarjetas de desarrollo 14

Puedes ajustar los niveles de entrada y salida mediante

alsamixer

Y guardar los valores con la línea

alsactl store

Creando procesamiento de AudioPara el manejo de la salida y entrada de audio, abre PD y guarda en un patch el proceso que buscas realizar con el mismo; ejecuta en la consola puredata y una interfaz gráfica aparecerá en la pantalla, para esto debes instalar XQuartz en la computadora.

Esta es la interfaz principal de PD y la consola del mismo, puedes monitorear los procesos y errores que ejecutes de manera gráfica dentro de nuestro patch.

Page 15: Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo, usaremos un proyecto sencillo. Planteando un procesador de efectos de audio donde puedas

Aplicaciones de audio para tarjetas de desarrollo 15

Puede iniciar un nuevo patch tecleando Ctrl+N, donde se programará todo el procesamiento de audio.

De manera muy general, PD es un entorno en el cuál interaccionan objetos con mensajes de otros objetos para el manejo y modificación de audio y datos principalmente, desde el menú Media/test Audio and MIDI es posible hacer una prueba. Conecta audífonos o un sistema de sonido a la tarjeta USB para comprobar que la configu-ración fue correcta.

A continuación se detallará un programa simple para procesar sonido con este dispositivo, sin embargo, está abierto a compleji-zarse o cambiar la funcionalidad basándose en los principios básicos que se mostrarán a continuación:

El primer objeto es la entrada del convertidor analógico a digital, sus

Page 16: Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo, usaremos un proyecto sencillo. Planteando un procesador de efectos de audio donde puedas

Aplicaciones de audio para tarjetas de desarrollo 16

salidas nos darán la línea de audio que conectemos a la tarjeta USB.

Agrega el objeto que reproducirá en la salida de audio toda señal

que mandes, en este caso, conéctalo directo a la entrada.

Por medio de este nuevo objeto, escribe una línea de delay a partir

Page 17: Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo, usaremos un proyecto sencillo. Planteando un procesador de efectos de audio donde puedas

Aplicaciones de audio para tarjetas de desarrollo 17

de la señal entrante.

Haz la lectura de esta línea de delay enviada hacia la salida de audio. Puedes modular el tiempo de retraso a partir de un slider, este puede ser mapeado de 0 a 1000 milisegundos por medio de su ventana de propiedades al hacer click derecho sobre él.

Page 18: Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo, usaremos un proyecto sencillo. Planteando un procesador de efectos de audio donde puedas

Aplicaciones de audio para tarjetas de desarrollo 18

Page 19: Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo, usaremos un proyecto sencillo. Planteando un procesador de efectos de audio donde puedas

Aplicaciones de audio para tarjetas de desarrollo 19

Añade una multiplicación antes de la salida de audio para poder multiplicar por 0 y 1 con un objeto toggle, de esta forma podrás apagar o prender la salida del delay.

El patch final contiene los objetos que hacen la conexión por red a la interfaz esquematizada a continuación, estos hacen una conexión por TCP. Se ha dejado una para los valores digitales en el puerto 13132, el cual va directo al toggle para activar o desactivar, y otra para lecturas analógicas en el 13131 que se multiplica para mapear el valor a nuestro slider de tiempo de retraso. También se agrega un inicializador del Audio de PD con un pequeño retraso para hacer el proceso automático.

Page 20: Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo, usaremos un proyecto sencillo. Planteando un procesador de efectos de audio donde puedas

Aplicaciones de audio para tarjetas de desarrollo 20

Construyendo la interfaz físicaLa interfaz física aquí mostrada es muy básica pero demuestra los conceptos fundamentales para tener una señal analógica y otra discreta que pueden modificar parámetros del patch en PD; para generarla se accede al GPIO de la BeagleBone por medio de Python y se da la lectura de dos puertos. A continuación puedes ver un esquema de los puertos disponibles y sus funciones:

Page 21: Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo, usaremos un proyecto sencillo. Planteando un procesador de efectos de audio donde puedas

Aplicaciones de audio para tarjetas de desarrollo 21

Page 22: Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo, usaremos un proyecto sencillo. Planteando un procesador de efectos de audio donde puedas

Aplicaciones de audio para tarjetas de desarrollo 22

Para generar los scripts usa el editor nano para crear un nuevo archivo, a continuación se muestran los códigos para cada una de las lecturas:

Guarda el primer script con Ctrl+O nombrándolo pyADC.py y el segundo pyGPIO.py

Una vez guardados, procede a implementar el circuito que se comunicará con los puertos GPIO, como se ve en el esquemático realizado en Fritzing:

Page 23: Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo, usaremos un proyecto sencillo. Planteando un procesador de efectos de audio donde puedas

Aplicaciones de audio para tarjetas de desarrollo 23

Para la lectura analógica usa el Pin 9-36, el cual irá conectado a la salida de un potenciómetro que a su vez está alimentado por la tierra y el voltaje directo del ADC; utiliza también el Pin 8-12 para la salida de un switch, está debe conectarse a una resistencia pull-down y estar alimentado por la tierra y el voltaje del GPIO.

Automatizando procesosPara finalizar, realiza los scripts que se ejecutarán para inicializar el dispositivo sin necesidad de una computadora externa. Esto se realiza por medio del programa crontab, el cual te permite agendar ejecución de líneas de comandos. Abre la herramienta: crontab -e

Al final del archivo escribe:

@reboot sh /root/startup.sh

Page 24: Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo, usaremos un proyecto sencillo. Planteando un procesador de efectos de audio donde puedas

Aplicaciones de audio para tarjetas de desarrollo 24

Este archivo se ejecutará en cada reinicio de la BeagleBone. Debes crear un programa sh a continuación, da inicio dentro de este programa a PD y los scripts de Python necesarios para tu proyecto; ve al directorio principal mediante cd y abre nano para crear un nuevo archivo que guardarás como startup.sh

Una vez guardado este archivo, puedes probar a reiniciar la tarjeta y conectar un instrumento de entrada vía la tarjeta de sonido y un amplificador a la salida. Recuerda que puedes alimentar la BeagleBone desde un cargador externo dando independencia al procesador de efectos y así concluye el proyecto.

Page 25: Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo, usaremos un proyecto sencillo. Planteando un procesador de efectos de audio donde puedas

¿Necesitas ayuda con tu proyecto?

El Centro Multimedia ofrece asesorías gratuitas en línea. Es necesario entrar en http://cmm.cenart.gob.mx/cursos/asesorias.html y completar el formulario.

**Las asesorías en línea estarán disponibles por poco tiempo**

Page 26: Aplicaciones de audio para tarjetas de desarrollo: procesador de ... · tarjetas de desarrollo, usaremos un proyecto sencillo. Planteando un procesador de efectos de audio donde puedas

Aplicaciones de audio para tarjetas de desarrollo:procesador de efectosde código abierto

Laboratorio de Audio

Enrique García

C D M X / 2 0 2 0

CENTRO NACIONAL DE LAS ARTES