params = struct([]); params(1).bpm = 85; params.nscale = 12; params.samprate = 44100; pat = cell (1); pat{1} = readmidi ('tria.mid'); pat{2} = readmidi ('trib.mid'); pat{3} = readmidi ('tric.mid'); pat{4} = readmidi ('trid.mid'); pat{5} = readmidi ('trie.mid'); numpatterns = length (pat); for i = 1:numpatterns pat{i}(:,4) = pat{i}(:,4) - 12; pat{i}(:,6) = pat{i}(:,6) * 8; pat{i}(:,7) = pat{i}(:,7) * 8; end ospecs = cell (1); fspecs = cell (1); for i = 1:numpatterns [nnotes ncols] = size (pat{i}); for j = 1:nnotes ocell = cell (1); ocell{1} = pat{i}(j,6); ocell{2} = cell (1); ocell{2}{1} = pat{i}(j,7); ocell{2}{2} = pat{i}(j,4); ospecs{i}{j} = ocell; end fspecs{i} = notes2spec (ospecs{i}, ... {'linenv', {'trinote', 1, 0}}, ... 1/16); end wavout = cell (1); for i = 1:numpatterns disp ((sprintf ('converting pattern %d', i))); wavout{i} = rendsegment (fspecs{i}); end