Sei sulla pagina 1di 9

1

MANIPULACIO DE SEALES DE AUDIO


ESCUELA POLITECNICA DEL EJRCITO
William P. Chvez
Electrnica en Automatizacin y Control
Ing. Enrique V. Carrera
Departamento de Elctrica y Electrnica

Resumeneste proyecto introduce al estudiante en el


tratamiento de seales continuas y en la aplicacin de las series de
las transformadas de Fourier, es por eso que se realiz un

I.

INTRODUCCION

El siguiente conjunto de actividades tienen por


objetivo aplicar los conceptos estudiados sobre seales
continuas/discretas y la transformada de Fourier. A lo largo
de este laboratorio (basado en Octave o Matlab [1] ) se
generarn y visualizarn
seales de audio, se las
descompondr en sus elementos sinusoidales bsicos, se
verificarn algunas propiedades de la transformada de
Fourier [2], y la utilizacin de Fourier en el clculo de
respuestas de sistemas as como en la generacin de efectos
de sonido.

II.

VERIFICACION DE OCTAVE/MATLAB

Ante de generar y visualizar seales de audio,


necesitamos verificar la instalacin y presencia de
Funcionalidad adicional en Octave/Matlab. En la mayora de
configuraciones se requiere la instalacin paquetes extras
disponibles
en
http://octave.sourceforge.net/packages.php.
Para el
presente conjunto de actividades requerimos al menos los
paquetes audio, image y signal.
Para verificar la configuracin del software, inicie la
ejecucin de Octave y digite las siguientes sentencias:
t=[0:1/8000:1];
x=sin(2*pi*440*t);
stem(t(1:40),x(1:40),'*');
sound(x,8000);

t=[0:1/8000:1]; es el rango que se le da a una


grafica con pasos de 1.25*10^4
x=sin(2*pi*440*t);
es la expresin de la
funcin con los pasos de la escala en t.
stem(t(1:40),x(1:40),'*');
crea el
grafico de la seal x con los primeros 40 valores de la
matriz antes creada, esto da como resultado una seal
discreta que posee asteriscos en los pontos que
describen la seal.
sound(x,8000); crea una funcin sonido que es el
sonido de la onda.

III.
PERCEPCION AUDITIVA
Esta seccin involucra la generacin de seales de audio
(i.e., sonidos) para posteriormente ilustrar Aspectos
particulares de la percepcin de sonidos.
1. Genere y reproduzca una seal de audio de 5 segundos
de duracin, consistiendo de la Suma de dos
sinusoidales de igual amplitud, una con frecuencia de
440 Hz y otra con frecuencia de 442 Hz. Escuche y
detecte las pulsaciones. Cuente el nmero de
oscilaciones.
CODIGO:
t=[0:1/8000:5];
x=2*sin(2*pi*440*t);
y=2*sin(2*pi*442*t);
s=x+y;
stem((1:50),s(1:50),'g.');
sound(s,8000);

En este cdigo se obtiene 16 pulsaciones por periodo.


2.

Repita el procedimiento anterior con la segunda


frecuencia siendo 441 Hz. Nuevamente Cuente el
nmero de oscilaciones. Repita una vez ms, con la
segunda frecuencia igual a 443 Hz. Qu puede notar al
respecto?
CODIGO:

t=[0:1/8000:5];
x=2*sin(2*pi*441*t);
y=2*sin(2*pi*443*t);
s=x+y;
stem((1:50),s(1:50),'g.');
sound(s,8000);

En este cdigo se obtiene 14 pulsaciones por periodo.


3.

Repita la parte 1, con la primera frecuencia siendo 220


Hz y la segunda 222 Hz. Qu Puede concluir hasta el
momento?
CODIGO:

t=[0:1/8000:5];
x=2*sin(2*pi*220*t);
y=2*sin(2*pi*222*t);
s=x+y;
stem((1:50),s(1:50),'g.');
sound(s,8000);

En este cdigo se obtiene 11 pulsaciones por periodo.


