Gamecube MusyX Audio Thread by soneek at 8:48 PM EST on December 1, 2014
Since this is gonna become a thing now, we may as well centralize stuff.
I've almost figured out how to completely convert the sequence format to MIDI over the weekend, and Nisto has done work extracting sound samples for this engine.
Next thing will be figuring out the instrument tables, so that we can make soundfonts to go with the converted MIDIs.
Tested games with this sequence format Tales of Symphonia Star Fox Adventures Pokemon Colosseum Mario Golf: Toadstool Tour <- OMG FINALLY!!! Resident Evil 0
Still some more testing to do, but things will be pretty amazing once we can fully enjoy this music.
Yep, I've contacted him as well. He replied a few times but then stopped. There's no reverb in that player either. I couldn't care less about dry music, but if that's what people want.
Oh you did? Kinda relieved someone was at least able to get a response out of him. :P But perhaps it's not useless? As far as I can tell there are still a boatload of instructions (even non-reverb related) that are unknown that he might've figured out.
I'll be ecstatic once we figure out how to back-convert the sound banks to DLS or SF2. I have plans to remaster the Mario Tennis/Golf GBC and GBA exclusive songs, and possibly some Golden Sun as well. It even seems like Tales of Symphonia might use similar instrument samples as Mario Golf, but I'll confirm it once I find the project files for Mario Golf.
I think .snd is exclusive to Resident Evil (unless you've stumbled across such files in a different game?). It starts with offset/size pairs of each chunk: 0x00: offset of .pool 0x04: size of .pool 0x08: offset of .proj 0x0C: size of .proj 0x10: offset of .sdir 0x14: size of .sdir 0x18: ? 0x1C: ? 0x20: offset of .son 0x24: size of .son 0x28: offset of .sam 0x2C: size of .sam
In Resident Evil Zero, the pool/proj/sdir files are stored in .arc files, which has a very simple format. Entries have this structure: 0x00: offset 0x04: size 0x08: filename 0x10: extension
Apart from that, the only ones I know of that have these files are the ones listed in my script:
Paper Mario: The Thousand-Year Door Star Fox Adventures Eternal Darkness: Sanity's Requiem
If Wikipedia is of any indication, maybe these two have them as well: Star Wars Rogue Squadron II: Rogue Leader Star Wars Rogue Squadron III: Rebel Strike
I do actually still have both of these sitting on my HDD. Although, from what I can remember, the audio-related files on at least Rogue Leader is compressed or encrypted somehow and I could never figure out how to decrypt/decompress any of it myself. It might be simple to figure out for someone who regularly deals with compressed/encrypted stuff though (unlike myself) :shrug:
I see. Are you working on a program to generate soundfonts? If so, how's the progress and what's missing? I'm assuming you've got at least the sample mapping figured out? I'm gonna have to download the ToS pack and check it even if I don't know the soundtrack (think I've only listened to it once, way back), this is exciting :-)
Yes. It still needs a lot of work though. Everything was stored on my external hard drive though, which decided to stop working thru the USB connection. -_-
I might just start from scratch, since I have a bunch of written notes anyway, and I'm short on funds to recover my hard drive at the moment. I need to start the Github so people can collab on this.
by punk7890-2 at 12:52 PM EST on December 15, 2014
Wow awesome work on Symphonia! Can't wait to see more. Noticed Pad 3 Polysynth doesn't work. So far only some battle music doesn't quite play right. I noticed the drum kits aren't as they sound like soundtrack CD. I've never played the GC version of it so I wouldn't know. Sorry to hear about your external. Scary stuff. I managed to recover mine before when windows failed to detect it.
This is really exciting and awesome! Thank you soneek and Nisto! If it isn't too much to ask, may I have the Colosseum midi files? It would mean a lot to me. Thanks a lot! :)
I know the Dinosaur Planet midis have already been ripped (N64 format from a prototype), but there are a few songs from the final version that I'd like to recreate/hear in 44khz.
Just a request... I appreciate the work you've put into this. Especially Mario Golf with it's terrible indexing (or lack thereof).
by RebeccaSugar at 11:11 AM EST on January 20, 2015
Running these midi's under the megadrive sound-font is pretty fun, hell- running them under ANY sound-font is fun, some actually sound authentic under the MD sf
So wait, this is another GameCube sequence format? 'Cause I'm still waiting for Animal Crossing (I grabbed the USFs of Animal Forest, but for some reason some tracks are different) and WarioWare Inc.: Mega Party Game$, and if I'm right, those use a sequenced format. (At first I thought it was the BMS that was cracked some time ago)
@dkbk64 So that's it, eh? Well, I guess that makes sense, too, 'cause like I said, when I asked for Animal Crossing, someone pointed me to the already ripped Animal Forest (N64). But also as I said, some tracks are different: in fact, the one I know for sure is different is one of my favorite tracks, K.K. Ballad (both live and aircheck versions); for some reason, the melody is changed. That's why I'm still waiting for the GameCube Animal Crossing rip.
Star Fox Adventures has a slightly different format for its MIDIs. I'll probably do more research on it after this semester.
So, I just realized that the GC version of Mario Power Tennis uses MusyX as well. I never bothered to check before since the Wii version is streamed. MIDIs coming later.
Midis by gbp148 at 12:53 PM EST on January 28, 2015
@soneek You're really great soneek! Have you tested Pokemon XD? If it uses MusyX it would be perfect to have the midis. Cheers!
You can find these files in Metroid Prime and Metroid Prime 2 as well. The .AGSC files in AudioGrp.pak embed pool/proj/samp/sdir files, and the .CSNG files in MidiData.pak embed .son files.
Have you guys documented how these formats work? Interested to know.
I don't really know anything about the .son(g) files, but I made a sample extraction script if that's of any help. More info here (bottom). An SDK containing some documentations and tools exists, but it's hard to find. If anyone is interested, send me a PM (wherever).
Funny story is we thought that these were proprietary formats, and halfway cracked them ourselves (to the point of being able to extract audio from them), before only last night realizing they're Musyx files. Kinda annoying but whatever :P
XD's music is streamed. I posted source code somewhere here for the MIDI stuff. Pitch pending isn't figured out yet, but note and other events are mostly figured out. There's still some testing to do eventually to fix some stuff.
@soneek Oh, thanks for the answer. Wish I could work on this project, but I have a mac, and WineBottler really isn't enough to work every single exe file. Any suggestions?
@Nisto Sorry for the late reply. For example, I cannot run VGMStream since I don't have bootcamp or a similar software and Wine really isn't cooperating. I really want to work on those Gamecube instrument tables, but I cannot even get .wav samples.
What is MORT? I had something to read the banks, but my dumb ass didn't copy the source over to my PC before my external hard drive died. I have a program that doesn't work perfectly yet to dump out the instrument info, and it doesn't have AHDSR reading implemented either.
I have some handwritten notes I did related to this, but I haven't been motivated enough to re-write the script.
Super Smash Melee by Darkabomination at 7:42 AM EST on February 18, 2015
Hi, new member so first time posting. Does anyone know where I could get a midi for Super Smash Bros Melee? Specifically the Pollyanna remix from EarthBound listed as Mother 2? I really would just like that one in particular, I can never seem to find a midi of it. And I've found that game ripped midis produce the best by far quality notes and channels for soundfont and vst remixes.
I recently asked Shogo Sakai on Twitter if he'd release the midis from Melee and he basically said that while he'd love to, they're under copyright so he's unable to.
sorry if I missed it in the thread, but is their a header or signature or something else specific to Musyx files that make them identifiable as such? Mr. Driller - Drill Land has a number of MIDI files on the disc, and I'm trying to figure out how they relate (if at all) to the DSP files that half-work with vgmstream.
Soneek, so you found a way to convert Musyx *.SON files to midi? Metroid Prime uses them for cinematics that have Samus's space ship in them. These particular files have a fair amount of pitch bends as well.
If you can add what you know about SON to the Retro Modding Wiki, that would be greatly appreciated.
I think pitch bending is the main big thing left that meeds to be figured for the sng/son/song format. There's other little things that need to be fixed that I can't remember right now.
I'll update the wiki when I can, but I haven't looked at this format in months.
Mario Power Tennis? by Yoshinkeru at 4:20 AM EDT on April 13, 2015
I only recognize a few of those musics that you say were ripped from Mario Power Tennis. Then again, this is from the GameCube version, while I only had the N64 version; where the songs changed?
Finally updated my sample extractor to write the predictor/scale value and loop data. I also got rid of my hack-ish solution for getting around some issues that vgmstream was having with the output in some cases, as I suspect it was just due to the missing (aka null) predictor/scale value in those cases. So that means no more adding redundant data to your precious streams either. :) I have looked everything over and I'm pretty confident I got everything right at this point. The code is still a messy pile of **** though, but it does the job!
Someone else was asking me about Pokemon Colosseum through VGMdb, and it didn't seem like they were able to find the Sample Directory (.sdir) files. It's not the most obvious, but those files are needed for proper decoding/extraction of the .samp data. So I ended up getting the game and looking into it myself, and in the case of Pok�mon Colosseum, they're in the common.fsys file.
And the final answer is yes, provided you have all the raw and decoded material needed from the game, the script works on Pok�mon Colosseum as well. Here are the samples for those interested..
I tried to find .samp data, but couldn't! Thanks a lot! Is it possible to convert .dsp files to .wav or .mp3 in OSX ? (since I cannot use vgmstream at the moment)
For OSX, I have no idea. Maybe kode54 or hcs could help you with that question. I know kode54 has done some work with stuff on OSX. Try asking on #console_stream (irc.foreverchat.net) or #usf (irc.freenode.net).
I'm running low on space on my Dropbox so I'd appreciate if you let me know when you've finished downloading it.
An observation: there is a sample in snd_music that's supposed to loop (I think?!), but the loop values are specified in kind of a non-standard fashion compared to the rest of the samples, and I could not get vgmstream to play it with the loop set, no matter how I tried tweaking the header values. So I had to unset the loop flag for that sample to be able to decode it with vgmstream at all. The sample in question is 0064. That is the only problematic sample from the set though. I have asked hcs and kode54 about it. If they're able to help I'll upload an updated sample.
@Feldspar: I would have to have access to the game files to even get an idea of where the .sdir files are stored. In the case of Pokemon Colosseum for example, they're in common.fsys - not the most obvious.
So are these rips of the music tracks in hd? Whatever the case, I love XD and Col very, very much, so having any better music or tools to work with them would be awesome. Looking forward to a reupload.
@alimu Use this ripped soundfont as a reference for the proper note regions. I ripped this months ago, but never got the drums working. The other instruments should be right with note regions though. I didn't get around to enveloping.
@soneek Thanks! I was actually listening to the music and seeing the places of the notes using the midis you ripped. You made it a lot easier :) @dj4uk6cjm Yes, I'm using the samples to create sf2 files. :)
Hurray, so glad a workable soundfont will come out of this. Thanks to being blind, vst's just will not work for me, so always happy to get fonts. If only Genesis sets were possible, I'd be in bliss, but apparently not.
@soneek I'm currently figuring out the regions of the percussion samples by listening to the music and checking the midi. I have a question about the ripped soundfont. The timpani soundfont doesn't include the tremolo sample. The same problem is also present in the fingerstyle bass soundfont with another sample. So my question is, are these extra samples actually used in modulation? I am asking because the midi doesn't have any automation.
@alimu I might've manually separated the tremelo sample from the timpani bank, and I don't remember what I might've done with the finger bass. I think I was attempting to use the soundfont with other R/S/E themes.
The tremolo soundfont seems to be the upper region of the timpani bank, and it's noticable in the title theme (I think), but definitely Mt. Battle. It's weird how they handled things this time.
@soneek Thanks for the answer! Yes, it's really different from other soundfonts I've encountered. Unfortunately, exactly the same notes with and without tremolo are in the same soundfont (for example C2 in the title theme contains both tremolo and normal timpani notes), without instrument changes, so I thought it was modulation and not a higher region. Since both of the samples (timpani hit and tremolo) along with two cymbals are present in the GM program number 47, I'm a bit confused.
For the finger bass, a sliding sample (sample 64) wasn't present in the ripped soundfont.
I also didn't find some instruments. Do you have the fonts of the synths? If not, could you try to extract them? I figured out the muted guitar font by ear but since synths are virtually everywhere, I cannot distinguish them by ear.
Aside from the percussion, these three are the only issues I encountered. The rest is almost done. Thank you!
I think I solved the timpani issue. I used both the tremolo and the hit samples, overlaying them. With staccato notes, the hit sound is present, whereas in longer legato notes, the tremolo appears. I think it sounds pretty good!
I ended up researching the sound bank format again. I've almost got it finished. I'll post some stuff after I get back tonight, but the source for my tool is on Github.
I'm done with the soundfonts, as well as their program numbers, except for 2 instruments.
One was present in the soundfont soneek ripped for testing, numbered 59 (I believe it's supposed to be 58), which sounds like a harp or an acoustic guitar.
The other is the same as the string ensemble, except it has a crescendo, numbered 79, which was used in Phenac City's theme. I do not know how to make it sound exactly the same, the attack values I used never create the same sounds.
Here's the Colosseum soundfont v1.0. I will update it frequently with your feedback, and repost the whole soundfont again here.
There are a few issues, mainly the crescendo strings, because I think the hold and decay values are supposed to change with the tempo, and I do not know how to do that. Help would be appreciated.
If there are any issues please inform me so that I may check what's wrong. I used PolyPhontics, and have all the project files saved, so little changes will be easy. The instruments have their program numbers in front of their names for your convenience. Some program numbers are assigned to two instruments, which I believe depend on the channel number. I listened to the instruments and gave them names based on the sound produced.
I'll create a .dls file containing all the instruments and their respective program numbers for easier MIDI playback after the problems are fixed.
I would like to thank Nisto for the .wav samples and soneek for the ripped soundfont. I couldn't have done this without you.
@alimu How do I merge all of these into one soundfont? I was wondering about the large file size, but then I noticed you put in long samples, rather than shorter samples with loop points. I've made more progress than before with MusyX stuff (aside from ADSR), and I have a build of vgmstream that can embed loop points in an output wav if you want. I posted it somewhere on this site already.
@soneek There's an app called sf2patcher if you're using windows (I'm not) which can be found here: http://www.synthfont.com/Downloads.html It converts multiple soundfonts into one larger font. You can also assign the midi preset values I gave them (in front of their names) so that the instruments could play automatically.
I couldn't loop the samples correctly in Polyphontics, because I had to manually adjust the loop points, and they did not sound that good. Unfortunately I cannot run vgmstream because I use a Mac and Wine doesn't run it for a strange reason.
Could you also check the crescendo strings, because I believe the hold and decay values were programmed, since they do not have their own samples, and use the normal strings samples. The Phenac city theme uses them abundantly, and I believe the values change depending on the tempo.
I'll trade you MIDIs for Bio1 for that Prime Blue line-in rip that you supposedly have of it though. :P Seriously, been waiting over a year for that good stuffs dude!
xD I was actually thinking about that Line-In rip just as I requested those MIDs.
I most definitely have it, but as I mentioned in a PM at THIA, kind of had a black cloud following me around for quite awhile and never go a real chance to upload it.
The Bio0 Trial Edition MIDIs are quite a treat -- there are many sequences in here that were completely rendered to stream audio only and used for cutscene FMV. Nice!
Many of the Bio1 MIDIs are difficult to identify. I suppose it would be much easier to ID them with their corresponding soundbanks. I noticed that soneek has a tool located here, but I'm not quite sure what it does. I guess that I compile and try it later...