Está en la página 1de 28

Computación de audio: producción e

investigación
[7.1] ¿Cómo estudiar este tema?

[7.2] Evolución tecnológica del audio digital

[7.3] Editores de audio digital

[7.4] Virtualización

[7.5] Arquitecturas, plugins

[7.6] Digital audio Workstation (DAW),


instrumentos virtuales

[7.7] Lenguajes de procesado y análisis de audio

[7.8] MatLab

[7.9] Librerías Python: SciPy, Numpy

[7.10] Faust
TEMA
Computación de audio
PRODUCCIÓN
Evolución tecnológica del estudio de grabación
Esquema

TEMA 7 – Esquema
Magnetófono Multipistas digitales

DAT
Mesa + Mesas digitales
+ Reverb + FX
digital
Estudio Digital

Efectos

Estudio Analógico

2
COMPACT + Editores de audio
DISC (mastering)

MID Virtualización
Isecuenciador DAW

- Edición multipista
INVESTIGACIÓN PLUGINS
- Mezclador integrado Vst
- Arquitectura de plugins
Matlab Audio
Python + SciPy Units

análisis
Faust LV2
procesado y
Lenguajes de
Acústica, Electroacústica, Electrónica Aplicadas a la Sonología y Musicología
Acústica, Electroacústica, Electrónica Aplicadas a la Sonología y Musicología

Ideas clave

7.1. ¿Cómo estudiar este tema?

Para estudiar este tema deberás leer las Ideas Clave expuestas en este
documento. Estas ideas se van a complementar con lecturas y otros documentos
para que puedas ampliar los conocimientos sobre el mismo.

EL tratamiento y procesado de audio ha evolucionado en los últimos años desde el


empleo de equipamiento específico al uso del ordenador. Hoy día la gran mayoría de
los procesos de audio se realiza con ordenador. En este tema abordamos la
computación de audio desde un punto de vista general, sus aspectos tecnológicos y
teniendo en cuenta un doble contexto, la producción y la investigación musicales.

En este tema perseguimos los siguientes objetivos:

Iniciarse en los editores y estaciones de trabajo de audio digital.


Comprender el concepto de virtualización.
Comprender la arquitectura host y plugin.
Conocer algunos plugins de procesado interesantes.
Iniciarse en los lenguajes de procesado y análisis de audio como herramientas de
investigación Sonológica.

7.2. Evolución tecnológica del audio digital

Hasta los ochenta, los estudios de grabación tuvieron una configuración estable con
el empleo de equipamiento electrónico analógico. La mesa de mezclas ocupaba el
centro de la configuración junto con el grabador multipistas que permitía la grabación
de pistas independientes correspondientes a distintos instrumentos, que
posteriormente eran mezcladas sobre un máster en un nuevo magnetófono. El
procesado se completaba con unidades de tratamiento exterior que podían ser
conectadas a la mesa a través de un gran panel de conexiones (patch panel), bien por
inserción o por envío auxiliar. Algunos procesadores analógicos ocupaban un gran
espacio como las placas de reverberación. El máster apenas se trataba y se enviaba
directamente a la fábrica para la creación de los discos.

TEMA 7 – Ideas clave


3
Acústica, Electroacústica, Electrónica Aplicadas a la Sonología y Musicología

Con la aparición del audio digital, el estudio comienza a transformarse. En primer


lugar, las enormes cámaras de reverberación fueron sustituidas por unidades digitales
que permitían retardos mucho mayores y reverberación de mucha mayor calidad. Entre
ellas, probablemente la Lexicon 224 fue la más popular y su mando a distancia aparecía
sobre la mesa de la mayoría de los estudios.

TEMA 7 – Ideas clave


4
Acústica, Electroacústica, Electrónica Aplicadas a la Sonología y Musicología

Seguidamente, y con la aparición del Compact Disc, los estudios comenzaron a


necesitar hacer su máster en formato digital, que además permitiría una mejor
conservación de la calidad. Los primeros grabadores digitales consistían en un
procesador PCM que convertía el audio analógico en digital PCM de 16 bit y lo
codificaba como una señal de vídeo, que era grabada en un magnetoscopio de vídeo. El
más popular fue el Sony PCM-1630.

La preparación del máster para CD demandó la necesidad de editar el audio


digitalmente, y surgieron los primeros editores de audio digital. Basados en un
buen ordenador al que se le incorporaba una tarjeta de procesado digital DSP con
entradas y salidas de audio y uno o varios discos duros rápidos. Se trataba de la primera
entrada del ordenador en la producción musical de audio. Probablemente el editor más
popular fue el Sound Designer para la plataforma Macintosh. En estos momentos el
hardware del PC no era suficientemente potente para el procesado, y era necesaria una
tarjeta específica con varios DSP's o chips dedicados al procesamiento digital.

