tomwalters@0: % support file for 'aim-mat' tomwalters@0: % tomwalters@0: % This external file is included as part of the 'aim-mat' distribution package bleeck@3: % (c) 2011, University of Southampton bleeck@3: % Maintained by Stefan Bleeck (bleeck@gmail.com) bleeck@3: % download of current version is on the soundsoftware site: bleeck@3: % http://code.soundsoftware.ac.uk/projects/aimmat bleeck@3: % documentation and everything is on http://www.acousticscale.org tomwalters@0: tomwalters@0: function ok=aiffwrite(x,fs,nbits,fname) tomwalters@0: tomwalters@0: % function ok=aiffwrite(x,fs,nbits,fname) tomwalters@0: % Write AIFF file tomwalters@0: % This is a reduced version and does not fulfill the tomwalters@0: % AIFF standard. tomwalters@0: tomwalters@0: % Coded by Hideki Kawahara based on "Audio Interchange file format AIFF-C draft" tomwalters@0: % by Apple Computer inc. 8/26/91 tomwalters@0: % 14/Feb./1998 tomwalters@0: % 14/Jan./1999 bug fix for Windows tomwalters@0: tomwalters@0: ok=1; tomwalters@0: [nr,nc]=size(x); tomwalters@0: if nc>nr tomwalters@0: ok=[]; tomwalters@0: disp('Data must be a set of column vector.'); tomwalters@0: return; tomwalters@0: end; tomwalters@0: nex=floor(log(fs)/log(2)); tomwalters@0: vv=fs/2^(nex+1)*2^(4*16); tomwalters@0: nex2=nex+16383; tomwalters@0: tomwalters@0: fid=fopen(fname,'w','ieee-be.l64'); tomwalters@0: fwrite(fid,'FORM','char'); tomwalters@0: cksize=46+nr*nc*(nbits/8); tomwalters@0: fwrite(fid,cksize,'int32'); tomwalters@0: fwrite(fid,'AIFF','char'); tomwalters@0: tomwalters@0: fwrite(fid,'COMM','char'); tomwalters@0: fwrite(fid,18,'int32'); tomwalters@0: fwrite(fid,nc,'int16'); tomwalters@0: fwrite(fid,nr,'int32'); tomwalters@0: fwrite(fid,nbits,'int16'); tomwalters@0: fwrite(fid,nex2,'uint16'); tomwalters@0: fwrite(fid,vv,'uint64'); tomwalters@0: tomwalters@0: fwrite(fid,'SSND','char'); tomwalters@0: fwrite(fid,nr*nc*(nbits/8)+8,'int32'); tomwalters@0: fwrite(fid,0,'int32'); tomwalters@0: fwrite(fid,0,'int32'); tomwalters@0: y=x'; tomwalters@0: switch(nbits) tomwalters@0: case 8 tomwalters@0: fwrite(fid,y(:),'int8'); tomwalters@0: case 16 tomwalters@0: fwrite(fid,y(:),'int16'); tomwalters@0: case 24 tomwalters@0: fwrite(fid,y(:),'bit24'); tomwalters@0: end; tomwalters@0: fclose(fid); tomwalters@0: