Previous Page | Next Page

by furrybob at 11:27 PM EDT on September 1, 2011
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.

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.

edited 11:29 PM EDT September 1, 2011
by Elven Spellmaker at 8:39 PM EDT on September 3, 2011
I thought tempo commands were e0?

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.

else if($hex=="fd") {
                    $nextchars = array_slice($filedata, $current+1, 30);
                    foreach($nextchars as $key=>$val) {
                        $nextchars[$key] = chr($val);
                    $nextchars = implode("", $nextchars);
                    if($verbose==true) { echo "<br/>Searching $nextchars"; }
                    if(preg_match("/^._POSITION_START./", $nextchars, $matches)) {
                        if($verbose==true) { echo "<br/>Found match: " . $matches[0]; echo "<br/>Jumping length " . strlen($matches[0]) . "<br/>{" . (date("U")-$start) . " sec}"; }
                        $current += 1 + strlen($matches[0]);
                    } else {
                        if($verbose==true) { echo "<br/>No match found. Terminating section<br/>{" . (date("U")-$start) . " sec}"; }
by furrybob at 12:19 PM EDT on September 4, 2011
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.

edited 12:40 PM EDT September 4, 2011
by Elven Spellmaker at 2:56 PM EDT on September 4, 2011
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. >.>

Replace line 402 with:

        for($a=0; $a<count($parsed["tempo"]); $a++) {
            if(isset($parsed["tempo"][$a]["length"])) {
                if($verbose==true) { echo "Setting initial tempo to ", $parsed["tempo"][$a]["tempo"], ".<br/>{" . (date("U")-$start) . " sec}"; }
        if(!isset($w)) {
            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.
by hcs at 5:21 PM EDT on September 4, 2011
Thanks guys!
by furrybob at 5:44 PM EDT on September 4, 2011
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.
by Elven Spellmaker at 4:50 PM EDT on September 5, 2011
Has anyone worked out what the length of tempo stands for?

For example, is it tempo X for Y beats/bars/bytes/seconds?
by Yuuto at 6:05 AM EDT on August 9, 2012
The b8 02 xx command in the BMS track header is the reverb value, which can be up to 7F.
Don't know if this is still helpful.
by Yuuto at 12:05 PM EDT on August 13, 2012
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.

edited 1:20 PM EDT August 13, 2012
by arookas at 1:19 AM EDT on August 31, 2012
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 "" and "," but these are *.COM (presumably meaning compressed), not *.BMS. Yet, I saw and have heard the BMS-to-midi converted files like "" and "" The *.BMSs from ZWW were even named *.BMS, but didn't work with the php code, either, yet there's "" and ""

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.

edited 1:26 AM EDT August 31, 2012

Previous Page | Next Page
Go to Page 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

Search this thread

Show all threads

Reply to this thread:

User Name Tags:

bold: [b]bold[/b]
italics: [i]italics[/i]
emphasis: [em]emphasis[/em]
underline: [u]underline[/u]
small: [small]small[/small]
Link: [url=]Link[/url]


HCS Forum Index
Halley's Comet Software
forum source