Mercurial > hg > nimfks
view src/matlab/templateAdditionResynth.m @ 0:c52bc3e8d3ad tip
user: boblsturm
branch 'default'
added README.md
added assets/.DS_Store
added assets/playButton.jpg
added assets/stopButton.png
added assets/swapButton.jpg
added data/.DS_Store
added data/fiveoctaves.mp3
added data/glock2.wav
added data/sinScale.mp3
added data/speech_female.mp3
added data/sweep.wav
added nimfks.m.lnk
added src/.DS_Store
added src/matlab/.DS_Store
added src/matlab/AnalysisCache.m
added src/matlab/CSS.m
added src/matlab/DataHash.m
added src/matlab/ExistsInCache.m
added src/matlab/KLDivCost.m
added src/matlab/LoadFromCache.m
added src/matlab/SA_B_NMF.m
added src/matlab/SaveInCache.m
added src/matlab/Sound.m
added src/matlab/SynthesisCache.m
added src/matlab/chromagram_E.m
added src/matlab/chromagram_IF.m
added src/matlab/chromagram_P.m
added src/matlab/chromsynth.m
added src/matlab/computeSTFTFeat.m
added src/matlab/controller.m
added src/matlab/decibelSliderReleaseCallback.m
added src/matlab/drawClickCallBack.m
added src/matlab/fft2chromamx.m
added src/matlab/hz2octs.m
added src/matlab/ifgram.m
added src/matlab/ifptrack.m
added src/matlab/istft.m
added src/matlab/nimfks.fig
added src/matlab/nimfks.m
added src/matlab/nmfFn.m
added src/matlab/nmf_beta.m
added src/matlab/nmf_divergence.m
added src/matlab/nmf_euclidean.m
added src/matlab/prune_corpus.m
added src/matlab/rot_kernel.m
added src/matlab/templateAdditionResynth.m
added src/matlab/templateDelCb.m
added src/matlab/templateScrollCb.m
author | boblsturm |
---|---|
date | Sun, 18 Jun 2017 06:26:13 -0400 |
parents | |
children |
line wrap: on
line source
function [output, segments] = templateAdditionResynth(X, H, varargin) if(nargin > 2) win = varargin{1}; windowLength = win.Length; overlap = win.Hop; winfn = lower(win.Type); win = window(winfn, windowLength); else overlap = floor((length(X)/size(H, 2))/2); windowLength = floor(2*overlap); win = window(@hann,(windowLength)); end windowhop = windowLength - overlap; start_samples_in_corpus=[0:size(H,1)-1]*windowhop + 1; end_samples_in_corpus = start_samples_in_corpus + windowLength - 1; start_samples_in_synthesis=[0:size(H,2)-1]*windowhop + 1; end_samples_in_synthesis = start_samples_in_synthesis + windowLength - 1; waitbarHandle = waitbar(0, 'Starting Template Addition Synthesis...'); output=zeros(windowhop*(size(H,2)-1)+windowLength,1); for kk=1:size(H, 2) waitbar(kk/size(H, 2), waitbarHandle, ['Creating segments...', num2str(kk), '/', num2str(size(H, 2))]); extracted=H(:,kk); for ii=find(extracted>1e-10)' if length(X) > end_samples_in_corpus(ii) output(start_samples_in_synthesis(kk):end_samples_in_synthesis(kk)) = ... output(start_samples_in_synthesis(kk):end_samples_in_synthesis(kk)) + ... win.*( ... X(start_samples_in_corpus(ii):end_samples_in_corpus(ii))*extracted(ii)); end end end output = output'; output = output./max(max(output)); close(waitbarHandle) end