Reading midi files

Because of the horrible audio update, I wanted to give players a new way of playing their own music,
I thought that midis are a good idea since you can find them anywhere.
The problem is that I have no idea on how to read nor play theese files in ROBLOX.

Could anyone provide a post explaining how to play those files?
Thanks.

2 Likes

are you trying to make roblox reproduce from a midi file link or somewhat?

1 Like

I am trying to make roblox play a midi file from a link, though I don’t know how.

2 Likes

Good luck recreating an Audio Protocol… And I think its against the TOS because its not moderated and users are not allowed to share links from a different website that is not "Discord, amazon bla bla bla, Just look in the TOS which websites are allowed lol) - So if you create a frame where people can insert a link like https://hyper-tech.ch then YOU will get a Moderation and the Player will get a Moderation if roblox finds out. I dont want to be mean, but forget about it. Just wait until roblox makes audio public again. Hopefully soon

Edit: Funny that you guys clicked 11 times on the link

1 Like

very cool project, not sure if it is totally legal . First of all you need to decode the file after HTTP GET request with the url, and then parsing somehow midi binary to readable data, like making your own audio protocol!

Its not against tos as midi file does not have singing, and is just the notes. The Wild West Uses midi files.

I mean, he is wanting the users to enter an link for an midi file which is clearly against TOS.

Since this topic is already solved I will not answer anymore. If there us anything different, DM me.

The Wild West does this and won a bloxxy.
image

1 Like

HttpService can send requests to any link for a reason and MIDI files cant contain bad content as its just notes.

Seeing as nobody has answered this yet, you require a few steps before you can turn an offsite MIDI file into actually readable text the computer can use. If any of you do actually want to attempt this, heres a basic guide:

  1. You need a URL and HTTP Requests, this URL should be the download link that begins the download of the MIDI file onto your computer, and can be grabbed by right clicking the download link and pressing “Copy Link Address”.

(game:GetService(“HttpService”):GetAsync(URL))

  1. After getting the Async of the URL, You need to convert it to base 64. If its working, the file will start out like this “TVRoZAAAAA”

Encode64(game:GetService(“HttpService”):GetAsync(URL))

  1. Use 2012 code that not even I understand completely to eventually form a long string of numbers, lines, and all, capable of being fed into a midi player of your choice, as you eventually are forced to figure out how to properly put it into a piano.

Incase you haven’t figured out already, I’m still figuring out how the third part works and have been for about a day now, but its capable of playing MIDI files in roblox, so thats a start.

The Base 64 and URL grabber system was made by me, and the mixer and the Midi Object Generator were both made by GameHero, who made Advanced Midi Player (10) in 2012, last updated in 2015. The only thing I can tell any poor soul who is attempting to try this is to 1. Research, and 2. Learn how to convert the MIDI output to virtual piano output. Its possible, but annoying.

(Please remember to press the play button when it loads)

(It also has 714 warnings)
MidiPlayer.rbxl (165.0 KB)

6 Likes

Just convert the midi to a json and decode it with HttpService.

Possible, would make it a whole lot easier than it being a midi value, I didn’t do too much editing to the conversion script itself but it’s something to look into (That and I would rather not sift through 2012 code remaking it, but perhaps it can be a project for a rainy day)

The real trouble that I find in the midi files is their beats, ticks and tempos. I’m not sure Roblox would allow such precise timing as in the format. I’m pretty sure that this is the most excruciating part though.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.