wolffd@0: function mirsave(a) wolffd@0: wolffd@0: d = get(a,'Data'); wolffd@0: if isa(a,'mirpitch') wolffd@0: amp = get(a,'Amplitude'); wolffd@0: end wolffd@0: n = get(a,'Name'); wolffd@0: t = get(a,'Title'); wolffd@0: c = get(a,'Channels'); wolffd@0: fp = get(a,'FramePos'); wolffd@0: out = cell(1,length(d)); wolffd@0: wolffd@0: for k = 1:length(d) wolffd@0: dk = d{k}; wolffd@0: if not(iscell(dk)) wolffd@0: dk = {dk}; wolffd@0: end wolffd@0: out = []; wolffd@0: for l = 1:size(dk{1},3) wolffd@0: for i = 1:length(dk) wolffd@0: di = dk{i}; wolffd@0: if isa(a,'mirpitch') wolffd@0: ampi = amp{k}{i}; wolffd@0: end wolffd@0: synth = zeros(1,ceil((fp{k}{i}(end)-fp{k}{i}(1))*44100)+1); wolffd@0: for j = 1:size(di,2) wolffd@0: if iscell(di) wolffd@0: dj = di{j}; wolffd@0: else wolffd@0: dj = di(:,j); wolffd@0: end wolffd@0: dj(isnan(dj)) = 0; wolffd@0: ampj = zeros(size(dj)); wolffd@0: if iscell(ampi) wolffd@0: ampj(1:size(ampi{j})) = ampi{j}; wolffd@0: else wolffd@0: ampj(1:size(ampi(:,j))) = ampi(:,j); wolffd@0: end wolffd@0: if not(isempty(dj)) wolffd@0: k1 = floor((fp{k}{i}(1,j)-fp{k}{i}(1))*44100)+1; wolffd@0: k2 = floor((fp{k}{i}(2,j)-fp{k}{i}(1))*44100)+1; wolffd@0: if isa(a,'mirpitch') wolffd@0: ampj = repmat(ampj,1,k2-k1+1); wolffd@0: else wolffd@0: ampj = ones(size(dj),k2-k1+1); wolffd@0: end wolffd@0: synth(k1:k2) = synth(k1:k2) ... wolffd@0: + sum(ampj.*sin(2*pi*dj*(0:k2-k1)/44100),1) ... wolffd@0: .*hann(k2-k1+1)'; wolffd@0: end wolffd@0: end wolffd@0: out = [out synth]; wolffd@0: if size(dk{1},3)>1 wolffd@0: out = [out rand(1,10)]; wolffd@0: end wolffd@0: end wolffd@0: end wolffd@0: fout = miraudio(out,44100); wolffd@0: mirsave(fout,[n{k},'.',t]); wolffd@0: end wolffd@0: wolffd@0: wolffd@0: function oldmirsave % not used anymore wolffd@0: d = get(a,'Data'); wolffd@0: nf = length(d); wolffd@0: fp = get(a,'FramePos'); wolffd@0: nm = get(a,'Name'); wolffd@0: t = get(a,'Title'); wolffd@0: for i = 1:nf wolffd@0: nmi = nm{i}; wolffd@0: di = d{i}{1}; wolffd@0: fpi = fp{i}{1}; wolffd@0: wolffd@0: %Let's remove the extension from the original files wolffd@0: if length(nmi)>3 && strcmpi(nmi(end-3:end),'.wav') wolffd@0: nmi(end-3:end) = []; wolffd@0: elseif length(nmi)>2 && strcmpi(nmi(end-2:end),'.au') wolffd@0: nmi(end-2:end) = []; wolffd@0: end wolffd@0: n = [nmi,'.',lower(t),'.txt']; wolffd@0: wolffd@0: fid = fopen(n, 'wt'); wolffd@0: fprintf(fid,'Frame_start Frame_end Data \n'); wolffd@0: wolffd@0: for j = 1:length(di) wolffd@0: fprintf(fid,'%g %g %g \n',fpi(1,j),fpi(2,j),di(j)); wolffd@0: end wolffd@0: fclose(fid); wolffd@0: disp([n,' saved.']); wolffd@0: end