Bump version numbers to 6.2.0
[scilab.git] / scilab / modules / sound / macros / soundsec.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) ???? - INRIA - Scilab
3 // Copyright (C) ???? - ENPC
4 // Copyright (C) 2014 - Scilab Enterprises - Pierre-Aimé AGNEL
5 //
6 // Copyright (C) 2012 - 2016 - Scilab Enterprises
7 //
8 // This file is hereby licensed under the terms of the GNU GPL v2.0,
9 // pursuant to article 5.3.4 of the CeCILL v.2.1.
10 // This file was originally licensed under the terms of the CeCILL v2.1,
11 // and continues to be available under such terms.
12 // For more information, see the COPYING file which you should have received
13 // along with this program.
14
15 function [t]=soundsec (n,rate)
16     // Return [0,n) seconds of t parameter at frequency = rate (sample/sec)
17     // Always excludes the last sample if it arrives exactly at n seconds
18     [lhs,rhs]=argn(0);
19
20     //set rate if not defined
21     if rhs <=1 ; rate=22050; end;
22
23     //==============================================================================
24     // Format testing of the parameters
25
26     //n must be a real positive scalar
27     if  typeof(n)=="constant"
28         if isreal(n)
29             if ~isscalar(n)
30                 //n is not a real positive scalar
31                 error(msprintf(_("%s: Wrong size for input argument #%d: %d-by-%d matrix expected.\n"),"soundsec",1,1,1));
32             end
33         else //n is not real
34             error(msprintf(_("%s: Wrong type for argument #%d: Real matrix expected.\n"),"soundsec",1));
35         end
36     else //n is not a constant matrix
37         error(msprintf(_("%s: Wrong type for argument #%d: Real matrix expected.\n"),"soundsec",1));
38     end
39
40     //rate must be a real strictly positive scalar
41     if  typeof(rate)=="constant"
42         if isreal(rate)
43             if ~isscalar(rate)
44                 //rate is not a real positive scalar
45                 error(msprintf(_("%s: Wrong size for input argument #%d: %d-by-%d matrix expected.\n"),"soundsec",2,1,1));
46             end
47         else //rate is not real
48             error(msprintf(_("%s: Wrong type for argument #%d: Real matrix expected.\n"),"soundsec",2));
49         end
50     else //rate is not a constant matrix
51         error(msprintf(_("%s: Wrong type for argument #%d: Real matrix expected.\n"),"soundsec",2));
52     end
53
54     //n and rate must be positive
55     if n<0
56         error(msprintf(_("%s: Wrong value for input argument #%d: Must be >= %d.\n"),"soundsec",1,0));
57     end
58
59     if rate<0
60         error(msprintf(_("%s: Wrong value for input argument #%d: Must be >= %d.\n"),"soundsec",2,0));
61     end
62     //Format test end
63     //==============================================================================
64
65     max_sample = floor(n*rate);
66     if (max_sample==n*rate)
67         //Remove the last sample if it falls exactly at the n-th seconds
68         max_sample = max_sample-1
69     end
70
71     if rate==0
72         //avoid dividing by 0, if rate is 0 the result will be the empty set
73         rate=1;
74     end
75
76     t = (0:max_sample)/rate;
77 endfunction