Mercurial > octave-nkf
annotate scripts/audio/record.m @ 19717:f96671da51a6
record.m: Improve input validation
* record.m: Improve input validation. Avoid attempting to record for zero
duration. Add %!tests.
author | Mike Miller <mtmiller@ieee.org> |
---|---|
date | Sun, 08 Feb 2015 23:24:45 -0500 |
parents | 890ff06d84ce |
children | 4197fc428c7d |
rev | line source |
---|---|
19711
0f557da98f5b
record.m: Overhaul function.
Mike Miller <mtmiller@ieee.org>
parents:
19681
diff
changeset
|
1 ## Copyright (C) 2015 Mike Miller |
17744
d63878346099
maint: Update copyright notices for release.
John W. Eaton <jwe@octave.org>
parents:
17338
diff
changeset
|
2 ## Copyright (C) 1995-2013 John W. Eaton |
2313 | 3 ## |
4 ## This file is part of Octave. | |
5 ## | |
6 ## Octave is free software; you can redistribute it and/or modify it | |
7 ## under the terms of the GNU General Public License as published by | |
7016 | 8 ## the Free Software Foundation; either version 3 of the License, or (at |
9 ## your option) any later version. | |
2313 | 10 ## |
11 ## Octave is distributed in the hope that it will be useful, but | |
12 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 ## General Public License for more details. | |
15 ## | |
16 ## You should have received a copy of the GNU General Public License | |
7016 | 17 ## along with Octave; see the file COPYING. If not, see |
18 ## <http://www.gnu.org/licenses/>. | |
2303 | 19 |
3332 | 20 ## -*- texinfo -*- |
19711
0f557da98f5b
record.m: Overhaul function.
Mike Miller <mtmiller@ieee.org>
parents:
19681
diff
changeset
|
21 ## @deftypefn {Function File} {} record (@var{sec}) |
0f557da98f5b
record.m: Overhaul function.
Mike Miller <mtmiller@ieee.org>
parents:
19681
diff
changeset
|
22 ## @deftypefnx {Function File} {} record (@var{sec}, @var{fs}) |
0f557da98f5b
record.m: Overhaul function.
Mike Miller <mtmiller@ieee.org>
parents:
19681
diff
changeset
|
23 ## Record @var{sec} seconds of audio from the system's default audio input at |
0f557da98f5b
record.m: Overhaul function.
Mike Miller <mtmiller@ieee.org>
parents:
19681
diff
changeset
|
24 ## a sampling rate of 8000 samples per second. If the optional argument |
0f557da98f5b
record.m: Overhaul function.
Mike Miller <mtmiller@ieee.org>
parents:
19681
diff
changeset
|
25 ## @var{fs} is given, it specifies the sampling rate for recording. |
0f557da98f5b
record.m: Overhaul function.
Mike Miller <mtmiller@ieee.org>
parents:
19681
diff
changeset
|
26 ## |
0f557da98f5b
record.m: Overhaul function.
Mike Miller <mtmiller@ieee.org>
parents:
19681
diff
changeset
|
27 ## For more control over audio recording, use the @code{audiorecorder} class. |
3332 | 28 ## @end deftypefn |
29 | |
19711
0f557da98f5b
record.m: Overhaul function.
Mike Miller <mtmiller@ieee.org>
parents:
19681
diff
changeset
|
30 function x = record (sec, fs) |
1636 | 31 |
32 if (nargin == 1) | |
19711
0f557da98f5b
record.m: Overhaul function.
Mike Miller <mtmiller@ieee.org>
parents:
19681
diff
changeset
|
33 fs = 8000; |
1636 | 34 elseif (nargin != 2) |
6046 | 35 print_usage (); |
1636 | 36 endif |
37 | |
19717
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19714
diff
changeset
|
38 if (! (isscalar (sec) && (sec >= 0))) |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19714
diff
changeset
|
39 error ("record: recording duration SEC must be a non-negative number"); |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19714
diff
changeset
|
40 endif |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19714
diff
changeset
|
41 |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19714
diff
changeset
|
42 if (! (isscalar (fs) && (fs > 0))) |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19714
diff
changeset
|
43 error ("record: sample rate FS must be a positive number"); |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19714
diff
changeset
|
44 endif |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19714
diff
changeset
|
45 |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19714
diff
changeset
|
46 x = []; |
1636 | 47 |
19717
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19714
diff
changeset
|
48 if (sec > 0) |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19714
diff
changeset
|
49 |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19714
diff
changeset
|
50 rec = audiorecorder (fs, 16, 1); |
1636 | 51 |
19717
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19714
diff
changeset
|
52 recordblocking (rec, sec); |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19714
diff
changeset
|
53 |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19714
diff
changeset
|
54 x = getaudiodata (rec); |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19714
diff
changeset
|
55 |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19714
diff
changeset
|
56 endif |
1636 | 57 |
58 endfunction | |
17338
1c89599167a6
maint: End m-files with 1 blank line.
Rik <rik@octave.org>
parents:
14138
diff
changeset
|
59 |
19711
0f557da98f5b
record.m: Overhaul function.
Mike Miller <mtmiller@ieee.org>
parents:
19681
diff
changeset
|
60 |
19717
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19714
diff
changeset
|
61 ## Tests of record must not actually record anything. |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19714
diff
changeset
|
62 |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19714
diff
changeset
|
63 %!assert (isempty (record (0))) |
19711
0f557da98f5b
record.m: Overhaul function.
Mike Miller <mtmiller@ieee.org>
parents:
19681
diff
changeset
|
64 |
19717
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19714
diff
changeset
|
65 %% Test input validation |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19714
diff
changeset
|
66 %!error record () |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19714
diff
changeset
|
67 %!error record (1,2,3) |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19714
diff
changeset
|
68 %!error record (-1) |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19714
diff
changeset
|
69 %!error record (1, -1) |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19714
diff
changeset
|
70 |