Lo que en principio era una simple edición de audio para preparar un CD fue cobrando
importancia y el mastering supuso un completo tratamiento digital de la señal.

Otro gran paso de la revolución digital fue la sustitución de los magnetófonos


multipista analógicos por los nuevos equipos japoneses de grabación, que
además del salto de calidad, permitieron olvidarse de los ajustes de la grabación
analógica. El formato más extendido, el DASH, se utilizaba en los multipistas de Sony
PCM-3324 y PCM 3348 de 24 y 48 pistas respectivamente.

TEMA 7 – Ideas clave


5
Acústica, Electroacústica, Electrónica Aplicadas a la Sonología y Musicología

Simultáneamente el audio digital también llegó a la grabación estéreo con el formato


DAT, un micro casete con exploración helicoidal como los formatos de vídeo, con toda
la electrónica integrada. El DAT sustituyó enseguida al conjunto PCM+Video y se
instaló como el nuevo soporte estándar de grabación digital estéreo.

Aunque muchos de los grandes estudios mantuvieron su mesa de mezclas analógica,


otros dieron el paso tecnológico de la mesa de mezclas digital, especialmente en
estudios de mezcla multicanal para cine. La principal ventaja introducida por los
mezcladores digitales es la flexibilidad de arquitectura y configuración, así como la
recuperación total del estado de una mezcla (total recall).

Paralelamente, las tecnologías de la Información se desarrollaron enormemente, y los


ordenadores personales eran más potentes. Los microprocesadores, los discos duros,
los interfaces de conexión y otras mejoras hicieron del PC una estación de trabajo
disponible para el audio, que no tardó en incorporarse definitivamente al estudio.

7.3. Editores de audio digital

Una de las funciones principales del ordenador en el audio digital es como editor.

La edición básica de audio consiste en tomar segmentos o clips de una fuente e ir


colocándolos secuencialmente en el montaje de salida en el orden deseado. La técnica
más habitual es como cortar y pegar (cut & paste), aunque en muchos sistemas se

TEMA 7 – Ideas clave


6
Acústica, Electroacústica, Electrónica Aplicadas a la Sonología y Musicología

sigue utilizando la nomenclatura del punto de entrada y punto de salida en la fuente y


el destino.

Opcionalmente se suelen incorporar fundidos para suavizar la entrada del segmento


(fade in), la salida (fade out), o bien la transición entre dos segmentos bajando el
saliente y subiendo el entrante progresivamente (crossfade).

La edición multipista maneja varias pistas fuente que son mezcladas dentro del
editor.

Desde aquel Sound Designer muchos editores de audio digital han ido apareciendo,
algunos muy populares como Peak, SoundForge, o WaveLab, aunque son
muchísimas las opciones. Actualmente, y en el campo del software libre existe
Audacity para todas las plataformas, que puede ser una buena elección para la
mayoría de los casos sencillo. Para ediciones más completas y multipista se recomienda
ya emplear una DAW.

7.4. Virtualización

Aunque el equipamiento del estudio ha cambiado mucho, sin embargo la configuración


no lo ha hecho tanto. En el ordenador, los equipos han sido sustituidos por sus
equivalentes virtuales, de tal forma que muchos programas a pesar de ser una
aplicación compacta conservan los mismos elementos, al menos en el plano conceptual
y de la interfaz de usuario.

En definitiva, la virtualización proporciona las prestaciones del equipamiento real


con ciertas mejoras y a nivel de usuario ofrece la operación similar al manejo del equipo
real.

En general, la misma aplicación virtualiza el conjunto mezclador-grabador


multipista núcleo central del estudio, ya que a nivel de implementación es más
sencillo hacer las múltiples conexiones dentro de la misma aplicación. El mezclador
conserva el aspecto de la mesa de mezclas real con los canales en disposición vertical, y
los faders en la parte inferior.

TEMA 7 – Ideas clave


7
Acústica, Electroacústica, Electrónica Aplicadas a la Sonología y Musicología

El grabador multipista, sin embargo cambia su interfaz por la de un editor con


múltiples pistas horizontales y un cursor vertical que indica la posición de
reproducción. Esta interfaz permite la localización rápida de los diferentes puntos de
tiempo de cada pista, al tiempo que facilita la manipulación (edición) de los contenidos
de las pistas.

7.5. Arquitecturas, plugins

El resto de los componentes del estudio también son objeto de virtualización,


generalmente en forma de plugins. Un plugin es una pieza de software que se
incorpora a una aplicación y la complementa con nuevas prestaciones. En el caso del
equipamiento de estudio, los plugins virtualizan unidades de efecto que
tradicionalmente se incorporaban a la mesa por inserción o por envío auxiliar mediante
conexionado en el patch panel.

