- Getting your sample
- Tweaking your sample
- Other kinds of loops
- Tuning your sample
- Addendum: Sample rate in detail
Hi there, if you’ve found this thread, that means you are interested in making your own samples!
...or you just got lost in the forums.
If you’re here because of the former, then you’re in luck; this tutorial will cover the basics and you’ll have your own samples in mere minutes!
The tools we will be using are:
- C700 VST
- BRR Player
- A sample of your choice.
Well then, let’s get started!
A sample is basically a piece of sound, whether it’s an instrument, a piece of music, voice, etc. It can be anything you want, but in SNES terms, most of the time we’re just limited to instruments; sampling a piece of music (like Earthbound) or using voice samples (like in Tales of Phantasia or Star Ocean) is possible, but these require big amounts of ARAM and ROM space. The latter is why games back in the day rarely used big samples, even if it was theoretically possible to do so.
Here, we will be covering instrument samples, both melodic and percussive. From where you get this sample is up to you: it can be from a sound library, a soundfont, a YouTube video or even by recording a real instrument yourself. I personally prefer to use VSTs, so I will be using a VST as an example.
Some examples of places where you can find samples:
- Other video games.
Your samples must always be in .WAV, if you have samples in any other format then you will have to convert them, there's plenty of converters online which make this process easier, then you can convert them using OpenMPT when exporting. Also, try to have your sample as clean as possible! By clean, I mean no background noise and no reverb.
I will use a simple accordion sample for this tutorial. The way I’m getting this sample is by:
Recording a single note of it from the VST in FL Studio and then…
Simply exporting it as .WAV.
After getting your sound file, open OpenMPT, drag your sound file to it and then go to the Samples tab, there you will see this:
As you can see, there’s a lot of stuff on the screen, but we won’t be using most of it, so don’t worry.
The first thing you will probably notice is that there are two sound waves instead of just one. This is because the sample is in stereo. The SNES only accepts samples in mono, so we will have to convert the audio to mono. This can be easily done by right-clicking the sound wave:
You can see that there’s 4 options here, but we will discard the last one:
- Mix Channels: A true stereo to mono converter. Most of the time, you’ll just need this one.
- Left/Right Channel: These options will get rid of one of the audio’s sound channels. You will need this one when you need to isolate a sound that is better heard in one of the channels.
In this case, I will click on Mix Channels. It doesn’t really matter which one of the three I click on since the sample is in “fake stereo“. By this, I mean that while it has two stereo channels, but they are identical, so the output sound is in mono.
And there we go! Our sample is in true mono now.
You can clearly see here that the sample has silence at the beginning. To get rid of it, we can simply zoom in using the magnifying glass icons at the top left, or pressing CTRL and then using the mouse wheel. After this, we select what we want to get rid of and press the Delete key on the keyboard.
And that’s it!
While our sample is now theoretically ready, there is still one more step before we can (practically) use it for porting. As mentioned above, larger samples take up more space in the ROM and in ARAM, and sample quality is something that factors into this as well. Thus, samples will typically need to have their quality reduced in order to bring their size down, as they’d be far too high to use with the SNES directly. Despite the reduction in quality, most samples will still sound perfectly fine in practice. Now let’s get into the detail of it.
What we want to do is to play with the sample rate of our sample. What is “sample rate”, you say? It’s basically how “fast” the sample is played per second. The higher the sample rate, the higher frequencies your sample will be able to contain. For a detailed explanation, see appendix A. The SNES SPC has an output sample rate of 32000Hz, so it’s typically not necessary for your sample to have a sample rate higher than that. To change the sample rate, or resample, click the button (or CTRL+R) in OpenMPT, which will make this window will appear:
As you can see, our sample is currently at 44100Hz. We will lower that to 32000 Hz and then press OK.
Now, we have to find a loop point for our sample. Depending on the sample, you may need to find different kinds of loop points, but the general rule is “find a pattern”.
As you can see in the image, there’s a clear pattern in the sample, so we should loop that. To do that, we must zoom in and use the trusty right click function in our mouse.
After zooming in, you can right-click on the part of the waveform where the “pattern” begins, and click Set Loop Start to: to define this part as the beginning of the sample’s loop. Similarly, at the end of the “pattern”, you can right-click and select Set Loop End to: in order to define the end of the loop.
And our sample is looped! If you can still hear a click when it loops, then you can try using the button (or CTRL+L) in OpenMPT. This lets you crossfade between the start and end points of the loop to make it smoother. Alternatively, you can try manually moving around the loop points slightly and see if that reduces clicking, although it might not always. After this, you can delete what’s after the loop end point if you want, but C700 takes care of that automatically.
Keep in mind that if you resample with looping points already in place, occasionally the loop might click more. This is a case of trial-and-error; stay diligent and watchful of your sample’s quality! On that note, always check the quality of your sample’s loop (and for that matter, the sample rate of your sample) in BRR Player, as that will tell you exactly how your sample will sound when played in a song on the SNES. If it doesn’t sound good in BRR Player, tweak a bit more.
Now, we save the .WAV file and drag it onto C700!
C700 is a VST plugin for using BRR samples in a DAW, like FL Studio. It has a lot of settings to emulate the SPC chip’s capabilities, can be used to play BRR samples using MIDI, and can export BRR samples based on .wav file input. We’ll be using it for the latter for now.
Click on “Save Smpl...” to save your sample in .BRR format, and you’re pretty much done. Alternatively you can use C700’s many options[j] to experiment with it and make sure it sounds good in playback.
Since samples can be any sound of any kind, there can be many kinds of loops too. but I will cover the most general ones. Looping samples with messy waveforms has already been covered above, so that leaves two others to cover.
Another kind of sample you will stumble upon are simple waveforms like square waves, triangle waves, and other kind of basic synths. There are also real instruments that kinda work the same way as those synths, most commonly woodwind and brass instruments like trumpets, saxophones, clarinets, and flutes, and sometimes string instruments like guitars and pianos. The former kind of samples can be looped very easily most of the time and don’t eat up too much ARAM.
Let’s use this saxophone sample for example. It looks a bit messy at first, but if we zoom in:
You can see that it also has a “pattern” like the accordion sample. These samples still require some skill to loop correctly, because we’re looping on a much smaller scale now, hence it’s harder to get the loop right. If the loop is a bit misaligned, your sample may end up sounding clicky or detuned. The latter happens when the loop is slightly smaller or larger than the waveform pattern: when it’s smaller, the sample will sound at a higher pitch when the loop is reached; if it’s larger, then it will sound at a lower pitch. Sometimes, you may have to do larger loops to counter this, or even play a bit with the sample rate. Occasionally, you may also have to do larger loops if a reed instrument is too “breathy”. By this, I mean that you can hear air going through the sound. This is because a very small loop could make the instrument sound less like a real instrument and more synth-ish. Having to make larger loops for breathy samples means having to make a bigger sample too, so just do it if you have spare ARAM to sacrifice.
Let’s try with this other sample, which is a String Ensemble. If you look closely, there isn’t a clear pattern. These kinds of samples that are reverb-y, chorus-y, or phase-y are quite hard to get right because they are the type of samples that use the most ARAM. These require experimentation to get a decent loop, or else they end up sounding clicky and/or too shaky. It’s all up to you!
First I’ll place a start point here, in the lowest point of this section of the waveform.
After inspecting the sample and searching for a similar spot, I decided to put the end point here. It may still sound a bit clicky but we can use OpenMPT’s crossfade tool for that:
I recommend setting the bottom bar all the way to Constant Volume, as it gives better results most of the time. The top bar is how many samples will be used at the end loop point. Try to not use too much, or the crossfade will be too noticeable. That being said, don’t use too few either, or the click may not get removed. I suggest you experiment with this until you get a result of your liking.
Percussion samples are the easiest to make, but they are also sometimes the ones that use the most ARAM.
This is a Snare Drum sample. You could just save this sample and import it into C700, but there’s some other stuff you could do to save space:
Cut off the reverb-y part of the sample and then apply a small fade out to it. You do this by selecting half (or more) of the sample until the end, like this:
Click on “Quick Fade”, and then your sample will look like this:
Another way would be doing this:
As you can see, I’m looping the reverb-y part. This will also help us make the sample as “long” as we want by using ADSR, but it may sound weird in some circumstances (like having a solo section with the drum for example).
When it comes to samples like crash cymbals and hi-hats, you can do pretty much the same as above: loop its noise so you don’t end up with a gigantic sample. Another trick you can do is loop samples like bongos or tom drums, which are very “sine-y”, as if they were a small waveform, like I explained above.
Now that I mentioned various kinds of percussion samples, I’ll give you a tip about sample rate regarding percussion: If you need to optimize, downsample samples like kick drums, tom drums, and bongos first, since these samples aren’t too noisy and are rather deep-sounding. However, don’t downsample samples like hi-hats, cymbals, and snares as much as the quality loss is more noticeable on those.
A good way to tune your sample is comparing it to a simple waveform. You can find a tone generator here:
Use the default 440Hz (or any half/double of that value) to tune to A, or you can use 261.6255Hz to tune to C.
Open BRR Player, when you do you will see this:
First of all, don’t use Tuning for, well, tuning, as this is basically $EE. You must use Multiplier and Sub. (Submultiplier) instead, as they are used in the definition of an instrument. First set Oct. (Octave) and Note to match any of the notes in the website above, then use Multiplier and Sub. to get as close to the pitch of the notes in the website as you can. A way to know you are getting really close is if the sample starts to “beat” against the tuning sound. “Beating” is a tremolo-like phenomenon. Imagine two sine waves at frequencies 200Hz and 201Hz. If you play them together, it’ll sound like it has a tremolo on it with a speed of 1Hz. Essentially you’re listening for this. For very rich samples, you’ll really need to focus your ears more (a matter of training), as only specific frequencies will get this beating effect. But once you hear it, pay close attention, and try to make the beating as slow as possible, possibly frozen. In proper terminology, you’ll want to “lock” the frequencies together.
As you might imagine, this means that samples with baked-in pitch variation (often baked-in vibrato or chorus) will not be feasible to (easily) tune perfectly with this method. Still, it occasionally pays off to attempt it anyway.
Imagine a linear graph, with a horizontal line in the middle. This line represents 0, and the graph’s range is between -1 and 1 (you can consider those -100% and 100%). Further right on the graph corresponds to further in time. Imagine a waveform (the kind that represents sound) on such a graph. This waveform is drawn with a large amount of points plotted on the graph. Every point on the graph is called a “sample”, which can get a little bit confusing, as the audio file as a whole is also often called a sample, but stick with me here, we’re gonna get through this. As the name now more clearly implies, sample rate is the amount of samples (points plotted on the graph) used to draw the waveform per second. So a sound file with a sample rate of 32000 Hz has 32000 samples per second.
You know what a sine wave is, right? It’s a sinusoidal curve, which in audio represents a pure frequency. Imagine you have a sine wave of 16 kHz. Now imagine how that might be plotted on a graph if your sample rate is 32 kHz. In essence, all you can do is represent the sine wave by samples that alternate between above 0 and below 0. You might be able to imagine that this means you can’t reproduce higher frequencies for this sample rate, and you’d be right. Long story short, the term for half of the sample rate you’re working with is the “Nyquist frequency”, which represents the highest audible frequency that you can represent within the sample rate you’re working with.
How can you use this information? Well, say you have a bass sample which doesn’t have a lot, if any, high frequency information, which is mostly or fully low-end. You can downsample it quite a lot without getting any loss of sound quality!