Ripping Samples from .spc Files

In order to rip samples from existing .spc files, we'll be using a tool called split700n, which can be downloaded here. (Grab it at the source here, but the linked version comes with a batch extractor file to make your ripping life easier.) This is the best method for ripping samples in large batches; a couple other options are listed at the bottom of the page for smaller ripping expeditions.

We'll also need some .spc files to start with. Two amazing resources, Zophar's Domain and SNESMusic.org, exist online to download just about any SNES game's music in either .spc or .mp3 format. This webpage also contains a ton of .spc soundtrack rips. Grab some .spc files from your favorite game, perhaps Super Mario Kart?, and let's get started!

Running split700

The tool itself is fairly straightforward to use. Simply place any number of .spc files in the /bin/ folder, then run extract.bat in the same folder. When you do, a command prompt window will appear and ask you to press any key to continue. Do so and every sample from every .spc will be ripped and placed into this folder.

If you're ripping an entire soundtrack, you will wind up with very, very many .brr files – several hundred or more, all numbered and named after the .spc they were ripped from. Most of these are duplicates; in many SNES games, every .spc file will contain the same samples. However, there are also quite a few games that dynamically allocated their samples, meaning some samples are only located in specific .spc songs. If you want to be thorough, you will want to include every .spc from a soundtrack to rip all samples from that game. On the other hand, if you know you want a sample from a specific tune, you can rip it easily.

If you're ripping many files in a soundtrack, you will want to use a program to identify and clean out duplicates quickly. Two free options are Fast Duplicate File Finder (recommended) and the duplicate finder within CCleaner (may require multiple scans). Simply scan the /bin/ folder for duplicates and delete them.

Handling .brr Files

For dealing with .brr files, you have a few options – the standalone tool BRRPlay can be used to open and listen to .brr samples individually. C700 can also load them, as can OpenMPT (choose "16-bit signed" settings when importing; see below if you end up with noise). It is possible to get right to work on your music from here.

Additional processing may be desired though – you may want to make tune the samples, for which OpenMPT is highly recommended. Not all games have their samples all tuned to the same note, and even fewer are tuned to the correct one (here's some mathy details about why if you're curious). The rightmost icon in OpenMPT's sampler (a tuning fork) will automatically tune the sample to a chosen note. You can also set a keyboard shortcut for this by going to View > Setup > Keyboard > "Tune Sample to Given Note". Tuning has to be done sample-by-sample, but since the process is otherwise automatic it is still a fairly quick process to tune all samples.

You also may want to convert the .brr files to .wav – two options exist here as well:

  1. Also included with split700n is a tool named brr2wav.exe; this can convert your new .brr files to .wav. Drag any number of .brr files onto the .exe file and it'll do its magic!
  2. OpenMPT can "Save All" samples at once in the Samples tab; click the arrow next to the Save💾 icon to access this function. Set the filetype to .wav (or .flac if desired, but .wav is more widely supported by samplers), then format the filenames as you like. I recommend using %sample_name%.wav instead of %sample_filename%.wav because the "Name" field can be longer. If desired, you can set useful Names for your samples in OpenMPT like "flute" or "sinewave". Those will be the new names of the files if using the %sample_name%.wav format, meaning when you Save All, you'll end up with a batch of files with descriptive names.

Both methods may be useful from time to time. Occasionally brr2wav gets sample loop points wrong, but also occasionally, OpenMPT fails to properly import some soundtracks' .brr rips, instead creating lots of garbled noisy samples (examples: Plok, Ken Griffey Jr.'s Winning Run). At times you will need one or the other.

Additional Tips and Quirks of .spc Ripping

  • If you want to give readable names to your samples, try using the Name field in OpenMPT (as described above). When you hit Save All (via the Save icon's dropdown arrow), use %sample_name%.wav instead of %sample_filename%.wav and your files will be saved using the Names you set.
  • In addition to exact duplicates of samples, you will frequently end up with near-duplicates, or samples that are truncated versions of other samples. For example, you may have a snare sample as well as another sample that contains only the tail end of that same snare sound. (Imagine the full thing is 8000 samples long, then you start seeing copies that are only 7600 with the first 400 missing, etc.) There may also be duplicates where the loop points of these samples will be obviously incorrect if played back. These are not useful and are best discarded. Because of this, if you're organizing a bunch of samples, it may be useful to sort them by largest filesize – that way you run across the "correct" versions first by looking at the largest samples.
  • The tool will often give you a handful of small, jagged-looking "samples" that produce noisy, buzzy synth waveforms if looped (these don't have embedded loop points most of the time). These are not actually samples from the game; in fact I'm not totally sure what they are, but possibly they were originally envelopes of some kind being used internally. Most likely, these can be discarded too, but if you like how they sound there's no harm in using them either.

Condensed Step-by-Step Guide

Here is a condensed step-by-step guide to use as a reference for ripping an entire soundtrack to .wav samples. This is exactly how I do it!

  1. Place all .spc files into the /bin/ folder where split700.exe and extract.bat are.
  2. Open extract.bat, which rips the .brr files.
  3. Use a duplicate file finder (such as Fast Duplicate File Finder) to delete copies.
  4. (Optional) Select all .brrs and drag them onto brr2wav.exe to convert to .wav.
  5. Sort by filesize, largest first.
  6. Load all samples into OpenMPT (whether .brr or .wav) by selecting them all and dragging them onto the huge waveform area in the "Samples" tab. Choose 16-bit signed import settings for .brr.
  7. Change the "Name" field to something more useful for each sample, like "trumpet" or "organ".
  8. Weed out any partial duplicates and other useless samples by hand.
  9. Tune all samples you wish (likely all but drums & SFX) using the OpenMPT sampler. Either click the tuning fork icon (the rightmost one in the row) or set a shortcut in OpenMPT (View > Setup > Keyboard > Tune Sample to Given Note) to automatically tune a sample.
  10. Click the arrow next to the Save icon in the Samples tab and choose "Save All…". Recommended file name format: %sample_name%.wav. This pulls from the "Name" field instead (which you may have filled in step 7).

Additional Ripping Options

It is possible to grab .brr samples using C700 itself, although they must be saved individually. When you click the "Load…" button to load a sample, you will see that one of the file format options is .spc. If you load an .spc this way, C700 will import every sample in that .spc song. This will overwrite anything else you may have loaded already. To save these samples (individually) as .brr files click "Save Smpl…".

The (paid) VST chipsynth SFC is able to grab .brr samples from an .spc loaded into its own SPC Player. By default, this is only for use within the plugin, but an Export button can be enabled by modifying one of its configuration files, as per this forum post. Locate gui_sample.xml in /Program Files/Plogue/chipsynth SFC/GUI, find the following line near the bottom, and "uncomment" it by deleting any preceding characters before it on that line: <CS01TextButton param="DID_SLOTCOMMAND" x="660" y="406" w="100" h="15" text="Export all BRRs" command="save:genericfile|com.Plogue.Emulator.SFC|0" style="ExpandViewButtons"/> Next time you load the VST, a button labeled "Export all BRRs" will be available which, as the name implies, exports all the .brrs you have currently loaded into the plugin.