Como consecuencia de la diversidad de plataformas, Mac, Windows, Linux y su


evolución, varias propuestas tecnológicas han sido propuestas como formato de
arquitectura de plugin. A continuación presentamos las más relevantes.

El formato VST (Virtual Studio Technology) desarrollado por Steinberg e incorporado


a sus estaciones de trabajo, como el legendario Cubase, es probablemente el formato de
plugin más extendido, a pesar de ser un formato cerrado. Cuenta con versiones nativas
para cada plataforma, así encontramos VST diferentes para OSX, Windows de 32 bits,
Windows de 64 y Linux.

En los macs, Apple trabaja con la arquitectura audio units.

En Linux, los plugins LADSPA de formato y especificación libres, se emplean


habitualmente, aunque más recientemente la segunda versión evolucionada va
instalándose poco a poco como el nuevo estándar: el LV2.

El cableado y la interconexión de los elementos de audio también es objeto de


virtualización. La misma especificación de audio units permite el conexiona interno
de diferentes aplicaciones con los interfaces de entrada y salida en las máquinas de
Apple.

TEMA 7 – Ideas clave


8
Acústica, Electroacústica, Electrónica Aplicadas a la Sonología y Musicología

En Linux, el gestor de conexionado más habitual es Jack que ofrece una gran
versatilidad, aunque para configuraciones sencillas sigue siendo muy práctico Alsa.

7.6. Digital audio Workstation (DAW), instrumentos virtuales

Cuando en un ordenador integramos el estudio completo, podemos hablar de una


estación de trabajo de audio digital o Digital Audio Workstation (DAW). Existen
muchas DAWs disponibles actualmente. Todas ellas tienen al menos un mezclador, un
editor multipista y una arquitectura de plugins.

Conviene en este punto diferenciar entre las DAWs puramente de audio digital, las
DAWS MIDI, y las que DAWs mixtas que combinan ambos mundos. Las DAWs MIDI
se caracterizan porque las pistas son de datos MIDI, con sus editores específicos a
modo de un secuenciador de múltiples prestaciones. La mayoría de las DAWs actuales
son del tipo mixto, es decir combinan tanto pistas de audio como pistas MIDI e
integran editores específicos para cada tipo. Es muy importante distinguir entre pistas
de Audio y pistas MIDI, ya que estas últimas solo contienen información de pulsación
de teclas y de controladores.

TEMA 7 – Ideas clave


9
Acústica, Electroacústica, Electrónica Aplicadas a la Sonología y Musicología

Aunque las DAWs actuales son del tipo mixto, conservan el enfoque inicial, bien de
audio o bien MIDI. Entre las enfocadas al audio encontramos las aplicaciones
comerciales ProTools , Ableton Live, Presonus Studio o Nuendo y Ardour3 en
el mundo libre. Entre las enfocadas al MIDI podemos citar Cubase o LogicAudio. En
el mundo del software libre encontramos buenas DAWs como Muse o Qtractor, este
último con mayor actividad reciente de desarrollo.

Instrumentos virtuales

En el próximo tema estudiaremos el MIDI con mayor profundidad, aunque conviene en


este punto presentar los instrumentos virtuales por su relación con el tema. Existen
plugins específicos, que aceptan información MIDI y producen sonido a su salida. Son
la virtualización de los módulos de sonido o instrumentos virtuales. Muchos de
ellos virtualizan sintetizadores reales y la mayoría implementa nuevos sintetizadores.

En una DAW, una pista MIDI asociada a un instrumento virtual, producirá siempre el
mismo sonido, por lo que equivale a una pista de audio. En ocasiones se utiliza el
término congelación al proceso de convertir una pista MIDI a su equivalente de
audio. La congelación también se aplica a pistas de audio que integran varios plugins
de inserción para convertirla de nuevo en una pista de audio ya procesada y liberando
así la carga de proceso en tiempo real del sistema.

TEMA 7 – Ideas clave


10
Acústica, Electroacústica, Electrónica Aplicadas a la Sonología y Musicología

7.7. Lenguajes de procesado y análisis de audio

Las DAWs se emplean principalmente en producción sonora. Sin embargo hay


contextos y situaciones en las que se requiere un procesado de audio específico,
especialmente en el campo de la investigación, en cual es frecuente requerir un
procesado específico.

En estos casos lo habitual es recurrir a un lenguaje de programación que nos


permita definir exactamente lo que precisamos. Afortunadamente, no se parte de cero y
existen varias soluciones o propuestas, con librerías ya preparadas para la mayor parte
de los casos. A continuación proponemos algunos de ellos, entre muchas otras
opciones, escogidos por su popularidad como MatLab, su accesibilidad y flexibilidad
como Python, o su aplicación e implementación directa como Faust.

