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:

http://dl.dropbox.com/u/4343030/attes_pad_synth_patches.tgz

(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).

Updates:

2 Likes

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: http://www.renoise.com/tools/zynzilla

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.)

Thanks.

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!