% Corso Informatica Multimediale Audio: Prof. Mario Malcangi
%
% Esempio di programmazione per il trattamento del segnale audio
%
% Sintesi di un tono puro con i seguenti parametri:
%
% Frequenza : 1000 Hz,
% Ampiezza massima: -6 dB (metà del livello di ampiezza in uscita dalla scheda audio)
% 

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

%
% Definizione del formato digitale
%

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

% Parametri della sintesi

Dur=1;          % Durata totale del tono puro (s)
AdB=-6;         % Ampiezza massima (dB)            
f=1000;         % Frequenza (Hz)

% Rielaborazione dei parametri

Ts=1/Fs;        % Periodo di campionamento (s)
N=Dur/Ts;       % Numero di campioni corrispondenti alla durata
A=10^(-6/20)    % Ampiezza massima in misura lineare
                % Nota: la scheda audio tratta valori lineari interi

% Generazione della sequenza di campioni del tono puro tramite modello
% matematico
                
for(n=0:N-1)
    x(n+1)=A*sin(2*pi*f*n*Ts);  % x è un vettore dati che contiene la sequenza di campioni 
end

% Visualizzazione

t=0:Ts:10*(1/f);                    % Asse del tempo 
plot(t,x(1:(10*(1/f))/Ts+1));       % Plot di 10 periodi del tono puro
xlabel('tempo (s)');
ylabel('Ampiezza (lineare)');

% Riproduzione

wavplay(x, Fs);

% Memorizzazione su file 

wavwrite(x,Fs,Nbit,'Tone1000.wav');
