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
The engine speed is only chosen in 1 Hz increments. This makes it impossible to make music in Famitracker that synchronizes exactly with NTSC NES video. This is noticeable in how jrlepage's hardware recordings using his NMI driven TNS-HFC3 player get out of sync when compared to Famitracker.
The NSF speed 16666 is closest to 60hz, and is what Famitracker does. A lot of NSF rips use this, as it was recommended by the original spec. This is convenient if you want to synchronize with newly made 60hz video.
NSF speed 16639 is closest to the NTSC NMI rate on the NES of 60.1hz. There is no way to make an NSF that uses this rate, short of hex-editing it after export.
For PAL, the NMI rate is closer to 50Hz so it's less of a problem. But NSF speed 19997 would be more precise.
I would request the ability to specify the NSF speed directly. You could put the number next to the engine speed slider, have moving the slider update the number, and changing the number update the slider (but only the number should be the exported value).
Edit: 16639 is closer than 16640. (Just checked the calculation.)
Yeah I agree, this has been on my todo-list for some while actually. Being able to set only integer values is an unnecessary limitation and and the plan is to change that to cycles instead.
And while you're at it, do you plan to make it say the number of cycles as well as displaying the equivalent Hz right under, kind of like how the DPCM importer shows the quality of the sample and then displays the target Hz as well? Because that would save a lot of calculations!
Also, I know this is a lot, but could there be an effect to change engine speed?
_______________________
"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
I don't think so. The engine speed is basically how fast your machine works, and I'm talking about the real hardware. The NES' sound hardware works at 60 Hz (in America and Japan), but you can overclock the machine (i.e. it goes faster) so all the instructions will be executed in less time.
Your NSF or FTM's engine speed will always be set to a specific value, as well as the NES' or any other machine, and I think it's rather obvious that you can't change the engine speed on the run for any device. The workaround for this though is to set it to the maximum value you need to use (in the "tracker" menu) and if you have for instance a 120 Hz module and you need to apply a 60 Hz effect, just go and duplicate the values (in the instruments' settings) so the effects take twice the time to happen, therefore making your sequence slower. Here's a test module so you can see what I'm talking about.
"the NES' sound hardware works at 60 Hz"
This is where you've been lied to. It's not [i]exactly [/i]60hz.
It's really 60.0988 Hz. That .988 difference is the topic here.
The refresh rate of the NSF doesn't really represent "how fast the machine runs" either; it's just a measure of how fast instructions are being carried out in your program. NES/Famicom games have audio engine updates happen during vblank (which is where the 60.0988 Hz figure comes from) out of simplicity, but the 2A03 can easily handle faster update speeds than 60-ish updates per second (I've tested NSFs with refresh rates as high as 260 Hz on my Power Pak and they work fine).
[i]Overclocking[/i] is a bit of a misnomer here, I think: the clock speed of the 2A03 (1.7897737 MHz) isn't modified, only the rate at which your program (NSF) is sending instructions to it.
Anyway, refresh rate is part of the header of the NSF and cannot be changed on the fly.
_______________________
Follow me on [url=https://twitter.com/jrlepage2a03]Twitter.
I record (some) NSFs on hardware. Feel free to [url=http://www.famitracker.com/forum/posts.php?id=3633]request a hardware render.
The NES had almost no hardware for timing things. The vsync/NMI signal was the only way to synchronize your music that was built into the NES.
The PowerPak has its own timer (inside the PowerPak) in order to implement this aspect of the NSF specification, which lets you specify a custom play rate.