Se puede escuchar que la intensidad del sonido es mas baja
que las anteriores, esto quiere decir que la intensidad
disminuye cuando disminuye la frecuencia de las seales
sumadas, la velocidad de pulsacin es menor a los casos
anteriores.

Se pudo observar que la onda generada el periodo es mas


grande, lo que permite una mejor apreciacin de la grafica.
4.

Repita la parte 1 una vez ms pero generando una seal


estreo, con una sinusoidal en el canal izquierdo y otra
en el canal derecho. Escuche la seal, que nota?
CODIGO:

f=9000;
PI=3.1416;
t=(0:1/9000:5);
x=2*sin(2*PI*222*t)
y=2*cos(2*PI*222*t)
p=[x,y];
i=p(:,1);
d=p(:,2);
soundsc(p,f);
%%%CANAL IZQUIERDO%%%
stem((1:50),x(1:50),'g.');
title('CANAL IZQUIERDO');
ylabel('2*sin(2*pi*440*t)');
xlabel('t');
%%%%CANAL DERECHO%%%
stem((1:50),y(1:50),'g.');
title('CANAL DERECHO');
ylabel('2*cos(2*PI*222*t)');
xlabel('t');

a siguiente actividad recrea un estmulo, ilustrando el


fenmeno de agrupamiento.
1. Escriba una funcin que permita generar una sinusoidal
de medio segundo de duracin a una frecuencia que sea
un nmero de semitonos especficos arriba de la nota A
bajo C-media (i.e., 220 Hz). Verifique que notas
separadas 12 semitonos suenas de forma similar por
estar separadas una octava musical.
De acuerdo a la siguiente tabla podemos ver las frecuencias
de los semitonos:

CODIGO:
fm=44000; %Frecuencia de muestreo
fr=220 %frecuencia sonido, nota musical La
duracion=0.5; %Duracion en segundos
t=0:1/fm:duracion;
y=sin(fr*2*pi*t); % Seal senoidal
sound(y,fm) %sonido

2.

Adapte la actividad del punto anterior para permitir


tocar mltiples sinusoidales, una Despus de la otra.
CODIGO:

