I need advice from some of the NSF/audio engine gurus.
One feature i've been delaying for too long in FamiStudio is proper PAL support. But by "PAL support" I mean more than just running at 50Hz with different note lookup tables. I mean having proper tempo/speed management while maintaining the ability to still have control over things that need to run at a frame-level, like note cuts (stop notes).
Let me try to explain as best I can...
The way FamiTracker (and other sound engines, I assume) are able to support both PAL and NTSC for the same song, is by having the song described at a coarser level than frames. This essentially abstracts the notion of a frame from the composer, leaving the engine free to scroll through the song at different rates. In FamiTracker, the "speed" is essentially how many frames a note will last on NTSC (assuming the default tempo 150 for this discussion). The default speed of 6 means that on NTSC a note is 6 frames, while on PAL it is 5.
Writing a song at a speed of 1 (1 note = 1 frame) give you amazing control over everything, but makes it impossible to run on both PAL and NTSC while sounding the same.For the rest of this post, a note will refer to this 6 or 5 frames (a row in FamiTracker) and a frame will refer to 1/60th or 1/50th of a second.
One thing that is used in lots of songs are 1-frame note cuts before another note. To do this in FamiTracker, you add a cut delayed by 5 frames (S05 effect):
Seems to me that what someone would want on PAL is something like this (where the cut happens on the 5th frame):
So, my question(s) are:
- Is there a general (and user-friendly) way that you can thing of supporting both NTSC and PAL, while maintaining some sort of fine-grained control over note cuts and the occasional note delay?
- Were games actually using the same exact music data for both regions, or do you think some of the composer would just manually convert the songs?