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)