Register - Login
Views: 99797305
Main - Memberlist - Active users - Calendar - Wiki - IRC Chat - Online users
Ranks - Rules/FAQ - Stats - Latest Posts - Color Chart - Smilies
05-03-22 05:52:13 AM
Jul - SM64 Hacking (Archive) - SM64 Music Editing New poll - New thread - New reply
Pages: 1 2 3 4 5 6 7 8Next newer thread | Next older thread
Stevoisiak
Member
Level: 38


Posts: 137/283
EXP: 345780
For next: 24667

Since: 11-22-07

From: New York, Long Island

Since last post: 12.4 years
Last activity: 5.6 years

Posted on 11-01-08 03:32:01 PM Link | Quote
Originally posted by messiaen
Eventually I want to try some very limited MIDI importer, the problem is condensating "Note On + Note Offs" commands into the Mario 64 format.

So, in other words, theres a problem with being able to tell when a note starts or ends? And also, for now, why not try something simpler, like a Mario Kart 64/Super Mario 64/Wave Race/Super Mario 64 DS music importer? You said the formats were extremely similar
messiaen
Catgirl
Level: 68


Posts: 369/1085
EXP: 2596323
For next: 132477

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 11-01-08 05:33:51 PM Link | Quote
The problem is converting a track which uses simultaneous notes, that is easy to do in MIDI but a pain in the Mario64 format. That is, at least to my very limited programming experience, I don't understand yet more complex data represations which might be needed for such tasks.

Super Mario 64 uses a distinct format, which is a bit simpler to deal because it's less compact.

I was just experimenting some stuff and got another very important command! As stated in my WIP music format specification, there are three ranges of "playnote" events, which are alternated to get smaller music data (I guess an analogy could be drawn between this and the vADPCM format used for sounds, which compresses based on a 'table' of predictors to get optimum results).

Each of these ranges covers only 0x40 bytes, as oposed to the 0x7F (127) possible notes of a MIDI event (pretty much all the human high and low frequency hearing thresholds).

Anyway, all of this is to say that command 0xC2 is the tranposition factor (in semitones), usually used as mutiples of 0x0C (12 semitones, that is, an octave). It's needed if you want higher/lower notes than the usual range. The param read is just one byte.

____________________
Mario 64 notes @ http://sites.google.com/site/messiaen64/
Stevoisiak
Member
Level: 38


Posts: 141/283
EXP: 345780
For next: 24667

Since: 11-22-07

From: New York, Long Island

Since last post: 12.4 years
Last activity: 5.6 years

Posted on 11-01-08 05:58:38 PM Link | Quote
Originally posted by messiaen
The problem is converting a track which uses simultaneous notes, that is easy to do in MIDI but a pain in the Mario64 format. That is, at least to my very limited programming experience, I don't understand yet more complex data represations which might be needed for such tasks.


Ohhh, so in other words you can't find an automated way to have two notes play at once!

Originally posted by messiaen

I was just experimenting some stuff and got another very important command! As stated in my WIP music format specification, there are three ranges of "playnote" events, which are alternated to get smaller music data (I guess an analogy could be drawn between this and the vADPCM format used for sounds, which compresses based on a 'table' of predictors to get optimum results).

Each of these ranges covers only 0x40 bytes, as oposed to the 0x7F (127) possible notes of a MIDI event (pretty much all the human high and low frequency hearing thresholds).

Anyway, all of this is to say that command 0xC2 is the tranposition factor (in semitones), usually used as mutiples of 0x0C (12 semitones, that is, an octave). It's needed if you want higher/lower notes than the usual range. The param read is just one byte.


Uhhh, in English? All Im getting from this is you found a way to edit pitch using a smaller amount of data.
messiaen
Catgirl
Level: 68


Posts: 388/1085
EXP: 2596323
For next: 132477

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 11-09-08 08:52:29 PM (last edited by messiaen at 11-20-08 10:40 AM) Link | Quote
Time for a new release: Mario64 Sequenced Music Parser v0.05 + Sequence Bank Ripper + messy sources.

There are some major improvements for this version, especially on the sequence structure. For instance, here is the complete header of Bob-omb Battlefield. It's divided in chunks, 0xFD being the timestamp for each section. At the end, the 0xFB indicates the Loop point start. If there isn't a 0xFB command, the sequence won't repeat.

