Points of Required Attention™
Please chime in on a proposed restructuring of the ROM hacking sections.
Views: 88,487,460
Main | FAQ | Uploader | IRC chat | Radio | Memberlist | Active users | Latest posts | Calendar | Stats | Online users | Search 04-26-24 12:49 PM
Guest: Register | Login

0 users currently in ROM Hacking | 3 guests

Main - ROM Hacking - SMB3 Music Inserter - WIP Release (beta 1.3) New thread | New reply

Pages: 1 2 3

JaSp
Posted on 11-16-09 02:04 PM Link | Quote | ID: 119495


Shyguy
Level: 24

Posts: 43/95
EXP: 73288
Next: 4837

Since: 03-02-07
From: Paris, France

Last post: 4350 days
Last view: 4145 days
Hopefully MIDI conversion isn't too far ahead; I've begun to take a look at the MusicXML format, and it will be my current task for the next days.
I also found a great utility to convert MIDI files into MusicXML (MuseScore).
Stay tuned

KP9000
Posted on 11-17-09 01:31 AM Link | Quote | ID: 119507


Boomboom

Level: 90

Posts: 1100/1975
EXP: 6953395
Next: 235214

Since: 02-19-07

Last post: 3580 days
Last view: 3204 days


Posted by JaSp
Hopefully MIDI conversion isn't too far ahead; I've begun to take a look at the MusicXML format, and it will be my current task for the next days.
I also found a great utility to convert MIDI files into MusicXML (MuseScore).
Stay tuned
That's good, since I got tired of playing things by ear as I messed with those smb3song files. I can hardly wait. This is gonna be yummy.

____________________

JaSp
Posted on 11-22-09 05:51 PM (rev. 2 of 11-22-09 05:52 PM) Link | Quote | ID: 120059


Shyguy
Level: 24

Posts: 44/95
EXP: 73288
Next: 4837

Since: 03-02-07
From: Paris, France

