Extra GGsound Limitations

User avatar
CutterCross
Posts: 94
Joined: Sat Apr 28, 2018 9:42 pm

Extra GGsound Limitations

Post by CutterCross » Sun Jun 03, 2018 4:50 am

So after working with Mihoshi20 with importing music into NESmaker I noticed a few extra constraints the songs needed to play in the engine that weren't mentioned in the NESmaker tutorials or on the GGsound webpage. So I'm going to list them all here for others to see and get caught up to speed. Some were mentioned before, others weren't.


1. Songs must not use the effects column.
2. Songs must not use the channel volume column.
3. Instruments must not use the Hi-Pitch envelopes in the instrument editor.
4. TEMPO SETTINGS MUST STAY AT 150 BPM! (However, Speed settings can be changed to make the song faster/slower.)
5. Instruments and song names cannot have spaces or weird characters in their names. (Just to be safe, don't use spaces or weird characters in the file name or song information either.)
6. SONGS CANNOT BE LONGER THAN ORDER 09!
7. Sound effects must be labeled as sfx_ followed by its name
8. Samples are not natively supported.

These are all the constraints I've encountered so far, and I'll be sure to update this list if myself or others encounter any more. Hope this helps some others out there!

*UPDATE: As of the Pi Beta, the Noise channel is no longer inverted in the compiled ROM, so what it sounds like in Famitracker WILL be what it sounds like in game. Glad to see that was fixed.
Also arpeggios are not currently supported, but should be supported in the full release.

**UPDATE: The full release does indeed support arpeggios now!

***UPDATE: After doing a couple stress tests, instruments with a duty cycle of 1 or 3 WILL play buzzing/ting sounds on the Noise channel! Bxx doesn't work at all, at least not in my tests. You also don't need to have a sfx to import music into NESmaker.
Last edited by CutterCross on Sun Aug 12, 2018 7:13 pm, edited 3 times in total.
gradualgames
Posts: 9
Joined: Thu Jun 07, 2018 12:40 am

Re: Extra GGsound Limitations

Post by gradualgames » Wed Jun 13, 2018 6:25 pm

I'm not 100% sure about nesmaker's ggsound converter as it is not the official one, but several of these points are incorrect with respect to ggsound's own capabilities, used on its own outside of NESMaker.

1. Songs must not use the effects column (except for effect Bxx).
This is already documented on GGSound's github page.

2. If songs use effect Bxx, it must be present in all 5 channels.
This is already documented on GGSound's github page.

3. Songs must not use the channel volume column.
This is already documented on GGSound's github page.

4. Instruments must not use the Hi-Pitch envelopes in the instrument editor.
This is already documented on GGSound's github page.

5. TEMPO SETTINGS MUST STAY AT 150 BPM! (However, Speed settings can be changed to make the song faster/slower.)
Not sure about NESMaker's converter, which is not the official ggsound converter, but you can change tempo and speed in famitracker and have it reflected in the output from ft_txt_to_asm.py for your game.

6. Instruments and song names cannot have spaces or weird characters in their names. (Just to be safe, don't use spaces or weird characters in the file name or song information either.)
This is not true for ggsound's official ft_txt_to_asm.py, you can put any characters you want.

7. The Noise channel will not play instruments with a duty cycle of 1 or 3 properly. They will all default to duty cycle 0 or 2. (Basically no buzzing/ting sounds on the noise channel.)
This is fully supported by GGSound.

8. SONGS CANNOT BE LONGER THAN ORDER 09!
There is no limitation on song length ( except in terms of how much space is used up in a given bank in the actual rom)

9. Sound effects must be labeled as sfx_ followed by its name
This is documented on GGSound's github page.

10.The soundfont in the Noise channel will play inverted in the engine compared to how it sounds in Famitracker. (For example, normally in Famitracker F-# is the softest note and 0-# is the harshest note, but the engine will think that 0-# is the softest note and F-# is the harshest note.) So when exporting your songs, make sure to invert your Noise channel notes so it will play like the original in the engine!
This should not be the case anymore.
User avatar
CutterCross
Posts: 94
Joined: Sat Apr 28, 2018 9:42 pm

Re: Extra GGsound Limitations

Post by CutterCross » Wed Jun 13, 2018 7:59 pm

gradualgames wrote:
Wed Jun 13, 2018 6:25 pm
I'm not 100% sure about nesmaker's ggsound converter as it is not the official one, but several of these points are incorrect with respect to ggsound's own capabilities, used on its own outside of NESMaker.

1. Songs must not use the effects column (except for effect Bxx).
This is already documented on GGSound's github page.

2. If songs use effect Bxx, it must be present in all 5 channels.
This is already documented on GGSound's github page.

3. Songs must not use the channel volume column.
This is already documented on GGSound's github page.

4. Instruments must not use the Hi-Pitch envelopes in the instrument editor.
This is already documented on GGSound's github page.

5. TEMPO SETTINGS MUST STAY AT 150 BPM! (However, Speed settings can be changed to make the song faster/slower.)
Not sure about NESMaker's converter, which is not the official ggsound converter, but you can change tempo and speed in famitracker and have it reflected in the output from ft_txt_to_asm.py for your game.

6. Instruments and song names cannot have spaces or weird characters in their names. (Just to be safe, don't use spaces or weird characters in the file name or song information either.)
This is not true for ggsound's official ft_txt_to_asm.py, you can put any characters you want.

7. The Noise channel will not play instruments with a duty cycle of 1 or 3 properly. They will all default to duty cycle 0 or 2. (Basically no buzzing/ting sounds on the noise channel.)
This is fully supported by GGSound.

8. SONGS CANNOT BE LONGER THAN ORDER 09!
There is no limitation on song length ( except in terms of how much space is used up in a given bank in the actual rom)

9. Sound effects must be labeled as sfx_ followed by its name
This is documented on GGSound's github page.

10.The soundfont in the Noise channel will play inverted in the engine compared to how it sounds in Famitracker. (For example, normally in Famitracker F-# is the softest note and 0-# is the harshest note, but the engine will think that 0-# is the softest note and F-# is the harshest note.) So when exporting your songs, make sure to invert your Noise channel notes so it will play like the original in the engine!
This should not be the case anymore.
I apologize if this information is incorrect in terms of GGsounds's own capabilities, but most of these constraints I've tested myself in NESmaker beta 3.1.3. This list is for those who are importing music into NESmaker, not GGsound as a whole. All the constraints listed here that are not listed on the GGsound webpage I've found through experimentation with NESmaker. Also, some of the constraints listed here may not apply to future betas or the full release.
User avatar
functionalform
Posts: 44
Joined: Tue Mar 06, 2018 10:54 pm

Re: Extra GGsound Limitations

Post by functionalform » Fri Jun 22, 2018 11:25 pm

So just an idea for thought here...

i'm currently dumb on the tracker end, but i'm curious if something like this would work?

bear in mind i'm new to this world and somewhat dumb to asm6 at the moment.
from sniffing around in the nesmaker asm code, it has the same structure setup as the asm3 implementation video on the GGsound site except
what's in our engine folder is a txt to asm conversion exe.

so if the inclusion code in the header and such is the same, it might be just a matter of creating an updated exe out of the python file?
User avatar
CutterCross
Posts: 94
Joined: Sat Apr 28, 2018 9:42 pm

Re: Extra GGsound Limitations

Post by CutterCross » Sat Jun 23, 2018 1:47 am

functionalform wrote:
Fri Jun 22, 2018 11:25 pm
So just an idea for thought here...

i'm currently dumb on the tracker end, but i'm curious if something like this would work?

bear in mind i'm new to this world and somewhat dumb to asm6 at the moment.
from sniffing around in the nesmaker asm code, it has the same structure setup as the asm3 implementation video on the GGsound site except
what's in our engine folder is a txt to asm conversion exe.

so if the inclusion code in the header and such is the same, it might be just a matter of creating an updated exe out of the python file?
I also know jack squat about asm, but that's a pretty interesting find. Not sure if your solution would/wouldn't work, but it's not a make-or-break scenario in my eyes. It's still definitely possible to make some awesome advanced NES music! It just takes some creativity! And I've been able to make some decent (imo) tracks despite these limitations. Haven't yet been able to test if anything is different between the 3.1.3 and pi betas for importing music, but I'll definitely update any changes I or others find!
darkhog
Posts: 169
Joined: Sun May 13, 2018 10:02 am

Re: Extra GGsound Limitations

Post by darkhog » Sat Jul 14, 2018 8:18 pm

I really wonder why they did go with GGSound if it has so many limitations even on its own, such as no effects other than loop effect (BXX). I mean name me one good demoscene/chiptune track that doesn't do pitchbends or slide to notes. Obviously they can't use FT's engine since it's too big, but what about other engines? Is GGSound really the best choice or just the first they thought of?
User avatar
CutterCross
Posts: 94
Joined: Sat Apr 28, 2018 9:42 pm

Re: Extra GGsound Limitations

Post by CutterCross » Sat Jul 14, 2018 9:35 pm

darkhog wrote:
Sat Jul 14, 2018 8:18 pm
I really wonder why they did go with GGSound if it has so many limitations even on its own, such as no effects other than loop effect (BXX). I mean name me one good demoscene/chiptune track that doesn't do pitchbends or slide to notes. Obviously they can't use FT's engine since it's too big, but what about other engines? Is GGSound really the best choice or just the first they thought of?
They probably went with GGsound because it was more efficient to implement in NESmaker than other engines. It was also probably what they had easy access to at the time.

And speaking of the demoscene, most of those demos probably use their own custom engine from scratch. You CAN make your own custom engine and use it in NESmaker if you're crafty enough with ASM, but let's be honest, most people aren't going to do that.

Also, you CAN do note slides and pitchbends with the GGsound engine! There's ways to do it other than using effects, it just takes a bit more creativity. I proved it myself! Take a listen to these:

https://www.youtube.com/watch?v=O4sgb0JBEMQ&t=1s
https://www.youtube.com/watch?v=oXSKe3sSEeQ

I made these tracks commissioned by a couple NESmaker Beta testers. They both have pitchbends, note slides, and (slight) vibrato, all done without the use of effects. These DO work in NESmaker and the compiled ROM! (Aside from having to invert the notes on the Noise channel before importing them.) Just to prove it IS possible, just not as simple as using effects.

One of the Beta testers showed off one of the tracks being used in their compiled game, which you can find here: viewtopic.php?f=13&t=180&start=20
User avatar
Mihoshi20
Posts: 276
Joined: Tue Mar 06, 2018 11:47 pm

Re: Extra GGsound Limitations

Post by Mihoshi20 » Sun Jul 15, 2018 12:01 pm

CutterCross wrote:
Sat Jul 14, 2018 9:35 pm
darkhog wrote:
Sat Jul 14, 2018 8:18 pm
I really wonder why they did go with GGSound if it has so many limitations even on its own, such as no effects other than loop effect (BXX). I mean name me one good demoscene/chiptune track that doesn't do pitchbends or slide to notes. Obviously they can't use FT's engine since it's too big, but what about other engines? Is GGSound really the best choice or just the first they thought of?
They probably went with GGsound because it was more efficient to implement in NESmaker than other engines. It was also probably what they had easy access to at the time.

And speaking of the demoscene, most of those demos probably use their own custom engine from scratch. You CAN make your own custom engine and use it in NESmaker if you're crafty enough with ASM, but let's be honest, most people aren't going to do that.

Also, you CAN do note slides and pitchbends with the GGsound engine! There's ways to do it other than using effects, it just takes a bit more creativity. I proved it myself! Take a listen to these:

https://www.youtube.com/watch?v=O4sgb0JBEMQ&t=1s
https://www.youtube.com/watch?v=oXSKe3sSEeQ

I made these tracks commissioned by a couple NESmaker Beta testers. They both have pitchbends, note slides, and (slight) vibrato, all done without the use of effects. These DO work in NESmaker and the compiled ROM! (Aside from having to invert the notes on the Noise channel before importing them.) Just to prove it IS possible, just not as simple as using effects.

One of the Beta testers showed off one of the tracks being used in their compiled game, which you can find here: viewtopic.php?f=13&t=180&start=20
If all goes well, Mermay's Den will also be one of the games Joe shows off at the upcoming NESmaker launch event in early august.
User avatar
CutterCross
Posts: 94
Joined: Sat Apr 28, 2018 9:42 pm

Re: Extra GGsound Limitations

Post by CutterCross » Sun Jul 15, 2018 6:37 pm

Mihoshi20 wrote:
Sun Jul 15, 2018 12:01 pm
If all goes well, Mermay's Den will also be one of the games Joe shows off at the upcoming NESmaker launch event in early august.
That's awesome Mihoshi!
darkhog
Posts: 169
Joined: Sun May 13, 2018 10:02 am

Re: Extra GGsound Limitations

Post by darkhog » Thu Jul 19, 2018 8:14 pm

I see. Though it would be better if GGSound could utilize these effects as otherwise you have to bake them into instruments meaning you may have several instrument clones with different pitch bend rates and when you need/want to change a pitch of an instrument, you got to change every clone.

As for the inverting of notes, I really hope noise thing will be resolved by the 1.0 - from what I've read in this thread in GGSound the issue is already resolved so all that needs to be done is to merge importer code to NM's internals. Other than that, is there a way of automatically inverting notes or do you have to change these manually? I'd be pretty happy if there was a tool for that because otherwise it's a lot of work if you need to make a slight changes to the tune.
Post Reply