Frontier Days of Software Synthesis: Exploring the JP-8000 Supersaw

Photo by J. Robert Lennon

One of my favorite things about electronic dance music is how tirelessly and mindlessly popular synth sounds are exploited. It’s awesome! One of the big sounds of the turn of the millennium was the so-called supersaw, an extremely bright, cold, digital, huge lead sound. You rarely hear it now in non-ironic music, but anyone who was listening to anything dancey and stupid around 2003 will surely recognize it.

Here’s a fairly typical example:

Other big choons that have similar leads are “Ramp” by Scooter, and “Heaven” by DJ Sammy.

The canonical synth for producing this kind of sound is the Roland JP-8000 (or the rack-mount JP-8080), released in the mid 90s. As the sound became trendy in dance music, the ability to produce these obnoxious, blindingly bright monstrosities quickly became a bullet-point feature for competing synths – Novation’s Supernova 2, and the later Virus TI had similar features.

So, what is the supersaw? According to roland’s marketing material, it “sounds like seven saw waves sounding simultaneously”.

Okay, fine. But what is it really? It’s important to remember this was the mid-90s, processing power was tight, and running 7 saws for each note sounds pretty expensive. There must have been some trickery at play.

I always think it’s awesome when products of economical engineering remain relevant long after their shortcuts are no longer needed. This seems to happen a lot with music equipment, and Roland had a pretty good run of devices in this category – the TB-303, D-50 and the Juno series all remained popular long after the constraints they were designed for no longer applied. Once you get into the digital era, these stories of engineering ingenuity get harder to tell. With discrete circuitry, you can just look at the circuit to see what choices the designers made, and how those choices create the sound you hear. With software, all you really have to go on is the output of the device – which can sometimes be a bit inscrutable.

I had sort of resigned myself to never knowing how wonders like the supersaw were produced, until I stumbled upon this awesome thread on KVR. It turns out there are some tell-tale signs that give pretty strong indications of how the supersaws were produced – and the engineering is just as goofy, simplistic, and beautiful as I had hoped, and I’ll spend the rest of this post reviewing the results from that discussion, and re-creating a JP-style oscillator in pure data.

The fundamental problem of digital oscillator design, at least for simulating analog waveforms, is aliasing. Directly synthesizing a saw wave produces harsh noise all over the spectrum. There are lots of ways of getting around this – wavetables and oversampling are probably the most popular commercially, but academia has given us other options too. A lot of hobby programmers use something called BLEP. Korg recently patented a variant of BLEP, too.

Of course, another path is to do nothing to the aliasing and embrace its roughness for what it is. There’s good reason to believe that’s exactly what Roland did in the supersaw.

First, for reference, here’s a nice, modern, anti-aliased (bandlimited) saw wave at 130hz, generated by the free TAL Noisemaker.


As you can see in the spectrogram above, there’s defined peaks at each harmonic and not much noise in between.

Let’s see what a totally aliased, digital-as-hell saw sounds like. We easily use puredata’s phasor~ to make a aliased saw:


You can hear it’s a bit more nasally and unpleasant. It doesn’t sound too different because the frequency of the note is relatively low – the aliased harmonics aren’t very loud. In the spectrum above, you’ll see more differences: the harmonics are still there, there’s lots of aliasing noise between them.

If you turn down the “mix” slider for the supersaw, it becomes a simple saw wave – but with some interesting properties. Here’s the JP-8000′s attempt at a non-super saw at 130 hz.


As you can see and hear, it’s closer to the aliased saw wave from than the saw from band-limited synthesis. There is a notable difference, though, pointed out by the folks at KVR – the noise *below* the first harmonic is significantly less. To make this more clear, here’s the PD aliased saw at 520 Hz:


And the JP at a similar frequency:


Now the low-frequency noise is quite different between the two. It seems that the JP generates an aliased saw and then runs it through a high-pass filter set to only pass frequencies at or above the fundamental of the note. This leaves in all the aliasing noise above the fundamental, so it’s still pretty nasty/noisey sounding, but there’s no energy below the frequency of the note to distract you from the pitch.

Let’s try to approximate that with PD:


Clearly not exactly the same as the filtering scheme is different (the JP seems more like a biquad hi-shelf), but it’s still not a bad likeness.

Now let’s try to reverse-engineer the spread of the saws – originally in the KVR thread people were suggesting complicated schemes based on a chorus effect, but it seems clear from the spectrum of a fully detuned supersaw wave that no, the JP really is generating 7 saw waves:


This makes sense when you think about it – efficiency was king, and it’s hard to beat the efficiency of two extra adds per sample – things are a lot easier when you embrace aliasing rather than reject it, huh?

Int the spectrogram above, we can see that there are indeed 7 peaks at each harmonic – indicating that there are 7 saw waves. Each peak is pretty well defined, indicating that there’s not a lot of low-frequency vibrato going on.
The third harmonic seems like the easiest to pick out the peaks, we’ve got:
(rounded to whole numbers):
350, 368, 384, 392, 400, 417, 435.

So, the detuning ratios are then
(.893, .939, .980, 1.0, 1.020, 1.064, 1.110), or slightly assymetrical.

Again, let’s try this in PD.


Not entirely dissimilar, huh? To be fair, a lot of detuned waveforms have a spectrum that kinda looks like that. But if I use my ears I can definitely hear some similarities.

Now that we have no-detune and max detune in the bag, lets look at what happens at other detune settings. At 0% detune on the slider, there’s still a little bit of audible detune, but not quite enough to see it on the spectrum. We can’t see anything on the spectrum until about 3/4 of the way on the slider, which has a spread of around 15hz at the harmonic at 520 hz:


