Mercurial > octave
annotate scripts/audio/record.m @ 26376:00f796120a6d stable
maint: Update copyright dates in all source files.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 02 Jan 2019 16:32:43 -0500 |
parents | 6652d3823428 |
children | b442ec6dda5c |
rev | line source |
---|---|
26376
00f796120a6d
maint: Update copyright dates in all source files.
John W. Eaton <jwe@octave.org>
parents:
25054
diff
changeset
|
1 ## Copyright (C) 2016-2019 Mike Miller |
00f796120a6d
maint: Update copyright dates in all source files.
John W. Eaton <jwe@octave.org>
parents:
25054
diff
changeset
|
2 ## Copyright (C) 1995-2019 John W. Eaton |
2313 | 3 ## |
4 ## This file is part of Octave. | |
5 ## | |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
6 ## Octave is free software: you can redistribute it and/or modify it |
2313 | 7 ## under the terms of the GNU General Public License as published by |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
8 ## the Free Software Foundation, either version 3 of the License, or |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
9 ## (at 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 | |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
13 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
14 ## GNU General Public License for more details. |
2313 | 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 |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
18 ## <https://www.gnu.org/licenses/>. |
2303 | 19 |
3332 | 20 ## -*- texinfo -*- |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20158
diff
changeset
|
21 ## @deftypefn {} {} record (@var{sec}) |
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20158
diff
changeset
|
22 ## @deftypefnx {} {} record (@var{sec}, @var{fs}) |
19677
0f557da98f5b
record.m: Overhaul function.
Mike Miller <mtmiller@ieee.org>
parents:
19647
diff
changeset
|
23 ## Record @var{sec} seconds of audio from the system's default audio input at |
20158
7503499a252b
doc: Update docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
24 ## a sampling rate of 8000 samples per second. |
7503499a252b
doc: Update docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
25 ## |
7503499a252b
doc: Update docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
26 ## If the optional argument @var{fs} is given, it specifies the sampling rate |
7503499a252b
doc: Update docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
27 ## for recording. |
19677
0f557da98f5b
record.m: Overhaul function.
Mike Miller <mtmiller@ieee.org>
parents:
19647
diff
changeset
|
28 ## |
0f557da98f5b
record.m: Overhaul function.
Mike Miller <mtmiller@ieee.org>
parents:
19647
diff
changeset
|
29 ## For more control over audio recording, use the @code{audiorecorder} class. |
20158
7503499a252b
doc: Update docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
30 ## @seealso{sound, soundsc} |
3332 | 31 ## @end deftypefn |
32 | |
19677
0f557da98f5b
record.m: Overhaul function.
Mike Miller <mtmiller@ieee.org>
parents:
19647
diff
changeset
|
33 function x = record (sec, fs) |
1636 | 34 |
35 if (nargin == 1) | |
19677
0f557da98f5b
record.m: Overhaul function.
Mike Miller <mtmiller@ieee.org>
parents:
19647
diff
changeset
|
36 fs = 8000; |
1636 | 37 elseif (nargin != 2) |
6046 | 38 print_usage (); |
1636 | 39 endif |
40 | |
19683
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19680
diff
changeset
|
41 if (! (isscalar (sec) && (sec >= 0))) |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19680
diff
changeset
|
42 error ("record: recording duration SEC must be a non-negative number"); |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19680
diff
changeset
|
43 endif |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19680
diff
changeset
|
44 |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19680
diff
changeset
|
45 if (! (isscalar (fs) && (fs > 0))) |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19680
diff
changeset
|
46 error ("record: sample rate FS must be a positive number"); |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19680
diff
changeset
|
47 endif |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19680
diff
changeset
|
48 |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19680
diff
changeset
|
49 x = []; |
1636 | 50 |
19683
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19680
diff
changeset
|
51 if (sec > 0) |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19680
diff
changeset
|
52 |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19680
diff
changeset
|
53 rec = audiorecorder (fs, 16, 1); |
1636 | 54 |
19683
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19680
diff
changeset
|
55 recordblocking (rec, sec); |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19680
diff
changeset
|
56 |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19680
diff
changeset
|
57 x = getaudiodata (rec); |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19680
diff
changeset
|
58 |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19680
diff
changeset
|
59 endif |
1636 | 60 |
61 endfunction | |
17338
1c89599167a6
maint: End m-files with 1 blank line.
Rik <rik@octave.org>
parents:
14138
diff
changeset
|
62 |
19677
0f557da98f5b
record.m: Overhaul function.
Mike Miller <mtmiller@ieee.org>
parents:
19647
diff
changeset
|
63 |
19683
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19680
diff
changeset
|
64 ## Tests of record must not actually record anything. |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19680
diff
changeset
|
65 |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19680
diff
changeset
|
66 %!assert (isempty (record (0))) |
19677
0f557da98f5b
record.m: Overhaul function.
Mike Miller <mtmiller@ieee.org>
parents:
19647
diff
changeset
|
67 |
19833
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
68 ## Test input validation |
19683
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19680
diff
changeset
|
69 %!error record () |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19680
diff
changeset
|
70 %!error record (1,2,3) |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19680
diff
changeset
|
71 %!error record (-1) |
f96671da51a6
record.m: Improve input validation
Mike Miller <mtmiller@ieee.org>
parents:
19680
diff
changeset
|
72 %!error record (1, -1) |