7.8. MatLab

Probablemente el lenguaje más empleado en proceso de señal sea MatLab, una


aplicación propietaria orientada al trabajo matemático y cálculo numérico que cuenta
con utilidades flexibles para la visualización de los datos. Permite resolver problemas
numéricos complejos mucho más rápido que con lenguajes convencionales como C o
Java. Tiene un uso muy extendido dentro de la comunidad científica y en la ingeniería,
donde es considerado un estándar de facto.

MatLab se aplica habitualmente en procesamiento de señales, incluido el audio. Cuenta


con abundante bibliografía en aplicación al procesado de audio digital.

En MatLab, una secuencia de audio es representada como un vector o matriz (array)


numérica. Entre las funciones de especial utilidad en el procesamiento de audio. A
continuación mostramos un sencillo ejemplo de código con MatLab que procesa un
archivo de audio, aumentando su nivel con una ganancia de dos.

TEMA 7 – Ideas clave


11
Acústica, Electroacústica, Electrónica Aplicadas a la Sonología y Musicología

% Listado de ejemplo de procesado simple de audio en MatLab


% Aplica una ganancia a un archivo wav
% Jesus L. Alvaro, 2014 
 
[y,Fs] = wavread(’miaudio.wav’); % lee el archivo de audio en el array y
plot(y); % Dibuja el audio
 
% Aplica una ganancia amp
amp = 2.0;  % definimos una ganacia de 2.0
b = amp*y   % aplicamos la ganancia como el producto
 
% Guarda archivo de salida
wavwrite(b,Fs,'audiosalida.wav'); % Escribe la secuencia en archivo de salida

Existe un programa equivalente dentro del software libre llamado Octave con un alto
grado de compatibilidad. Si quieres profundizar en este tema puedes consultar en la
siguiente dirección web:

http://www.gnu.org/software/octave/.

7.9. Librerías Python: SciPy, Numpy

Si lo que buscamos es flexibilidad, un lenguaje de programación de propósito general es


una buena solución. Si además el lenguaje es de alto nivel, interpretado, modular,
altamente flexible y con una curva de aprendizaje suave, mejor que mejor. Tal es el caso
del lenguaje de programación Python.

El proyecto SciPy reúne un conjunto de librerías y herramientas de software libre


Python para el trabajo en Matemáticas, Ciencia e Ingeniería. Si quieres profundizar en
este tema puedes consultar en la siguiente dirección web:

http://www.scipy.org/

TEMA 7 – Ideas clave


12
Acústica, Electroacústica, Electrónica Aplicadas a la Sonología y Musicología

Incluye varias librerías de las que destacamos dos por su importancia en la


computación de audio:
Numpy es el paquete fundamental de la computación científica con Python. Su
aportación más destacable es el trabajo con vectores (matrices) multidimensionales.
Permite representar secuencias como el caso del audio digital o audio espectral,
además de las transformadas y ventanas más habituales.
MatPlotLib aporta la representación gráfica de todo tipo de datos. En procesado de
audio permite mostrar muestras en el tiempo, espectros, curvas y espectrogramas.

El siguiente código es un ejemplo de procesado sencillo de audio utilizando numpy y


matplotlib en Python. Realiza el mismo proceso de amplificación que el ejemplo
anterior en MatLab. En este caso se incorpora la representación de entrada y salida.

# Ejemplo de procesado simple de audio en Python


# Aplica una ganancia a un archivo wav
# Representa entrada y salida
# Dr. Jesus L. Alvaro 2014
 
# importa librerías
import matplotlib.pyplot as plt 
import numpy as np 
from scipy.io.wavfile import write, read 
 
# lee archivo de entrada en un array x
fs, x = read('guitarC3.wav') 
 
# representa entrada 
plt.subplot(211)  # divide la imagen en dos partes dispuestas verticalmente,  
plt.plot(x) 
plt.title('Audio de Entrada') # pone un titulo al grafico 1
plt.axis([0,120000,‐20000,20000]) # ajusta misma escala de la salida
 
amp = 2.0 # valor de la ganancia a aplicar
b = x * amp # aplica ganancia como un producto
plt.subplot(212)  #selecciona segunda fila de la imagen para representar 
plt.plot(b)    # representa la salida
plt.title('Audio de Salida tras aplicar la ganancia') 
   

TEMA 7 – Ideas clave


13
Acústica, Electroacústica, Electrónica Aplicadas a la Sonología y Musicología

write('salida.wav',fs,np.int16(b)) # guarda archivo de salida (con 16 bits)


 
plt.savefig('ampx2.png') # guarda grafica
plt.show() # muestra la grafica

La figura muestra la gráfica obtenida con dicho código.