Last post: 4350 days
Last view: 4145 days
New release, with first version of the MusicXML to smb3song converter!
It kinda works, except that it doesn't support noise and dmc channels.
You can now convert MIDI files to MusicXML (via MuseScore, it's the only free tool to do that that I found so far), and then convert that file with the MusicXMLConverter.
There aren't any instructions on how to use it, but if you can look at your MIDI/MusicXML file structure, you should be able to understand it quite easily.
Small notes :
- ending measure is inclusive
- multiply factor is used to multiply (or divide if by < 1) input notes by a certain amount; it is merely used to change the speed of the track regardless of the tempo, or if something doesn't sound right, for example when a note has a too small duration (< 0.33) for smb3)
- the output track should sound as it sounds in MusicXML, *not* as the MIDI file itself (MuseScore's imported MIDIs don't sound right sometimes)

Here's a screenshot with a ready-to-be-converted song :



EDIT: check the included sml-overworld.smb3song file included, it has been made with the converter from a MIDI file!

KP9000
Posted on 11-23-09 12:15 AM Link | Quote | ID: 120082


Boomboom

Level: 90

Posts: 1123/1975
EXP: 6953395
Next: 235214

Since: 02-19-07

Last post: 3580 days
Last view: 3204 days


Couple of things that are irritating me is my inexperience with MuseScore. I have no fucking clue how to work this program. My issue with it is the files I seem to feed it get assigned their own instruments. This file only has two tracks in it and I can't seem to find out how to change the instruments. The reason I want to change the instruments is when you write to the MusicXML format, the program tends to want to maintain the integrity of the instrument, not the note itself. So, is it possible to get it to just export the goddamn note that it is supplied with?

Also, my winamp for some reason is screwing up. the music inserter starts up winamp every single time I press the nsf button in this release. Can we have an option to disable winamp startup when you hit that button?

I will post some .smb3song files when I get some acceptable results. Thanks JaSp!

____________________

JaSp
Posted on 11-23-09 10:10 AM Link | Quote | ID: 120137


Shyguy
Level: 24

Posts: 45/95
EXP: 73288
Next: 4837

Since: 03-02-07
From: Paris, France

Last post: 4350 days
Last view: 4145 days
- winamp startup should be disabled if you uncheck the "Open NSF" checkbox

- as for MuseScore, I merely use it as a converter; I just open a MIDI file with it and save as a MusicXML file; since it's basically made to generate scores, it isn't very handy for editing purposes for non-musically trained people. You've got to choose the instrument in the converter then ("Track to use").
However I realized that some MIDI files aren't imported right into MuseScore; that's why I'm actually considering writing a MIDI to smb3song Converter...
So for now, I recommend optimizing the MIDI file itself first with your favorite tracker!

Kawa
Posted on 11-23-09 05:16 PM Link | Quote | ID: 120144


CHIKKN NI A BAAZZKIT!!!
80's Cheerilee is best pony
Level: 138

Posts: 2795/5344
EXP: 30945065
Next: 717916

Since: 02-20-07
From: The Netherlands

Last post: 4498 days
Last view: 2633 days
For that matter, what if you use something other than Winamp to play NSF files?

____________________
Wife make lunch - Shampoo
Opera - give it a spin
Spare some of your free time?
<GreyMaria> I walked around the Lake so many goddamn times that my sex drive was brutally murdered
Kawa rocks — byuu

JaSp
Posted on 11-23-09 11:12 PM Link | Quote | ID: 120183


Shyguy
Level: 24

Posts: 46/95
EXP: 73288
Next: 4837

Since: 03-02-07
From: Paris, France

Last post: 4350 days
Last view: 4145 days
The program only opens the .nsf file, so it just uses the default assigned opener for this file type.

KP9000
Posted on 11-23-09 11:18 PM Link | Quote | ID: 120184


Boomboom

Level: 90

Posts: 1127/1975
EXP: 6953395
Next: 235214

Since: 02-19-07

Last post: 3580 days
Last view: 3204 days


Posted by JaSp
as for MuseScore, I merely use it as a converter; I just open a MIDI file with it and save as a MusicXML file
This process seems to mess with the sequencing of the notes to get as close to the instrument that specific track was assigned to in MuseScore. So, when you finally get your MusicXML file, mess with your song in the converter to get it the way you want, it just doesn't sound right in the nsf.

Example, there is a midi I used that had eighth notes that when finally converted sounded like 32nd notes. It bore a resemblance to the instrument used in MuseScore.

Shit, JaSp, I'd help as much as I can with this, so if you need my help I'm here... just can't code worth shit though.

____________________

JaSp
Posted on 11-24-09 10:11 AM Link | Quote | ID: 120289


Shyguy
Level: 24

Posts: 47/95
EXP: 73288
Next: 4837

Since: 03-02-07
From: Paris, France

Last post: 4350 days
Last view: 4145 days
Posted by KP9000
Example, there is a midi I used that had eighth notes that when finally converted sounded like 32nd notes. It bore a resemblance to the instrument used in MuseScore.
Try to use the "multiply factor", i.e. setting it to 4 in this case; and also try to adjust the song's tempo; if you still can't get it right, well...I can't do much!

I know things are really tricky right now, that's why I was considering making a MIDI to smb3song converter (I used MusicXML because XML seemed faster/easier to do, but after all, being a ROM hacker I'm really used to work with binary so it shouldn't be much of a problem - more a matter of time...)

I won't be able to work on this very often, I'm quite busy with my internship, so I only get to work on all this on weekends.

KP9000
Posted on 11-26-09 12:45 AM Link | Quote | ID: 120512


Boomboom

Level: 90

Posts: 1131/1975
EXP: 6953395
Next: 235214

Since: 02-19-07

Last post: 3580 days
Last view: 3204 days


Alright, I'm getting very close to an actual presentable result here, but I keep running into some issues with the musicxml to smb3song converter. At least that's where I think the problems may lie... I'm not sure.

The triangle channel always seems to get messed up. I keep getting
The 'triangle' element is invalid - 
The value '[a bunch of notes here]' is invalid according to its datatype 'trackrestriction' -
The Pattern constraint failed.


____________________

KP9000
Posted on 11-26-09 01:29 AM Link | Quote | ID: 120526


Boomboom

Level: 90

Posts: 1132/1975
EXP: 6953395
Next: 235214

Since: 02-19-07

Last post: 3580 days
Last view: 3204 days


Finally got a working .smb3song out! Check it out.

This is the Megaman 3 Stage 3 Wily Castle music. No DMC or noise channel yet. Here's the NSF!

____________________

JaSp
Posted on 11-26-09 11:52 AM Link | Quote | ID: 120556


Shyguy
Level: 24

Posts: 48/95
EXP: 73288
Next: 4837

Since: 03-02-07
From: Paris, France

Last post: 4350 days
Last view: 4145 days
Posted by KP9000
The 'triangle' element is invalid - 
The value '[a bunch of notes here]' is invalid according to its datatype 'trackrestriction' -
The Pattern constraint failed.

This is an error from the XSD validation; that means the string pattern isn't correct for the channel. Usually it might be because the converter has output a too low/high octave (< 2 or > 7), or that a note duration was invalid (usually because it is too low so it has output a 0-note, which is invalid).

It's cool that you managed to get a smb3song I'm at work right now but I'll definitely take a look at it once I get home!

Kawa
Posted on 11-27-09 08:42 PM Link | Quote | ID: 120698


CHIKKN NI A BAAZZKIT!!!
80's Cheerilee is best pony
Level: 138

Posts: 2848/5344
EXP: 30945065
Next: 717916

Since: 02-20-07
From: The Netherlands

Last post: 4498 days
Last view: 2633 days
Know what this thing needs? Cheetahmen.

____________________
Wife make lunch - Shampoo
Opera - give it a spin
Spare some of your free time?
<GreyMaria> I walked around the Lake so many goddamn times that my sex drive was brutally murdered
Kawa rocks — byuu

JaSp
Posted on 11-28-09 07:47 PM Link | Quote | ID: 120839


Shyguy
Level: 24

Posts: 49/95
EXP: 73288
Next: 4837

Since: 03-02-07
From: Paris, France

Last post: 4350 days
Last view: 4145 days
Just a little note to let you know that I am working on a MIDI converter, and that I've already managed to get an accurate smb3song-type string representation of a score (currently tested on just 1 midi file for now, but progress is going way faster than I could imagine)

Stay tuned!

KP9000
Posted on 11-29-09 08:41 PM Link | Quote | ID: 120978


Boomboom

Level: 90

Posts: 1138/1975
EXP: 6953395
Next: 235214

Since: 02-19-07

Last post: 3580 days
Last view: 3204 days


So, the instructions with getting this to work with a Reuben ROM aren't all that clear...


Reuben
------
Song selection is made via the new level header introduced in Reuben; you just need to
select the value from the utility into Reuben as the music of your level.
Where in Reuben would I add the value I need (In my case, the value would be the first song, which is $21) and what other settings must I set? What about the regular music setting?

I'm going to deduce that the ROM I have isn't compatible with the patch. When entering the level, it freezes, turning Mario grey, screwing with the amount of time I have, and probably some other things I missed. This sounds like symptoms of level header corruption. Maybe you and DD should get together on this one? I'm just throwing things out here in the dark, so if you know the problem just ignore my ramblings.

____________________

JaSp
Posted on 11-29-09 11:23 PM Link | Quote | ID: 120993


Shyguy
Level: 24

Posts: 50/95
EXP: 73288
Next: 4837

Since: 03-02-07
From: Paris, France

Last post: 4350 days
Last view: 4145 days
I haven't checked yet, but my patch is likely to not be compatible with the latest version of Reuben; I believe DD used some space I used for my patch, so it would just overwrite it and break down Reuben's routines.
Also, I told DD about being able to manually set the song selection byte for levels' header but he must have forgotten about it, since you can't do so in the current release.
I'll look into it and release a proper patch as soon as I can!

DahrkDaiz
Posted on 11-30-09 04:25 PM Link | Quote | ID: 121029


Nipper Plant
Sandwich Artist
Level: 46

Posts: 306/417
EXP: 674456
Next: 37318

Since: 02-22-07

Last post: 3486 days
Last view: 3407 days
Well, there are 3 unused bytes for the level headers, one of those can be used to set the custom music (or the main music byte too). I was going to wait until both of our patches were final before adding support to change that value (which it can right now as Unused 1) as a music selection so I can detect it in the rom.

JaSp
Posted on 12-01-09 02:07 PM Link | Quote | ID: 121121


Shyguy
Level: 24

Posts: 51/95
EXP: 73288
Next: 4837

Since: 03-02-07
From: Paris, France

Last post: 4350 days
Last view: 4145 days
Well, the best option here would be to have Reuben's song list loaded from an external file, so that I could generate a new file with SMB3MI; this way people would actually select "New Super Mario Bros. Overworld" as the song for their level rather than looking at SMB3MI to see that 21 = NSMB Overworld.

The list could look like this as an XML file :

<song title="Plain" value="10" />
<song title="Underground" value="11" />
...
<song title="NSMB Overworld" value="21" />

I guess you should also disable your conversion algorithm since I'm taking care of this through my patch (I don't remember whether this was done in Reuben.exe or in the patched ROM ?)

