Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /storage/content/49/145849/famitracker.com/public_html/forum/classes/dbHandler.php on line 29
So I was watching this TAS of a gameboy game, Croc 2 ( [url=http://www.youtube.com/watch?v=pjbGdoh_krY]http://www.youtube.com/watch?v=pjbGdoh_krY ) and thinking about the music. Specifically I was thinking 'that rapid speed popping sound I hear at the start of a note, how do you do that?' So I pop open Famitracker and try some things.
-Is it an arpeggio of 0 -12 0 -12 0? Nope.
-Is it a duty cycle of 1 0 1 0 1? Nope. 1 2 1 2 1? Nope.
-Is it both at once? It's kinda similar but... nope.
Oh, wait - I know what it's doing! That pop is a phase reset, I've heard them before. So I realized that if I wanted an instrument like this in my ftms I would have to use speed 1 and place four H00s (which forces a phase reset) in a row on the field, because I can't make it as an instrument macro.
Would adding hardware register sweeps to the instrument editor be feasible to allow something like this? Or is there a nicer solution?
It's not the sweep that causes the pop. It's writing the high bits of the pitch register, which famitracker happens to do when you use an Hxx/Ixx effect.
On the actual NES these two things are separate. You can hardware sweep without writing the high bits of the pitch register, and you can write high without triggering a hardware sweep.
[quote=rainwarrior]It's not the sweep that causes the pop. It's writing the high bits of the pitch register, which famitracker happens to do when you use an Hxx/Ixx effect.
On the actual NES these two things are separate. You can hardware sweep without writing the high bits of the pitch register, and you can write high without triggering a hardware sweep.[/quote]
It is my understanding that H00 does nothing except cause the pop, right? And if you DID have Hxx running, re-Hxxing will cause the pop?
Hxx writes $xx to the sweep register, and also writes the full pitch value to both pitch registers.
So, H00 writes $00 to the sweep register (disabling sweep), and by writing to the high pitch register it causes a phase reset.
I suggested a while ago that a Hxx with the high bit set could be used to specify not to rewrite pitch, allowing things like vibrato to be done with alternating H/Ixx.
While we're at it, I think it's safe to say that many would like to see an effect command that resets the phase of any channel that can be reset. (I believe VRC6 can be reset as well, just all 3 channels at once)
As far as I know the only things that can be reset are 2A03 squares, and N163 waves (supported by very few emulators).
Slimeball there should be no phase resetting on Famitracker N163 tracks, since Famitracker doesn't reset phase, so I don't know what you mean about having to "prevent" unwanted popping.
I was thinking that this popping is actually caused by the phase not resetting.
Some of the notes randomly pop in this .ftm and I'm a hoping a phase reset command could fix that. (Assuming the pop is caused by the volume being set to 15 while the waveform is at a random position.)
Resetting phase is almost never going to eliminate a pop. Generally it will just create a consistent pop instead of a random one.
Though, I guess what you want to do is a gradual fade to 0, and then you want to start a new waveform at volume 15, right? For starters, it won't work with the waveform you're using, because the N163 (and most PSGs with the Famicom) are using unsigned samples, not signed samples, meaning 0 volume outputs a 0, not an 8 or whatever you think a sample at half height it supposed to be. You would need to reposition your wave to start at the lowest point of the waveform, not the middle.
However, even if you accomplished this, you would likely discover there is still a pop anyway. It would be a little duller than the pops you're already getting, but there will still be a pop no matter what. You can't make an attack smooth enough to eliminate it entirely.
Actually combining a wave that starts at zero with phase resets would prevent that kind of popping, so an option for that would be useful, but it would only be supported by very few emulators.
---
Regarding hardware sweeps, the reason both period registers are rewritten on sweep commands (which causes the pop, and not actually the sweep itself) is that I had big problems with getting a consistent behavior between the tracker and exported NSFs (and NSF players?) back when I first added the sweep effects. This was how it ended up when I got it working.
^ I second this motion. Also, jsr, could you please remove the pop, or, even better, have the pop and the actual sweep separated?
_______________________
"im going to continue making this crazy stuff then after a while my style will be so sick that you will be like damn suuun that shit is so sick i dont even get it. i will be like bro its ok.. you dont have to." -omgdonut