A comparison that a fellow community member drew between a project of his and Cemetech's longstanding, erstwhile converter to turn MIDI music files into mobileTunes 3.0-compatible files for playing on your calculator recently prompted me to look at that project once again. Over the past 36 hours, I greatly improved the converter's layer-merging algorithm, added a complex compression algorithm that I wrote from scratch that works with the existing mobileTunes 3.0 without any modification, and simplified the conversion routine. It now boils down to three simple steps:
Step 1: Select a MIDI file.
Step 2: Choose tracks from file to include (if it is a Type 1 MIDI file, as 95% of the files on the internet are). Preview individual tracks to pick the best ones and most representative ones to use.
Step 3: The converter will automatically dissect the chosen tracks and attempt to re-merge them into a maximum of four channels. Next, it will use a new form of the Longest Repeated Substring family of algorithms I wrote to try to compress the song, and return instantly-compilable ASM of the compressed and uncompressed song, ready for playing in mobileTunes 3.
Needless to say, not every song generates great-sounding on-calc music, but the converter strives to achieve the best possible results with no more than a few seconds of effort from the end-user. To fine-tune songs, you can easily try a different subset of the tracks in the original MIDI file and re-generate the compilable ASM.
The mobileTunes 3.0 converter, which I first wrote about five and a half years ago when I was still in high school, can understand and decode any Type 0 or Type 1 MIDI file, with any number of tracks. At one point, most available files were Type 0, but as a rough estimate from observation now puts the share of more complex, multi-track Type 1 files at 95%, the converter's ability to flawlessly handle such files greatly expands what would otherwise be a severe limitation on which songs could be used without tedious modifications of the songs before conversion. The layer-merging algorithm ensures that the result will be as true as possible to the original; one particular Zelda theme song I tried was properly merged from 40 tracks down to 4 channels of quadraphonic sound by the converter with zero notes lost. The format generated for assembly allows easy insertion of metadata, and offers a single value to change to speed up or slow down the resulting song as desired.
Feel free to head to the converter, give it a try, and post bug reports in the attached topic. Be patient with songs; if one doesn't work well, try a different set of tracks from it, or a different file. The best performance from the player is usually achieved when percussion tracks are omitted.