Mercurial > hg > camir-aes2014
view toolboxes/MIRtoolbox1.3.2/MIRToolbox/mirkey.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 source
function varargout = mirkey(orig,varargin) % k = mirkey(x) estimates the key. % Optional argument: % mirkey(...,'Total',m) selects not only the most probable key, but % the m most probable keys. % The other parameter 'Contrast' related to mirpeaks can be specified % here (see help mirchromagram). % The optional parameters 'Weight' and 'Triangle' related to % mirchromagram can be specified here (see help mirchromagram). % [k,ks] = mirkey(...) also returns the key clarity, corresponding here % to the key strength associated to the best candidate. % [k,ks,ksc] = mirkey(...) also displays the key strength curve used for % the key estimation and shows in particular the peaks corresponding % to the selected key(s). tot.key = 'Total'; tot.type = 'Integer'; tot.default = 1; option.tot = tot; thr.key = 'Contrast'; thr.type = 'Integer'; thr.default = .1; option.thr = thr; wth.key = 'Weight'; wth.type = 'Integer'; wth.default = .5; option.wth = wth; tri.key = 'Triangle'; tri.type = 'Boolean'; tri.default = 0; option.tri = tri; specif.option = option; specif.defaultframelength = 1; specif.defaultframehop = .5; varargout = mirfunction(@mirkey,orig,varargin,nargout,specif,@init,@main); function [p type] = init(x,option) if not(isamir(x,'mirkeystrength')) x = mirkeystrength(x,'Weight',option.wth,'Triangle',option.tri); end p = mirpeaks(x,'Total',option.tot,'Contrast',option.thr); type = {'mirscalar','mirscalar','mirkeystrength'}; function k = main(p,option,postoption) if iscell(p) p = p{1}; end pc = get(p,'PeakPos'); pv = get(p,'PeakMaxVal'); pm = get(p,'PeakMode'); k = mirscalar(p,'Data',pc,'Mode',pm,'Title','Key',... 'Legend',{'C','C#','D','D#','E','F','F#','G','G#','A','A#','B'}); m = mirscalar(p,'Data',pv,'Title','Key clarity','MultiData',{}); k = {k m p};