%
% Ny 2007
% mod okt 2009
% Sverre Holm, Univ Oslo
%
% added dither 14.10.2014, SHolm
%

disp('Variablene bit (1,2,3,...) og dither (0/1) må settes')

%clear;
%fs=8000;
%y=auread('restaurant.au');
%y=wavread(...)

load tgn-shn.mat
% mann:
y=tgn;
% kvinne
y = shn;

if ~exist('bit')
    disp('Variabelen bit må settes til antall bit før rutinen kjøres!')
end
%
% skaler til +/-1 
%
ymax = max(abs(y));
y = y/(1+ymax);
bit
%
% compute quantization step
%
delta = 2/2^bit

%sound(y,fs)

figure(1)
subplot(2,1,1)
specgram(y,256,fs)
colormap(bone)
title('Spektrogram til original')

subplot(2,1,2)
plot((1:length(y))/fs,y)
pause
if dither == 1
    disp('Legger til rectangulær sitring (dither)')
    y0 = y + (delta/2)*(rand(size(y))-0.5); 
else
    y0=y;
end
%bit=1;
y1 = fxquant(y0,bit,'trunc','none');
sound(y1,fs)


figure(2)
subplot(2,1,1)
specgram(y1,256,fs)
colormap(bone)
title(['Spektrogram med ',num2str(bit),' bit'])
subplot(2,1,2)
plot((1:length(y1))/fs,y1)
pause

soundsc(y-y1,fs)

figure(3)
subplot(2,1,1)
specgram(y-y1,256,fs)
colormap(bone)
title(['Spektrogram til kvantiseringsstøy med ',num2str(bit),' bit'])
subplot(2,1,2)
plot((1:length(y))/fs,[-1 1 y(3:end)'-y1(3:end)'])



 






