The Definitive Guide to Composing NESmaker-Compatible Music and Sound

User avatar
Posts: 216
Joined: Mon Sep 03, 2018 4:47 pm

Re: The Definitive Guide to Composing NESmaker-Compatible Music and Sound

Post by Raftronaut » Thu Aug 15, 2019 7:00 pm

i've been digging further into SFX priority. I emailed Gradual Games to see if he had any documentation on the engine. He sent me the Git-Hub page, and indicated that there is information about how the sound effects are prioritized in the included.
Here is the github on GG sound:

Here is the link direct to the file:

(MY URLs never work on the forums for some reason, you'll have to copy/paste)

The file contains the following directly regarding sound effects:
playing sound effects.PNG
playing sound effects.PNG (28.66 KiB) Viewed 50 times

I discussed sound effects priority with Kasumi and he indicated that Nesmaker has no way of determining the priority flag of sound effects in GG sound. However, I believe there are some work arounds.. I'll try my best to explain what I believe is true after my personal testing...

GGsound allows up to 2 sound effects at a time as seen in the Documentation, soundeffect_one and soundeffect_two. I believe that NESmaker is only able to use one of these sound effect slots for a solo effect = soundeffect_one. soundeffect_two seems to reserved entirely for creating dual channel effects (fx using 2 different channels). So basically soundeffect_two cannot be selected because it's already in use waiting for a dual channel effect to occur.

-Priority on solo fx with soundeffect_one seems to be set entirely by timing, Play sfx#A on the noise channel, the immediately play sfx#B
on the noise channel as well and you will only hear sfx#B. This seems to be the hard rule of soundeffect_one..

-Priority on dual channel sound effects will always been given to soundeffect_two which I believe will be the channel on the right as it shows in your famitracker file. When another sound effect challenges the priority of this dual sound effect, soundeffect_one will be CUT soundeffect_two will WIN. Basically all you will hear is soundeffect_two...

AS an example, I had a long single noise channel explosion sound I was using for player death, but the sound effect would get cut completely if the player fired a projectile at the moment of death, instead replaced by my much shorter projectile sound effect. To correct this, I added an additional channel to my explosion sound effect on square2. NOW, when my player fires projectile at the moment of death, the long noise sound effect plays everytime because it is prioritized as soundeffect_two, in this instance my square wave channel gets cut instead because it is now soundeffect_one..

I tried to explain this as clearly as possible to be the best of my knowledge. It is very likely I've made oversights here in my evaluations as I am only just beginning to understand some of these concepts, so please, anyone feel free to jump in with corrections if necessary. Just hoping to shed more light on this topic for those of us interested in utilizing this knowledge to create more polished sound tracks...

Also, it is worth mentioning that GGsound has a mute command for each channel that could be used as a command to drop certain channels for certain events in gameplay (for example: open a menu = mute the drums, or talk to a NPC = mute the melody, etc....) , though I haven't researched enough to comment on it's viability yet.
Space Raft 2.0 Demo: [url] [/url]

Chiptune: [url] [/url]
Post Reply