%% Lezione del 28 ottobre 2009
%
% Appoggiandosi al seguente script Matlab, riprodurre e informalmente
% verificare alcuni degli effetti psicoacustici descritti all'appendice
% C del libro di testo. In particolare:
% - curve di equal loudness
% - curva di altezza (pitch)
% - battimenti e "roughness" a diverse bande critiche
% - mascheramento di un tono puro a 400 Hz e, successivamente, a 10000 Hz
%
%%

clear all

Fs = 44100;
p0 = 10^(-6);

%%%%%%%%%% First tone

dB1 = 80;
freq1 = 1000;

%%%%%%%%%% Second tone

dB2 = 80;
freq2 = 1000;

%%%%%%%%%% Processing

x = [0:2*Fs-1];

p1 = p0* 10^(dB1/20);
p2 = p0* 10^(dB2/20);

y1 = p1*sin(2*pi*freq1/Fs*x);
y2 = p2*sin(2*pi*freq2/Fs*x);

y = y1+y2;

%%%%%%%%%% Plots

upper_limit = 0.1   % set upper plot limit (s)

domain = [1/Fs:1/Fs:upper_limit];

figure(1)
plot(domain,y1(1:upper_limit*Fs),domain,y2(1:upper_limit*Fs))
xlabel('time (s)'), ylabel('amplitude (psi)'), title('Tones')

figure(2)
plot(domain,y(1:upper_limit*Fs))
xlabel('time (s)'), ylabel('amplitude (psi)'), title('Superposition')

%%%%%%%%%% Save data

wavwrite(y1,Fs,'y1.wav');
wavwrite(y2,Fs,'y2.wav');
wavwrite(y,Fs,'y.wav');

wavplay(y1,Fs), pause(1);
wavplay(y2,Fs), pause(1);
wavplay(y,Fs);