[removed output, check next post]

The other minor addition is the Pitch Bend command (0xD3).

____________________
Mario 64 notes @ http://sites.google.com/site/messiaen64/
messiaen
Catgirl
Level: 68


Posts: 402/1085
EXP: 2596323
For next: 132477

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 11-20-08 01:47:58 PM Link | Quote
Forgot to release the last version, so here is Mario 64 Sequenced Music Parser 0.07. The output is now much better, include tranposition settings and the channels are showed, so its easier to understand the sequence structure.

Example from Bob-omb's battlefield:

------
HEADER
------

0x0: D3 80 --> Begin Header (types: 80, 60 or 20)
0x2: D7 0f c1 --> Enable Channels: 0 6 7 8 9 10 11
0x5: 90 00 82 --> Load track from offset 0x82 (Channel 0)
0x8: 96 00 99 --> Load track from offset 0x99 (Channel 6)
0xb: 97 00 ab --> Load track from offset 0xab (Channel 7)
0xe: 98 00 bf --> Load track from offset 0xbf (Channel 8)
0x11: 99 00 d4 --> Load track from offset 0xd4 (Channel 9)
0x14: 9a 00 e8 --> Load track from offset 0xe8 (Channel 10)
0x17: 9b 00 f7 --> Load track from offset 0xf7 (Channel 11)
0x1a: DD 71 --> Tempo = 113 (BMP)
0x1c: DB 4b --> Master Volume = 0x4b
0x1e: FD 81 80 --> Timestamp: Two 4/4 measures (0x180)
0x21: 90 01 06 --> Load track from offset 0x106 (Channel 0)
0x24: 96 01 12 --> Load track from offset 0x112 (Channel 6)
0x27: 97 01 1c --> Load track from offset 0x11c (Channel 7)
0x2a: 98 01 26 --> Load track from offset 0x126 (Channel 8)
0x2d: 99 01 33 --> Load track from offset 0x133 (Channel 9)
0x30: 9a 01 3d --> Load track from offset 0x13d (Channel 10)
0x33: 9b 01 44 --> Load track from offset 0x144 (Channel 11)
0x36: FD 86 00 --> Timestamp: Eight 4/4 measures (0x600)
0x39: 90 01 4b --> Load track from offset 0x14b (Channel 0)
0x3c: 96 01 82 --> Load track from offset 0x182 (Channel 6)
0x3f: 97 01 8c --> Load track from offset 0x18c (Channel 7)
0x42: 98 01 96 --> Load track from offset 0x196 (Channel 8)
0x45: 99 01 a3 --> Load track from offset 0x1a3 (Channel 9)
0x48: 9a 01 ad --> Load track from offset 0x1ad (Channel 10)
0x4b: 9b 01 b4 --> Load track from offset 0x1b4 (Channel 11)
0x4e: FD 86 00 --> Timestamp: Eight 4/4 measures (0x600)
[...]
0x7b: FB 00 21 --> Loop from offset 0x21
0x7e: D6 0f c1 --> Disable Channels: 0 6 7 8 9 10 11
--- END OF HEADER AT 0x81 ---


In the same folder there is a track2.zip file, which is the experimental track creator I am using for my latest music hacks. I uploaded it because I won't work on it for some time. Disclaimer: it really sucks .

By the way, here is my latest music hack ("Good Egg Galaxy") which will be used in the team hack :

<object width="425" height="344"><embed src="http://www.youtube.com/v/kCEOI0cwZQs&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>

____________________
Mario 64 notes @ http://sites.google.com/site/messiaen64/
Linkin800
User
Level: 11


Posts: 16/17
EXP: 5012
For next: 973

Since: 05-01-08


Since last post: 13.0 years
Last activity: 12.4 years

Posted on 11-21-08 03:57:11 PM Link | Quote
very nice like always messiaen, I think I might try making my own music sooner or later also...
messiaen
Catgirl
Level: 68


Posts: 409/1085
EXP: 2596323
For next: 132477

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 11-26-08 11:48:47 AM (last edited by messiaen at 11-26-08 05:28 PM) Link | Quote
I'll try to make a sequence template, so you can just paste the output produced by the "track creator" and it will work in the game.

