^ And when his tail is burning, before he spins on his shell, you can hear some drums in addition to the choir.
Also, the full intro for Megaleg, plus a sequenced variation before climbing on top of the boss. The track "To the Gateway" has a third variation, which adds some sequences to the song. The jingles are sequenced, too.
I don't know what other variations it has. Then there's Donkey Kong Jungle Beat, fully sequenced and dynamic. Mario Kart Double Dash has sequenced tracks, mainly the Title and others.
Not sure about MK:DD's title screen but I definitely know the menu/select bgm is sequenced. The course select bgm is also sequenced in Super Mario Galaxy btw.
Yes well it looks like there is plenty of sequenced music to be had then! The problem is in game alot of nintendo games don't allow SFX to be disabled which is why we need this music format to work.
I think the method that Prime Blue is refering to is the method he used to create the Twilight Princess rip. That is, litterally delete the sound effects from the game's data. If the SFX are gone, then they certainly can't be played while the music is running.
It should be noted that, if that's the method he's refering to, my description of that method is overly simplified. If I recall correctly, it was a lot more work than simply deleting the SFX (some SFX are actually used as instruments, in different areas/songs, so deleting them removes instruments, depending on the context. At least, I think something like that took place). So, although it's "easier" to do the SFX removal method, it's still not something your average person is going to be able to do (but, if they do decide to do it, it'd be easier than learning Wii/NGC assembly to rip the driver/data out of the game).
So, theoretically, Prime Blue's method does make "more sense." But, a problem with that method is that it requires a line-in recording, which is going to end up as a non-looping format. Once recorded, if you want it looped, you'd have to manually add the loop points in yourself. Also, because it's now a streamed format (a recording of a sequenced format), it is almost certainly going to be significantly larger than it would be if it were a ripped format. On the other hand, it will be in a format that is much more available to the average person as well. How many people can play MP3s (on their computer, iPod, portable media player, etc.)? Essentially everyone can. How many people can play WSF/GCSF/3SF/CSF? No one can (currently. Personally, due to the similarities involved, I say just call both NGC and Wii rips as WSF. Or RSF for Revolution). Which, I believe, is another reason he says it makes more sense. And of course, because it's a line-in recording using the original hardware, the audio quality will be as close to the real thing as you can possibly get. Whereas, with a ripped/emulated format, there are almost always going to be differences and inconsistancies with the playback, when compared to the real thing.
Just thought I'd throw in my thoughts on this. Personally, I'd LOVE to have a ripped NGC/Wii format. There are tons of games out there with great music, that we don't have the music to yet. I think it'd be a great thing to have. But, that's me. Mouser X over and out.
Hell, I'd be ABLE to help with finding loop points if a few people collab on Prime Blue's TP method. I think the demand for Sunshine and Mansion is big enough to at least go through the effort for those two if creating a GCN ripped format is too much for so few games.
I was bored yesterday. In fact, so bored that I decided to rip Double Dash!! – which, as it turns out, uses quite a few sequences.
I've seen Mike's release from 2003 on Galbadia Hotel, but it contained sound effects for most of the tracks. Also, Nintendo apparently doesn't know how to set loop points properly in their streamed files, so all of them either contain clipping or single channel volume changes. Thus, I manually looped every streamed file, don't bother with the glitchy ASTs anymore (again, not the fault of vgmstream but Nintendo's sound staff).
Thanks alot for this :) You always do great rips Prime Blue
Reverse Engineered by itsacatfish at 9:36 AM EDT on April 6, 2010
Nobody probably cares about bms anymore, but i reverse engineered the format with only a few unknowns. I'm not a programmer so i can't do anything useful with this stuff but maybe someone here could.
MAIN HEADER
c1 xx xx xx xx track list offset \\where does the track list start? d8 62 00 78 unknown (always the same) e0 xx xx tempo \\in beats per minute f0 (xx) xx length of tempo c7 xx xx xx loop to offset \\where does it loop to ff
TRACK LIST c1 xx track number xx xx xx track offset
f0 xx xx complete length c7 xx xx xx loop to offset \\where does it loop to ff
TRACK HEADER f9 00 00 always the same e2 xx unknown e3 xx (e3 xx) instrument b8 00 xx volume \\up to 7F b8 02 xx unknown \\up to 7F b8 03 xx pan \\from 00 (fully left) to 7F (fully right pan)
b9 01 xx xx pitch \\for pitch bending d8 6e xx xx vibrato d8 64 xx xx unknown d8 6f xx xx unknown etc...
MAIN DATA xx 01 xx note - note 1 on - volume \\note - centred at 3C (middle C) volume up to 7F f0 (xx) xx delay \\(length of note) xx 02 xx note - note 2 on - volume f0 (xx) xx delay \\(length of note) 81 82 note 1 off - note 2 off repeat....
AND... c3 xx xx xx reference (offset) - some parts of track stored in other part of score
when you get to dynamic tracks, things get a bit more complex, but that's pretty much it for normal tracks
f0 1E 30 units (quaver) f0 3C 60 units (crotchet) f0 81 00 128 units f0 82 00 256 units f0 82 1E (2*128)+30 units f0 9e 00 (30*128) units f0 81 80 (30*128) units f0 81 80 00 (128*128)+92 etc...
I just won't go away! by itsacatfish at 11:09 AM EDT on July 19, 2010
someone else could it turns out - hope your constipation eases off soon!
http://bms.learnpad.net/
Converts bms to midi. A few bugs; and it has a 30 second time-out: if anyone can improve on that then I'll pass the sauce (that's the source).
This format is still used for sequenced files in super mario galaxy 2, so it certainly ain't dead!
Any games earlier than twilight princess (wind waker, mario sunshine) use an older version which is quite drastically different - so no support for those BMSes.
I've also worked out basically everything else; the relationship between .bnk and .wsys; sample looping and tuning; instruments splits; a lot on how sound envelopes work. It's therefore possible to play the midi files back using a soundfont, but it's slow, manual work.
Of course being a non-coder, I've got no idea how to go about this other than manually - but it's still very nice...
Wow! I'm quite impressed! I'm slightly disappointed that, at least as near as I can tell, it's a "web app" and not something I can download and use later. It'd also be nice if the various bugs were worked out. There were numerous BMSes that didn't seem to convert (one gave a "divide by zero" error), and some sounded off-key.
What I'd really like to see is a program that's able to play the BMSes in their native format with instruments/etc. in their native format as well. If this were accomplished, then an xSF ripped/emulated format wouldn't be necessary. Obviously, that's not going to happen soon (if ever). Nonetheless, nice work! This is pretty cool! Hopefully, someone can help you with the sample/instrument bank stuff, so a program could be created to pull that out in conjunction with the BMS it goes to.
Anyway, congratulations. Hopefully someone else fiddles with the source and creates a non-buggy EXE that gathers the instrument data as well. :P Mouser X over and out.
hmm I see you uploaded b010.bms - I thought we'd corrected the division by zero error - but the fact that it fails to find the track list probably means it's an older form of bms... which game is it from?
I haven't uploaded anything. I simply checked out a few of the ones already listed that looked interesting. I just went back again, and got a "divide by zero" from staff_roll01.bms and staff_roll02.bms. I assume these are from Twilight Princess, but since I didn't upload them, I don't actually know that for certain.
I also had a few different ones time-out (30 seconds or whatever), but I didn't bother getting the links, since you already know about the existence of that problem. Though, I did find this worth mentioning. Kakariko.bms gives the 30 second time-out error, but if you click on "download midi", it still works. As near as I can recall, that's the only one that does that though. And for future reference, I have no intention of uploading any BMS files. If I mention any problems in the future, it's almost certainly from a file already on that site.
As I already said though, I'd be much more interested in keeping this stuff as close to its original format as possible, instead of going through a conversion process. I understand there's a ton of difficulty involved in that, so I don't actually expect that to happen. Really, I'm quite impressed with what you've already done (and had help doing)!
You know though, regarding MIDI conversions, I think one of the things that really "turns me off" towards MIDI, is all the hassle necessary to get it to "work" correctly. Sure, it works "out of the box", but only on the rarest occasions have I heard a MIDI that sounds good. Usually, you have to get some kind of sample bank, and often, just one won't do, but you'll need all sorts of them to get different MIDIs sounding correctly. In my opinion, MIDI is an old, outdated format. If you're going to distribute sequenced music, it should be done using a format that contains its sample information. For example, IT (Impulse Tracker), S3M (ScreamTracker, I think), MOD (note: MOD is playable in Rockbox, and is thus my personal preferance), and a number of others. Obviously, at this early stage, this wouldn't be very useful, since the current program (I think it's written in Java?) doesn't handle sample data anyway.
Basically, while I commend your efforts (really, I'm quite impressed! Well done!), the current implementation isn't something I find useful. Others most certainly will (no doubt. MIDI is still widely used. My guess is it's because the format has been around so long, that it's essentially become the "standard"), but for me to consider it useful, it would have to convert to a format that doesn't require that I hassle with sound banks, and such. For me, for now, it's a novelty. Aka, something neat, somewhat fun to play with, but nothing that's actually going to be used on a wide basis.
Please don't misunderstand me. What you've done is, to me, quite amazing. The potential is wonderful! But it's at such an early stage that I won't be using it. Others most certainly will use it (I foresee Lunar(y) complaining about MIDI conversions(or very slight alterations) being posted by newbs who say it's their own work ("It's a ReMix I did! See, I changed the instruments/tempo!")), and some of those uses will be good, legitimate uses. Since my use is for listening purposes (and not compositional purposes, which this tool could be good for), it's not something I can use, currently. Nonetheless, thank you very much for what you've done! It's certainly a necessary step in getting it to the "useful" stage I'm talking about. Mouser X over and out.
Those other formats look very promising! As a composer/arranger, I was interested in seeing the actual scores of the files; although I'm interested in playback too! I've got good playback quality using soundfonts, but I can't really get into that road.
I understand your desire to remove 'the middle man' in this and convert directly to a playable format and that is my overall aim, but for now, the soundfont playback system makes me quite happy:
Perhaps I'll look into MOD files etc now - they seem to be like midi files, but with the soundfont (instrument data) included: both parts of my current engine rolled into one; which would be ideal!
With regards to the staff_roll BMSes, they are from Twilight Princess, but don't contain any sequence data; I don't really know what they're doing there.
if you use any tracked format, use IT. S3M and particularly MOD have more limits on what they can contain.
however i will say the way tracked music is constructed is very different from MIDI data. i'm guessing with the BMS sequences they were originally authored as MIDIs to begin with, so they translate back easily. i don't think it'd be so streamlined with tracked formats. myself, i wouldn't recommend it, and think it'd be better to look into a MIDI+DLS/SF2 or xSF solution.
The staff roll composition were several prerecorded audio files. If I remember right, the BMSs just pointed to the streamed files.
Could you elaborate on the method you are using to create the soundfonts? I can't imagine this being possible as an automated process, with all the loop/reverb/etc. values for the instruments having to be manually set and so on.
by arbingordon at 9:02 PM EDT on September 28, 2010
bump Could you elaborate on the method you are using to create the soundfonts? I can't imagine this being possible as an automated process, with all the loop/reverb/etc. values for the instruments having to be manually set and so on.
Sorry, i'd just assumed this thread had been forgotten deep in the archives...
Here's my elaboration:
The *.bnk files contain the Instrument data in the INST section. These contain a string of upper limits at which each sample is used, and offsets and bank numbers referencing the location of the sample in the .wsys files.
The .wsys files, as already worked out, contain a list of samples within each .aw files. This includes the sample rate, the start offset and length, which note it is, loop data etc.
The INST values within the .bnk files also contain offsets linking to the OSCI section within the same file. This section contains two offsets referencing the ENVT section.
The ENVT section contains envelope data - attack, hold, decay, release - in the form of (Time | Volume). I've worked out what refers to what, but not the scale, so I can't really use them yet...
The LIST section in that file is in the right order so that "instrument 0" in the .bms files is the first instrument in the list.
That is just about all the data required to make a soundfont, and I've just input it manually into Vienna soundfont editor. It should theoretically be possible to make the soundfont automated: the only part of me creating the soundfont that doesn't involve leafing through data is naming the instruments...
Unfortunately, the person who wrote the BMS program, basically won't do it anymore. I've solved almost all the bugs that are still present in the program, and done loads more background work, but now I need a programmer to write it all up...
I was actually just thinking about ripping that the other day. I nulled all the non BGM samples and loaded it in dolphin, but it turns out that Dolphin's audio plugins need a bit more work done on them. The DSP HLE plugin didn't have proper stereo separation, and the LLE plugin crackled a bit. And I don't have a Wii/GC at college with me so...
by arbingordon at 2:54 PM EST on November 12, 2010
i was just thinking about super mario sunshine again, funnily. is there still no good, complete rip of that? kind of amazing if not... There isn't one.
It would actually be easy to do using the method that primeblue used for Twilight Princess. You just need to completely null one of the sample banks, and certain parts of another to get rid of all the sound effects. SMS also doesn't have nearly the amount of songs that Twilight Princess does.
edited 11:37 PM EST November 12, 2010
by itsacatfish at 4:06 AM EST on November 13, 2010
The DSP HLE plugin didn't have proper stereo separation
It did in older versions of dolphin!! In around version 3972 they just seem to mix around volume and pan, so the more right the pan, the louder the volume - and they've just neglected to fix it since then! That really annoys me....
Cool, someone has been doing research in bms. Now I should finish my research into brsar. I can mute at least most sound fx and do a line-in recording :)
As for a proper super mario sunshine rip, i was trying to plan to use primeblue's method as i did with my smg1, smg2 rips (and future donkey kong jungle beat rip), but my problem is that my dvd burner is broken and my pc is too slow to emulate sms on dolphin.
by itsacatfish at 2:29 PM EST on November 14, 2010
If you download from the archives dolphin version 3661, I think that one has stereo DSP emulation. But I think quite a few more audio issues have been fixed since then (looping samples, envelopes...), so that wouldn't really be a solution...
by arbingordon at 1:45 AM EST on November 15, 2010
what the hell is that song? SMS? why don't i recognise it :I I think it's the song from the Pianta Village when it's on fire or something of that nature.
by arbingordon at 11:36 AM EST on November 16, 2010
That would be jurassicPieter. Thanks for the rip jP! Eagerly awaiting your SMS rip as well.
by itsacatfish at 6:41 AM EST on November 20, 2010
Sorry to be boring but....this project is sort of hanging over me as unfinished business - it's so close to being finished, but I just don't have enough time to learn to program from scratch just to fix a few bugs...
This place seems the best place to ask, but is there anywhere else I might find people??
Cool, now the 30 second script execution limit's not a problem, though you probably should have put a tmp folder in there, as it doesn't automatically create it.
by itsacatfish at 11:39 AM EST on December 4, 2010
does it? how do you compile it?
the only really disastrous error in the program appears in two files: e_goma_01 and field_day_link end up in an endless loop cycle.
I think the reason for this is that there is one loop embedded inside another. So it loops a section once, and then it finds another loop that goes back to before the first loop, but then it sees the first loop again and doesn't realise it's the same one from before and returns back to the beginning again. And this continues for ever.
Other than that, most files work pretty much fine.
Since Dolphin's low level audio emulation is now, for the most part, accurate, I decided to try to rip Super Mario Sunshine using BMS swapping like I did with Luigi's Mansion back in March. http://www.brawlcustommusic.com/temporarycrap/lm/
The problem with SMS is that the music samples aren't all loaded at start-up like they are with Luigi's Mansion. When playing back the music, this causes some instruments to not play in most of the tracks.
In messing around with Gamecube/Wii audio, has anybody found a way to make the game load the banks needed to play the desired BMS files?
Edit: I found out that zeroing out the first bms, MSD_SE_SEQ, cancels out all sound effects. This could be useful in doing a rip.
Incidentally, bob, thank you for pointing out those files. I have a few scraps of Luigi's Mansion stuff here and there, but it's only amalgamations of line-in and muting with missing and incorrect tracks. With your stuff I should actually be able to put together something close to complete.
Well, I've been messing around with these BMS files for the past few days, and here's one of the things I came up with. http://www.brawlcustommusic.com/temporarycrap/zwwsea/index.html
I've been working on figuring out the bms files found in wind waker today, and I'm pretty much done. The only problem I've run into is that there are about 5 or so stray notes in one track of the ocean theme. I'll need to look into that tomorrow. Here are some of the files I've converted. http://www.mediafire.com/?upursw4473d9v
One thing I haven't figured out are the tempo changes during the song, these are described in the main header as fd xx xx for the tempo in each section of the song, but I still need to look into what determines those sections.
e0 xx xx tempo \\in beats per minute f0 (xx) xx length of tempo
What on earth does length of tempo mean?
Also what does fd actually mean if it isn't tempo? I can't quite make it out from the code in the PHP file... It seems to be some sort of MIDI section header or something.
The bms files from Wind Waker and Super Mario Sunshine are different. They're similar, but have a good amount of difference between them. Luigi's Mansion's bms files have a format that I haven't seen in any other game yet. And when I looked at that tempo stuff the next day, It seemed glaringly obvious what they did. It has a tempo followed by the length that that tempo lasts.
Edit: I just uploaded some tracks from Super Mario Sunshine, and some updated tracks from ZWW. There are still some problems with a few of them that I still need to work out.
Also I have been through the BMS index code and fixed the tempo issue, it was a silly logical error in the coding that was forcing it to be set to it's correct tempo and then back to the default 100. >.>
if(!isset($w)) { $midi->setBpm(100); if($verbose==true) { echo "No initial tempo found. Setting to 100.<br/>{" . (date("U")-$start) . " sec}"; } }
The next line should then read: $k=0;
Length of tempo makes sense now, I might try and implement it into the BMS index file at some point assuming the MIDI Class files allow me to put in a tempo change meta event.
I haven't had any problem with the tempo being set back to 100. Both the newer bms style and the ones from zww/sms that I posted have worked fine for me.
And the d8 62 xx xx sets the ticks per beat (quarter), in this case always 120.
The f0 command stands for a delay in general (like the MIDI delta time), not for the length of tempo. Between two tempo changes there may be more than one delay command, that's the reason why the PHP script does the tempo often wrong.
Hello, this thread has been very important to me for the past week, and have been getting really into the mood to figure out some formats. I made great progress on the PRM and BLO, but absolutely am stuck on the BMS. Here's why.
I, instead of using barcdumper, extracted the BMSs from SMS out of the sequence.arc by hand. I've now got files like "k_dolpic.com" and "k_titleback.com," but these are *.COM (presumably meaning compressed), not *.BMS. Yet, I saw and have heard the BMS-to-midi converted files like "dolpic.bms.mid" and "titleback.bms.mid." The *.BMSs from ZWW were even named *.BMS, but didn't work with the php code, either, yet there's "house.bms.mid" and "sea.bms.mid"
[EDIT: Did furrybob release the info on the ZWW/SMS format and I missed it? ]
Thanks for reading this and hopefully replying to it, I've been getting little sleep over this and really want to contribute to this BMS format for ZWW/SMS/etc.