That means the total spread is around 0.987 – 1.013 rather than the full value of 0.893 – 1.110. This dramatic increase in detune at the end of the sweep of the slider implies there’s some sort of exponential scaling occuring.

To simulate this in PD, I’m just making a guess about the endpoints of the detuning and the fact that it uses log2 scaling.

Sounds pretty good! This PD patch definitely captures the major character points of the JP supersaw oscillator. Here’s some sweeps of the detune knob:

Hands Up!

  • Twitter
  • Google Bookmarks
  • Digg
  • StumbleUpon
  • del.icio.us
  • Reddit
  • RSS

About russell

Russell works at a music software company in Cambridge, Massachusetts.
This entry was posted in Technology and tagged , , . Bookmark the permalink.

10 Responses to Frontier Days of Software Synthesis: Exploring the JP-8000 Supersaw

  1. Swiss Frank says:

    “This makes sense when you think about it – efficiency was king, and it’s hard to beat the efficiency of two extra adds per sample – things are a lot easier when you embrace aliasing rather than reject it, huh?”

    I don’t get it–two extra adds to do what? Or do you mean the 7 sawtooths really are just 7 sawtooths?! Thats the secret?! And if so why only for sawtooths?

    • russell says:

      One way of implementing a sawtooth wave is to start from zero, then, each sample add 1/period to it, and then when it reaches one, wrap around to zero. So, if you want a sawtooth wave with a period of 10 samples, it would start at 0, then become 0.1, then 0.2, etc. This is exactly what the “phasor~” does in the demos and it’s often called a “naïve saw wave”.

      This works fine for waves with periods of integer number of samples, but sounds really noisy for non-integer periods, say 10.1 samples. This noisyness is called “aliasing”, and there are several places online that try to explain how it comes about. Aliasing is still one of the biggest issues in digital synthesis, because in music at common sample rates, most pitches we are interested in have non-integer periods.

      Okay, but if you don’t care about aliasing noise (and apparently Roland didn’t), you can use the plan I devised in the first paragraph. To create another saw wave in your mix you require two more “addition operations” per sample – one to increment the saw to its next value, and another to add the saw wave to the output mix. Of course, you also have to check if the saw has gone past 1. But still, this is more efficient than most “alias-free” saw wave algorithms, which was my only point.

      I’m not sure about other waveforms – I actually don’t have a JP-8000 at home that I can use to do an analysis of them. The supersaw is the most unique of the JP-8000′s oscillators, and it’s an iconic sound in dance music. That’s why the blog post focused just on the supersaw wave.

      I’m pretty interested in alias-free saw waveforms (yes, yes, this is embarassing), and the literature on the subject is a bit confusing , so I may do a series of blog posts on them in the future.

  2. Russell Borogove says:

    Of course, you also have to check if the saw has gone past 1.

    Depending on the CPU architecture, you might not. If you’re computing in 16-bit signed integer, for example, you just increment by freq * 2^16 / samplerate and let the natural integer wraparound take care of it, or given that you’re going to be summing 7 of them, you probably need to mask out 2-3 high bits before the accumulation.

  3. Swiss Frank says:

    .893, .939, .980, 1.0, 1.020, 1.064, 1.110 …

    Are you sure? The sidebands are actually 2 SEMITONES away from the carrier? Sure you don’t just mean like 2, 6.4, and 11 CENTS?

    • russell says:

      Yup! It’s pretty gnarly. Keep in mind, that’s the absolute maximum of the detune slider, and there’s some sort of exponential scaling on the slider such that it becomes more tame pretty quickly. 3/4 of the way up the slider the detune spread is only 22 cents.

  4. Magio says:

    Very interesting post right there. Actually I tried to build myself a very basic additive synth to try building a supersaw. The only thing it does is taking 7 saw waves and add them together. As simple as that…
    I successfully managed to detune the waves in a way that matches very well the JP8000 spectrum.
    But now I have a huge problem. My synth suffers from extreme feedback issues. Basically the 7 saws are overlapping at regular intervals. This is VERY annoying, but also somewhat expected, since when the waves have a similar frequency they tend to produce feedback naturally, yes?
    What bugs me is that you managed to avoid feedback almost completely. How did you do that?

    You shall check out a sample and see for yourself:
    http://www.mediafire.com/?yht56f42f6hluvu
    You can compare it against the fully detuned JP sample from your article.
    Any help. Thanks.

    • Russell says:

      It sounds like you are talking about beating, which occurs whenever you have two or more detuned waves. Depending on the frequency difference between the oscillators, beating can be be perceived as richness, dissonance, or tremolo. There are no totally solid rules for how to avoid the tremolo sound, but one approach that seems to work is to use complicated ratios between oscillator frequencies, rather than evenly spacing them. This will make the least common multiple of the frequencies quite large, which means a longer time before the sound repeats. Did you try the frequency ratios given in this article? They should work quite well.

  5. Stephane says:

    > It’s important to remember this was the mid-90s, processing power was tight, and running 7 saws for each note sounds pretty expensive. There must have been some trickery at play.

    Exactly… But, instead of investigating a possible trick, you did follow the additive way, adding 7 detuned OSC.

    I’ve been lucky to work and discuss with the designer of the JP-8000. Being close to the engineer team at that time, I’ve been told the secret (under NDA) . Pure genius. You are totally right, at that time, CPU power was too tight. So, they found something clever, so clever. Very creative engineering. Kudos to Roland engineers.

    • Russell says:

      Well, I guess the quest for trance authenticity continues for the rest of us, then. At the very least, the additive saw wave approach mentioned in this article is incredibly computationally cheap and is passable to my ears. I was working from samples rather than a real unit when I wrote this – maybe someday I’ll get a unit and do a more thorough analysis.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>