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 bleeck@3: tomwalters@0: tomwalters@0: function ok=aifcwrite(x,fs,nbits,fname) tomwalters@0: tomwalters@0: % function ok=aiffwrite(x,fs,nbits,fname) tomwalters@0: % Write AIFF and AIFF-C file tomwalters@0: % This is a reduced version and does not fulfill the tomwalters@0: % AIFF-C 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: 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'); tomwalters@0: fwrite(fid,'FORM','char') tomwalters@0: cksize=82+nr*nc*(nbits/8); tomwalters@0: fwrite(fid,cksize,'int32'); tomwalters@0: fwrite(fid,'AIFC','char'); tomwalters@0: tomwalters@0: fwrite(fid,'FVER','char'); tomwalters@0: fwrite(fid,4,'int32'); tomwalters@0: fwrite(fid,2726318400,'uint32'); tomwalters@0: tomwalters@0: fwrite(fid,'COMM','char'); tomwalters@0: fwrite(fid,38,'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: fwrite(fid,'NONE','char'); tomwalters@0: fwrite(fid,14,'uint8'); tomwalters@0: fwrite(fid,'not compressed','char'); tomwalters@0: fwrite(fid,0,'char'); 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: end; tomwalters@0: fclose(fid); tomwalters@0: