You are on page 1of 10

Práctica 2: Generación de una señal de Audio -- Notas musicales

Teoría de muestreo:conversión D/A
El proceso de muestreo de una señal y de su reconstrucción a partir de
las muestras se representa en la Figura 2.1.

Figura 2.1: Muestreo y reconstrucción de una señal continua en el
tiempo.
El proceso parte de una señal continua x(t), que se muestrea usando un
convertidor A/D para producir una sucesión de valores discretos x[n]
=x(nTs), donde n es un valor entero que se utiliza como índice de
muestreo y Ts es el período de muestreo. La frecuencia de muestreo es
el valor fs = 1/Ts. El convertidor D/A ideal permite recuperar de
nuevo la señal a partir de los valores discretos.
El Teorema de Muestreo indica que si se elige una frecuencia de
muestreo superior a dos veces la frecuencia mayor, f max, presente en la
señal de entrada, es decir fs > 2*fmax, entonces la salida y(t) en el
sistema de la figura 2.1, será exactamente igual a la entrada x(t) si se
reconstruye "adecuadamente" la señal. Para obtener la frecuencia fmax
se puede representar la entrada como una suma de sinuoidales
(Transformación de Fourier) y fmax sera le frecuencia asociada a la
componente de mayor frecuencia con amplitud distinta de cero.
La mayoría de los ordenadores tienen un conversor análogico-digital
incorporado (A/D) y un conversor digital- análogico (D/A) incluido
en la tarjeta de sonido. Estos sistemas son las realizaciones físicas de
los conceptos idealizados de convertidores A/D y D/A
respectivamente.
El proceso de conversión digital/analógico que se necesita en esta
práctica solo va a depender del tiempo (Ts) entre los muestreos de la
señal y en caso de reproducir la señal con la tarjeta de sonido, debe
considerarse este valor como el correspondiente al valor de muestreo
del conversor D/A que se esté usado. Desde Matlab, esto se hace por
el comando sound (x,fs)
Esta función soporta muestreo variable si el hardware de la máquina
tiene tal capacidad, una elección conveniente para la conversión D/A
es el valor es 8000 muestreos por segundo, y Ts = 1/8000 segundos.

025 Hz que corresponde a un cuarto del valor de muestreo en uso para discos CD audio. Se pretende sintetizar ondas tipo seno de diferentes frecuencias que coincidan con las notas musicales. Después se agregan otros aspectos a la síntesis a fin de mejorar la calidad subjetiva para el oyente. Para generar un sonido.Otra elección común es 11. Introducción a la generación de música La música es una sucesión de notas. Precaución: Frecuencias demasiado bajas podrían dañar los altavoces. se dispone del siguiente comando MatLab o sound Para obtener la información relativa al comando utilice la ayuda: help sound En los ejercicios se pide generar diferentes señales sinusoidales discretas en el tiempo con Matlab. sus frecuencias y las señales sinusoidales. el tiempo de muestreo y la frecuencia de las señales y escuchelas con el comando sound. Síntesis de música con MATLAB. Generación de sonido con MATLAB. Algunas notas pueden sonar simultáneamente como en los acordes para agregar una dimensión adicional al sonido. Tenga en cuenta que se pueden producir efectos de saturación y en este caso se debe escalar adecuadamente la amplitud de la señal para permitir observar diferencias en el comportamiento de las señales. El primer objetivo es establecer la conexión entre notas musicales. Utilice preferiblemente frecuencias superiores a100 Hz. para ser reproducidas mediante el convertidor D/A de la tarjeta de sonido. . Se parte de formas de onda sinusoidales definidas por la ecuación x(t) =Acos(wt + ) para generar formas de onda compuestas por sumas de estas señales sinusoidales. Varie la amplitud.

Una síntesis más compleja combinaría el tono con más armonicos. Los nombres de las notas musicales. Igualmente un enfoque más realista formaría los sonidos simulando como un humano toca las notas sobre un instrumento musical. evitando así que sean los armónicos los que dominen el volumen de la nota. en notación tracicional y anglosajona.Los armonicos. Cada una de estas notas puede ser generada construyendo una sinusoide de la frecuencia apropiada. con distintas amplitudes.2: Las frecuencias de algunas notas musicales. Una manera simple para sintetizar música consiste en generar una melodía como una sucesión de tonos. Figura 2. son sinusoides con frecuencias que son múltiplos de la frecuencia fundamental. Las Notas Musicales La música se basa en una escala de notas. El agudo de la nota precedente.Una nota es simplemente un tono a una frecuencia perceptible con cero o más armonicos de ese tono.2. Una buena manera de visualizarlo es observando las teclas de un piano. Las . Un armonico. Hay que tener en cuenta que alguna nota tienen dos nombres asignados. aunque no hay diferencia en frecuencia. son generalmente de menor amplitud que el tono fundamental y disminuyen en importancia conforme aumentan de frecuencia. es lo mismo que el grave de la nota siguiente. si existen. y su frecuencias se enumeran en la Figura 2.

