Bump version numbers to 6.2.0
[scilab.git] / scilab / modules / sound / macros / mapsound.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) ???? - INRIA - Scilab
3 //
4 // Copyright (C) 2012 - 2016 - Scilab Enterprises
5 //
6 // This file is hereby licensed under the terms of the GNU GPL v2.0,
7 // pursuant to article 5.3.4 of the CeCILL v.2.1.
8 // This file was originally licensed under the terms of the CeCILL v2.1,
9 // and continues to be available under such terms.
10 // For more information, see the COPYING file which you should have received
11 // along with this program.
12
13 function mapsound (w,dt,fmin,fmax,simpl,rate)
14     // Plots a sound map for a sound.
15     // It does FFT at time increments dt.
16     // rate is the sampling rate.
17     // simpl points are collected for speed reasons.
18
19     [lhs,rhs]=argn(0);
20     if ( rhs <= 5 ) then rate=0;end
21     if ( rhs <= 4 ) then simpl=1; end ;
22     if ( rhs <= 3 ) then fmax=1500; end ;
23     if ( rhs <= 2 ) then fmin=100; end ;
24     if ( rhs <= 1 ) then dt=0.1;  end ;
25     n=prod(size(w));
26     defaultrate=22050;
27     if rate==0; rate=defaultrate; end;
28     dp=dt*rate;
29     points=2^floor(log(dp)/log(2));
30     ind=fmin/rate*points/simpl:fmax/rate*points/simpl;
31     f=abs(fft(w(1:points),1));
32     f=sum(matrix(f,points/simpl,simpl),"c")';
33     M=f(ind);
34     i=1;
35     i=i+dp;
36     while i+points <= n;
37         f=abs(fft(w(i:i+points-1),1));
38         f=sum(matrix(f,points/simpl,simpl),"c")';
39         M=[M;f(ind)];
40         i=i+dp;
41     end;
42     [nl,nc]=size(M);
43     if nl==1 ; return;end
44     x_abs= (0:(nl-1))*(n/rate)/(nl-1);
45     y_abs= (0:(nc-1))/(nc-1);
46     y_abs= fmin*(1-y_abs) + fmax*(y_abs)
47     grayplot(x_abs,y_abs,-M)
48 endfunction