Mercurial > hg > octave-nkf
diff scripts/audio/playaudio.m @ 13831:dc685dd445b4
playaudio.m: Use modern coding standards. Add input validation tests.
* playaudio.m: Use modern coding standards. Add input validation tests.
author | Rik <octave@nomad.inbox5.com> |
---|---|
date | Sat, 05 Nov 2011 07:34:01 -0700 |
parents | f754b65f4bc5 |
children | 72c96de7a403 |
line wrap: on
line diff
--- a/scripts/audio/playaudio.m +++ b/scripts/audio/playaudio.m @@ -30,24 +30,22 @@ function playaudio (name, ext) - if (nargin == 1 && isvector (name) && ! ischar (name)) + if (nargin < 1 || nargin > 2) + print_usage (); + endif + + if (nargin == 1 && isnumeric (name)) ## play a vector - [nr, nc] = size (name); - if (nc != 1) - if (nr == 1) - name = name'; - nr = nc; - else - error ("playaudio: X must be a vector"); - endif + if (! isvector (name)) + error ("playaudio: X must be a vector"); endif - X = name + 127; + X = name(:) + 127; unwind_protect file = tmpnam (); - num = fopen (file, "wb"); - c = fwrite (num, X, "uchar"); - fclose (num); - [status, out] = system (sprintf ("cat \"%s\" > /dev/dsp", file)); + fid = fopen (file, "wb"); + fwrite (fid, X, "uchar"); + fclose (fid); + [status, out] = system (sprintf ('cat "%s" > /dev/dsp', file)); if (status != 0) system (sprintf ("paplay --raw \"%s\"", file)) endif @@ -57,28 +55,34 @@ elseif (nargin >= 1 && ischar (name)) ## play a file if (nargin == 1) - name = [name, ".lin"]; + name = [name ".lin"]; elseif (nargin == 2) - name = [name, ".", ext]; - else - print_usage (); + name = [name "." ext]; endif - if (strcmp (ext, "lin") || strcmp (ext, "raw")) - [status, out] = system (sprintf ("cat \"%s\" > /dev/dsp", name)); + if (any (strcmp (ext, {"lin", "raw"}))) + [status, out] = system (sprintf ('cat "%s" > /dev/dsp', name)); if (status != 0) - system (sprintf ("paplay --raw \"%s\"", name)) + system (sprintf ('paplay --raw "%s"', name)) endif - elseif (strcmp (ext, "mu") || strcmp (ext, "au") - || strcmp (ext, "snd") || strcmp (ext, "ul")) - [status, out] = system (sprintf ("cat \"%s\" > /dev/audio", name)); + elseif (any (strcmp (ext, {"mu", "au" "snd", "ul"}))) + [status, out] = system (sprintf ('cat "%s" > /dev/audio', name)); if (status != 0) - system (sprintf ("paplay \"%s\"", name)) + system (sprintf ('paplay "%s"', name)) endif else - error ("playaudio: unsupported extension"); + error ("playaudio: unsupported extension '%s'", ext); endif else print_usage (); endif endfunction + + +%% Test input validation +%!error playaudio () +%!error playaudio (1,2,3) +%!error <X must be a vector> playaudio (magic (3)) +%!error <unsupported extension> playaudio ("file", "abc") +%!error playaudio ({"abc"}) +