Thysbelon.Logo of a Hummingbird moth.

Trouble with N64 Sequenced Music

DLS files are really tough to work with. The only thing that can convert them is Viena. I've been extracting soundbanks from N64 games, but N64SoundbankTool only extracts them as DLS; so when I convert the DLS to SF2 and play it with the N64-music-converted-to-midi, I can't tell how many of the flaws are from the DLS conversion, and how many are from the N64 extraction... (They're probably the fault of the N64 extraction)
and I don't think I'll be able to find a way to play DLS files on the web, or even in my daw...

I've also found out that embedding an N64 song in sequenced form on a webpage is impossible. It was easy to do for DS, because I could just convert the song to Midi with perfect accuracy using VGMTrans, and then play that midi with the excellent js-synthesizer, which has helpful documentation explaining how to use it. Converting the N64 music to Midi isn't an option, because while N64 Soundbank Tool is good, it's not perfect, and there are glaring inaccuracies. Another option is to play the N64 Music files in their original format: USF, but the few web tools that can play usf, like webn64 and Chip Player JS, are very complex with little documentation, so it's very difficult to embed them.

The best results came from using Chip Player JS in an invisible iframe (but the usf still stutters at the start sometimes, which is why I'm using the midi version from Chip Player, which I can't download because it injects midi event data at runtime to fix most of the songs' inaccuracies (except tremolo)). It has a feature that allows me to link to a specific song to automatically play it; the only problem is that it will play every song from that game as well, and there's no way to stop it. For Bomberman Hero specifically, this isn't so bad, but imagine if I wanted to play a peaceful dialogue theme, and a tense battle theme played right after it?

Apparently, one of the reasons it is so difficult to create a good usf player for web is because there are no good usf players to port to web. Every usf player out there is just an emulator with no visual output; they seek through songs by loading save states, which is why they seek so slowly.

Part of the problem may be the usf format itself, because they're apparently just the rom and save states.

Anyway, the best part of this journey was discovering Chip Player JS; even though it didn't work for this one very specific purpose that I am unlikely to ever do again outside of this blog post, it's a really cool website!
mmontag's efforts to create a web player for every chiptune format, and improve the N64 situation by fixing the inaccuracies in extracted midi files, are quite impressive! If I took the time to analyze their code, I probably could create a stripped down version that lets me embed any song I want without autoplay, but I'll leave that for another day.placeholder