Mercurial > octave-nkf
view scripts/audio/wavwrite.m @ 20216:aa36fb998a4d stable
maint: Remove unnecessary whitespace at end of lines.
* libgui/Makefile.am, libgui/graphics/Canvas.cc,
libgui/graphics/EditControl.cc, libgui/graphics/Figure.cc,
libgui/graphics/MouseModeActionGroup.cc, libgui/graphics/annotation-dialog.cc,
libgui/graphics/annotation-dialog.h, libgui/graphics/gl-select.cc,
libgui/graphics/module.mk, libgui/kb-layouts/default.keytab,
libgui/kb-layouts/linux.keytab, libgui/kb-layouts/vt420pc.keytab,
libgui/src/m-editor/find-dialog.cc, libgui/src/main-window.cc,
libgui/src/octave-qt-link.cc, libgui/src/octave-qt-link.h,
libgui/src/shortcut-manager.h, libinterp/corefcn/error.cc,
libinterp/corefcn/find.cc, libinterp/corefcn/gl2ps-renderer.cc,
libinterp/corefcn/graphics.cc, libinterp/corefcn/graphics.in.h,
libinterp/corefcn/octave-link.cc, libinterp/corefcn/quadcc.cc,
libinterp/corefcn/strfns.cc, libinterp/corefcn/syscalls.cc,
libinterp/corefcn/sysdep.cc, libinterp/corefcn/urlwrite.cc,
libinterp/corefcn/utils.cc, libinterp/corefcn/variables.cc,
libinterp/dldfcn/__init_fltk__.cc, libinterp/dldfcn/ccolamd.cc,
libinterp/dldfcn/colamd.cc, libinterp/octave-value/ov-bool-sparse.cc,
libinterp/octave-value/ov-classdef.cc, libinterp/octave-value/ov-re-sparse.cc,
libinterp/octave-value/ov-struct.cc, libinterp/parse-tree/pt-arg-list.cc,
scripts/audio/@audiorecorder/play.m, scripts/audio/wavwrite.m,
scripts/general/cart2sph.m, scripts/geometry/inpolygon.m,
scripts/gui/listdlg.m, scripts/gui/msgbox.m,
scripts/gui/private/message_dialog.m, scripts/help/get_first_help_sentence.m,
scripts/help/lookfor.m, scripts/image/imshow.m, scripts/io/strread.m,
scripts/java/javamem.m, scripts/miscellaneous/dir.m,
scripts/miscellaneous/edit.m, scripts/miscellaneous/genvarname.m,
scripts/miscellaneous/gzip.m, scripts/miscellaneous/private/__w2mpth__.m,
scripts/plot/appearance/annotation.m, scripts/plot/draw/colorbar.m,
scripts/plot/draw/quiver3.m, scripts/plot/util/hold.m,
scripts/plot/util/print.m, scripts/polynomial/mkpp.m,
scripts/polynomial/polyder.m, scripts/polynomial/spline.m,
scripts/polynomial/unmkpp.m, scripts/signal/arma_rnd.m, scripts/sparse/gplot.m,
scripts/statistics/tests/t_test.m,
scripts/statistics/tests/t_test_regression.m, scripts/strings/mat2str.m,
scripts/strings/strsplit.m, scripts/strings/strtrunc.m,
scripts/strings/untabify.m, scripts/testfun/assert.m:
maint: Remove unnecessary whitespace at end of lines.
author | Rik <rik@octave.org> |
---|---|
date | Tue, 12 May 2015 09:22:01 -0700 |
parents | 7503499a252b |
children |
line wrap: on
line source
## Copyright (C) 2015 Mike Miller ## Copyright (C) 2005-2015 Michael Zeising ## ## 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 ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- ## @deftypefn {Function File} {} wavwrite (@var{y}, @var{filename}) ## @deftypefnx {Function File} {} wavwrite (@var{y}, @var{fs}, @var{filename}) ## @deftypefnx {Function File} {} wavwrite (@var{y}, @var{fs}, @var{nbits}, @var{filename}) ## Write the audio signal @var{y} to the RIFF/WAVE sound file @var{filename}. ## ## If @var{y} is a matrix, the columns represent multiple audio channels. ## ## The optional argument @var{fs} specifies the sample rate of the audio signal ## in Hz. ## ## The optional argument @var{nbits} specifies the number of bits per sample ## to write to @var{filename}. ## ## The default sample rate is 8000 Hz and the default bit depth is 16 bits ## per sample. ## ## @seealso{audiowrite, audioread, wavread} ## @end deftypefn function wavwrite (y, varargin) if (nargin < 2 || nargin > 4) print_usage (); endif ## Defaults. fs = 8000; nbits = 16; filename = varargin{end}; if (nargin > 2) fs = varargin{1}; if (nargin > 3) nbits = varargin{2}; endif endif ## calculate filesize [n, channels] = size (y); ## allow y to be a row vector if (n == 1) y = y(:); n = channels; channels = 1; endif ## test arguments if (channels < 1) error ("wavwrite: Y must have at least one column"); endif if (channels > 0x7FFF) error ("wavwrite: Y must have no more than 32767 columns"); endif if (! (isscalar (fs) && (fs > 0))) error ("wavwrite: sample rate FS must be a positive number"); endif if (! isscalar (nbits) || isempty (find (nbits == [8, 16, 24, 32]))) error ("wavwrite: bit depth NBITS must be 8, 16, 24, or 32"); endif audiowrite (filename, y, fs, "BitsPerSample", nbits); endfunction %!shared fname %! fname = [tempname() ".wav"]; %!testif HAVE_SNDFILE %! A = [-1:0.1:1; -1:0.1:1]'; %! unwind_protect %! wavwrite (A, fname); %! [B, samples_per_sec, bits_per_sample] = wavread (fname); %! assert (B, A, 2^-14); %! assert (samples_per_sec, 8000); %! assert (bits_per_sample, 16); %! unwind_protect_cleanup %! unlink (fname); %! end_unwind_protect %!testif HAVE_SNDFILE %! A = [-1:0.1:1; -1:0.1:1]'; %! unwind_protect %! wavwrite (A, 4000, fname); %! [B, samples_per_sec, bits_per_sample] = wavread (fname); %! assert (B, A, 2^-14); %! assert (samples_per_sec, 4000); %! assert (bits_per_sample, 16); %! unwind_protect_cleanup %! unlink (fname); %! end_unwind_protect %!testif HAVE_SNDFILE %! A = [-1:0.1:1; -1:0.1:1]'; %! unwind_protect %! wavwrite (A, 4000, 8, fname); %! [B, samples_per_sec, bits_per_sample] = wavread (fname); %! assert (B, A, 2^-6); %! assert (samples_per_sec, 4000); %! assert (bits_per_sample, 8); %! unwind_protect_cleanup %! unlink (fname); %! end_unwind_protect %!testif HAVE_SNDFILE %! A = [-2:2]'; %! unwind_protect %! wavwrite (A, fname); %! B = wavread (fname); %! B *= 32768; %! assert (B, [-32767 -32767 0 32767 32767]'); %! unwind_protect_cleanup %! unlink (fname); %! end_unwind_protect %!testif HAVE_SNDFILE %! A = [-1:0.1:1]; %! unwind_protect %! wavwrite (A, fname); %! [B, samples_per_sec, bits_per_sample] = wavread (fname); %! assert (B, A', 2^-14); %! assert (samples_per_sec, 8000); %! assert (bits_per_sample, 16); %! unwind_protect_cleanup %! unlink (fname); %! end_unwind_protect %!testif HAVE_SNDFILE %! A = [-1:0.1:1; -1:0.1:1]'; %! unwind_protect %! wavwrite (A, fname); %! B = wavread (fname, 15); %! assert (B, A(1:15,:), 2^-14); %! wavwrite (A, fname); %! B = wavread (fname, [10, 20]); %! assert (B, A(10:20,:), 2^-14); %! unwind_protect_cleanup %! unlink (fname); %! end_unwind_protect %!testif HAVE_SNDFILE %! A = [-1:0.1:1; -1:0.1:1]'; %! unwind_protect %! wavwrite (A, fname); %! [nsamp, nchan] = wavread (fname, "size"); %! assert (nsamp, 21); %! assert (nchan, 2); %! unwind_protect_cleanup %! unlink (fname); %! end_unwind_protect ## Test input validation %!error wavwrite () %!error wavwrite (1) %!error wavwrite (1,2,3,4,5) %!error wavwrite ([], "foo.wav");