Page 1 of 1

Minimal Supersaw

Posted: Sun Dec 29, 2019 9:00 am
by AutumnCheney
Hello! This is my first post on this account.

Anyways, what I have to offer is a relatively simple supersaw module for SunVox. It has seven voices, and it comes with a detune controller and a blend controller.

The detune changes the distance between the voices in units of hundredths of a semitone (cents). All of the voices are separated by this value. Unfortunately, the MetaModule lacks quantization for the controllers, so the detune cannot be easily controlled. If you want to set the detune to a certain value, then you will need to multiply this value by 128 and set the controller to the product.

The blend changes the volume of the primary voice and the harmonics. Setting this to zero causes the primary voice to be the only voice, and setting this to its maximum value causes the harmonics to play without the primary voice.

The supersaw also features controllers for the ASR envelopes, as well as waveform and pulsewidth controllers, which allows you to easily access all of the supersaw's default waveforms.

This is all. I intended for this module to be simple, because I wanted to allow the user to apply their own effects. The detune function was difficult to set up, but I was able to do it using multiple LFOs with stacked Amplifiers in order to facilitate signal addition.

I hope you that you like this!

EDIT: I updated the file. I changed the operation of the module based on some suggestions from Logickin, and I also patched some unintended errors.

EDIT: I updated the file again. Queries suggested that I use the MultiCtl's "gain" feature for signal multiplication. I should be done with updating the module.

Re: Minimal Supersaw

Posted: Sun Dec 29, 2019 7:08 pm
by Logickin λ
Wecome to!

I see and test your module, and I think there are some improvement to further simplify the module.
The first thing you can do is to remove the LFO and use the DC offset inside the amplifier instead, since I see you use LFO to create constant DC and using amplifier to regulate the DC constant Signal. Now you can eliminate 6 LFO modules so you can have a less complicated and even more CPU friendly supersaw.

And now let's move on to the sound2ctrl module, it is always a good idea to eliminate them as much as possible since sound2ctrl can have massive CPU usage if using incorrectly. In your set up, the sound2ctrl can also be removed since you can control the finetune using the multiCtrl instead! By connecting multiCtrl to each multiSynth's finetone, and set each minimun and maximun for the parameter you connected, you can control the detune by a single multiCtrl instead of a group of LFO and Sound2Ctrl! Another huge module save!

Another approach for detuning is that you can also chain a number of multisynth in series, like so:


Τhe pitch of the last module is the total sum of the previous modules, so you can have a easier life to configure the maximum and minimum value for each finetune parameter in MultiCtrl.

TLDR: So by using the approach above, you may come up with something like that:

Don't worry, since you are new to the community. You can always learn something interesting and useful in this forum and feel free to ask questions about sunvox and music production tips, so one day you can build a even more impressive stuff! :good:

- Ra [Logickin λ]

Edit 1: typo

Re: Minimal Supersaw

Posted: Mon Dec 30, 2019 4:04 am
by AutumnCheney
Hello! I removed the LFOs and replaced them with Amplifiers, and this does seem to heavily reduce the CPU usage. However, I can't remove the Sound2Ctl modules because of the way that the module works. It works by multiplying a constant DC signal using Amplifiers, which allows the voices of unison to differ by a constant distance. I cannot replicate this with a MultiCtl because I would require a way to multiply controller signals, which the modules are not capable of doing at this time.

I don't think that this matters, because the module already barely uses any CPU. On my budget LG smartphone with a 1.4 Ghz CPU, it only uses about 5%, and I am sure that it would require less resources on more powerful processors. I appreciate your suggestion!

I also updated the file to reflect my changes.

Re: Minimal Supersaw

Posted: Tue Dec 31, 2019 10:51 pm
by queries
You can use the "gain" controller of a MultiCtl to multiply the input ("value" controller) before it gets sent to the outputs. 256 = 1.0, 128 = 0.5, 512 = 2.0, etc.

Re: Minimal Supersaw

Posted: Tue Dec 31, 2019 11:48 pm
by AutumnCheney
Oh! I did not know that I could do that! Thank you for notifying me about that!