N64 soundfont / midi help by Volkov73 at 11:46 PM EDT on August 21, 2016
Hey everyone! I am trying to work out how to use soundfonts and midi files extracted from N64 roms. I'll discuss three attempts with three different songs.
I've seen a handful of people on these forums that seem to have achieved what I am trying to do, but I have not found solutions
CASE #1
SONG: OoT - Lost Woods SOFTWARE: SynthFont, n64soundbanktool METHOD: Extract DLS file and MIDI file from a decompressed ROM. Load MIDI into SynthSoft then apply DLS to each track. TROUBLESHOOT: All percussion was on one midi track, while each percussion sound had it's own instrument in the DLS file. SOLUTION: Edit the percussion track. Split the percussion track into multiple tracks, then assign each of the tracks with it's respective sound in the DLS file. THOUGHTS: This method produced a 1:1 accurate version of this song, as far as I can tell. There may be some reverb settings or ADSR settings to tweak with. Relative success here.
CASE #2
SONG: OoT - Inside the Deku Tree SOFTWARE: Viena METHOD: Same as Case #1 TROUBLESHOOT: Notes will not play their full duration. SOLUTION: Edit the DLS file using Viena. Raise value of "Vol Env Release (s)". THOUGHTS: Even with this value set to something absurdly high, it still doesn't reach the desired effect. The notes now ring on much longer than before, but still doesn't sound the same as OST version. Probably not the correct method to fix problem...
AFTERWORD: I would be happy to upload some pictures of videos of my work, if it is useful for anyone trying to give me help on these matters.
My first goal is to just line up all the correct instruments with the correct tracks (SynthSoft does this automatically in the tested songs), and then I will have to split percussion tracks up (also, no issue here).
I have not even started trying to adjust ADSR and reverb (probably need help with this). When tracks are either missing or the notes are not playing for correct length, I have become stuck.
Thank you for anyone reading this and willing to give me some direction :)
Do keep in mind that not all parameters from N64 games can be translated to midi / soundfonts correctly. For the later sequence formats (SNG, Konami, Nintendo EAD, Paper Mario) there is generally always some info that cannot go into midi and soundfonts. It seems you just have trouble with Zelda, so I'll cover some things I know about that (it's a tricky soundbank format and not fully understood yet).
Nintendo EAD soundbanks have 8 ADSR info slots which I am unsure what slot does what currently. Generally only about 4 of them are used in SF2s. There's also another parameter that I'm not so sure about. I had a look at the Deku Tree soundbank's ADSR info and there doesn't seem to be anything too suspicious. Reverb (echo in this game) is set to max for both channels. That could be a issue you're having but its probably a mix of that and incorrect release time. Another issue could be there is a parameter in the sequence that does not translate to midi. Anyway, as you can see the EAD format is mostly unknown. I'll have to take another good look at it all sometime and hopefully improve on the parameters in the soundbanks. It probably won't ever be 100% correct as I stated in my first paragraph.
For reverb, you will have to manually add it in as you cannot use the correct reverb settings from a N64 game.
I'll leave the 8 deku tree ADSR parameters down here if it at all helps you (all times are in milliseconds): Instrument 1 0045 7FBC 0001 7FBC 7FBC 72F6 FFFF 0000 Reverb Max Instrument 2 0018 7FBC 0001 7FBC 7FBC 72F6 FFFF 0000 Reverb Max Unknown (time related?) 00007F5D