pero no de todas. D-> RE. En cuanto a la duración hay que considerar las siguientes definiciones: . A-> LA . E-> MI. B->SI.grandes y blancas son las notas C->DO. F-> FA . Por ejemplo: DO DO# REb RE. Donde DO# y REb son la misma tecla. G-> SOL . Es también interesante notar que la frecuencia de una nota determinada es 2 (1/12) veces la frecuencia de la nota precedente. Los sostenidos y bemoles son las teclas negras que van entre algunas notas.

Ejercicios de la práctica 2 2. ¿Cuántas muestras se están tomando en un ciclo de la señal? 2.1(*).1(*).2.. Use un valor de muestreo de 8000 muestras/segundo. Se pretende. y calcule el un número total de muestras equivalente a un tiempo de duración de 2 . f = 400 Hz y = 0.-Generación de sonido con Mattlab 2.. Eliga una frecuencia de muestreo de 8000 Hz. obtengase un vector x1 de valores muestreados en una sinusoidal con A = 1. utilizando matlab. representar las señales x(t) y x[n] correspondientes a la conversión A/D que se muestra en la Figura 2. Represente la señal continua en un intervalo de t que incluya al menos dos ciclos de la señal.Para utilizar el comando sound. Represente todas las muestras tomadas en el intervalo anterior ( 2 ciclos) Represente las 40 primeras muestras. Un conversor A/D se implementará en Matlab tomando la fórmula para la señal continua y evaluando la señal en los valores de tiempo multiplos del periodo de muestreo nTs.2. . Considere la señal continua x(t)= A cos (2 f t +  ) con f = 400Hz y =0 .Muestreo de señales continuas.1.