fm=44000;
fr=220;
duracion=0.5;
t=0:1/fm:duracion;
% Seales senoidales
y=sin(fr*2*pi*t);
z=sin(fr*3*pi*t);
o=sin(fr*4*pi*t);
p=sin(fr*5*pi*t);
q=sin(fr*6*pi*t);
a=[y,z,o,p,q]
sound(a,fm)
t=t(round(68.5*length(t)/100):round(70*length
(t)/100));
y=y(round(68.5*length(y)/100):round(70*length
(y)/100));
plot(t,y)
title('grafica de las formas de la seal que
esta guardada en "y"');

3.

En uno de los canales de audio estreo, reproduzca una


secuencia de sinusoidales { 13, 3, 10, 6,6, 10, 3, 13}
semitonos arriba de la nota A bajo C-media. En el otro
canal de audio reproduzca (al mismo tiempo) una
secuencia {1, 12, 5, 8, 8, 5, 12, 1} semitonos arriba de
A bajo C-media. Escuche el estmulo percibido, qu
nota?
CODIGO:

fm=44000;
fr=220;
t=0:1/fm:0.5;
w=2*pi*t; %w->Ohmega
y=sin(w*fr)
A=[13, 3, 10, 6, 6, 10, 3, 13];
for(i=1:8)
Y=y.*A(i);
end
Y=Y';
B=[1, 12, 5, 8, 8, 5, 12, 1];
for(j=1:8)
Z=y.*A(j);
end
Z=Z';
n=length(Y);
W(:,1)=Y;
W(:,2)=Z;
sound(W,4000)
subplot(2,1,1),plot(W,'g'),title('Sonido
Estereo');
s=1:1000+floor(fm/100);
subplot(2,1,2),plot(s,W(s)),title('Primeras
muestras');

3.
IV.

ANALISIS DE FURIER

IV.A Descomposicin
En el siguiente conjunto de actividades, el estudiante
visualizar y descompondr seales en sus componentes
sinusoidales fundamentales.
1. Construya un vector representando un segundo de una
seal de onda cuadrada con frecuencia de un Hz y
amplitud igual a 1, con tasa de muestreo de 44.1 KHz.
CODIGO:

Repita el procedimiento inmediatamente anterior


con seales seno de frecuencia 2, 3, 4, 5, Hz,
anotando las respuestas correspondientes. Nota
algn patrn?
Usando el cdigo anterior pero con f1 variando desde 2
en adelante.

T = 1/44100;
t = [0:T:1];
f1 = 1;
w1 = 2*pi*f1;
phi = 2*pi*0.75;
x1 = cos(w1*t + phi);
cuad=square(x1)
plot(t, cuad,'m');
xlabel ('Tiempo (segundos)');
ylabel ('x1');
title ('Onda Cuadrada');

Para encontrar el primer coeficiente b1 de la


descomposicin por Fourier de la onda cuadrada,
calcule dos veces la media del producto Hadamard
de la seal cuadrada por una seal seno de amplitud
1, frecuencia 1 Hz y tasa de muestreo de 44.1 Hz.
Anote su respuesta.
CODIGO:

Para f1=2Hz

Para f1=3Hz

2.

T=0.0025;
t=[0:T:1];
cuad1=square(2*pi*t);
subplot(3,1,1),plot(t,cuad1,'g')
title('Seal Cuadrada');
fs = 44.1;
T = 0.0025;
t = [0:T:1];
f1 = 1;
w1 = 2*pi*f1;
x1 = sin(w1*t);
subplot(3,1,2),plot(t,x1,'r')
title('Seal Senoidal');
cuad2=x1.*cuad1;
subplot(3,1,3),plot(t,cuad2,'m')
title('Producto de Hadamard');
media=0;
for i=1: 401
media=media+cuad2(i);
end
r=media/401;
b1=2*r;

Para f1=4Hz
Para f1=5Hz
Las crestas del producto de hadamard en frecuencias
impares en el punto 0.5 generan un par que se dirige para la
parte superior ya que en medio segundo se generan 2,5
ciclos y para las frecuencias pares las crestas van al contrario
porque se generan 2 ciclos exactos por cada 0,5 segundos.
4.

Repita los procedimientos de los puntos 2 y 3


con seales coseno de frecuencia 1, 2, 3, 4,....Hz
Detecta algn patrn?
CODIGO:

T=0.0025
t=[0:T:3];
cuad1=square(2*pi*t);
subplot(3,1,1),plot(t,cuad1,'b'),title('Seal
Cuadrada');
fs = 44.1; %tasa de muestreo%
T = 0.0025; %perodo de muestreo%
t = [0:T:3];o
f1 = 1; % Frecuencia q va variando
1,2,...[HZ]
w1 = 2*pi*f1; x1 = cos(w1*t);
subplot(3,1,2),plot(t,x1,'r'),title('Seal
Senoidal');
cuad2=x1.*cuad1;
subplot(3,1,3),plot(t,cuad2,'g'),title('Produ
cto de Hadamard');
media=0;
for i=1: 401
media=media+cuad2(i);
end
r=media/401;
b1=2*r;

Para f1=1Hz

Para f1=2Hz

Para f1=3Hz

Para f1=4Hz

Triangular:
Se puede observar que al aumentar la frecuencia en cada
seal es decir las veces que se repite la onda en un tiempo
determinado (periodo) y cada salto de ciclo el producto de
Hadamar es el inverso a la seal senoidal.
5.

Usando los patrones observados, intente formar la


descomposicin completa de la seal de onda
cuadrada en sus componentes sinusoidales.
Construya una seal con los primeros cinco
trminos de la expansin y use Octave/Matlab
para visualizarla. Parece esta una onda cuadrada?
CODIGO:
fs = 44.1;
T = 0.0025;
t = [0:T:1];
f1 = 1;
omega1 = 2*pi;
x1 = sin(omega1*t*1);
x2 = sin(omega1*t*2);
x3 = sin(omega1*t*3);
x5 = sin(omega1*t*5);
x7 = sin(omega1*t*7);
yt=(2*x1)+(2/3*x3)+(2/5*x5)+(2/7*x7);
title('Seal Cuadrada');
plot(t,yt,'o')
La seal simulada se asemeja a una onda cuadrada con un
riso u oscilacin en la parte superior e inferior de cada ciclo;
la sumatoria de las seales descompuestas converge
puntualmente a una funcin peridica que en este caso es
una onda cuadrada.
6.

Cuantos trminos recomendar para poder decir que


la onda resultante es una onda cuadrada con un
error menor a 5 %.
Repita el proceso anterior (descomposicin y sntesis) para
otras 2 formas de onda simples; como por ejemplo, una
forma de onda triangular o una diente de sierra.
Diente de Sierra:
CODIGO:
clc
clear all
fs = 44.1;
T = 0.0025;
t = [0:T:1];
f1 = 1;
W = 2*pi;
x1 = sin(W*t*1);x2 = sin(W*t*2);
x3 = sin(W*t*3);x4 = sin(W*t*4);
x5 = sin(W*t*5);x6 = sin(W*t*6);
x7 = sin(W*t*7);
yt=((-1)*x1)-(1/2*x2)-(1/3*x3)-(1/4*x4)(1/5*x5)-(1/6*x6)-(1/7*x7);
plot(yt,T,'g')
title('Seal Diente de Sierra');

IV.B Propiedades
El siguiente conjunto de actividades busca mostrar las
propiedades bsicas de la transformada de Fourier y su uso
en el clculo de respuestas en sistemas.
Esta primera parte es referente a la extraccin de
informacin sobre una nica frecuencia a partir de una
seal.
1. Construya un vector correspondiente a la exponencial
compleja con frecuencia igual a 1 Hz y tasa de
muestreo de 100 Hz, sobre un tiempo de 4 segundos.
CODIGO:
fs = 100;
T = 1/fs;
t = [0:T:4];
f1 = 1;
w=(2*pi*f1);
x1 = exp(i*w*t);
x2=cos(w*t)+ i*sin(w*t);
plot(t, x1,'g');
xlabel ('Tiempo (segundos)');
ylabel ('x1');
title ('Onda Exponencial Complejo');

2. Construya un vector correspondiente a la onda coseno


con amplitud 1, frecuencia 1 Hz y tasa de muestreo
de 100 Hz, sobre un tiempo de 4 segundos.
CODIGO:
fs =100;
T = 1/fs;
t = [0:T:4];
f1 = 1;
w = 2*pi*f1;
x1 = 1*cos(w*t);
plot(t, x1);
xlabel ('Tiempo (segundos)');
ylabel ('x1');
title ('Seal Cosenoidal Simple');

3. Calcule el producto punto de las seales generadas en


los puntos 1 y 2. Anote su respuesta.

) (
) (
) (
(
)

( )
( )
(

( )
( )
) (

CODIGO:
fs =100;
T = 1/fs;
t = [0:T:4];
f1 = 1;
w = 2*pi*f1;
x1 = 1*cos(w*t);
x2=cos(w*t)+ i*sin(w*t);
x3=cos(w*t);
x4=cos(w*t);
x5=x3.*x4;
plot(t, x5);
xlabel ('Tiempo (segundos)');
ylabel ('x1');
title ('Seal Producto de Seales
Generadas');
x2=cos(w*t)+ i*sin(w*t);

4. Repita los procedimientos de los pasos 2 y 3 con una


onda seno en lugar de coseno. Verifique que entiende
la relacin entre ambas respuestas.
CODIGO:
fs =100;
T = 1/fs;
t = [0:T:4];
f1 = 1; %
w = 2*pi*f1;
x1 = 1*cos(w*t);
x2=cos(w*t)+ i*sin(w*t);
x3=sin(w*t);
x4=sin(w*t);
x5=x3.*x4;
plot(t, x5,'go');
xlabel ('Tiempo (segundos)');
ylabel ('x1');
title ('Seal Producto de Seales Seno');

5. Repita los procedimientos de los pasos 2, 3 y 4 con


ondas coseno y seno cuya frecuencia es 2 Hz (la
frecuencia de la exponencial compleja no es alterada).
Comente su respuesta.
Paso 2:
CODIGO:
fs =100;
T = 1/fs;
t = [0:T:4];
f1 = 2;
w = 2*pi*f1;
x1 = 1*cos(w*t);
x2=1*sin(w*t);
plot(t, x2,'o');
xlabel ('Tiempo (segundos)');
ylabel ('x1');
title ('Seal Senoidal Simple');

Paso 3:
CODIGO:
fs =1000;
T = 1/fs;
t = [0:T:4];
f1 = 2;
w = 2*pi*f1;
x1 = 1*cos(w*t);

x2=cos(w*t)+ i*sin(w*t);
x3=cos(w*t);
x4=cos(w*t);
x5=x3.*x4;
plot(t, x5,'o');
xlabel ('Tiempo (segundos)');
ylabel ('x1');
title ('Seal Producto de Seales
Generadas');

Paso 4:
CODIGO:
fs =100;
T = 1/fs;
t = [0:T:4];
f1 = 2;
w = 2*pi*f1;
x1 = 1*cos(w*t);
x2=cos(w*t)+ i*sin(w*t);
x3=sin(w*t);
x4=sin(w*t);
x5=x3+x4;
plot(t, x5,'r.');
xlabel ('Tiempo (segundos)');
ylabel ('x1');

6. Repita los procedimientos de los pasos 2, 3 y 4


(
con un vector representando la seal
)
(
)
(
)
durando 4
segundos y donde
Paso 2:
CODIGO:

es 1Hz.

fs =100;
T = 1/fs;
t = [0:T:4];
f1 = 1;
w = 2*pi*f1;
x1 =
sin(w*t)+(1/3)*sin(3*w*t)+(1/5)*sin(5*w+t);%
seal senoidal
plot(t, x1,'*');
xlabel ('Tiempo (segundos)');
ylabel ('x1');
title ('Seal
sin(w*t)+(1/3)*sin(3*w*t)+(1/5)*sin(5*w+t)');
x2 = 1*cos(w*t);
plot(t, x2,'o');
xlabel ('Tiempo (segundos)');
ylabel ('x2');
title ('Seal Cosenoidal Simple');

Paso 3:
CODIGO:
fs =100;
T = 1/fs;
t = [0:T:4];
f1 = 1;
w = 2*pi*f1;
x1 =
sin(w*t)+(1/3)*sin(3*w*t)+(1/5)*sin(5*w+t);%
seal senoidal
plot(t, x1,'.');
xlabel ('Tiempo (segundos)');
ylabel ('x1');
title ('Seal
sin(w*t)+(1/3)*sin(3*w*t)+(1/5)*sin(5*w+t)');
%x2 = 1*sin(w*t);
%plot(t, x2,'r.');
%xlabel ('Tiempo (segundos)');
%ylabel ('x2');
%title ('Seal Cosenoidal Simple');

Paso 4:
CODIGO:
fs =1000;
T = 1/fs;
t = [0:T:4];
f1 = 1;
w = 2*pi*f1;
x1 = 1*cos(w*t);
x2=cos(w*t)+ i*sin(w*t);
x3=sin(w*t);
x4=sin(w*t);
x5=x3.*x4;
x6=sin(w*t)+(1/3)*sin(3*w*t)+(1/5)*sin(5*w+t)
;
plot(t, x5,'g');
xlabel ('Tiempo (segundos)');
ylabel ('x1');
title ('Seal Producto de Seales
Generadas');
%plot(t,x6,'r');
%xlabel ('Tiempo (segundos)');
%ylabel ('x1');
%title ('Seal
sin(w*t)+(1/3)*sin(3*w*t)+(1/5)*sin(5*w+t)');

La siguiente actividad utiliza la transformada de Fourier


y nos permite interpretar los resultados del operador f f t
en Octave/Matlab.
1. Tome seal la indicada en el punto 6 del tem
anterior y dibuje el mdulo del vector retornado por f
f t actuando sobre esta seal. Verifique que entiende:
La localizacin de los primeros 3 picos.
Las alturas relativas de los primeros 3 picos.
La intensidad del primer pico.
La existencia de los segundos 3 picos.
CODIGO:
fs =100;
T = 1/fs;
t = [0:T:4];
f1 = 0;

w = 2*pi*f1;
x1 =
sin(w*t)+(1/3)*sin(3*w*t)+(1/5)*sin(5*w+t);
X=fft(x1);
x=sin(2*pi*t)+(1/3)*sin(3*2*pi*t)+(1/5)*sin(5
*2*pi*t);
transformada=fft( x );
plot(t,abs(transformada),'r')
xlabel ('Tiempo (segundos)');
ylabel ('x1');
title ('Seal Senoidal Simple');

2. Tome la transformada inversa de Fourier (usando i f f


t) de la seal transformada por Fourier, y verifique
que la seal original es recuperada.
CODIGO:
fs =100;
T = 1/fs;
t = [0:T:4];
f1 = 0;
w = 2*pi*f1;
x1 =
sin(w*t)+(1/3)*sin(3*w*t)+(1/5)*sin(5*w+t);
x=sin(2*pi*t)+(1/3)*sin(3*2*pi*t)+(1/5)*sin(5
*2*pi*t);
transformada=ifft( x );
plot(t,abs(transformada),'k')
xlabel ('Tiempo (segundos)');
ylabel ('x1');
title ('Seal Senoidal Simple');

Esta ltima parte muestra el uso bsico de la


transformada rpida de Fourier para calcular respuestas
de sistemas a seales.
1. Calcule y dibuje el mdulo de la transformada de
Fourier de un sistema de retardo unitario, usando una
ventana (segundo parmetro de fft) de tamao 10.
CODIGO
x=[0:1000]
subplot(2,1,1);
plot(x,'.');
title('Grafica de Vector');
X=fft((x-1),10)
subplot(2,1,2);
plot(2*pi*(0:9)/10,abs(X),'r');
title('El Modulo De la Transormada de
Fourier');

2. Genere una seal aleatoria de tamao 9 y calcule su


transformada de Fourier sobre una ventana de
tamao 10.
CODIGO:
x=[0:8];subplot(3,1,1);
plot(x,'r');title('Grafica de Vector');
X=fft((x-1),10);subplot(3,1,2);
plot(2*pi*(0:9)/10,abs(X),'g');
title('El Modulo De la Transormada de
Fourier');

3. Verifique que la transformada inversa de Fourier del


producto de las respuestas obtenidas en los puntos 1
y 2 produzca la seal original retrasada por un
elemento, tal como el uso de una convolucin lo
habra hecho.
CODIGO 1:
x=[0:10];subplot(3,1,1);
plot(x,'r');title('Grafica de Vector');
X=fft((x-1),10);subplot(3,1,2);
plot(2*pi*(0:9)/10,abs(X),'r');
title('El Modulo De la Transormada de
Fourier');y=ifft(X,10)
subplot(3,1,3);
plot(2*pi*(0:9)/10,abs(y),'r');
title('Tranformada Inversa de Fourier');

CODIGO 2:
x=[0:8];subplot(3,1,1);
plot(x,'m');title('Grafica de Vector');
X=fft((x-1),10);
subplot(3,1,2);
plot(2*pi*(0:9)/10,abs(X),'m');
title('El Modulo De la Transormada de
Fourier');
y=ifft(X,10)
subplot(3,1,3);
plot(2*pi*(0:9)/10,abs(y),'m');
title('Tranformada Inversa de Fourier');

V.
EFECTOS DEL AUDIO
Esta ltima seccin cubre la aplicacin de efectos digitales
de audio.
Esta parte inicial ayuda a explicar el valor retornado por
el operador f f t en Octave/Matlab, usando como
materia prima una seal de msica real.
1. Descargue el archivo scale.wav y use las funciones
wavread and sound para reproducirlo. Cul es la
tasa de muestreo de este archivo de sonido?

2. Dibuje las primeras mil muestras del primer


canal. Puede determinar alguna regularidad
aparente en el grafico? Si este es el caso, estime
el perodo de la regularidad en muestras y por
ende la frecuencia de dicha regularidad.

3. Aplique la transformada de Fourier a las primeras mil


muestras del primer canal y dibuje su magnitud. Note
la simetra alrededor del punto medio.

4. Dibuje la magnitud de la transformada de Fourier


obtenida sobre los primeros 100 bins de frecuencia e
identifique el nmero del bin del pico ms alto.

5. Los bins estn en orden ascendente de frecuencia y


cada uno corresponde a un entero mltiplo de 1/T ,
donde T es el tiempo total de la seal cuya
transformada fue tomada. Calcule la frecuencia
correspondiente al bin identificado en el punto 4.
T=100

Por lo tanto

6. Repita los puntos 2, 3, 4 y 5 con las mil muestras de


audio empezando en 39001, 78001, 17001, 156001,
195001, 234001 y 273001. Es aconsejable escribir
funciones para automatizar este trabajo. Note todas
las frecuencias que obtuvo e intente relacionarlas con
las escalas musicales.
39001
78001
17001
156001
195001

1. Primero, necesitamos una respuesta al impulso.


Descargue el archivo YorkMinster.wav, escchelo y
piense como ese sonido se relaciona con una
respuesta al impulso.
2. Lea el archivo en Octave mediante wavread.
Note la tasa de muestreo utilizada.
CODIGO:
[melo fs NBits]= wavread('YorkMinster.wav');
wavplay(melo,fs);
% frecuencia de muestreo del archivo
siz=wavread('YorkMinster.wav','size');
subplot(2,1,1),plot(melo,'m'),title('Grafico
de la YorkMinster');

234001
273001
La tasa de muestreo es de 4800
Esta segunda parte ilustra los efectos de las tcnicas de
ilustrado bsico sobre seales musicales simples.
1. Usando el mismo archivo scale.wav, tome la
transformada de Fourier de la seal de un canal
completo. Verifique que tomando la transformada
inversa de Fourier (con i f f t) se produce la seal
original.
En el grafico podemos
observar claramente que
sacar la transformad de
furrier
y
luego
la
transformad inversa de
furrier se obtiene la
misma seal.
2. La remocin de un componente de frecuencia
particular de una seal es equivalente a configurar su
componente de Fourier a cero. Haga esto para todos
los bins de frecuencia entre 3001 y 311012
(inclusive).
CODIGO:
[x, Fs]=wavread('scale');
sound(x,Fs)
CanalD=x(:,1);
subplot(3,1,2)
FouT=fft(CanalD);
%%%%%%%%%%%%filtro
FouT(3001 : 311012)=0;
iFouT=real(ifft(FouT));
sound(iFouT,Fs)

3. Escuche el sonido producido por la transformada


inversa de Fourier de su espectro modificado y
comente sobre las relaciones existentes entre el nuevo
sonido, el antiguo y los componentes de frecuencia
removidos.
Se puede escuchar la pequea seal resultante a pesar de que
el filtro de Fourier elimina una parte de esta, en el grafico se
puede observar que son las 3 ultimas notas.
Esta parte final permite aplicar la acstica de un espacio
altamente resonante (York Minster) a una pieza de audio
musical simple sintetizada.

3. Descargue el archivo toccata.wav y lalo en


Octave/Matlab. Nuevamente, note su tasa de
muestreo.
La tasa de muestreo es de 44100
4. Como los archivos de audio tienen tasas de muestreo
diferentes, para poder tratar el uno como entrada para
el segundo archivo visto como sistema, use el
operador de resample para convertir una de las
seales a la tasa de muestreo de la otra.
Mediante el comando resample igualamos las tasas de
muestreo.
y=resample(x,fs1,1)

5. Trate de convolucionar las dos seales juntas para


producir la salida del sistema York Minster a partir de
la seal musical de entrada. Cunto tiempo est usted
preparado para esperar?
CODIGO:
[melo fs NBits]= wavread('YorkMinster.wav');
wavplay(melo,fs);
siz=wavread('YorkMinster.wav','size');
subplot(3,1,1),plot(melo,'r'),title('Grafico
de la Melodia YorkMinste');x=fs;
%segunda seal
[melo1 fs1 NBits]= wavread('toccata.wav');
wavplay(melo1,fs1);
z=fs1;siz1=wavread('toccata.wav','size');
subplot(3,1,2),plot(melo1,'r'),title('Grafico
de la Melodia toccata');
y=resample(x,fs1,1)
w=resample(z,fs,1)
%comvolucion de las dos seales
r=conv(y,w);
subplot(3,1,3),plot(r,'r'),title('Convolucion
');sound(r);

Se debe esperar aproximadamente 15 minutos demasiado


tiempo para un procesoincluso con el uso de matlab.

6. Use el mtodo de la transformada de Fourier para


implementar la convolucin aplicando el audio York
Minster a la seal musical. Cunto tiempo tom el
clculo?
CODIGO:
[melo fs NBits]= wavread('YorkMinster.wav');
[melo1 fs1 NBits]= wavread('toccata.wav');
F1=fft(melo(:,1));
F2=fft(melo1(1:length(melo),1));
cV=F1.*F2;

De esta manera Matlab nos ayuda a reducir el tiempo de


clculo.
7. Use wavwrite para escribir el resultado como un
archivo de audio y escucharlo a travs de un media
player.
CODIGO:
[melo fs NBits]=
wavread('YorkMinster.wav');
[melo1 fs1 NBits]=
wavread('toccata.wav');
F1=fft(melo(:,1));
F2=fft(melo1(1:length(melo),1));
cV=F1.*F2;
%generando audio .wav
CymT(:,1)=real(ifft(cV));
CymT(:,2)=real(ifft(cV));
wavwrite(CymT,44100,'NUEVO')
[con, FsN]=wavread('NUEVO');

El archivo de sonido creado en formato MP3 es


el resultado de la consolacin de las seales de
audio de los otros dos archivos tocata y
YorkMinster; el archivo creado es parecido al
audio del de tocata pero el sonido es mucho mas
fuerte que el de tocata.
Para Poder mostrar una Seal Diente de Sierra
tenemos que poner una muestra de 200
y(t)= -sen wt -1/2 sen 2wt -1/3 sen 3wt -1/4
sen 4wt -1/5 sen 5wt -1/6 sen 6wt -
y1=
-sen t
y2= -1/2sen 2t
y3=-1/3sen 3t
yT=-sen t -1/2sen 2t -1/3sen 3t
Con la elaboracin de este proyecto de reforso
todos los conocimientos tericos sodre la
transformada de Fourier y se verifico que es una
herramienta muy poderosa para la manipulacin
de seales de audio.

Autor:
William Paul Chvez Chamorro naci la ciudad de
Tulcn el 14 de abril de 1992, realizo sus estudio
primarioe en la escuela 11 de Abril, cruzo el
nivel secundario en el Instituto Tecnolgico
Bolvar,se graduo en el ao 2009, actualmente
crusa el quinto semestre de la carrera Ingenieria en
Automatizacin y Control en la Escuela Plotecnica
del Ejercito
VII.

Y se genero el archivo con el nombre de NUEVO

VI.

CONCLUCIONES

Al finalizar el proyecto se logr con xito realizar


la aplicacin de un modem celular con comandos
AT, la cual permite el envo y recepcin de
mensajes de texto cortos, adems es importante
mencionar que los comandos AT son distintos
para cada marca de telfono.
Para realizar la consolacin entre dos seales esn
necesario que las dos seales tengan la misma
tasa de muestreo.
Se comprob la propiedad de la transformada de
Fourier; que al aplicar la transformada de fourier
a una seal y luego aplicar la transformada de
fourier inversa se obtiene la misma seal.
La fuerza del sonido depende de la frecuencia a la
que estemos creando dicho sonido, dependiendo
de la frecuencia se pudo crear las diferentes notas
musicales.

BIBLIOGRAFIA

[1] T. A. Davis, MATLAB primer, 8th ed. Chapman &


Hall/CRC, 2011.
[2] A. V. Oppenheim, A. S. Willsky, and S. H. Nawab,
Signals & Systems, 2nd ed. Upper Saddle River, NJ, USA:
Prentice-Hall, Inc., 1996.

Potrebbero piacerti anche