Mercurial > hg > smallbox
diff util/matlab_midi/getTempoChanges.m @ 81:a30e8bd6d948
matlab_midi scripts
author | Ivan <ivan.damnjanovic@eecs.qmul.ac.uk> |
---|---|
date | Mon, 28 Mar 2011 17:35:01 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/util/matlab_midi/getTempoChanges.m Mon Mar 28 17:35:01 2011 +0100 @@ -0,0 +1,31 @@ +function [tempos,tempos_time]=getTempoChanges(midi) +% [tempos,tempos_time]=getTempoChanges(midi) +% +% input: a midi struct from readmidi.m +% output: +% tempos = tempo values indexed by tempos_time +% tempos_time is in units of ticks +% +% should tempo changes effect across tracks? across channels? +% + +% Copyright (c) 2009 Ken Schutte +% more info at: http://www.kenschutte.com/midi + +tempos = []; +tempos_time = []; +for i=1:length(midi.track) + cumtime=0; + for j=1:length(midi.track(i).messages) + cumtime = cumtime+midi.track(i).messages(j).deltatime; +% if (strcmp(midi.track(i).messages(j).name,'Set Tempo')) + if (midi.track(i).messages(j).midimeta==0 && midi.track(i).messages(j).type==81) + tempos_time(end+1) = cumtime; + d = midi.track(i).messages(j).data; + tempos(end+1) = d(1)*16^4 + d(2)*16^2 + d(3); + end + end +end + + +