%--
%-- specgram demo idea
%--
format compact
Fs = 8000
Fo = 660
T_total = 1.2;
tt = 0:(1/Fs):T_total;
%=================================
%---
%--- make a scale for C major
%---
keys = [ 40 42 44 45 47 49 51 52 ];
%--NOTES: C D E F G A B C
% key #40 is middle-C
%
Fs = 4000;
duration = 0.15;
tt = 0: (1/Fs) : duration;
y2 = [ ];
for kk = 1:length(keys)
keynum = keys(kk) + 7; %<--- add 12 to move up one octave
freq = 440 * (2 .^ ((keynum-49)/12)); %<---- OPTIONAL
y2 = [ y2, cos( 2*pi*freq*tt - pi/2 ) ];
end
%---
figure(1), sound(y2,Fs)
Fmax = Fs;
Nfft = 256; Nover = 200;
[B,F,T] = specgram(y2,Nfft,Fmax,[],Nover);
subplot(1,1,1), imagesc(T,F,db(B,40));
title(['PLAY A SCALE'])
axis xy, colormap(1-gray)
ylabel('FREQUENCY (Hz)'), xlabel('TIME (sec)')
drawnow, sound(y2,Fs)
B2 = B; F2 = F; T2 = T;
keyboard
clear y2
%=================================
load FE %-- creates yy and Fs
y1 = yy; clear yy;
%--
figure(2)
subplot(1,1,1), strips(y1(1:2:round(0.36*Fs)),0.06,Fs/2), xlabel('TIME (sec)')
title('Fur Elise (0.36 secs)')
%--
figure(3), sound(y1,Fs)
Fmax = Fs/2;
Nfft = 256; Nover = 160;
nn = round(4.7*Fs):2:round(6.8*Fs);
[B,F,T] = specgram(y1(nn),Nfft,Fmax,[],Nover);
T = 4.7+T;
subplot(1,1,1), imagesc(T,F,db(B,25));
title(['FUR ELISE'])
axis xy, colormap(1-gray)
ylabel('FREQUENCY (Hz)'), xlabel('TIME (sec)')
drawnow, sound(y1,Fs)
B1 = B; F1 = F; T1 = T;
keyboard
clear y1
%=================================
load train %-- creates y and Fs
y4 = y'; clear y;
%--
figure(4), sound(y4,Fs)
Fmax = Fs;
Nfft = 256; Nover = 200;
Ly = round(0.75*Fs);
nn = 1:1:Ly;
[B,F,T] = specgram(y4(nn),Nfft,Fmax,[],Nover);
subplot(1,1,1), imagesc(T,F,db(B,40)); grid
title(['TRAIN WHISTLE'])
axis xy, colormap(1-gray)
ylabel('FREQUENCY (Hz)'), xlabel('TIME (sec)')
drawnow, sound(y4,Fs)
B4 = B; F4 = F; T4 = T;
keyboard
clear y4
%=================================
load bat %-- creates yy and Fs
Fs = 8000;
%---
figure(5), sound(sa,Fs)
Fmax = Fs;
Nfft = 256; Nover = 200;
[B,F,T] = specgram(sa,Nfft,Fmax,[],Nover);
subplot(1,1,1), imagesc(T,F,db(B,40));
title(['BAT.MAT (MALE SPEAKER)'])
axis xy, colormap(1-gray)
ylabel('FREQUENCY (Hz)'), xlabel('TIME (sec)')
drawnow, sound(sa,Fs)
B3 = B; F3 = F; T3 = T;
keyboard
%=================================
load Bee_5th %-- creates yy and Fs
yy = yy(1:50000);
yy = yy + 100*randn(size(yy)); %-- guard against zeros
%--
figure(6), sound(yy,Fs)
Fmax = Fs/2;
Nfft = 256; Nover = 0;
Ly = length(yy);
nn = 1:2:Ly;
[B,F,T] = specgram(yy(nn),Nfft,Fmax,[],Nover);
subplot(1,1,1), imagesc(T,F,db(B,40)); grid
title(['Beethovens FIFTH (Robby GRIFFIN)'])
axis xy, colormap(1-gray)
ylabel('FREQUENCY (Hz)'), xlabel('TIME (sec)')
drawnow, sound(yy,Fs)
B5 = B; F5 = F; T5 = T;
keyboard
clear yy
%=================================
figure(7)
subplot(2,2,1), imagesc(T2,F2,db(B2,40));
axis xy, grid
title(['PLAY A SCALE'])
ylabel('FREQ (Hz)'), xlabel('TIME (sec)')
subplot(2,2,2), imagesc(T1,F1,db(B1,40));
axis xy, grid
title(['FUR ELISE'])
ylabel('FREQ (Hz)'), xlabel('TIME (sec)')
subplot(2,2,3), imagesc(T4,F4,db(B4,40));
axis xy, grid
title(['TRAIN WHISTLE'])
ylabel('FREQ (Hz)'), xlabel('TIME (sec)')
subplot(2,2,4), imagesc(T3,F3,db(B3,40));
axis xy, grid
title(['BAT.MAT (MALE SPEAKER)'])
ylabel('FREQ (Hz)'), xlabel('TIME (sec)')
colormap(1-gray)
drawnow