Back in the older days of ROBLOX there was no way to import your own music to your game, so a guy named Gamehero made a plugin in Lua (programming language) that allows MIDI files converted into Base16/Hex to playback like they normally would if they weren't even converted. What I did here was just reverse the entire process, I got a hold of the .rbxl place file (Roblox Place Data in XML) by dumping it using an unofficial program and went to Roblox Studio and found the value that contained the Hex data to play the song, I pasted the entire Hex code into a [hex editor] program called HxD and saved the file as a MIDI file. Thus, creating the MIDI song you've been listening to!
This process sounds interesting!
Is the original .rbxl file you are working from available somewhere?
Can you describe your process in more detail?
It sounds like your process to create these MIDI files might be more involved than just copying and pasting bytes into a hex editor. A simple copy and paste of bytes into a hex editor suggests to me that the two files you made would begin with the exact same bytes and have exactly the same header. However, your original file (SADWALTZ.mid
) has a header indicating the file contains 4 tracks and has a resolution of 600 ticks per quarter note. But your updated file (SALTWAD.mid
) has a header indicating the file contains 11 tracks and has a resolution of 120 ticks per quarter note.
If the .rbxl file really contains an exact copy of a MIDI file embedded in it, it'd be helpful to get the exact bytes it contains.
For example, one idea I thought of was to search online for the MD5 hash of the MIDI file, and hope that maybe some website somewhere has the same MIDI file listed with its MD5 hash, and maybe has some more clues about who made the file or where it came from.
But this idea won't work if any bytes are changed. For example, if something is fixing the header to indicate only the number of tracks you recovered, then a byte in the header will be different and the MD5 hash will change. And if something is updating the MIDI file resolution to a different value, then every delta time in the MIDI file will get updated, and the MD5 hash will change.
(By the way, in Windows, you can get the MD5 hash of a file using Windows PowerShell ISE. In the Commands pane I searched for Get-FileHash, then filled in the location of the file, selected Algorithm MD5 and clicked Run, and it calculated the MD5 hash of the file.)