MP3 Sample of C700 in action:
(Courtesy of Jimmy52905. Thanks for sharing, dude!)
Hey guys, just thought I'd make this post to share my knowledge with you all! Here's a tutorial on how to make a convincing SNES instrument sound in your favorite (VST-supported) music editor! While this tutorial centers around FL Studio, this method should work for any VST-supported music program. This will not
let you insert custom music into Super Mario World (unless you're looking at MSU-1 stuff), but it helps with making an MP3/OGG/WAV sound like a legit SNES chiptune.
No matter your DAW of choice, you can near-perfectly emulate BRR/SPC samples to create some convincing pseudo-SNES-chip music with a single VST, though if you're interested in emulating SNES perfectly, this is quite a lengthy read.
The first thing you want to do is download C700 from the page: http://picopicose.com/software.html
No worries—the page is in Japanese, but the program itself is in English. Extract the C700.dll (not the one in the x64 folder. I've heard some people get many unexpected errors from the 64-bit edition) and put it in your VST folder (typically at C:\Program Files (x86)\Image-Line\FL Studio 11\Plugins\VST)
Open FL Studio and insert/replace a channel with C700:
^If you can't find "C700" on the list, make sure that you re-scan for any VSTs, and double-check that C700.dll is in the correct folder.
If you managed to get C700 to open, you should see this window:
Find an SPC with the instrument that you want. http://www.snesmusic.org/v2/
is a great resource for finding SPCs from particular games. (.rsn files act like .zip files, just extract the SPCs as if it were a .zip)
EDIT: Or, if you want to use your own custom instrument, drag/drop a .wav over the waveform in the C700 Interface. I recommend importing a .wav which is 32kHz 16-bits Mono (C700 can do stereo though!), and has a start and end loop point, both loop points being a multiple of 16 in decimal. OpenMPT
is a great tool designed around doing that kind of stuff, though you could also use something like Audacity,
then skip to the echo part of this tutorial.
Open the SPC in SPC700 Player
, and look at the sample number of the instrument (you might want to mute the other channels to find it).
Open up windows calculator (or any hex>decimal calc you prefer) and press ALT+3 (or View>Programmer Calculator). Convert the value from hex to decimal. (My value was 1F, so the calculator gave me back 31.)
/bin/ folder and move the SPC into it. Run the .bat and find the instrument BRR you need (The folder will get very messy!), then drag the BRR over the waveform in the C700 window:
Alternatively, if you dropped an SPC into the program, scroll up/down to find your instrument (my case was 1f, or 31 in decimal):
At this point you can already place notes, but we need to make the instrument's volume envelope (ADSR) sound even more accurate. Open the SPC up in SPC700 Player again and double-click on the window (or press left/right) to navigate to the ADSR menu. Find your instrument's ADSR:
So in my ADSR:
A = F
D = 7
S = 7
R = 00
If I convert each of those to decimal via calculator:
A = 15
D = 7
S = 7
R = 00
Which is how I would configure my ADSR here:
^While this is accurately converting, C700 treats Release differently in contrast to the standard N-SPC music engine. Un-check Sustain mode for best compatibility results.
Also, I wouldn't recommend controlling C700 directly in the VST, so use 8 MIDI Out ports (or if you use FL, check this
out. It's useful for instrument patch/prog changing!)
I recommend making all your instruments "mono"phonic by checking the tickbox to the right of the waveform.
Now we have an accurate instrument, there's one last step, which is defining echo and ADSR.
Just find and convert each of these values to decimal, then put the data into C700. Don't forget to enable the echo box for the channels you want to have echo!
EDIT: Forgot to mention, if any hex value is over $7F, you'd be using negative numbers. $FF would be -1, $FE would be -2, and so on.
Another note: I highly recommend hooking all of your MIDI channels to the VST, rather than having several C700 VSTs open at the same time.
EDIT: Need to change instruments mid-song in FL? Use this to control MIDI Program Changes with note colors: http://blake.so/articulate/
Also, "Drum" channels are just samples, and should be treated no differently than actual melodic ones. The same rules still apply.
One last note: SNES has a max of 8 monophonic (one note at a time) channels, and echo values are global, and can only be enabled/disabled. You can change the global echo value in the middle of the song, though it is not recommended.
Hope this helps everyone interested in non-MML SNES music! (If you're interested in creating MML SPCs, however, I would recommend checking out AddMusicK
, as they are very well-made tools.)