Home | ER-101 | ER-102 | ER-301 | Wiki | Contact

Rave Tool Custom Units - JP-80XX Super Saw

#1

After getting my feet wet with some west coast synthesis custom units, I’ve gone back to my usual realm of sonic exploration, which is making early rave inspired dance music.

Currently I’ve got the JP-80XX Super Saw emulated very closely, and I’m just finishing up the Alpha Juno PWM saw waveform which is used in the (in)famous Hoover/Mentasm sound.

Here’s a demo of the super saw sound running a simple sequence. No post processing.
Starts with single oscillator, fades to full mix with no detune, detune sweep from 0-1, then just some messing with parameters.

For the Super Saw unit, I relied heavily on this thesis, which has an extremely thorough empirical analysis of the synthesis of the Super Saw on the original Roland JP-80XX synths.
Converting the plotted curves for the Mix and Detune levels to a useable form was quite a process. I traced the curves as SVGs in Inkscape, loaded them into a program called Rabiscoscopio to convert them to WAV files, and then used Audacity to scale/offset them.

47%20PM
47%20PM

These two WAV files were then loaded into Sample Scanner units to work as transfer functions for the “Mix” and “Detune” controls. The sound of this unit is one of the closest approximations of the original Super Saw I’ve ever heard, and the 301 is much more portable than a massive JP-8080 or JP-8000.

Here’s the custom unit 80XX Super Saw Custom Unit.zip (12.2 KB)

The Alpha Juno PWM Saw will be uploaded when I get a chance to A/B it with my real Alpha Juno. I can’t seem to get the phase of the PWM to match up with the Sawtooth very well, and I’d like to see if it makes a noticeable difference before posting it.

22 Likes

#2

Sounds awesome!

1 Like

#3

Super!! :smiley:

1 Like

#4

Wow, that sounds great!

Thanks for sharing the details on how you went about modeling this. Those are some very interesting techniques.

1 Like

#5

really nice thx for uploading and explaining the process

1 Like

#6

Really awesome job, and nice write up! Thank you @Drillionaire!

Surely it would be nice for people making emulations if there was an easier way to make a custom transfer function, I really admire your ingenuity with the .wav and sample scanners there!

There’s something so special about that JP supersaw. I don’t have my JP8080 any more (perhaps sadly) to compare with more recent emulations, but I think this one sounds really great.

As an aside, while it may not be cool to admit it, I do have both System-1 and System-1m for poly stuff, and they have a great sounding super saw. But neither of them are anywhere near fitting in 30HP :smile:

John

1 Like

#7

can’t wait to try this… very cool

1 Like

#8

Hey, I have been trying to install these custom units with no luck. Can someone point me to a source where it explains the install/setup procedure. It would be very much appreciated and yes ,I have already used the search function but could not find the guide.

Thanks!

0 Likes

#9

There is no installation procedure, rather you select the *.unit file and load the preset via the unit insertion screen:

In the Unit Insertion screen, press S3 to enter the file browser:
0044

Navigate to the location on the SD card where you copied the *.unit file, highlight it and press ENTER:
0045

The newly loaded and populated custom unit:
0046

If there are additional requirements specific to the custom unit (such as samples that need to be placed in specific places) then the custom unit designer will typically include those instructions in the post or a readme.txt file.

2 Likes

#10

Thanks for that speedy reply! I attempted to load it and had the samples as specified but I wasn’t seeing that screen…I’ll try again tonight and hopefully it was just a step I missed…by the way is a firmware update necessary for these customs units if they were created on a previous fw?

Thanks again!

0 Likes

#11

This preset requires at least 0.4.xx firmware.

If you ever want to figure that out for yourself, you can open the preset file in a text editor and look at the first couple of lines:

-- Persistent Data
local shared = {
{};
} -- shared
shared[1]["SimpleString"] = "0.4.11";
shared[1]["Major"] = 0;
shared[1]["Patch"] = 0;
shared[1]["Status"] = "unstable";
shared[1]["Minor"] = 4;
shared[1]["Name"] = "Fennel (48kHz, 128smps)";
shared[1]["Build"] = 11;
shared[1]["String"] = "0.4.11 (unstable)";
3 Likes

#12

This is absolutely brilliant thank you! Fascinating read as well.

1 Like

#13

Thanks Brian, this clears it up for me.

0 Likes

#14

super cool unit ! you rule ! thx a lot !!

1 Like

#16

wow! this sounds great!!! thanks for sharing! the process documentation is of great value too!!!

1 Like