MTM is a utility program, written in C for use under Linux (and probably under most variants of Unix). Its sole purpose is to convert a MIDI file into MUP.
It comes with no warranty, and may not do what you would like it to do, but it probably comes closer than any other program that I have seen. I have made it available to the wider community as a 'work in progress' and will update it as and when I get time and inspiration to do so.
It is downloadable as a source archive (gzipped tar file) so that you can compile it for whatever system you please. Feel free to modify it, but please don't market it as MTM if you have modified it.
MTM was originally written by someone who didn't include his name. He did include an e-mail address, but I have never had any response from him. I downloaded the original from the MUP Website, where it is still available. It could only handle 'single-note' MIDI files, which was of little value to me, but it got me started. Since then I have almost totally re-written the program, so there is little of the original code remaining. I'd like to credit it to him, but unless he gets in touch with me, I can't. I hope that he's not upset about this....
The program is now capable of handling almost anything, though every time I produce a new version someone immediately finds another MIDI file that gives problems. I'm philosophic about this. If you find a MIDI file that crashes MTM or for which the output is rejected by MUP, then I'll be glad to hear from you - email me 'bil at beeb.net' with the details, including the MIDI file (or URL if it's on the web), and I'll see what I can do. Don't expect overnight fixes (though they have happened), and sometimes the problem is just too hard for me to figure out a way of handling it.
At present there is a problem with MTM that I've been unable to resolve. If there are two notes a semitone apart, say A and A# which occur at the same time, then this is not acceptable to MUP, and my 'work-around' is to edit the A# to Bflat by hand. Of course making it Bflat all the time isn't a solution as then you'd get a conflict if it occurred along with a B. It sounds easy in principle to choose whichever one eliminates the problem, but in practice it seems to be very difficult. Maybe my internal data structures need an overhaul. I keep toying with ideas to get around it but have yet to come up with a 'good' solution.
I've only really started thinking about project management after about 5 years of tinkering. I can't remember the exact dates or the details of what I changed when. I am now trying to manage this properly so here is a revision list with some speculative (and probably fictional) early dates:
|??/??/199?||1||Acquired original code from MUP website|
|Made lots of changes to handle multiple notes per track etc.|
|23/06/2004||1.5?||First release via MUP-user mailing list.|
|15/11/2005||2.0||Major rewrite of MTM, fixed lots of problems, several significant improvements|
|17/11/2005||2.0a||Minor quick bugfix.|
|22/11/2005||2.1||Further bugfixes, extended translate facility, introduced dynamic quantisation.|
|27/11/2005||2.1.1||Bugfix release. Fixed problems, mainly relating to syntax and interpretation of control files, plus extended range of command-line options.|
|14/01/2006||2.2||Major rewrite of various sections of code. Tracks are allocated as needed rather than statically at compile time. Note pitches are determined differently, in a separate scan of the file, rather than as it is output, in order to detect and try to resolve conflicts which previously led to MUP errors. Rest length now depend on the time signature. Beamstyles can now be specified for individual tracks. Additional command options to specify control file name, and lead-in adjustments.|
|27/03/2006||2.2.2||Minor bugfixes. Corrected problem in handling format 0 midifiles, caused by trying to improve internal memory allocation but not allowing for the quirks in handling format 0 files.|
The program is only distributed as 'C' source code, in gzipped tar files. With the release of 2.1 I am keeping older versions available for a while.
|Version 2.2.3 (2.2.2 plus a minor bugfix)|
|Version 2.2.2 (2.2 plus bugfixes)|
|Version 2.1.1 (2.1 + bugfix)|
|Version 2.0a (Version 2.0 + bugfix)|
I'd like to include some thanks here. Firstly to the person who wrote the original mtm. If he'd let me know his name, I'd be happy to include that here (don't shout all at once).
Secondly, to those who have recently tried mtm and sent in comments: particularly Martin Tarenskeen, Ted Harding, Christian Mondrup, Marshal Jose, Charles Cave, Bob van der Poel. If your name isn't here, and you feel it ought to be, do send me a reminder!
Page created by Bill Purvis, last update 14th January, 2006