% EIGEN INSTRUMENTS M = 10; P = 4; files = dir('voiceslow/*.wav'); N = size(files,1); s = max([files.bytes]); % for 8 bits W = zeros(s,N); for i = 1:N w = wavread(sprintf('voiceslow/%s',files(i).name)); W(1:size(w,1),i) = w - mean(w,1); end [U,S,V] = svd(W,0); s = diag(S); % make some eigeninstruments for i=1:M r = rand(P,1); p = ceil(rand(P,1)*N); w = r(1)*s(1)*U(:,p(1)) + r(2)*s(2)*U(:,p(2)) + r(3)*s(3)*U(:,p(3)) + r(4)*s(4)*U(:,p(4)); w = w ./ sum(r(:)); w = w./max(abs(w(:))); wavwrite(w,8000,sprintf('eigen%d.wav',i)); end