I have more good news, I was looking at the Zelda 64 format today and turns out that some (not all) sequences aren't that different from Mario Kart 64/Wave Race 64. The "music data" (ie, notes, rhytms, transposition and loops) and some basic commands/structure are the same for all four games. Zelda 64 format seems to be more similar to Mario Kart 64 than Mario 64, but there is some added complexity, as some sequences use a different format to load their tracks.

After many modifications I got one simple song to play in Mario 64, but I still have to tweak it before I can show it.

Edit: StarFox also uses the Mario Kart 64/Wave Race64 format, which can be more easily ported to Mario64.

Edit2: From theory to practice :

<object width="425" height="344"><embed src="http://www.youtube.com/v/kjLqJYWQgQE&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>



____________________
Mario 64 notes @ http://sites.google.com/site/messiaen64/
messiaen
Catgirl
Level: 68


Posts: 422/1085
EXP: 2596323
For next: 132477

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 12-05-08 03:16:28 PM Link | Quote
Here's a branch of the parser tool: Zelda 64 Sequenced Music Parser v0.1.

And some Ocarina of Time music in Mario 64:

<object width="425" height="344"><embed src="http://www.youtube.com/v/F3WI7TGHoP4&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>

____________________
Mario 64 notes @ http://sites.google.com/site/messiaen64/
Doogie1012
Member
Level: 15


Posts: 10/35
EXP: 14556
For next: 1828

Since: 10-21-08


Since last post: 11.6 years
Last activity: 9.2 years

Posted on 12-06-08 11:33:21 AM Link | Quote
Your sir are a freaking legend.
That has got to be the coolest thing ever. Good job. Keep it up.
Stevoisiak
Member
Level: 38


Posts: 180/283
EXP: 345780
For next: 24667

Since: 11-22-07

From: New York, Long Island

Since last post: 12.4 years
Last activity: 5.6 years

Posted on 12-07-08 04:00:35 PM Link | Quote
Originally posted by Doogie1012
Your sir are a freaking legend.
That has got to be the coolest thing ever. Good job. Keep it up.

I must agree. Messiaen seems to be taking VL-Tones spot as king right from under his feet!
(Just kidding VL. Maybe. )
VL-Tone
Member
Super Mario 64 forum moderator
Level: 53


Posts: 364/621
EXP: 1136482
For next: 20637

Since: 07-27-07

From: Montreal, Canada

Since last post: 4.7 years
Last activity: 6 days

Posted on 12-07-08 05:25:47 PM Link | Quote
Time: Now - Date: Today - Weather: What can be seen outside. - Mood: How it feels. Answer to the universe: 42
Originally posted by Stevoisiak
Originally posted by Doogie1012
Your sir are a freaking legend.
That has got to be the coolest thing ever. Good job. Keep it up.

I must agree. Messiaen seems to be taking VL-Tones spot as king right from under his feet!
(Just kidding VL. Maybe. )


Meh, do we really need to have a "king" of SM64 hacking?

I work 40-50 hours a week, and any spare time I can devote to SM64 hacking is about fixing/improving TT64, while messiaen has the time to experiment and "expand" SM64 hacking and find cool "new" stuff. It's ok like that, some of the things he finds will be incorporated in TT64 eventually (and he'll get credited for that obviously). We are complementary, it's team work.

____________________
Stevoisiak
Member
Level: 38


Posts: 181/283
EXP: 345780
For next: 24667

Since: 11-22-07

From: New York, Long Island

Since last post: 12.4 years
Last activity: 5.6 years

Posted on 12-07-08 05:48:05 PM Link | Quote
Originally posted by VL-Tone
Originally posted by Stevoisiak
Originally posted by Doogie1012
Your sir are a freaking legend.
That has got to be the coolest thing ever. Good job. Keep it up.

I must agree. Messiaen seems to be taking VL-Tones spot as king right from under his feet!
(Just kidding VL. Maybe. )


Meh, do we really need to have a "king" of SM64 hacking?

