Simplify Super Mario World music porting by converting MIDI files to a format readable by AddMusicK.
This project’s aim is to simplify the process of porting a song into Super Mario World with AddMusicK.
It reads in a midi file, creates track timelines of note events, quantizes them down to the nearest
64th note (smallest note value SMW handles), and then prints them out in a format readable by AddMusicK
(including track numbers and BPM, converted to SMW tempo). The only things you might have to modify
yourself are the channel volumes, and removing tracks if it exports more than the 8 max.
It also keeps in mind the start/end time of other tracks by padding out empty space on either side
of the track with rests so all channels will be properly synced up when played together.
The project has no third-party dependencies and is run as a plain executable.
midi2smw.exe <flags> inputMidi.mid
To specify an output file:midi2smw.exe <flags> inputMidi.mid outputFile.txt
Flags must be put before the input/output file names.
None of the flags have arguments, simply put them in the command, and the cli will walk you through using them.
Flag | Description |
---|---|
-specifyTracks |
Manually specify which tracks to insert into the output |
-split |
Specify tracks to split with note groupings |
-samples |
Specify samples for notes |
-noLoop |
Print output without loops |
The program doesn’t currently support triplets. I haven’t even looked into how those work in AMK,
and it’s possible it would take a somewhat large refactor to implement that.
Overall, it’s not a super intelligent algorithm, and since it’s just rounding to the nearest 64th note,
it’s possible the output might be somewhat ugly. In cases like that I’d recommend modifying the midi file
itself to fit better into SMW’s limitations. Generally, output may just not be optimal for all of AddMusicK’s
features. I’ve never read all its documentation, and in general I don’t know a ton about music porting.
Hopefully it’s useful to someone anyway!