-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Tue, Sep 25, 2007 at 09:21:06AM +0200, Alexandre Ratchov wrote:
On Mon, Sep 24, 2007 at 07:00:38PM -0700, Ken
Restivo wrote:
Is there any command-line tool to extract and print the tempo of
a MIDI file?
hi,
you could use midish for that: import the .mid file, and use the
songtimeinfo function; example:
$ rmidish
send EOF character (control-D) to quit
1> songimportsmf "sample.mid"
2> songtimeinfo
{
timesig 4 24
tempo 400000
}
3>
Thanks! However, I haven't found any explanation of what those numbers mean. I need
the tempo in BPM.
I found this formula in the Rosegarden source:
qpm = (60.0 * beatTime) / (beatSec * quarter)
But of the three numbers that songtimeinfo spits out, I haven't been able to figure
out which one is beatTime, beatSec, and quarter.
oops, forgot to say what units are; 400000 is the diration of a
MIDI tic in 24th of microseconds. To get the BPM:
bpm = 60 * 24000000 / (tempo * ticks_per_beat)
= 60 * 24000000 / (400000 * 24)
= 150
(ticks_per_beat is the second parameter of the time signature).
[...]
However, in this case it's simpler to use "songgettempo" function,
example:
$ rmidish
send EOF character (control-D) to quit
1> songimportsmf "sample.mid"
2> print [songgettempo -1]
150
songgettempo returns the tempo (in BPM) at the given measure
number, -1 means the end of the song. This function is not in 0.3.1
release, its only in the last snapshot: