Make rockman 9 sound fx explosion with famitracker

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Make rockman 9 sound fx explosion with famitracker
by on (#48429)
I'm trying to reproduce some sound fx inside famitracker so I can have an idea how to program them after.

As an experiment, I tried to remake the explosion from the rockman 9 intro where the city is attacked (because I liked it, see intro on youtube from 35 seconds). Because of my lack of knowledge about sound fx on the nes (and famitracker), I'm not sure how to reproduce this one even thought is seems simple. hmm.

I think the speed must be very fast, uses 1 square channel for the beginning of the fx and stop it quite abruptly then use the noise channel to finish the sound. For the noise channel, they may only use duty 0.

Am I in the right direction? Any pointers for reproducing this sound fix would be greatly appreciated. I'm just affraid that the fact that it was not on the nes that it may be hard to reproduce but it's so nes like that it must be possible.

by on (#48434)
I captured the audio and put it into a sound editor. Then screen grabbed that to highlight different sections.

Image


The red section is a few frames of noise starting at low pitch and rising slightly. So maybe 0F,0E,0D,0C.

Then a pause of a few frames where there is no sound (green section).

The noise for the rest of the sound (Orange & yellow) seems to be alternating between two pitches and then slowly rising. So maybe;

0A,08,0A,08,0A,08 for a while, then
09,07,09,07,09,07
08,06,08,06,08,06
07,05,07,05,07,05
06,04,06,04,06,04

something like that, if you see what I mean?

I marked the start of the yellow section in orange because I think I hear a tiny down-sweep on a square channel. Probably only a few frames starting from a fairly high pitch and sweeping down fast. Sounds like 50% duty to me and the starting pitch seems to be about note number 32 (in my code, which translates to about F in the 3rd octave).

(Edit : sorry, I don't know much about FT so can't tell you how to recreate the sound in that tool. These are just the numbers I'd put into the noise pitch register, however you achieve that in FT. :) )

by on (#48435)
I thought I'd have a go at making it in Nijuu. I don't have SFX so I made a (large) drum to achieve a similar effect.

http://dutycyclegenerator.com/sound/explosion.mp3

Here's a copy-n-paste from Nijuu.

"DRUM2" is the just name of the drum sound.
"DRUM_D" means use voice D (noise), the two parameters are pitch, amplitude.
"DFE" means no more data for this frame.
"DE" means end of drum sound definition.

You should be able to work it out from that. :)

It's not exactly the same but with a bit of tweaking you could get it close. In the end I didn't bother with any square sound, it's all on the noise channel. You can see just after the several DFE commands (this is the pause bit where there is no sound) that I set the noise pitch to 0E then 0F at maximum amplitude. This seemed enough to get the sharp attack without the use of any square sound.


Code:
DRUM2   DRUM_D $0F,$0F
   DFE
   DRUM_D $0E,$0F
   DFE
   DRUM_D $0D,$0F
   DFE
   DRUM_D $0C,$0F
   DFE
   
   DFE
   DFE
   DFE
   DFE
   
   DRUM_D $0E,$0F
   DFE
   DRUM_D $0F,$0F
   DFE
   DRUM_D $0C,$0F
   DFE
   DRUM_D $0A,$0F
   DFE
   DRUM_D $0C,$08
   DFE
   DRUM_D $0A,$08
   DFE
   DRUM_D $0C,$08
   DFE
   DRUM_D $0A,$08
   DFE

   DRUM_D $0B,$07
   DFE
   DRUM_D $09,$07
   DFE
   DRUM_D $0B,$07
   DFE
   DRUM_D $09,$07
   DFE
   DRUM_D $0b,$07
   DFE
   DRUM_D $09,$07
   DFE
   DRUM_D $0b,$07
   DFE
   DRUM_D $09,$07
   DFE


   DRUM_D $09,$05
   DFE
   DRUM_D $07,$05
   DFE
   DRUM_D $09,$05
   DFE
   DRUM_D $07,$05
   DFE
   DRUM_D $09,$05
   DFE
   DRUM_D $07,$05
   DFE
   DRUM_D $09,$05
   DFE
   DRUM_D $07,$05
   DFE

   DRUM_D $08,$03
   DFE
   DRUM_D $06,$03
   DFE
   DRUM_D $08,$03
   DFE
   DRUM_D $06,$03
   DFE
   DRUM_D $08,$02
   DFE
   DRUM_D $06,$02
   DFE
   DRUM_D $08,$02
   DFE
   DRUM_D $06,$02
   DFE

   DRUM_D $07,$01
   DFE
   DRUM_D $05,$01
   DFE
   DRUM_D $07,$01
   DFE
   DRUM_D $05,$01
   DFE
   DRUM_D $07,$01
   DFE
   DRUM_D $05,$01
   DFE
   DRUM_D $07,$01
   DFE
   DRUM_D $05,$01
   DFE
   
   DRUM_D $06,$01
   DFE
   DRUM_D $04,$01
   DFE
   DRUM_D $06,$01
   DFE
   DRUM_D $04,$01
   DFE
   DRUM_D $06,$01
   DFE
   DRUM_D $04,$01
   DFE
   DRUM_D $06,$00
   DFE
   DRUM_D $04,$00
   DFE

   DE

by on (#48436)
Thanks Neil for the analysis ;)

I was thinking about extracting the sound and slowing it down to see what I can hear. I will try that tonight.

In famitracker I don't even know myself (hence the question) but now with this input, I will see how I can translate your 二十 (nijuu) data into famitracker one.

I'm starting to get the hang a little bit about tracking. I cannot read music so with a tracker, I can play the note and figure out something. But with noise... There is no note so now I have to understand how to make sfx with it.

If I can make it I will post a sample later. I don't know about tonight but I will see, a little tired now from work. If other people have other approach for famitracker, I will be more than happy to hear about them too.

by on (#48438)
No problem.

From what I've been reading about FT, it should be easy enough to create a "pitch envelope" and feed in similar values to the ones I listed.

by on (#48445)
Interesting stuff.

I was wondering about how they might have made some of the electrical sound effects. I know it's obviously manipulating the noise wave in short mode (I believe that's the official name; I normally call it the funky noise, heh)

Plug Man's attack is the one I'm thinking of.

by on (#48446)
Obviously this isn't any good for Megaman 9, but my NSF player can be useful for analyzing output from NSFs. Because my player has crappy speed controls though, it's best to use zSNES and the 'inc frame' option (with F1).

by on (#48450)
I made a quick example here. Maybe not as accurate but should give the idea. You can also insert Neil's values either as an instrument (easiest using the arpeggio and volume settings), or in the pattern editor with speed 1. Just remember that note 0 is actually the lowest pitch and F highest in the tracker.

But if you were going to program it manually anyway then you might wanna try that instead, you can feed Neil's values directly to the noise registers ($400C for volume and $400E for pitch).

by on (#48456)
Thanks everyone for the comments.

@jsr: This is really close! This is what I was looking for. And you don't even use the square channel (I was wrong). I would have never figured it out. Only with noise. I need to learn more about it.

Neil example of explosion, Jsr sample with Ft. I will have many people to thanks when I finish the project I'm working on ;)

I will whip up a sample in Ft in one song I made for fun and post it back here.

by on (#48458)
Sorry for double post.

There is only one thing thought. The first time the sound is fine, the second time you repeat it, it changes. My guess is that the sound depends on the pseudo random number (?) used in the noise channel.

Is it possible to reset the pseudo random number with the original seed?
I think I had a similar issue with the noise channel in the past and didn't know why. Now I think I'm getting close to the reason.

If you cannot reset the seed then you cannot remake the exact sound fx in that case. hmm..

Anybody knows about this particularity of the noise channel?

by on (#48465)
Except of a reset, you can't,

by on (#48467)
Arrggg! :) This mean I will have to find another way to reproduce it by using other channels at the same time. On the bright side, at the least I'm getting somewhere.

by on (#48468)
Banshaku wrote:
Arrggg! :) This mean I will have to find another way to reproduce it by using other channels at the same time. On the bright side, at the least I'm getting somewhere.


I don't know if it would work but what would happen if you put one frame of noise before the start with 0 amplitude i.e. so you can't hear it. Then at least the start of the SFX should be consistent, maybe?

by on (#48491)
neilbaldwin wrote:
I don't know if it would work but what would happen if you put one frame of noise before the start with 0 amplitude i.e. so you can't hear it. Then at least the start of the SFX should be consistent, maybe?


I don't know much about sound yet but I will try and see what happens. Thanks for comment.

by on (#48494)
I used the square channel to simulate the beginning of the explosion. If you listen well, you can hear 2 notes. I can hear those 2 tone. I tried to reproduce those "noise" note as square.

It's not perfect and I still need to tweak it but here an nsf used with the Rockman 9 intro 1 I remade. The timing of the song and explosions (27 of them) are very close to the real introduction. The explosion is maybe the one that I like the less. Tweaking required, if even possible to make that fx on the nes.

Any comment appreciated. First time at reproducing a song with a tracker. Some reference materials (Tssf s3m) was used when I was not sure since it's my first time. But since the notes in the s3m are completely different from famitracker (and I can't read notes..), I used it when I was not sure for the tone and timing. I used the soundtrack and intro to confirm a few things.

Edit:

I updated the file. The pitch of square 1 was not 100% the same as the original. I didn't know that you could put hex value for the P parameter (duh). The real pitch is P7E. It was annoying me a lot that I couldn't do properly. I was writing 79 instead of standard 80 and was not working. New user error I guess!...

Edit2.5:

I updated the file again for the square sound during explosion. For the noise, I took a break because I'm tired.

by on (#48496)
Nah, there's definitely no square wave in the original.

:)

by on (#48498)
neilbaldwin wrote:
Nah, there's definitely no square wave in the original.

:)


Yeah, I know. But since the original song cannot be redone on the real thing (they just looped a sample) and you cannot reset the noise seed, you have to fake a little bit. I tried it on the famicom and it sound good enough. Without that extra square, you lose the punch of the explosion on the second one.

The extra triangle kick drum was not there too but it gives a little bit of character I think.

by on (#48499)
I'm just messing about :)

Yours is a good sound in it's own right, I wouldn't get too obsessed with making it exact. It's a good learning process though, eh? :)

by on (#48511)
neilbaldwin wrote:
I'm just messing about :)

Yours is a good sound in it's own right, I wouldn't get too obsessed with making it exact. It's a good learning process though, eh? :)


I'm just a perfectionist at heart ;) By trying to make it the same, when I fail, that make me learn new sound that I would not have found before. By listening to the pitch of the explosion, I could reproduce the low ones at the beginning with squares ones and tone 0, very short volume. It makes some kind of fuzz and almost reproduce that noise. The second higher pitch noise after the silence, I cannot get the pitch right yet. For very high pitch in the noise, I cannot yet identify the pitch with the proper noise note, if they even exist on the nes.

I'm just surprised that no mega man fans commented on the song I made but that's ok I guess since this thread was not about that. I may make another thread for it if I want people opinion. I think it sound the same. On the famicom, the song is like the real game. The explosion... hmm. getting closer.

by on (#48516)
- This sound effect is present in MegaMan3. Just take its NSF to listen it. Well, probably you can hack it..?

by on (#48518)
Fx3 wrote:
- This sound effect is present in MegaMan3. Just take its NSF to listen it. Well, probably you can hack it..?


How did I miss that!! :oops: I checked all the soundtrack one by one before, too fast it seems. It's in the nsf, track 40. Only noise used but now I can read the pattern and volume so I will test it and see how it sounds.

I got my answer! Thanks a million Fx3! It seems I'm not a mega man nerd enough ;) Another name to put in my list of thanks when my project is finished.

by on (#48520)
Verdict after the finding by Fx3: It cannot be redone on the nes exactly like the intro because of the way noise work. I have all the note and everything change on the second explosion. So I will have to fake it. Thanks again Fx3 for the information!

Edit:

Here's the final version of the song, with the new explosion : Rockman 9 - Intro 1.

The explosion is more uniform. The triangle kick was removed since it's not necessary. The first noise that cause that specific tone at the beginning had to be faked with 2 square sound, there is no other way. Still, I like the final result. It will be interesting to hear it again on my famicom tonight. Small detail, I corrected the snare to be more like the real song (like the movie posted in that thread).

Thanks everyone for all the information, I really appreciate it. I will be more than happy to show where I will use the sound, once my demo is built. For now, I'm just regrouping some assets.

by on (#48807)
Just wanted to put a few tidbits in.

When I remade MM9's soundtrack I noticed the noise they used for a "kick" was actually not possible on the NES, ..or it is, but they sampled a certain variation of the noise that comes out of the NES randomly. It sounds like a very soft representation of the noise generator. So, the best thing to do is simply set the lowest instance of noise on the NES and use that instead.

You're obviously not going to get it 100% perfect.

The platforms in Mega Man 9 in Jewel Man's stage is also an example of "not possible on the NES" since it uses 2 volume instances of the Triangle wave, and obviously can't. If you want to redo that one, I would suggest having the "echoed" part on one of the square channels.

by on (#48810)
tssf wrote:
Just wanted to put a few tidbits in.

When I remade MM9's soundtrack I noticed the noise they used for a "kick" was actually not possible on the NES, ..or it is, but they sampled a certain variation of the noise that comes out of the NES randomly. It sounds like a very soft representation of the noise generator. So, the best thing to do is simply set the lowest instance of noise on the NES and use that instead.

You're obviously not going to get it 100% perfect.


It actually made me think of Gameboy noise...