I work 40-50 hours a week, and any spare time I can devote to SM64 hacking is about fixing/improving TT64, while messiaen has the time to experiment and "expand" SM64 hacking and find cool "new" stuff. It's ok like that, some of the things he finds will be incorporated in TT64 eventually (and he'll get credited for that obviously). We are complementary, it's team work.

I was joking. What do you think the smiley was for? Really, there are 4 big hackers of Mario 64. VL-Tone/Starxxon, messiaen/frauber, yoshiman/yoshielectron, and Dudaw/dudaw12
VL-Tone
Member
Super Mario 64 forum moderator
Level: 53


Posts: 365/621
EXP: 1136482
For next: 20637

Since: 07-27-07

From: Montreal, Canada

Since last post: 4.7 years
Last activity: 6 days

Posted on 12-07-08 07:12:40 PM Link | Quote
Time: Now - Date: Today - Weather: What can be seen outside. - Mood: How it feels. Answer to the universe: 42
Originally posted by Stevoisiak
Originally posted by VL-Tone
Originally posted by Stevoisiak
Originally posted by Doogie1012
Your sir are a freaking legend.
That has got to be the coolest thing ever. Good job. Keep it up.

I must agree. Messiaen seems to be taking VL-Tones spot as king right from under his feet!
(Just kidding VL. Maybe. )


Meh, do we really need to have a "king" of SM64 hacking?

I work 40-50 hours a week, and any spare time I can devote to SM64 hacking is about fixing/improving TT64, while messiaen has the time to experiment and "expand" SM64 hacking and find cool "new" stuff. It's ok like that, some of the things he finds will be incorporated in TT64 eventually (and he'll get credited for that obviously). We are complementary, it's team work.

I was joking. What do you think the smiley was for? Really, there are 4 big hackers of Mario 64. VL-Tone/Starxxon, messiaen/frauber, yoshiman/yoshielectron, and Dudaw/dudaw12


Ok maybe you've hit a nerve and somehow there's some latent jealousy in me

Whatever, I wouldn't count Dudaw as one of 4 big SM64 hackers, can you name any special discoveries he did?

Someone who deserves to be on that list is Cellar Dweller. He doesn't post here, but he gave me and messiaen some key informations, and he knows a lot about the inner-workings of SM64.


____________________
messiaen
Catgirl
Level: 68


Posts: 426/1085
EXP: 2596323
For next: 132477

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 12-07-08 07:41:50 PM (last edited by messiaen at 12-07-08 05:03 PM) Link | Quote
Sorry to be rude, but let's just cut this "great hacker" bullshit. Unlike VL-Tone/Cellar Dweller/yoshielectron, I'm not a programmer. I can understand bits of code and do some very basic stuff, but it's really no big deal. ROM hacking sometimes is more about experimenting stuff than understanding it. With all the extensive documentation done by these three guys (and others, such as nagra/rstewart), finding stuff has become easy once you learn the basics.

As VL-Tone pointed out, Cellar Dweller has done such amazing extensive work with SM64. We all should be really grateful for all the stuff he has discovered, with all his docs ASM Hacking SM64 is now much easier.

But I'm very proud of the music format discoveries, I consider this my major work so far. I'm a musician myself, so this was pretty fun to work. On a side note, someone from a Zelda hacking community recommended to take a look at the MML format (Music Macro Language, not the markup one). It's used by some videogame related music tools (I think addmusic for smw), and it seems way simpler than MIDI, so perhaps more suitable for some kind of importer.

____________________
Mario 64 notes @ http://sites.google.com/site/messiaen64/
Stevoisiak
Member
Level: 38


Posts: 182/283
EXP: 345780
For next: 24667

Since: 11-22-07

From: New York, Long Island

Since last post: 12.4 years
Last activity: 5.6 years

Posted on 12-09-08 06:57:49 PM (last edited by Metal_Man88 at 12-09-08 10:20 PM) Link | Quote
So, one thing I've noticed about music is that unlike other things in game, everything seems to be done in a single way. For example, some textures are hard coded, some models have no collision, but music seems to be pretty straight forward. Are there any songs that are in different spots, odd pieces of code in specific songs, sounds wedged in to the music section, or anything else odd? Or is music one of those few things that don't have all these annoying tricks to it.
Lyskar
12210
-The Chaos within trumps the Chaos without-
Level: 192