El uso de Python y SciPy como lenguaje de proceso, análisis, y representación ofrece


importantes ventajas, además de estar disponible como software libre. Puede
trabajarse importando directamente las librerías como en el ejemplo, pero para una
mayor facilidad, existen librerías que empaquetan las funciones frecuentes en el trabajo
con procesamiento de audio. Ponemos aquí algunos ejemplos de las librerías más
interesantes:

Sms-tools: librería desarrollada por Xavier Serra en la Universitat Pompeu Fabra.


Si quieres profundizar en este tema puedes consultar en la siguiente dirección web:

https://github.com/MTG/sms-tools

Librosa: librería completa para el análisis y procesado. Incorpora interesantes


transformadas como MFCC o Contant-Q. Si quieres profundizar en este tema puedes
consultar en la siguiente dirección web:

https://github.com/bmcfee/librosa/

TEMA 7 – Ideas clave


14
Acústica, Electroacústica, Electrónica Aplicadas a la Sonología y Musicología

Pyo: Librería DSP que además incorpora entrada y salida en tiempo real. Si quieres
profundizar en este tema puedes consultar en la siguiente dirección web:

http://ajaxsoundstudio.com/software/pyo/

7.10. Faust

Faust es un lenguaje especialmente diseñado para el procesado de señal y el diseño de


procesadores. Con muy pocas líneas de código es posible crear programas de proceso
específicos. Si quieres profundizar en este tema puedes consultar en la siguiente
dirección web:

http://faust.grame.fr/

Una de los mayores logros de Faust es que permite compilar un único código para
multitud de formas de programa, desde plugins VST, LADSPA, LV2, módulos para
PureData o Csound, hasta incluso programas completamente independientes para
múltiples plataformas, incluyendo dispositivos móviles.

El siguiente código define un proceso de ganancia, y un interfaz de control del mismo


con el ajuste del valor de la ganancia a aplicar; todo ello con tan solo dos líneas.

// Ejemplo de procesado simple de audio con Faust


 
declare name   "Amplificador Simple con Control de Ganancia"; 
declare author "Jesús L. Alvaro"; 
declare reference "Aplica una ganancia a una entrada mono"; 
declare version "2014"; 
 
// Definimos un control horizontal de nombre 'nivel'
// que asigna un valor entre 0 y 2 a la variable 'amp'
amp = hslider("nivel", 1, 0, 2, 0.001) ; 
 
// definimos un proceso que toma una entrada mono y la multiplica por el valor de amp
// la salida es recogida como mono
process = _ * amp : _ ; 

TEMA 7 – Ideas clave


15
Acústica, Electroacústica, Electrónica Aplicadas a la Sonología y Musicología

La figura muestra dos capturas de plugins compilados directamente desde el código


mostrado. En el primer ejemplo es un plugin LV2corriendo en Qtractor. El segundo es
un plugin LADSPA funcionando dentro del editor Audacity como un plugin más. Otros
formatos de plugin están disponibles como VST o DSSI.

Recientemente ha salido la versión FasutLive que permite trabajar en línea, con el


navegador, sin necesidad de instalación en el ordenador, y poder descargar el resultado
ya compilado.

TEMA 7 – Ideas clave


16
Acústica, Electroacústica, Electrónica Aplicadas a la Sonología y Musicología

Lo + recomendado

No dejes de leer…

Librosa

Colección de ejemplos de proceso con Librosa.

Accede a los ejemplos a través del Aula Virtual o desde la siguiente dirección web:
http://nbviewer.ipython.org/github/bmcfee/librosa/blob/master/examples/LibROSA%
20demo.ipynb

No dejes de ver…

De Pies a Cabeza con Ardour 3

Primera parte de un tutorial introductorio al manejo de la magnífica DAW Ardour 3 en


español.

Accede al vídeo a través del Aula Virtual o desde la siguiente dirección web:
https://www.youtube.com/watch?v=AtqKWpRZfNw

TEMA 7 – Lo + recomendado
17
Acústica, Electroacústica, Electrónica Aplicadas a la Sonología y Musicología

+ Información

A fondo

Python For Audio Signal Processing

Un estupendo artículo presentando el uso de Python como lenguaje de procesado de


señales.

Accede al artículo a través del Aula Virtual o desde la siguiente dirección web:
http://eprints.nuim.ie/4115/1/40.pdf

Webgrafía

MatLab

Tutorial y ejemplos de procesado con MatLab.

Accede a la página a través del Aula Virtual o desde la siguiente dirección web:
http://www.cs.cf.ac.uk/Dave/Multimedia/PDF/tutorial.html

TEMA 7 – + Información
18
Acústica, Electroacústica, Electrónica Aplicadas a la Sonología y Musicología

