A MIDI sequencer program is the commonest way of working on standard midifiles, but it has limitations when you have a freely-recorded piece where notes don't line up with beats and bars on the screen. If you have a habit of recording live midi without the aid of a metronome, this little command-line utility may be a great help towards tidying it up in a sequencer afterward. It provides a convenient way of adjusting beat and tempo to clean up roughness in the original.

The idea is that you start with a freely-recorded multitrack ('format 1') midifile, and add a 'click track' that corresponds to the actual beats in the recording, rather than any rhythm either you or the sequencer think ought to be there. You then run the enhanced file through tempomap, and the result will have event timing adjusted so that the clicks exactly match beats and bars shown by a sequencer (or a program that processes the file in other ways such as 'midi2abc'). The file won't sound any different when played back, because tempo changes have been added to compensate for the adjusted event ticks, but you can then delete or modify the tempo events as necessary to smooth the output to your liking.

This application was originally conceived and written by "Div" (David) Slobin, but has had considerable revision. It actually was part of a suite of command-line applications for MIDI — see the link below if you are interested in these as well.

Two packages are available, identical except for the included executable. One has a linux executable that runs on the few systems I have been able to test it on; the other has a BeOS/Haiku executable. Both include full source. None of the code uses any platform-specific features, so it should compile and run under any OS. It is freely distributable under a BSD-form licence.


You can download the zip archives here (with source):
tempomap.zip — 35 KB includes linux executable
tempomap_beos.zip — 37 KB includes beos/haiku executable

Related Link

You can find all Div's original utilities on his website:


                                Pete Goodeve
                                Berkeley, California

                e-mail: pete@GoodeveCa.NET

Programs for BeOS
My Home Page