Posts: 1855/12211
EXP: 99320673
For next: 552898

Since: 07-03-07

From: 52-2-88-7

Since last post: 7.4 years
Last activity: 7.3 years

Posted on 12-10-08 01:19:04 AM Link | Quote

Time/Date

12-09-08 07:19:04pm

Posts

1855

Days Here

525

Level

61
Metal_Man88
Local Moderator
There were a bunch of stupid replies and fighting here. Those responses are gone.

Do them again and be banned.

____________________
Original Layout © Tobias Kelmandia
messiaen
Catgirl
Level: 68


Posts: 438/1085
EXP: 2596323
For next: 132477

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 12-18-08 08:09:00 PM (last edited by messiaen at 12-19-08 08:23 AM) Link | Quote
I have started a music importer program for the MML (Music Macro Language) format. It's a rip-off heavily based on Addmusic, an open-source (who is the author of this?) SMW tool. I basically stripped all SMW content out of it and used the parser to intercept the stuff I'm interested (notes, rests, etc). There are two japanese midi->mml converters (tinymm and midi2mml), but tinymm seems be to the first choice of the SMW Hacking community and most likely that's the one I'll support.

I got it to write a few simple tracks, but it's still far from a 0.01 release. One of the problems I had is on triplets, but I'm not sure if it's because of tinymm, the parser function or the music notation program I used to make the MIDI. A wrong timestamp value can make all the channels out of sync, so this is bad. As a last resource, MML is text-based so it's not hard to correct minor mistakes.

If there are people on this forum familiar with Addmusic/MML/Custom SWM music, I could use some help on understanding better this format/testing stuff .

Edit: A sequence produced by the importer (Midi -> MML -> mario64 seq format):

<object width="425" height="344"><embed src="http://www.youtube.com/v/4PfaAd0vkSg&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>

Another one (very incomplete):

<object width="425" height="344"><embed src="http://www.youtube.com/v/txEqVbObtc8&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>

____________________
Mario 64 notes @ http://sites.google.com/site/messiaen64/
Firetheguy21
User
Level: 9


Posts: 4/12
EXP: 2905
For next: 257

Since: 12-17-08


Since last post: 13.4 years
Last activity: 13.4 years

Posted on 12-19-08 10:13:59 PM Link | Quote
That second video is pretty good for just a simple tune.

Brings me to one idea, is there a possibility that music could change when you go to a different area, like say you are on
a level and there is a forest part and then a mountain part. It could act like it does with the pirahna plant lullaby music.
AAA
Member
Level: 15


Posts: 33/35
EXP: 14820
For next: 1564

Since: 04-23-08


Since last post: 13.3 years
Last activity: 13.5 years

Posted on 12-20-08 12:05:56 AM Link | Quote
Originally posted by Firetheguy21
That second video is pretty good for just a simple tune.

Brings me to one idea, is there a possibility that music could change when you go to a different area, like say you are on
a level and there is a forest part and then a mountain part. It could act like it does with the pirahna plant lullaby music.

That's actually not a bad idea. I think it would involve changing the music that is currently used for the "Camera Anchor ?" object (since it is now known to produce sounds/music per different level) and removing the fade that it has when approached/walked away from. I may start getting into music hacking a bit more, and change the music for the object.
messiaen
Catgirl
Level: 68


Posts: 439/1085
EXP: 2596323
For next: 132477

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 12-20-08 11:14:17 AM Link | Quote
The "Camera Anchor" produces sounds, but not music. I haven't found yet how the Piranha Plant changes the music, but I'm highly interested in discovering that, it would be pretty useful.

Later on I'll make a thread about the music importer with a first alpha release.

____________________
Mario 64 notes @ http://sites.google.com/site/messiaen64/
Pages: 1 2 3 4 5 6 7 8Next newer thread | Next older thread
Jul - SM64 Hacking (Archive) - SM64 Music Editing New poll - New thread - New reply


Rusted Logic

Acmlmboard - commit 47be4dc [2021-08-23]
©2000-2022 Acmlm, Xkeeper, Kaito Sinclaire, et al.

33 database queries, 13 query cache hits.
Query execution time: 0.084871 seconds
Script execution time: 0.041457 seconds
Total render time: 0.126328 seconds