New Tool (2.8-3.1): Padsynth

PadSynth is a sample generator that uses the PADsynth algorithm designed by Nasca Octavian Paul. (This is one the three synthesis methods used in the well-known ZynAddSubFX)

As the name implies, the goal of this tool is to generate pads, i.e. long samples perfectly looped, with slight and constant variations in the sound. You can then use Renoise native DSPs for further sound shaping.

You can download the latest version on the tool page.

atte has made a series of very nice patches for this synth, you can download them here:

(They’re normal Renoise instruments, and though they were made with PadSynth you don’t need it to use them.)

Here’s how it looks:

3177 0_params.png

Here’s an example of wavetable generated by the tool:

3169 PadSynth Note C-4.ogg

The idea behind this synth is that you describe the frequency spectrum of a sound, by assigning values to its harmonics (with the 64 vertical sliders). The sound is then generated from this spectrum, but with a twist: a “spread” is applied to the harmonics, so that the sound feels more “natural”, less exact and digital.

There is two main parameters to control this spread: “Bandwidth”, which defines the spread of the first harmonic, and “Growth”, which defines how much the spread grows with higher harmonics. Growth at zero means the spread stay the same for all harmonics; a growth of 1 gives a more natural progression.

For example, here’s the frequency spectrum of a sawtooth waveform, obtain with the parameter “Growth” set at 0:

3178 1_growth-zero.png

And now with a growth of 1:

3179 2_growth-one.png

You’ll notice that the higher harmonics are spread around their frequency; they peak at a lower level to compensate for the increased number of frequencies in the sound (so that energy stay the same).

The second group of parameters are called “Placement”, and control where the harmonics, or more accurately the overtones, are placed in the spectrum. The default is “Harmonic”, so they are integer multiples of the base frequency of the note. With the other placement methods (“Multiplied”, “Powered” and “Waved”) you can deform this ideal placement to obtain less perfectly musical sounds. For example, here’s a “Waved” placement, with a period of 16 and an amount of 0.50:

3180 3_waved.png

This will sound more like a bell than like a musical instrument. You can use the parameter “Harmonize” to shift the overtones toward harmonic positions, to obtain a more usable sound.

In order to produce beautiful pads, you need to have a sample duration of more than one second, and several samples per octave. This can take a long time to generate, that’s why there is a “Test Note” button, which generates only one sample, of a very shorter (0.25 s by default) duration. This is especially useful when you’re making adjustments to an existing sound. This button also has a visual feedback: the sample named “PadSynth Parameters” contains the frequency spectrum corresponding to your parameters (this is how the graphs above were created).

Also note that since you can enter the sample at any point, using the S command in the pattern editor allows some nice variations in the attack of the sound.

Any comments or suggestions are welcomed!

PadSynth uses the LuaFFT library (included in the tool).



cool! Testing :drummer:

Awesome! :wub:

you, sir, are a hero. thank you so very very much.
i’m hooking this up to a keyboard shortcut right nowww

Reminds me of zynzilla btw:

Thanks for the nice comments. :)

This reminds that I forgot to add a keybinding… will be in the next version.

The interface is similar, being both inspired by ZynAddSubFX. But the underlying algorithm is different, and the goal of the synth is different, too.

There’s a few things I’m not sure yet in the GUI:

  • I’ll probably get rid of the “Create?” dialog box, this doesn’t seem to be the renoise way. - I don’t know if I must add more harmonics… 64 seems already a lot, but I clearly can hear a difference with Nasca Octavian Paul reference implementation. - In ZynAddSubFX, the GUI to set up harmonics is way more complex. You can subtract harmonic, change their phase, and use a base function. The thing is, I don’t understand how he’s using this, since it’s not additive synthesis. If anyone has any insight on this… - I’m not sure which other parameters I should/can implement; which ones are the most useful to shape the sound…

Or maybe let the user provide a name for the new instrument in this dialog?

I’d really like to be able to skip the create dialog box. and to have a keyboardshortcut which creates a padsynth :)

New version:

3174 org.drakmaniso.Padsynth_Rns280_V0.2.xrnx

With a few new features:

  • Ability to generate stereo samples: the two channels use the same wavetable, but starting at different points. - Non blocking sample generation: you can now generate long samples at high sample rates without ever seeing the “Script not responding” window - No more dialog, in order to be consistent with other destructive Renoise actions - There’s a keybinding to create/open the synth

Note that for the “non blocking” feature, the generation is still computation heavy and the interface won’t be very responsive. There’s a trade-off here, between UI “responsiveness” and time needed for generation. In order to have a somewhat responsive UI, I need to roughly double the duration of the process. What do you think I should privilege?

