Closed tgmichel closed 9 years ago
Hi tgmichel, Very good question =D
I use a tool called SPCTOOL for Windows you can find it here: http://spcsets.caitsith2.net/spctool/
For the C9Freq "Harp" BRR sample from "Final Fantasy 6", I used the "316. The Prelude.spc", (the one that plays the classic Final Fantasy scale).
Using that util I can Speed the song down enough (using the metronome icon) to pause the tune on a correct highest pitched "C" note I can find in the song. I use a cheap mini keyboard, to know which note is an exact C, & play the SPC file to get it paused at the correct time. Then I click on "Emulation/DSP Editor", & choose the correct channel, & in the top left is the "Pitch" value. (Which is the correct one the actual SNES uses).
Once I have the highest "C" pitch from the SNES, (a number between 0..65535), I check if it is below "32768"... If it is lower, I double the number until it is above 32768. This gives the highest "C9" pitch possible for a sample on the SNES.
There are more mathematical ways to determine the C9 freq, but I wanted to get the exact rates used by the games themselves, which can be slightly detuned by the original musician! e.g I only like to use the authentic rates from the games themselves... I also use this util to extract the correct "AD, SR" numbers too, using that "Emulation/DSP Editor" tab.
As a present for you I have put up my full "Final Fantasy 6" SNES sound font ready to use with all those figures worked out =D You can find it here: https://github.com/PeterLemon/SNES/tree/master/SPC700/BRRSamples/Final%20Fantasy%206 I have included the title of the 1st songs each sample is used in the filename, & their respective "Sample DIR" number from that song, so you can see how I grabbed them all.
Hope this helps you out, if you have any more questions, or I have not explained well enough please tell me =D
Wow thank you for your response and for the FF6 samples! That's so kind. Can't wait to try your method with the Seiken Densetsu rom ^^
For example in:
When you extracted the BRR from the SPC file, where did you get C9Freq address?
I'm using the https://github.com/gocha/split700 but only outputs the sample address, the sample loop address and the loop point.
Thank you.
Edit: BTW, awesome tool. I'm building a simple JS sequencer to ease the process of generating asm loops.