Anyway, using the Unused1 byte isn't convenient, it would basically waste it - and I'm already planning to really use these bytes for my future hack!

DahrkDaiz
Posted on 12-01-09 02:31 PM Link | Quote | ID: 121122


Nipper Plant
Sandwich Artist
Level: 46

Posts: 309/417
EXP: 674456
Next: 37318

Since: 02-22-07

Last post: 3486 days
Last view: 3407 days
nice. Ok, what I will basically do is when we have our patches ready, I'll give the option to load an external music list and store the music value as a direct value. We should get together and see where you're wanting to put your asm stuff so that I do not continuously overwrite your stuff. I can clean up my code quite a bit if necessary to free up space.

KP9000
Posted on 12-11-09 10:11 PM Link | Quote | ID: 122189


Boomboom

Level: 90

Posts: 1167/1975
EXP: 6953395
Next: 235214

Since: 02-19-07

Last post: 3580 days
Last view: 3204 days


So, I played around with the beta of this, and I can't seem to figure this out. What is the methodology for getting this to work? What is the order that I must do things and what must I do in Reuben to select these songs? I originally got levels that didn't load or loaded the wrong song...

____________________
Pages: 1 2 3


Main - ROM Hacking - SMB3 Music Inserter - WIP Release (beta 1.3) New thread | New reply

Acmlmboard 2.1+4δ (2023-01-15)
© 2005-2023 Acmlm, blackhole89, Xkeeper et al.

Page rendered in 0.028 seconds. (342KB of memory used)
MySQL - queries: 124, rows: 163/166, time: 0.018 seconds.