ivan@81: function [tempos,tempos_time]=getTempoChanges(midi) ivan@81: % [tempos,tempos_time]=getTempoChanges(midi) ivan@81: % ivan@81: % input: a midi struct from readmidi.m ivan@81: % output: ivan@81: % tempos = tempo values indexed by tempos_time ivan@81: % tempos_time is in units of ticks ivan@81: % ivan@81: % should tempo changes effect across tracks? across channels? ivan@81: % ivan@81: ivan@81: % Copyright (c) 2009 Ken Schutte ivan@81: % more info at: http://www.kenschutte.com/midi ivan@81: ivan@81: tempos = []; ivan@81: tempos_time = []; ivan@81: for i=1:length(midi.track) ivan@81: cumtime=0; ivan@81: for j=1:length(midi.track(i).messages) ivan@81: cumtime = cumtime+midi.track(i).messages(j).deltatime; ivan@81: % if (strcmp(midi.track(i).messages(j).name,'Set Tempo')) ivan@81: if (midi.track(i).messages(j).midimeta==0 && midi.track(i).messages(j).type==81) ivan@81: tempos_time(end+1) = cumtime; ivan@81: d = midi.track(i).messages(j).data; ivan@81: tempos(end+1) = d(1)*16^4 + d(2)*16^2 + d(3); ivan@81: end ivan@81: end ivan@81: end ivan@81: ivan@81: ivan@81: