Article History
 
 
 

7537 views
77% damifortune

SPC
 

::|CONTENTS

  1. Samples
  2. Noise
  3. Pitch Modulation
  4. Envelopes
  5. Additional Info
  6. SNES soundtracks and sample ripping
.SPC is the SNES' sound playback format: a direct dump of the engine in use, the samples, and the loaded up song data. The name SPC refers to the Sony SPC700, the SNES' sound processing chip. The system is capable of 8 channels of sampled sound, a built-in echo system with up to 224ms of delay, a FIR filter with 8 coefficients, a 32KHz noise clock, Pitch Modulation and ADSR envelopes, with a 32KHz playback rate.

An interesting quirk about the SPC700 is that it has a 64kb Audio RAM (ARAM) limit, which will need to house everything. This includes your engine, sequence data, samples and echo delay. The SNES echo delay increments in jumps of 16ms, with the maximum being at 224ms (0x0F). Every jump subtracts 0x800 bytes (2kb) from the ARAM. This means that 0x0F delay will eat up 30kb, which is almost half of the ARAM.

Wanna know how to make a .spc file so you can submit it to the BotB format? Head here: spc (format)

Samples



Samples on the SNES need to have their loop points in multiples of 16, where the loop end is also the end of the sample (so you can't have tails left after your loops). The SNES also has a built-in Gauss filter which can not be turned off. This filter is in place to keep the highs and lows of samples in control, so plan around that.

Noise



The noise clock has 32 set values for you to pick from, with the highest speed being 32KHz. Unlike the NES, it has no periodic noise, only white noise. It is also really loud, so keep it in control as best as you can.

Pitch Modulation



Do you like weird FM? Pitch Modulation is an interesting feature on the SNES. It can take whatever is on the first channel and blend it into the next one, and mixes it together based on pitch and ADSR/GAIN envelope. It can only act as a "2-op" modulator, since the effects of the first combination do not carry on to a third channel with it enabled. Virtually anything can be mixed with anything, but oftentimes it produces distortion or awfully detuned combinations.

Envelopes



There's two types of envelopes on the SNES, ADSR and GAIN, where GAIN has 5 different sub-types that allow for manual envelope writing. ADSR has one strange quirk, because the Sustain doesn't actually sustain unless the Release is set to be zero, otherwise it will just go straight into release. the format for ADSR is Attack (0x00-0x0F), Decay (0x00-0x07), Sustain (0x00-0x07) and Release (0x00-0x1F). As for GAIN, you get five different types as mentioned earlier: Direct (0x00-0x7F), Decay (0x80-0x9F), Exponential Decay (0xA0-0xBF), Increase (0xC0-0xDF) and Bent Line Increase (0xE0-0xFF). Direct will immediately set the envelope to the given value and sustains on that. Normal and Exponential Decay need to be triggered in the middle of your note, or else the note will not sound at all. Normal and Bent Line Increase can be used at any point, and it's noteworthy that ADSR and GAIN can work together.

Additional Info



A few final quirks and limits to note about the SNES:
* Pitch stops at 0x3FFF, and then wraps around.
* Sample rates are relative to the maximum pitch rate, so choose the base pitch of your sample wisely.
* Volume ranges are 0x00-0x7F and 0xFF-0x80, the latter is for surround sound on all volume controls.
* Echo and Master volume are relative to each other. Hard to explain, just mess around with it!

SNES soundtracks and sample ripping



Wanna rip samples from SNES games (or any .spc file) yourself? Look no further.

You can download the soundtracks from old games at either of these locations:
Zophar's Domain SPC Archive
- contains .spc and .mp3 soundtracks of everything you could ask for
SNESMusic Archive
- another thorough SPC collection with other SNES resources

Alternatively you could rip samples from BotB entries.

To rip samples from .spc files we'll be using split700n
. Put whatever .spc files you want to rip into /bin/ and run extract.bat.

If you're ripping a whole soundtrack you will end up with several hundred (or more) files! You can use Fast Duplicate File Finder
or the duplicate finder tool in CCleaner
to clean up the many useless copies of samples. Some SNES OSTs used the same batch of samples for every song; those are the easy ones. Many, however, used some fancy "dynamic allocation" to call up different samples per track. Sifting through them may take a little time.

Now you have a whole bunch of numbered .brr sample files. You can listen to 'em with BRRPlay
; crucially OpenMPT can also import .brr samples natively. Using either OpenMPT or the included "brr2wav.exe" in split700n, you can turn those .brr files into .wav files suitable for any sampler.

This text's author has found brr2wav to be finicky about proper loop points at times, but on the other hand, occasionally OpenMPT fails to properly handle a batch of .brr's, instead loading up a bunch of noise (Plok is one example of a game that does this; not sure why). Both are useful! OpenMPT can tune samples as well, so you can easily prepare a whole game's worth of samples for, say, a weekly remix OHB series using split700n and OpenMPT.

Helpful Tip: If you want to give readable names to your samples and you're using OpenMPT to get them ready, make sure you're using the Name field and, when you save your samples, change the output filename to %sample_name%.wav instead of %sample_filename%. Filename would a) truncate fairly quickly and b) end up saving as "brass.brr.wav" (for example).

Weird stuff to keep in mind:
* For reasons beyond this author's paygrade, lots of times you will end up with samples that are truncated versions of other samples. For example you might have a snare, and also a snare that's missing a bunch of data at the beginning but is otherwise the same sample. You might even have a lot of these files. Just delete 'em. If you find a sample that looks or sounds like it's just the tail of something else, it is almost certainly this weird thing.
* Most games will have a handful of very short and fairly nonsensical waveforms amongst their samples. Not certain what they are but they may be used as envelopes somewhere. Usually these differ from games having simple waveforms as actual samples since those are specific shapes. Real samples also will have active loop points, whereas these do not. You can delete them comfortably or keep them if you like how they sound looped. Nothing wrong with it really.

 
CATEGORIES
 
File Formats