Varie la amplitud de la señal y calibre a partir de que valor se satura la tarjeta de sonido ¿Cómo puede conseguirse que una señal se escuche a la mitad de volumen? Para una amplitud no saturada varie la fase ¿Qué efecto auditivo produce el cambio de fase? 2. Simultaneamente con el osciloscopio proceda a medir directamente la señal de salida de la tarjeta de audio del PC. 2.2.Generación de una señal audio estereo.000 muestras/segundo.2.2... y  = pi/3. ¿ Cuales son las diferencias encontradas con respecta a la señal del apartado?. solamente indicar que la frecuencia de muestreo del convertidor D/A será 16.segundos. duración. escuche el resultado de convertir el vector x1 a traves del convertidor D/A de la tarjeta de sonido del PC. No hay que recalcular las muestras de xx. ¿Qué se escuchará? Compruebelo audíblemente y con el osciloscopio.2000) x2]. Mediante el comando.3. Genere una matriz Y(Nx2) de dos columnas y cada una de ellas con N muestras de una señal .. ( Las tarjetas de audio actuales soportan sin problemas fs = 8000 Hz o fs = 11025 Hz). Genere muestras para las columnas que correspondan a una señal sinusoidal de frecuencia f= 400 Hz con valor de  = 0 para la primera columan y  = pi/2 .Calcule un nuevo vector x2 ( 2 segundos de duracción) de muestras tomadas en una sinusoidal con A = 1... pero cambie la frecuencia de muestreo en el comando sound( ) a un valor de 16.000 muestras/segundo. tono. 2. fs) genera una señal estereo que envía la primera columna por el canal derecho de audio y la segunda por el izquierdo. Genere una nueva señal que incluya ambas mediante la siguiente sentencia Matlab ( se supone que ambos vectores son vectores fila): xx = [ x1 zeros(1.2.4. f = 800 Hz. sound( ). Escuche el sonido de la señal reconstruida a partir de las muestras. Describa las diferencias que se escuchan en este caso.Vuelva a escuchar el resultado de enviar la señal xx al convertidor D/A. El comando sound (y.

3.Alias de una señal audible Compruebe audiblemente el problema de aliasing.-.2. E.para la segunda. Por ejemplo puede intentar una canción cuyas primeras notas son SOL. Compruebe como suena y emplee el osciloscopio para comprobar el desfase. La fsiguiente= 2 (1/12) fprecedente .3. Asegure que la duración de los sonidos de las notas es la correcta. 2.1(*). Genere una señal de dos componentes ( uno para cada canal) como en el caso anterior y una duración de 15 segundos pero variando su desfase de tal manera que en los primeros 5 segundos estan en fase. G. se pide generar y escuchar las notas de la Figura 2.. los siguientes 5 segundos desfasados  = pi/2 y los 5 segundos finales desfasados  = pi.5.Selecione uno de sus piezas favoritas de música y generan un conjunto apropiado de tonos que corresponde a ocho o diez notas .DO.SOL. Se debe generar un alias de este tono y verificarlo con una representación gráfica matlab y la comprobación de manera audible.¿Cómo ha elegido la frecuencia del tono que es un alias de la señal? Notas Musicales 2. ¿ Qué sucede cuando se duplica o divide la frecuencia de una nota determinada? Alargue la duración de cada nota para visualizar la variación en frecuencia de las notas de la escala en el osciloscopio.2.Pruebe la superposición de los tonos en el tiempo y la suma de armónicos a los tonos. el C). así como realizando una medida diretamente de la salida de la tarjeta de audio con el osciloscopio .3.DO(G. 2. para ello genere y escuche un tono a 440 Hz. Debe tenerse en cuenta que armónicos corresponden a la misma nota pero en octavas superiores y ponderar la importancia (amplitud) de cada componente.MI..2. ¿Cuál es la frecuencia de Nyquist para este tono?.3. . C medio.Empezando desde DO (octava 3).. Puede aprovechar la relación que siguen las frecuencias de la notas. E. 2. siendo la duración de las dos primeras notas la mitad que el resto.MI. Se pide determinar un alias de esta señal si se mantiene la frecuencia de muestreo del sistema. utilizando una fs= 8000Hz.

3..De acuerdo con lo anterior genere la siguiente señal x(t) = 7.Utilice la función specgram para estudiar la señal x(t) generada en el apartado anterior. 2.Cree una función que genere un "chirp"(gorjeo) cuya frecuencia varíe entre f1 y f2 tenga una duración de dur segundos y haya sido muestreada con una frecuencia fs.1. la frecuencia instantanea de esta señal se corresponde con : Se pide: 2.4. 2. Siendo xx señal la estudiar y fs la frecuencia de muestreo utilizada. identificando los parámetros descritos y verificando su sonido.4.7 cos (2 *pi (100 +200 t + 500 t2). Espectrograma: La sentencia matlab specgram permite analizar la variación de frecuencia en una señal en función del tiempo.[]. . La señal correspondiente corresponde a x(t) =cos( (t) ).4.Genere el subconjunto de tonos correspondiente al acorde DO-MISOL. Use : specgram (xx.2..4.-Señales moduladas en frecuencia Se pretende generar una señal cuya frecuencia está modulada en el tiempo.. Un Chirp (Gorjeo) es una señal cuya frecuencia instantanea f i(t) cambia linealmente con el tiempo: fi(t)= 2 µ t+fo.fs).3 (*).4.-. La frecuencia debe variar desde un valor bajo a uno mas alto. 2.2.

Generacion de Chirps.fs) 2.5 (*).A.x) . Primero filtra el vector x. ¿ Es el incremento de frecuencia lineal? ¿Audiblemente se detectan incrementos o decrementos en la frecuencia instantanea? Genere el espectrograma de la señal y explique los resultados. B y A son los coeficientes del filtro digital. NOTA: Aunque el ejercicio no lo pida es muy ilustrativo medir directamente la salida de la tarjeta de audio con el osciloscopio.A.4.4. Más detalles en el Help de MATLAB.Fecha de la última actualización: Marzo del 2004 Diseño de Filtros IIR con MATLAB  Finalmente. y su respuesta la rota y le vuelve a aplicar el mismo filtro. pero hace dos filtrados. cuando diseñemos un filtro digital nos interesará poder aplicar ese filtro a una señal temporal. Página mantenida por: Francisco.4.x) o El vector x es la entrada y el vector y es la salida filtrada.Compare el funcionamiento de la señal creada en el apartado anterior con la función chirp existente en matlab (Toolbox signal) 2.  >> y = filter(B.  >> y = filtfilt(B. que funciona de la misma manera que “filter”.    Escuche la señal generada..J.dur.function gorjeo(f1.f2. Usando indistintamente la función que se acaba de realizar en los apartados anteriores o la existente en matlab genere una señal tipo chirp de un duración de 3 segundos con un frecuencia de muestreo fs = 8000 Hz y cuya frecuencia instantanea comience en 15000 Hz y termine en 300 Hz. La respuesta final evita la distorsión de fase propia de los filtros IIR. Eso se consigue con la función de MATLAB “filter”. Gómez Arribas -------------------------. o  Existe otra función llamada “filtfilt”.