annotate toolboxes/MIRtoolbox1.3.2/MIRToolbox/@miraudio/mirsave.m @ 0:cc4b1211e677 tip

initial commit to HG from Changeset: 646 (e263d8a21543) added further path and more save "camirversion.m"
author Daniel Wolff
date Fri, 19 Aug 2016 13:07:06 +0200
parents
children
rev   line source
Daniel@0 1 function mirsave(a,f,multichan)
Daniel@0 2
Daniel@0 3 ext = 0; % Specified new extension
Daniel@0 4 if nargin < 2
Daniel@0 5 f = '.mir';
Daniel@0 6 elseif length(f)>3 && strcmpi(f(end-3:end),'.wav')
Daniel@0 7 ext = '.wav';
Daniel@0 8 if length(f)==4
Daniel@0 9 f = '.mir';
Daniel@0 10 end
Daniel@0 11 elseif length(f)>2 && strcmpi(f(end-2:end),'.au')
Daniel@0 12 ext = '.au';
Daniel@0 13 if length(f)==3
Daniel@0 14 f = '.mir';
Daniel@0 15 end
Daniel@0 16 end
Daniel@0 17
Daniel@0 18 if nargin < 3
Daniel@0 19 multichan = '';
Daniel@0 20 end
Daniel@0 21
Daniel@0 22 d = get(a,'Data');
Daniel@0 23 nf = length(d);
Daniel@0 24 fs = get(a,'Sampling');
Daniel@0 25 nb = get(a,'NBits');
Daniel@0 26 nm = get(a,'Name');
Daniel@0 27 ch = get(a,'Channels');
Daniel@0 28 maxd = 0;
Daniel@0 29 for i = 1:nf
Daniel@0 30 for j = 1:length(d{i})
Daniel@0 31 maxd = max(max(max(max(abs(d{i}{j}),[],1),[],2),[],3),maxd);
Daniel@0 32 end
Daniel@0 33 end
Daniel@0 34 for i = 1:nf
Daniel@0 35 nbi = nb{i};
Daniel@0 36 di = d{i};
Daniel@0 37 fsi = fs{i};
Daniel@0 38 nmi = nm{i};
Daniel@0 39 chi = ch{i};
Daniel@0 40 out = [];
Daniel@0 41 for j = 1:length(di)
Daniel@0 42 di{j} = di{j}./repmat(maxd,size(di{j}))*.9999;
Daniel@0 43 out = [out;reshape(di{j},[],size(di{j},3),1)];
Daniel@0 44 if length(di)>1
Daniel@0 45 out = [out;rand(100,size(di{j},3))]*.9;
Daniel@0 46 end
Daniel@0 47 end
Daniel@0 48
Daniel@0 49 %Let's remove the extension from the original files
Daniel@0 50 if length(nmi)>3 && strcmpi(nmi(end-3:end),'.wav')
Daniel@0 51 nmi(end-3:end) = [];
Daniel@0 52 elseif length(nmi)>2 && strcmpi(nmi(end-2:end),'.au')
Daniel@0 53 nmi(end-2:end) = [];
Daniel@0 54 end
Daniel@0 55
Daniel@0 56 nchan = size(out,2);
Daniel@0 57 if isempty(multichan) || nchan < 2
Daniel@0 58 if nf>1 || strcmp(f(1),'.')
Daniel@0 59 %Let's add the new suffix
Daniel@0 60 n = [nmi f];
Daniel@0 61 else
Daniel@0 62 n = f;
Daniel@0 63 end
Daniel@0 64 if not(ischar(ext)) || strcmp(ext,'.wav')
Daniel@0 65 if length(n)<4 || not(strcmpi(n(end-3:end),'.wav'))
Daniel@0 66 n = [n '.wav'];
Daniel@0 67 end
Daniel@0 68 wavwrite(out,fsi,nbi,n)
Daniel@0 69 elseif strcmp(ext,'.au')
Daniel@0 70 if length(n)<3 || not(strcmpi(n(end-2:end),'.au'))
Daniel@0 71 n = [n '.au'];
Daniel@0 72 end
Daniel@0 73 auwrite(out,fsi,nbi,'linear',n)
Daniel@0 74 end
Daniel@0 75 disp([n,' saved.']);
Daniel@0 76 else
Daniel@0 77 for j = 1:nchan
Daniel@0 78 nb = num2str(chi(j));
Daniel@0 79 if nf>1 || strcmp(f(1),'.')
Daniel@0 80 %Let's add the new suffix
Daniel@0 81 n = [nmi nb f];
Daniel@0 82 else
Daniel@0 83 n = [f nb];
Daniel@0 84 end
Daniel@0 85 if not(ischar(ext)) || strcmp(ext,'.wav')
Daniel@0 86 if length(n)<4 || not(strcmpi(n(end-3:end),'.wav'))
Daniel@0 87 n = [n '.wav'];
Daniel@0 88 end
Daniel@0 89 wavwrite(out(:,j),fsi,nbi,n)
Daniel@0 90 elseif strcmp(ext,'.au')
Daniel@0 91 if length(n)<3 || not(strcmpi(n(end-2:end),'.au'))
Daniel@0 92 n = [n '.au'];
Daniel@0 93 end
Daniel@0 94 auwrite(out(:,j),fsi,nbi,'linear',n)
Daniel@0 95 end
Daniel@0 96 disp([n,' saved.']);
Daniel@0 97 end
Daniel@0 98 end
Daniel@0 99 end