The XMidi package contains two programs, MX, and XM, which allow conversion between the midi file format and an XML format which I call XMidi. I gave it the name XMidi for what I hope are obvious reasons, but in retrospect, it was probably a poor choice; the name has been used elsewhere for other purposes. My choice has caused a slight bit of confusion. Sorry.
In general, both programs may be executed from the command line, or from another Java program. In both cases, there are two kinds of arguments, options and non-options. Options are distinguished by their leading hyphen, may occur in any order, and may be interspersed with non-option arguments. Non-option arguments occur in order: input_file and output_file. For details about the command line, see {@link com.palserv.XMidi.Util#getCmdLine(String[]) Util.getCmdLine}. For details about execution from another program, see {@link com.palserv.XMidi.XM XM} and {@link com.palserv.XMidi.MX MX}.
My intent is for this program to be "open source" in the sense of Open Source Initiative (OSI). I hope that explains it.
Any and all feedback should go to me.