relatório
TRANSCRIPT
-
UNIVERSIDADE FEDERAL DO PAR
INSTITUTO DE TECNOLOGIA
FACULDADE DE ENGENHARIA DA COMPUTAO
Disciplina: Projetos de Engenharia I
Projeto 4 - Processamento de Msica Usando o Matlab/Octave
Aluno: Alexandre Farias Baa
Nmero de Matrcula: 11080006801
Professor: Aldebaro Klautau
Relatrio acerca do Projeto 4 - Processamento de Msica Usando o Matlab/Octave
Msica utilizada: Soul Dealer
Compositor: Daisuke Ishiwatari
lbum: Guilty Gear X Heavy Rock Tracks
Software utilizado: MATLAB 7.10.0 (R2010a)
Parte 1 Comparar a razo de compresso entre o arquivo WAV e o MP3
Arquivo original: souldealer
Formato: MP3
Nmero de amostras: 16 bits
Taxa de amostragem: 44100Hz
Tamanho em bytes: 819 129 bytes
Arquivo convertido: souldealer(entrada)
Formato: WAV (PCM linear)
Nmero de amostras: 16 bits
Taxa de amostragem: 44100Hz
Tamanho em bytes: 2 993 036 bytes bytes
Clculo da razo de compresso entre o tamanho dos arquivos:
2 993 036 ------ 100%
819 129 -------- x%
2993036*x=819129*100
-
x=819129*100/2993036
x=27,3%
Ento a "razo de compresso" de um arquivo WAV PCM linear com taxa de amostragem de
44100 Hz mono com um nmero de amostras de 16 bits para um em MP3 com a mesma taxa
de amostragem e nmero de amostras, porm estreo, cerca de 27,3%.
Parte 2 Implementando o efeito especial Delay atravs do MATLAB
Descrio
Delay um efeito especial comumente gerado pelo armazenamento do sinal de udio em
um buffer eletrnico por um certo perodo de tempo para depois ser reenviado para a sada de
udio. O efeito mais simples conseguido pela soma do sinal original com o sinal atrasado.
Delays mltiplos podem ser gerados pela reinsero repetida do sinal atrasado. Multitap
delays so gerados a partir de um nico e longo delay que repetido em intervalos diferentes,
gerando mltiplas repeties. Ping-pong delays so obtidos pelo direcionamento alternado de
cada repetio para os canais esquerdo e direito da sada de udio.
Para este projeto, utilizarei o efeito mais simples.
Mtodo de implementao
Passo 1 Testes atravs do Audacity e implementao da teoria
Utilizei o mesmo udio obtido durante a Parte 1 do projeto (souldealer(entrada).wav), o
carreguei no Audacity e testei diversos valores de delay, optando pelo atraso 1,5 segundos
para que fosse perceptvel sem obter discrepncias quanto ao udio original.
udio de entrada (Sem Delay)
-
udio de sada (Com Delay)
O Delay visvel no trecho final da faixa, onde se v um prolongamento de menor intensidade
comparado ao udio de entrada, para ser mais exato, partir de 33 segundos de msica, onde
no udio de entrada era praticamente um valor nulo, no Delay observa-se o atraso de 1,5
segundos e a variao de cerca de 0.6 decibis.
Passo 2 Implementao do cdigo do Delay atravs do MATLAB
Utilizei o seguinte cdigo no MATLAB para que fosse possvel implementar uma interface
similar a do Audacity(Cdigo devidamente comentado para uma melhor compreenso):
%Comando utilizado para ler o arquivo original soul_dealer(entrada).wav.
%Onde x passa a ser o udio de entrada.
%E fs a frequncia, que neste caso 44100Hz.
[x,fs]=wavread('C:\temp\souldealer(entrada).wav');
%Inicializao das constantes, respeitando as mesmas estabelecidas no Audacity.
%"a" corresponde ao Grau de atenuao do eco em decibis.
%"delay" corresponde ao Temporizador do Delay em segundos.
%Foi escolhido 1.5 segundos para que o Delay fosse mais perceptvel.
a=.6;
delay=1.5;
%Expresso para calcular o nmero de amostras do Delay.
%Onde D o nmero total de amostras do Delay.
%Obtido pela multiplicao da constante delay pela frequncia do udio
D=delay*fs;
-
%Onde y corresponde ao udio a ser modificado pelo Delay.
y=zeros(size(x));
%Expresso utilizada para filtrar o sinal.
%Sendo ela uma equao diferencial.
for n=D+1:1:length(x)
y(n)=x(n)+a*x(n-D);
end;
%Comando utilizado para executar o udio original.
soundsc(x,fs)
%Comando utilizado para executar o udio com o efeito do Delay.
soundsc(y,fs)
%Comando utilizado para salvar o udio modificado pelo Delay.
wavwrite(y,44100,16,'C:\temp\souldealer(delay).wav')
%Parmetros para se plotar o grfico de Tempo(segundos)xFora Relativa do Sinal (decibis)
(souldealer(entrada).wav).
out=x(:,1);
time=(1/44100)*length(x);
t=linspace(0,time,length(x));
%Plot do grfico para o udio de entrada (souldealer(entrada).wav).
%Considerando a tempo total do udio.
plot(t,x),...
xlabel('Tempo(segundos)'),...
ylabel('Fora Relativa do Sinal(decibis)'),...
title('Tempo x Fora Relativa do Sinal (souldealer(entrada).wav)'),...
grid;
%Parmetros para se plotar o grfico de Tempo(segundos)xFora Relativa do Sinal(decibis)
(souldealer(delay).wav).
out=y(:,1);
time=(1/44100)*length(y);
t=linspace(0,time,length(y));
%Plot do grfico para o udio com Delay (souldealer(delay).wav).
%Considerando a tempo total do udio.
plot(t,y),...
xlabel('Tempo(segundos)'),...
ylabel('Fora Relativa do Sinal(decibis)'),...
title('Tempo x Fora Relativa do Sinal (souldealer(delay).wav)'),...
grid;
-
Passo 3 Explorando o cdigo do Delay e Anlise final
Simplesmente, apliquei uma equao diferencial para que o sinal original fosse somado ao
sinal atrasado: y(n) = x(n) + ax(n-D)
Onde, no cdigo, ela foi expressa da seguinte forma: y(n)=x(n)+a*x(n-D)
E analisando graficamente (Preferi colocar, em separado, os grficos correspondentes a cada
plot para que os blocos de cdigo no ficassem desconexos):
Grfico 1 udio de entrada (souldealer(entrada).wav)
Grfico 2 udio de sada (souldealer(delay).wav)
-
Pode ser visto nos grficos do MATLAB o mesmo detalhe notado nos grficos do Audacity, no
trecho final da faixa visvel o Delay partir de 33 segundos, com atraso de 1,5 segundos e a
variao de 0.6 decibis.
Logo, atravs da soma entre sinal original e o atrasado, possvel fazer o mesmo que o
Audacity no MATLAB, porm podemos ver realmente como gerado o efeito do Delay.
Referncias
Wikipdia - Artigo sobre o efeito especial Delay: http://pt.wikipedia.org/wiki/Delay
Artigo do Professor Fernando Iazzetta da USP sobre efeitos de udio:
http://www.eca.usp.br/prof/iazzetta/tutor/audio/efeitos/effx.html