% Corso Informatica Multimediale Audio: Prof. Mario Malcangi
%
% Esempio di programmazione per il trattamento del segnale audio
%
% Lettura e scrittura di file audio:
% I file .wav sono con header (contenete Fs e Nbit)
% I file .raw sono senza header (non contengono Fs e Nbit)
%

clear;        % Azzera il workspace (spazio dati)
close all;    % Chiude tutte le finestre grafiche (plot)

%
% Definizione del formato digitale (iniziale)
%

Fs=8000;        % Frequenza di campionamento (Hz)
Nbit=16;        % Numero di bit di quantizzazione (bit)
Ts=1/Fs;        % Periodo di campionamento

% Lettura di un file formattato (.wav)

[x,Fs,Nbit]=wavread('Tone1000.wav');

% Visualizza e riproduce

Durata=length(x)*Ts; % durara della sequenza audio (s)
t=0:Ts:Durata-Ts;    % calibrazione asse del tempo
plot(t,x);             % visualizza
xlabel('Tempo (s)');
ylabel('Ampiezza (assoluta)');
wavplay(x,Fs);       % riproduce

% Memorizza in un file non formattato (.raw)

fid=fopen('Tone1000.raw','w');
xfix=fix(x*(2^(Nbit-1)));
fwrite(fid,x);
fclose(fid);

% Legge da un file non formattato (.raw)

fid=fopen('Tone1000.raw','r');
x=xfix/(2^(Nbit-1));
fwrite(fid,x);
fclose(fid);

% Visualizza e riproduce

Durata=length(x)*Ts; % durara della sequenza audio (s)
t=0:Ts:Durata-Ts;    % calibrazione asse del tempo
figure;              % mantiene il plot precedente
plot(t,x);             % visualizza
xlabel('Tempo (s)');
ylabel('Ampiezza (assoluta)');
wavplay(x,Fs);       % riproduce








