MATLAB
BÁSICO
Prof.
Alberto Adade Filho (ITA/CTA)
29. Som no MATLAB |
O Matlab propicia alguns recursos para a leitura e reprodução de arquivos de sons.
sound sound(y) converte um vetor y de valores em som. O vetor é auto-escalonado de modo que máximo e mínimo valores em y correspondam à máxima e mínima amplitude permitidas pelo hardware de som do computador. O som é produzido na taxa de amostragem pré-ajustada; sound(y, Fs) reproduz o som numa freqüência de amostragem de Fs Hz.
wavread Permite "carregar" para o ambiente Matlab um arquivo de som; [y,Fs,Formato]=wavread(wavefile) carrega um arquivo em formato .wav retornando os dados amostrados na variável y, a taxa de amostragem na variável Fs e informação de formato do arquivo .wav na variável Formato. A informação de formato é um vetor de 6 elementos,
Formato(1) Formato dos dados (sempre PCM)
Formato(2) Número de canais
Formato(3) Taxa de amostragem (Fs)
Formato(4) bytes per second, amostragem média
Formato(5) Alinhamento em bloco dos dados
Formato(6) Bits por amostra
Obs. wavread atualmente aceita somente um canal de dados de 8 bits. |
wavwrite Grava um arquivo .wav; wavwrite(y,Fs,wavefile):
y Os dados amostrados a serem gravados
Fs Taxa na qual os dados foram amostrados
wavefile Uma string com o nome do arquivo .wav a ser criado
Obs. wavwrite cria um arquivo .wav de dados de 8 bits, um canal. |
saxis Escalona o eixo de som; saxis([SMIN SMAX]) desabilita o escalonamento automático e ajusta o escalonamento tal que SMIN e SMAX correspondam, respectivamente, à amplitude mínima e máxima permitidas pelo hardware de som (usualmente o intervalo ± 1). Valores fora deste intervalo são grampeados; saxis(auto) faz retornar ao escalonamento automático; saxis, somente, retorna SMIN e SMAX vigentes.
Obs. 1 A função saxis é análoga a axis só que o seu escalonamento se aplica a sons e não a limites gráficos. |
Obs. 2 Antes de gravar um arquivo sonoro, escalonar o vetor de amostras para que fique no intervalo de -127 a 128 (8 bits) ou -32767 a 327. |
Obs. 3 Caso sons ininteligíveis ou distorcidos sejam obtidos, é possível que haja necessidade de corrigir o auto-escalonamento efetuado pelo Matlab.68 (16 bits). |
Há alguns arquivos .MAT no diretório \toolbox\matlab\sounds do Matlab, que contém exemplos de sons digitalizados; cada um desses MAT-file contém um vetor y com as amostras de som e um escalar Fs definindo a freqüência de amostragem associada.
Ex. 1 Carregar o arquivo train.mat, reproduzir o som (apito de uma locomotiva) e plotar o gráfico correspondente:
load train
sound(y,Fs)
t=(0:length(y)-1)/Fs;
plot(t,y)
Ex. 2 Ajustar os limites de som para ± 1 e gerar um tom de 1 Khz usando uma freqüência de amostragem de 8192 Hz. Dobrar e reduzir pela metade os limites de som e verificar o resultado audível.
saxis([-1 1])
t=(0:10000)/8192;
y=sin(2*pi*1000*t);
sound(y,8192)
saxis([-2 2])
sound(y, 8192)
saxis([-.5 .5])
sound(y,8192)