And another new version:

3175 org.drakmaniso.Padsynth_Rns280_V0.3.xrnx

Some important features this time:

  • Keyzone mapping: you can now generate several wavetables mapped across the keyboard, which makes the synth much more useful. - New parameters: you can control the growth of the spread applied to the harmonics; you can also control the placement of these harmonics/overtones. - The sliders are now logarithmic, which means it’s easier to finetune the low values. - Experimental: a fake sample is generated in the first slot, that does not contain sound shows the spectrum corresponding to the parameters selected.

This last feature will probably be optional in the future. I figured it could be useful to have some visual feedback on what the various knobs/sliders do, even if it’s not realtime feedback.

I realize that I did not explain how the synth works and what the various parameters do; I’ll try to write a clear explanation for the next version.

Any feedback welcomed!

Cool, will test tonight!

It seems there isn’t much interest for this synth? :(

Is it because everyone is using plugins, or because the sounds produced are not interesting enough? Or the tool too complicated to use?

Anyway, here’s a new version:

3182 org.drakmaniso.Padsynth_Rns280_V0.4.xrnx

The new features are mostly for usability:

  • You can now cancel sample generation - There is now a “Test Note” mode, which allows to quickly generate a short sample; very useful when making adjustments to an already existing sound, to avoid waiting for a full range generation. - There is a new placement method, “Waved”

I hope there isn’t too many bugs, as I will publish this version on the tool page.

awesome, testing 0.4. thanks for adding the shortcut to create a padsynth. nice to see the dialogue gone too :)

it seems rendering takes a bit longer now tho.

i use this daily to see what i could come up with. im a bit confused about the keyzone thing tho.

this waved thing is !!! … this is rapidly becoming the only thing i use in addition to samples and resynth in renoise :)

i for one can’t wait for unison!

a request: could you place the rendered sample as 00 instead of program preset data at 00 and sample at 01? this would help me get directly to seeing what the sample looks like in the sample editor…

Yes, this is due to the “non blocking” feature. Samples are now generated in the background, which avoids seeing the “Script not responding” window. Unfortunately I had to sacrifice a bit of speed for this to work. Also note that I have increased the default generation to 1s. It’s best to use the new “Test Note” mode when looking for a new sound, and then switch to the “Keyzones” mode.

Maybe my choice of words is not the best. This is to generate several samples per octave, instead of one for the full range of notes. The parameters are exactly the same that Renoise uses for the pluggin grabber. The “Test Note” mode is here to bypass the multiple samples generation; this is useful when you have already set up a key range and long duration, but want to make a quick test with new parameters.

Thanks! As there was no bug reports, I assumed it wasn’t used. Nice to know it’s not the case!

Haven’t played with it that much, but it isn’t difficult to use or sound bad at all, have gotten pretty cool results even though it feels a lill random changing the sliders, having no idea what the changes will do to the overall sound. Can take a while generating sounds if you use longer durations and note ranges / step sizes spanning a few octaves, which can be off-putting if you wish to a-b compare the synth on different settings. The test-tone will come in handy in this kind of scenario for sure.

Maybe you can add tool-tips explaining how the different parameters affect the outcome, also for things like the drop-down options in ‘Placement’ (harmonic, multiplied, Powered, Waved)?

I think this tool really starts to shine when you adjust the envelopes in the ‘Instrument Settings’, for example adding a slow attack portion in a volume envelope, use some panning and filtering. Maybe you can take a look at Mxb’s Resynth and use his envelope and arpeggiator tricks for your tool as well? :drummer:

Maybe you can ask vV how he worked around the ‘Script not responding’ notice, using a progress bar in one of his scripts?

ahh, i understand what you mean by keyzone/keyrange now. makes sense. i think this is a really neat synth, i just wish that both resynth and padsynth would allow for both to run in the same instrument, would be perfect :)

I completely forgot to mention that I updated the first post with an explanation of how the synth works. Hopefully it’s comprehensible enough.

From what I read in his post, this is exactly what I do. The only problem is, doing this is a bit slower than blocking the interface. I don’t think there’s a way around that.

@esaruoho : Now that I think about it, “keyrange” is probably a much better name for this feature; I’ll rename it in the next version.

Yeah, I also have a lot of fun with it - you’re doing great work here. (Each of my thoughts on improvement already mentioned by esaruoho and Djeroek.)


As for the improvements requested, I’ll see what I can do for the envelope. I personally prefer to use Renoise graphical editor for this, but I can add an optional ADSR envelope somewhere in the interface. I’ll probably implement the unison feature first, though.

you da man! was asking for this a month ago in this forum… beautiful algorithm. downloading!