54 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Mathematica
		
	
	
	
	
	
		
		
			
		
	
	
			54 lines
		
	
	
		
			1.6 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_save (@var{filename, data, fs})
 | ||
|  | ## Save the given @var{data} as audio data to the given at @var{fs}. Set
 | ||
|  | ## the sample rate to @var{fs}.
 | ||
|  | ## @end deftypefn
 | ||
|  | 
 | ||
|  | ## Author: Erik de Castro Lopo <erikd@mega-nerd.com>
 | ||
|  | ## Description: Save data as a sound file
 | ||
|  | 
 | ||
|  | function sndfile_save (filename, data, fs)
 | ||
|  | 
 | ||
|  | if nargin != 3,
 | ||
|  | 	error ("Need three input arguments: filename, data and fs.") ;
 | ||
|  | 	endif
 | ||
|  | 
 | ||
|  | if (! isstr (filename)),
 | ||
|  | 	error ("First parameter 'filename' is must be a string.") ;
 | ||
|  | 	endif
 | ||
|  | 
 | ||
|  | if (max (size (fs)) > 1),
 | ||
|  | 	error ("Second parameter 'fs' must be a single value, not an array or matrix.") ;
 | ||
|  | 	endif
 | ||
|  | 
 | ||
|  | [nr nc] = size (data) ;
 | ||
|  | 
 | ||
|  | if (nr > nc),
 | ||
|  | 	data = data' ;
 | ||
|  | 	endif
 | ||
|  | 
 | ||
|  | samplerate = fs ;
 | ||
|  | wavedata = data ;
 | ||
|  | 
 | ||
|  | str = sprintf ("save -mat-binary %s samplerate wavedata", filename) ;
 | ||
|  | 
 | ||
|  | eval (str) ;
 | ||
|  | 
 | ||
|  | endfunction
 |