diff toolboxes/MIRtoolbox1.3.2/MIRToolbox/@mirkeysom/mirkeysom.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/@mirkeysom/mirkeysom.m	Tue Feb 10 15:05:51 2015 +0000
@@ -0,0 +1,74 @@
+function varargout = mirkeysom(orig,varargin)
+%   ks = mirkeysom(x) projects a chromagram on a self-organizing map.
+% Creates a pseudocolor map showing the projection of chromagram onto a 
+% self-organizing map trained with the Krumhansl-Kessler profiles (modified
+% for chromagrams). Colors correspond to Pearson correlation values.
+% References:
+%	Toiviainen, P. & Krumhansl, C. L. (2003). Measuring and modeling 
+%	real-time responses to music: the dynamics of tonality induction. 
+%	Perception, 32(6), 741-766.
+%	Krumhansl, C. L., & Toiviainen, P. (2001) Tonal cognition. 
+%	In R. J. Zatorre & I. Peretz (Eds.), The Biological Foundations of Music. 
+%	Annals of the New York Academy of Sciences.
+
+   %     filename.key = 'File';
+   %     filename.type = 'String';
+   %     filename.default = 0;
+   % option.filename = filename;
+    
+specif.option = struct;
+specif.defaultframelength = 1;
+specif.defaultframehop = .5;
+
+varargout = mirfunction(@mirkeysom,orig,varargin,nargout,specif,@init,@main);
+
+
+function [c type] = init(orig,option)
+c = mirchromagram(orig,'Normal');
+type = 'mirkeysom';
+
+
+function s = main(c,option,postoption)
+if iscell(c)
+    c = c{1};
+end
+load keysomaudiodata;
+m = get(c,'Magnitude');
+disp('Projecting the chromagram to a self-organizing map...')
+z = cell(1,length(m));
+p = cell(1,length(m));
+for i = 1:length(m)
+    mi = m{i};
+    if not(iscell(mi))
+        mi = {mi};
+    end
+    zi = cell(1,length(mi));
+    pi = cell(1,length(mi));
+    for j = 1:length(mi)
+        mj = mi{j};
+        zj = zeros(24,size(mj,2),size(mj,3),36);
+        pi{j} = zeros(24,size(mj,2),size(mj,3),36);
+        for k = 1:size(mj,2)
+            for l = 1:size(mj,3)
+                for kk=1:36
+                    for ll=1:24
+                        tmp = corrcoef([mj(:,k,l) somw(:,kk,ll)]);
+                        zj(ll,k,l,kk) = tmp(1,2);
+                    end
+                end
+            end
+        end
+        zi{j} = zj;
+    end
+    z{i} = zi;
+    p{i} = pi;
+end
+s = class(struct,'mirkeysom',mirdata(c));
+s = purgedata(s);
+s = set(s,'Title','Key SOM','Abs','','Ord','','Weight',z,'Pos',p);
+%if option.filename
+%    mov = display(s,option.filename);
+%else
+%    mov = display(s);
+%end
+%s = {s,mov};
\ No newline at end of file