Data, Audio, Graphics and Image Signal Processing with MATLAB

Introducción a MatLab y Procesado de Señal. Materiales del curso CM0268 Cardiff


University.

Accede a la página a través del Aula Virtual o desde la siguiente dirección web:
http://www.cs.cf.ac.uk/Dave/CM0268/PDF/

SciPy

Tutorial de SciPy.

Accede a la página a través del Aula Virtual o desde la siguiente dirección web:
http://docs.scipy.org/doc/scipy-0.14.0/reference/tutorial/index.html

Bibliografía

Zölzer, U. (Ed.) (2011). DAFX: Digital Audio Effects (2ª Ed.). Wiley.

TEMA 7 – + Información
19
Acústica, Electroacústica, Electrónica Aplicadas a la Sonología y Musicología

Actividades

Trabajo: Aplicación de un filtro de Audio Digital con Python

En este trabajo realizarás una práctica guiada de procesado digital de audio, mediante
programación, y siguiendo unos pasos muy detallados.

Al finalizar la práctica habrás completado un proceso de DSP, habiendo superado las


dificultades iniciales y quedando en disposición para la profundización en el DSP con
Python, como base de experimentación.

El propósito de esta práctica es realizar un procesado sencillo a una señal de audio,


mediante el lenguaje de programación Python, y las librerías SciPy. Se requiere tener
instalado Python así como las librerías. Para ello hay varias opciones dependiendo del
sistema operativo empleado. También existe la posibilidad de realizar la práctica online
con el servicio gratuito de Pythonanywhere (https://www.pythonanywhere.com), sin
necesidad de realizar ninguna instalación.

En la primera parte de la práctica, se seguirán fielmente las instrucciones y el código


propuesto. Se recomienda copiar y pegar el código paso a paso y ejecutar el bloque. Al
final se completará el código completo. En una segunda parte, se personalizará el
código según las indicaciones.

El proceso ha sido dividido en los fragmentos siguientes para facilitar la depuración y


minimizar los errores. Al final de cada paso se debe ejecutar el código y comprobar que
no se producen errores:

Importación de librerías. Comienza un nuevo documento con el nombre


«miPrimerDSP.py» e introduce el código siguiente. La primera línea indica al
compilador que puede encontrar acentos en el código. Las siguientes líneas tienen
como objetivo comprobar que SciPy está instalado y que no da errores al importar:
# coding: utf-8
 
import matplotlib.pyplot as plt 
import numpy as np 
from SciPy.signal import butter, lfilter 

TEMA 7 – Actividades
20
Acústica, Electroacústica, Electrónica Aplicadas a la Sonología y Musicología

Definición de variables. El siguiente paso consiste en definir las variables de


audio, y el cálculo de otras variables necesarias. También se define el espacio lineal
del tiempo y el de la frecuencia.

fs = 22050 # frecuencia de muestreo


nyq = 0.5 * fs # frecuencia máxima (de nyquist)
T = 0.02 # duración

nsamples = T * fs # el número de muestras


t = np.linspace(0, T, nsamples, endpoint=False) # dimensión tiempo
f = (t/T * fs)[0:nsamples/2] # dimensión frecuencia

Funciones auxiliares. Definición de dos funciones auxiliares necesarias para la


práctica. La función espectro, calcula el espectro de una señal. La función filtra
aplica un filtro a la señal entre dos frecuencias indicadas.

def espectro(signal):     # función para calcular el espectro 


    S = np.abs(np.fft.fft(signal *  np.hamming(nsamples))) 
    S = S[0:nsamples/2] 
    S = (np.log10(S) * 20 ) – 50 
    return S   
 
def filtra(signal,lowcut,hicut):    # función para filtrar
    b, a  = butter(5,[lowcut/nyq,hicut/nyq] ,btype='band') 
    return lfilter(b,a,signal) 

Definir la señal de entrada. Para esta práctica, se utiliza una señal de audio
generada. Necesitamos una componente principal de una frecuencia, en este caso de
2005 Hz y otra serie de componentes que supondrán el ruido no deseado y que
pretendemos filtrar: un ruido aleatorio, un seno de 200 Hz y otro de 8000 Hz.

TEMA 7 – Actividades
21
Acústica, Electroacústica, Electrónica Aplicadas a la Sonología y Musicología

# Creamos la señal de entrada


# a partir de un seno principal al que le sumamos ruido
# y otras señales no desadas
freq = 2005.00 
x = np.sin(2*np.pi*freq*t)* 1.0     # senoidal principal 
 
x += np.random.random_sample(nsamples,) * 0.7  # ruido
x += np.sin(2*np.pi*200*t)* 0.4          # senoidal de 200 Hz
x += np.sin(2*np.pi*8000*t)* 0.3         # senoidal de 8000 Hz

Representar la señal de entrada. La primera de las cuatro gráficas representa la


señal de entrada en el dominio del tiempo.

# representa la entrada
plt.subplot(221)  # divide la imagen en dos filas y dos columnas,  
plt.title(u'Señal de Entrada') # pone un título al grafico 1 
plt.plot(t,x)    # dibuja señal x
plt.xlim(0.01,0.015)   #ajusta el margen del eje x 
plt.xticks([])        # borra los números del eje x 
plt.yticks([‐1,0,1])  # escribe los números del eje y

Para ver la imagen incluimos las dos líneas finales:

plt.savefig('filtrado.png') # guarda gráfica


plt.show()  # muestra la gráfica

Ejecutamos de nuevo el código y veremos la primera gráfica. Si estás trabajando


online con pythonanywhere tendrás que encontrar tu archivo filtrado.png, en tus
documentos online, para verlo.

Representa el espectro de la señal de entrada. Incluir las siguientes líneas


antes de las dos finales y ejecutamos el código. Si todo ha ido bien veremos también
la segunda gráfica mostrando el espectro.

TEMA 7 – Actividades
22
Acústica, Electroacústica, Electrónica Aplicadas a la Sonología y Musicología

plt.subplot(222)  # subgráfico de fila 1 columna 2,


plt.title(u'Espectro de Entrada') 
plt.plot(f,espectro(x)) # dibuja el espectro de x
plt.xlim(0,10000) 

Filtra la señal de entrada y representa la salida. Incluir las siguientes líneas


antes de las dos finales y ejecutamos el código. Si todo ha ido bien veremos también
la tercera gráfica mostrando la salida en el dominio del tiempo.

### FILTRADO
lowcut = 1800    # valor para la frecuencia de corte inferior
hicut = 2200     # frecuencia de corte superior
y = filtra(x,lowcut,hicut)    # realiza el filtrado entre los cortes
 
# representa la salida
plt.subplot(223)           # subgráfico de fila 2 columna 1
plt.title('Salida filtrada entre %s y %s'%(lowcut, hicut))  
plt.plot(t,y,'r')           # dibuja la señal filtrada y en rojo ('r')
plt.xlim(0.01,0.015) 
plt.xticks([]) 
plt.yticks([‐1,0,1]) 

Muestra el espectro de salida. Incorporando las siguientes líneas, completamos


la gráfica con el espectro de salida. Se ha incorporado además un texto con la firma y
fecha del trabajo, para que aparezca en la imagen.

plt.subplot(224)  # fila 2 columna 2,


plt.title(u'Espectro de Salida') 
plt.plot(f,espectro(y),'r') 
plt.xlim(0,10000) 
plt.text(‐2000, ‐120, u'Jesús L. Alvaro, 4/9/2014, f0 = %s'% freq) # firma

TEMA 7 – Actividades
23
Acústica, Electroacústica, Electrónica Aplicadas a la Sonología y Musicología

Código completo. El código completo quedaría como se muestra a continuación:

# coding: utf-8 
 
import matplotlib.pyplot as plt 
import numpy as np 
from SciPy.signal import butter, lfilter 
 
fs = 22050             # frecuencia de muestreo
nyq = 0.5 * fs         # frecuencia máxima (de nyquist) 
T = 0.02               # duración 
 
nsamples = T * fs      # el número de muestras 
t = np.linspace(0, T, nsamples, endpoint=False)  # dimensión tiempo 
f = (t/T * fs)[0:nsamples/2]                 # dimensión frecuencia 
 
def espectro(signal):     # función para calcular el espectro 
    S = np.abs(np.fft.fft(signal *  np.hamming(nsamples))) 
    S = S[0:nsamples/2] 
    S = (np.log10(S) * 20 ) ‐ 50 
    return S 
 
def filtra(signal,lowcut,hicut):    # función para filtrar 
    b, a  = butter(5,[lowcut/nyq,hicut/nyq] ,btype='band') 
    return lfilter(b,a,signal) 
 
# Creamos la señal de entrada
# a partir de un seno principal al que le sumamos ruido
# y otras señales no desadas
freq = 2005.00 
x = np.sin(2*np.pi*freq*t)* 1.0     # senoidal principal 
 
x += np.random.random_sample(nsamples,) * 0.7  # ruido
x += np.sin(2*np.pi*200*t)* 0.4          # senoidal de 200 Hz
x += np.sin(2*np.pi*8000*t)* 0.3         # senoidadl de 8000 Hz 
   

TEMA 7 – Actividades
24
Acústica, Electroacústica, Electrónica Aplicadas a la Sonología y Musicología

# representa la entrada 
plt.subplot(221)  # divide la imagen en dos filas y dos columnas,
plt.title(u'Señal de Entrada') # pone un título al grafico 1 
plt.plot(t,x)    # dibuja señal x
plt.xlim(0.01,0.015)   #ajusta el margen del eje x
plt.xticks([])        # borra los números del eje x
plt.yticks([‐1,0,1])  # escribe los números del eje y

plt.subplot(222)  # subgráfico de fila 1 columna 2,  


plt.title(u'Espectro de Entrada') 
plt.plot(f,espectro(x)) # dibuja el espectro de x
plt.xlim(0,10000) 
 
### FILTRADO
lowcut = 1800    # valor para la frecuencia de corte inferior 
hicut = 2200     # frecuencia de corte superior
y = filtra(x,lowcut,hicut)    # realiza el filtrado entre los cortes
 
# representa la salida
plt.subplot(223)           # subgráfico de fila 2 columna 1  
plt.title('Salida filtrada entre %s y %s'%(lowcut, hicut))  
plt.plot(t,y,'r')           # dibuja la señal filtrada y en rojo ('r') 
plt.xlim(0.01,0.015) 
plt.xticks([]) 
plt.yticks([‐1,0,1]) 
 
plt.subplot(224)  # fila 2 columna 2,
plt.title(u'Espectro de Salida') 
plt.plot(f,espectro(y),'r') 
plt.xlim(0,10000) 
plt.text(‐2000, ‐120, u'Jesús L. Alvaro, 4/9/2014, f0 = %s'% freq) # firma 
 
plt.savefig('filtrado.png')  # guarda gráfica
plt.show()  # muestra la gráfica

Para mayor facilidad puedes descargar el código desde este archivo:


https://dl.dropboxusercontent.com/u/10562198/prj14/unir/img/spectrum/filtrado.py

TEMA 7 – Actividades
25
Acústica, Electroacústica, Electrónica Aplicadas a la Sonología y Musicología

La figura muestra la salida obtenida con las cuatro gráficas. Señal de entrada en el
tiempo y en la frecuencia; y salida en el tiempo y en la frecuencia.

Personalización. Una vez comprobado el código anterior, cambiar algunos valores


para personalizar la práctica. Elige otro valor de frecuencia para la señal de entrada,
entre 2200 Hz y 5000 Hz. Cambia las frecuencias de corte del filtro para ajustarse a
la nueva señal de entrada. Cambia la firma con tu nombre y la fecha del trabajo.

Entrega. Se debe entregar el código (.py), la imagen (.png) y un pequeño


documento (.pdf) con las conclusiones y comentarios relacionados con la práctica.

TEMA 7 – Actividades
Acústica, Electroacústica, Electrónica Aplicadas a la Sonología y Musicología

Test

1. Cuál de los siguientes dispositivos de la historia del audio digital representa una
tecnología más antigua (apareció antes):
A. PCM-7030.
B. PCM-3324A.
C. PCM-3348.
D. PCM-1630.

2. En un editor de audio, cuál es la técnica más habitual para la colocación contigua de


múltiples fragmentos:
A. fade in –out.
B. punch in–out.
C. cut & paste.
D. crossfade.

3. La técnica que consiste en simular un dispositivo, manteniendo su funcionalidad, se


denomina:
A. plugin.
B. funcionalización.
C. virtualización.
D. DAW.

4. Cuál de los siguientes no es una arquitectura de plugin de audio:


A. VST
B. ALSA
C. audio units
D. LV2

5. En todas las DAWs encontramos al menos las funcionalidades:


A. mezclador y editor multipista.
B. mezclador y plugins de audio
C. editor MIDI y editor de audio
D. editor multipista y editor de muestras

TEMA 7 – Test
Acústica, Electroacústica, Electrónica Aplicadas a la Sonología y Musicología

6. Cuál de las siguientes afirmaciones no es correcta. Un instrumento virtual...


A. es más barato que un instrumento real.
B. se integra en una DAW.
C. produce sonido a partir de información MIDI.
D. tiene mayor expresividad que el instrumento real.

7. Cuál de los siguientes no es un lenguaje o herramienta empleada habitualmente en


procesado de audio
A. Faust.
B. SciPy.
C. Java.
D. Octave.

8. La librería Python encargada de la representación de datos científicos se llama:


A. MatPlotLib.
B. Numpy.
C. SciPy.
D. SciPlot.

9. En numpy, la señal de audio es representada como:


A. una lista de valores.
B. un archivo de entrada.
C. un array.
D. un escalar.

10. Cuál de los siguientes no es un tipo de salida contemplado en Faust:


A. plugin Audio Unit.
B. plugin VST.
C. plugin LADSPA.
D. bloque PureData.

TEMA 7 – Test

También podría gustarte