sauraen / seq64

Sequenced music editor for first-party N64 games

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

The MIDI exporter not exporting M64s correctly

PablosCorner opened this issue · comments

I've noticed that when I export MIDIs from M64s, it seems to export them almost completely wrong.
I tried to export these two M64s. The first M64 had the M64 fuser tool by Kaze used to skip the intro once the song looped, and the second M64 was made without the M64 fuser tool. The M64s were made with the XML Importer from the SM64 Editor around 2 years ago.

MIDI Exporting Example.zip
(File includes original M64s and exported MIDIs)

[SoundCloud Preview for Super Mario World M64]
(https://soundcloud.com/dobiemeltfire/super-mario-world-athletic-remix)

[SoundCloud Preview for Hotel Mario Theme M64]
(https://soundcloud.com/dobiemeltfire/hotel-mario-main-theme)

This is pretty much the result.

[Super Mario World M64 - Exported MIDI]
(https://instaud.io/24fT)

[Hotel Mario Theme M64 - Exported MIDI]
(https://instaud.io/24gA)

Sorry for not getting to this for so long, I have been very busy with grad school. Yes, MIDI export does not support loop commands, which are used by default in MIDI import, which means that if you import a MIDI and then export it it will be garbled. This is a bit of an artifact of the development history (the games support loop commands but the importer Nintendo built never used them, so the games' files never actually include them), but anyway, it's not a terribly difficult fix, but it will probably be a while before I get to it. If you need to import MIDI to M64 and then export M64 to MIDI (though I don't really know why this would ever be necessary), a workaround is to disable loops during the import step.

Ah, that makes more sense. I'll do some most tests to see how to make it sound good, at least until the issue gets fixed in newer versions. Thanks for getting back to me though!

I implemented and briefly tested MIDI export of loop commands. Now, if you import any MIDI with less than 4 notes per channel at a time and re-export it, the output should be virtually identical to the input. Please test this and let me know if there are still issues with it.