60 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Mathematica
		
	
	
	
	
	
		
		
			
		
	
	
			60 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Mathematica
		
	
	
	
	
	
|   | ## Copyright (C) 2002-2011  Erik de Castro Lopo
 | ||
|  | ##
 | ||
|  | ## This program 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 2, or (at your option)
 | ||
|  | ## any later version.
 | ||
|  | ##
 | ||
|  | ## This program 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 this file.  If not, write to the Free Software Foundation,
 | ||
|  | ## 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 | ||
|  | 
 | ||
|  | ## -*- texinfo -*-
 | ||
|  | ## @deftypefn {Function File} {} sndfile_play (@var{data, fs})
 | ||
|  | ## Play @var{data} at sample rate @var{fs} using the sndfile-play
 | ||
|  | ## program.
 | ||
|  | ## @end deftypefn
 | ||
|  | 
 | ||
|  | ## Author: Erik de Castro Lopo <erikd@mega-nerd.com>
 | ||
|  | ## Description: Play the given data as a sound file
 | ||
|  | 
 | ||
|  | function sndfile_play (data, fs)
 | ||
|  | 
 | ||
|  | if nargin != 2,
 | ||
|  | 	error ("Need two input arguments: data and fs.") ;
 | ||
|  | 	endif
 | ||
|  | 
 | ||
|  | if (max (size (fs)) > 1),
 | ||
|  | 	error ("Second parameter fs must be a single value.") ;
 | ||
|  | 	endif
 | ||
|  | 
 | ||
|  | [nr nc] = size (data) ;
 | ||
|  | 
 | ||
|  | if (nr > nc),
 | ||
|  | 	data = data' ;
 | ||
|  | 	endif
 | ||
|  | 
 | ||
|  | samplerate = fs ;
 | ||
|  | wavedata = data ;
 | ||
|  | 
 | ||
|  | filename = tmpnam () ;
 | ||
|  | 
 | ||
|  | cmd = sprintf ("save -mat-binary %s fs data", filename) ;
 | ||
|  | 
 | ||
|  | eval (cmd) ;
 | ||
|  | 
 | ||
|  | cmd = sprintf ("sndfile-play %s", filename) ;
 | ||
|  | 
 | ||
|  | [output, status] = system (cmd) ;
 | ||
|  | 
 | ||
|  | if (status),
 | ||
|  | 	disp (outout) ;
 | ||
|  | 	endif
 | ||
|  | 
 | ||
|  | endfunction
 |