diff toolboxes/MIRtoolbox1.3.2/MIRToolbox/@mirpitch/mirsave.m @ 0:e9a9cd732c1e tip

first hg version after svn
author wolffd
date Tue, 10 Feb 2015 15:05:51 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/toolboxes/MIRtoolbox1.3.2/MIRToolbox/@mirpitch/mirsave.m	Tue Feb 10 15:05:51 2015 +0000
@@ -0,0 +1,90 @@
+function mirsave(a)
+
+d = get(a,'Data');
+if isa(a,'mirpitch')
+    amp = get(a,'Amplitude');
+end
+n = get(a,'Name');
+t = get(a,'Title');
+c = get(a,'Channels');
+fp = get(a,'FramePos');
+out = cell(1,length(d));
+
+for k = 1:length(d)
+    dk = d{k};
+    if not(iscell(dk))
+        dk = {dk};
+    end
+    out = [];
+    for l = 1:size(dk{1},3)
+        for i = 1:length(dk)
+            di = dk{i};
+            if isa(a,'mirpitch')
+                ampi = amp{k}{i};
+            end
+            synth = zeros(1,ceil((fp{k}{i}(end)-fp{k}{i}(1))*44100)+1);
+            for j = 1:size(di,2)
+                if iscell(di)
+                    dj = di{j};
+                else
+                    dj = di(:,j);
+                end
+                dj(isnan(dj)) = 0;
+                ampj = zeros(size(dj));
+                if iscell(ampi)
+                    ampj(1:size(ampi{j})) = ampi{j};
+                else
+                    ampj(1:size(ampi(:,j))) = ampi(:,j);
+                end
+                if not(isempty(dj))
+                    k1 = floor((fp{k}{i}(1,j)-fp{k}{i}(1))*44100)+1;
+                    k2 = floor((fp{k}{i}(2,j)-fp{k}{i}(1))*44100)+1;
+                    if isa(a,'mirpitch')
+                        ampj = repmat(ampj,1,k2-k1+1);
+                    else
+                        ampj = ones(size(dj),k2-k1+1);
+                    end
+                    synth(k1:k2) = synth(k1:k2) ...
+                        + sum(ampj.*sin(2*pi*dj*(0:k2-k1)/44100),1) ...
+                                .*hann(k2-k1+1)';
+                end
+            end
+            out = [out synth];
+            if size(dk{1},3)>1
+                out = [out rand(1,10)];
+            end
+        end
+    end
+    fout = miraudio(out,44100);
+    mirsave(fout,[n{k},'.',t]);
+end
+
+
+function oldmirsave % not used anymore
+d = get(a,'Data');
+nf = length(d);
+fp = get(a,'FramePos');
+nm = get(a,'Name');
+t = get(a,'Title');
+for i = 1:nf
+    nmi = nm{i};
+    di = d{i}{1};
+    fpi = fp{i}{1};
+    
+    %Let's remove the extension from the original files
+    if length(nmi)>3 && strcmpi(nmi(end-3:end),'.wav')
+        nmi(end-3:end) = [];
+    elseif length(nmi)>2 && strcmpi(nmi(end-2:end),'.au')
+        nmi(end-2:end) = [];
+    end    
+    n = [nmi,'.',lower(t),'.txt'];
+    
+    fid = fopen(n, 'wt');
+    fprintf(fid,'Frame_start Frame_end Data \n');
+
+    for j = 1:length(di)
+        fprintf(fid,'%g %g %g \n',fpi(1,j),fpi(2,j),di(j));
+    end
+    fclose(fid);
+    disp([n,' saved.']);
+end
\ No newline at end of file