Mercurial > octave
view scripts/audio/@audiorecorder/getaudiodata.m @ 31548:c8ad083a5802 stable
maint: Clean up m-files before Octave 8.1 release.
* external.txi, oop.txi, Table.h, documentation.cc, gui-preferences-ed.h,
lo-specfun.cc, range.tst : Eliminate triple newlines.
* Map.m, MemoizedFunction.m, delaunayn.m, inputParser.m,
__publish_latex_output__.m, publish.m, unpack.m, fminbnd.m,
__add_default_menu__.m, gammainc.m, gallery.m, hadamard.m, weboptions.m:
Add newline after keyword "function" or before keyword "endfunction" for
readability.
* getaudiodata.m, pkg.m : Add semicolon to end of line for error() statement.
* movegui.m: Combine mutliple calls to set() into one for performance.
* __unimplemented__.m (missing_functions): Remove missing functions that have
been implemented.
* __vectorize__.m, check_default_input.m, betaincinv.m, gammaincinv.m:
Remove semicolon at end of line with "function" declaration.
* weboptions.m: Remove semicolon at end of line with "if" keyword.
* integrate_adaptive.m, factor.m: Use keyword "endif" rather than bare "end".
author | Rik <rik@octave.org> |
---|---|
date | Fri, 25 Nov 2022 21:23:54 -0800 |
parents | 2d6e60776588 |
children | 597f3ee61a48 |
line wrap: on
line source
######################################################################## ## ## Copyright (C) 2013-2022 The Octave Project Developers ## ## See the file COPYRIGHT.md in the top-level directory of this ## distribution or <https://octave.org/copyright/>. ## ## This file is part of Octave. ## ## Octave is free software: you can redistribute it and/or modify it ## under the terms of the GNU General Public License as published by ## the Free Software Foundation, either version 3 of the License, or ## (at your option) any later version. ## ## Octave is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with Octave; see the file COPYING. If not, see ## <https://www.gnu.org/licenses/>. ## ######################################################################## ## -*- texinfo -*- ## @deftypefn {} {@var{data} =} getaudiodata (@var{recorder}) ## @deftypefnx {} {@var{data} =} getaudiodata (@var{recorder}, @var{datatype}) ## Return audio data from audiorecorder object @var{recorder} as a double ## matrix with values between -1.0 and 1.0 and with as many columns as there ## are channels in @var{recorder}. ## ## Given the optional argument @var{datatype}, convert the recorded data ## to the specified type, which may be one of @qcode{"double"}, ## @qcode{"single"}, @qcode{"int16"}, @qcode{"int8"} or @qcode{"uint8"}. ## @seealso{@audiorecorder/audiorecorder} ## @end deftypefn function data = getaudiodata (recorder, datatype) hrecorder = struct (recorder).recorder; if (nargin == 1) data = __recorder_getaudiodata__ (hrecorder); else data = __recorder_getaudiodata__ (hrecorder); switch (datatype) case "double" ## Do nothing, data is already of type double case "single" data = single (data); case "int16" data = int16 (data * (2.0 ^ 15)); case "int8" data = int8 (data * (2.0 ^ 7)); case "uint8" data = uint8 ((data + 1.0) * 0.5 * (2.0 ^ 8 - 1)); otherwise error ('@audiorecorder/getaudiodata: invalid DATATYPE "%s"', datatype); endswitch endif if (get (recorder, "NumberOfChannels") == 2) data = data.'; else data = data(1,:).'; endif endfunction ## Tests of audiorecorder must not actually record anything. %!testif HAVE_PORTAUDIO; audiodevinfo (1) > 0 %! recorder = audiorecorder (44100, 16, 2); %! data = getaudiodata (recorder); %! assert (isa (data, "double")); %! data = getaudiodata (recorder, "double"); %! assert (isa (data, "double")); %! data = getaudiodata (recorder, "single"); %! assert (isa (data, "single")); %! data = getaudiodata (recorder, "int16"); %! assert (isa (data, "int16")); %! data = getaudiodata (recorder, "int8"); %! assert (isa (data, "int8")); %! data = getaudiodata (recorder, "uint8"); %! assert (isa (data, "uint8")); %! assert (size (data)(1), recorder.TotalSamples); %! assert (size (data)(2), 2); %!testif HAVE_PORTAUDIO; audiodevinfo (1) > 0 %! recorder = audiorecorder (44100, 8, 1); %! data = getaudiodata (recorder); %! assert (size (data)(1), recorder.TotalSamples); %! assert (size (data)(2), 1); ## Test input validation %!testif HAVE_PORTAUDIO; audiodevinfo (1) > 0 %! recorder = audiorecorder (44100, 16, 2); %! fail ("getaudiodata (recorder, 'foobar')", "invalid DATATYPE");