function demo1
% L170101
% Esitellään käsitteet signaali x(t), sekvenssi x[n],
%  muutamia signaalioperaatioita ja suodatus

[y, fs, nbits] = wavread('nayte2.wav'); % lue signaali
t = linspace(0, length(y)/fs, length(y));
plot(t, y);      % voidaan piirtää
title('Signaali x(t)');
xlabel('aika (sekunnit)');
fprintf(1,'Signaali x(t) piirretty! PAUSE\n');
pause;

stem(t(20000:21000),y(20000:21000));  %diskreetti, digitaalinen
title('...joka tietokoneessa on digitaalinen sekvenssi x[n]');
xlabel('aika (sekunnit)');
fprintf(1,'Sekvenssi x[n] piirretty! PAUSE\n');
pause;

y(1:10000)  %printtaa pelkkiä numeroita
fprintf(1,'...pelkkiä numeroita, mutta kuunnellaan\n');
pause;

soundsc(y, fs);  %..mutta kuuntele! 
y(1:10000) % eli vain numeroita, mutta kun kaiuttimesta 
pause(5);
fprintf(1,'Sekvenssi pelkkiä numeroita, voidaan soittaa eri nopeuksilla\n');
pause;

kerroin = input('Anna nopeutus/hidastuskerroin: ');
% voit käsitellä signaalia. Koska pelkkiä numeroita, voit säästää aikaa
soundsc(y, kerroin*fs);
% !!! sama taajuus, mutta hitaampi tai nopeampi NOKIA
fprintf(1,'...vielä muita operaatioita...\n');
pause;

fprintf(1,'Fade-out, äänen vaimentaminen ajan myötä\n');
win = linspace(1,0,length(y));
y2 = y.*win'; % vaimentaminen, fade out
soundsc(y2,fs); 
plot(t,y2);
title('Fade-out, vaimennettu signaali x(t)');
xlabel('aika (sekunnit)'); 
pause;

fprintf(1,'Koska vain lukuja, voidaan vaihtaa järjestys vastakkaiseksi\n');
%käännetään
plot(t,flipud(y2));
soundsc(flipud(y),fs);
pause;

fprintf(1,'Äänessä on paljon suhinaa\n');
fprintf(1,'Tehdään alipäästösuodin, joka päästä läpi vain puhelintaajuudet.\n');
fprintf(1,'Aikatason nopeat muutokset signaalissa vastaavat korkeita taajuuksia.\n');
fprintf(1,'Aikatason hitaat muutokset ovat matalia taajuuksia.\n');
pause;

Wp = 2*2800/fs;
Ws = 2*3300/fs;
Rp = 1;
Rs = 40;
[N,Wn] = ellipord(Wp, Ws, Rp, Rs);
[b,a] = ellip(N, Rp, Rs, Wn);

fprintf(1,'Tehtiin elliptinen alipäästösuodin\n');
[hh,ww]=freqz(b,a,1024,fs);   % suotimen amplitudi- ja vaihevaste
plot(ww,abs(hh).^2);
pause;

fprintf(1,'Suodatetaan suhinainen signaali...\n');
% Seuraavalla komennolla suodatetaan "nayte2" alipäästösuotimella
ysuod = filter(b,a,y);  
fprintf(1,'...ja saadaan aikaan alipäästösuodatettu "puhelinsignaali"\n');
soundsc(ysuod,fs);
%soundsc(y,fs);

