Chris@2: function [ph pz sumY] = transcriptionMultipleTemplates(filename,iter,sz,su) Chris@2: Chris@2: Chris@2: % Load note templates Chris@2: load('noteTemplatesBassoon'); W(:,:,1) = noteTemplatesBassoon; Chris@2: load('noteTemplatesCello'); W(:,:,2) = noteTemplatesCello; Chris@2: load('noteTemplatesClarinet'); W(:,:,3) = noteTemplatesClarinet; Chris@2: load('noteTemplatesFlute'); W(:,:,4) = noteTemplatesFlute; Chris@2: load('noteTemplatesGuitar'); W(:,:,5) = noteTemplatesGuitar; Chris@2: load('noteTemplatesHorn'); W(:,:,6) = noteTemplatesHorn; Chris@2: load('noteTemplatesOboe'); W(:,:,7) = noteTemplatesOboe; Chris@2: load('noteTemplatesTenorSax'); W(:,:,8) = noteTemplatesTenorSax; Chris@2: load('noteTemplatesViolin'); W(:,:,9) = noteTemplatesViolin; Chris@2: load('noteTemplatesSptkBGCl'); W(:,:,10) = noteTemplatesSptkBGCl; Chris@2: Chris@2: Chris@2: %pitchActivity = [14 16 30 40 20 21 38 24 35 1; 52 61 69 76 56 57 71 55 80 88]'; Chris@2: pitchActivity = [16 16 30 40 20 21 38 24 35 16; 52 61 69 73 56 57 71 55 73 73]'; Chris@2: Chris@2: Chris@2: W = permute(W,[2 1 3]); Chris@2: W0 = squeeze(num2cell(W,1))'; Chris@2: clear('noteTemplatesBassoon','noteTemplatesCello','noteTemplatesClarinet','noteTemplatesFlute','noteTemplatesGuitar',... Chris@2: 'noteTemplatesHorn','noteTemplatesOboe','noteTemplatesTenorSax','noteTemplatesViolin','noteTemplatesSptkBGCl','W'); Chris@2: Chris@2: Chris@2: % Compute CQT Chris@2: [intCQT] = computeCQT(filename); Chris@2: X = intCQT(:,round(1:7.1128:size(intCQT,2)))'; Chris@2: noiseLevel1 = medfilt1(X',40); Chris@2: noiseLevel2 = medfilt1(min(X',noiseLevel1),40); Chris@2: X = max(X-noiseLevel2',0); Chris@2: Y = X(1:4:size(X,1),:); % 40ms step Chris@2: sumY = sum(Y'); Chris@2: clear('intCQT','X','noiseLevel1','noiseLevel2'); Chris@2: Chris@2: fprintf('%s','done'); Chris@2: fprintf('\n'); Chris@2: fprintf('%s',['Estimating F0s...........']); Chris@2: Chris@2: % For each 2sec segment, perform SIPLCA with fixed W0 Chris@2: ph = zeros(440,size(Y,1)); Chris@2: pz = zeros(88,size(Y,1)); Chris@2: Chris@2: for j=1:floor(size(Y,1)/100) Chris@2: Chris@2: x=[zeros(2,100); Y(1+(j-1)*100:j*100,:)'; zeros(2,100)]; Chris@2: [w,h,z,u,xa] = cplcaMT( x, 88, [545 1], 10, W0, [], [], [], iter, 1, 1, sz, su, 0, 1, 1, 1, pitchActivity); Chris@2: Chris@2: H=[]; for i=1:88 H=[H; h{i}]; end; Chris@2: ph(:,1+(j-1)*100:j*100) = H; Chris@2: Z=[]; for i=1:88 Z=[Z z{i}]; end; Chris@2: pz(:,1+(j-1)*100:j*100) = Z'; Chris@2: perc = 100*(j/(floor(size(Y,1)/100)+1)); Chris@2: fprintf('\n'); Chris@2: fprintf('%.2f%% complete',perc); Chris@2: end; Chris@2: Chris@2: len=size(Y,1)-j*100; % Final segment Chris@2: Chris@2: if (len >0) Chris@2: x=[zeros(2,len); Y(1+j*100:end,:)'; zeros(2,len)]; Chris@2: [w,h,z,u,xa] = cplcaMT( x, 88, [545 1], 10, W0, [], [], [], iter, 1, 1, sz, su, 0, 1, 1, 1, pitchActivity); Chris@2: fprintf('\n'); Chris@2: fprintf('100%% complete'); Chris@2: Chris@2: H=[]; for i=1:88 H=[H; h{i}]; end; Chris@2: ph(:,1+j*100:end) = H; Chris@2: Z=[]; for i=1:88 Z=[Z z{i}]; end; Chris@2: pz(:,1+j*100:end) = Z'; Chris@2: end;