Jump to content


Photo

New Tool (2.8-3.1): Padsynth


  • Please log in to reply
100 replies to this topic

#1 drakmaniso

drakmaniso

    Advanced Member

  • Normal Members
  • PipPipPip
  • 102 posts
  • Gender:Not Telling

Posted 26 March 2012 - 18:15

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.co...nth_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:

0_params.png

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

Attached File  PadSynth Note C-4.ogg   107.32KB   607 downloads

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:

1_growth-zero.png

And now with a growth of 1:

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:

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:


Edited by drakmaniso, 16 October 2015 - 17:27.

  • taktik, Conner_Bw, Djeroek and 9 others like this

#2 Djeroek

Djeroek

    Probably More God or Borg Than Human Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 6706 posts
  • Gender:Male
  • Location:Borneo

Posted 26 March 2012 - 18:49

cool! Testing :drummer:

#3 f+d+k

f+d+k

    Big Super GrandMasta Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPip
  • 716 posts
  • Gender:Not Telling
  • Location:On Land
  • Interests:고추장

Posted 26 March 2012 - 21:24

Awesome! :wub:

#4 esaruoho

esaruoho

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 2531 posts
  • Gender:Male
  • Location:Kontula, Helsinki, Finland
  • Interests:// Free Energy // Cymatics // Sound visualization // Sustainable energy production // Apple devices // Tesla Motors //

Posted 26 March 2012 - 22:01

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

| lackluster Website | lackluster on bandcamp | lackluster on facebooklackluster on soundcloud | esaruoho on twitter |

esaruoho@gmail.comesaruoho on reddit | esaruoho on ello | 

| OS X 10.11 El Capitan | Mac Book Pro 2.66 GHz Intel Core 2 Duo / 8GB 1067 MHz DDR3 |

| Latent Impulse Tracker/Scream Tracker 3/Schism Tracker <-> Renoise fanatic |

More API functions, please! ;)

#5 Djeroek

Djeroek

    Probably More God or Borg Than Human Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 6706 posts
  • Gender:Male
  • Location:Borneo

Posted 26 March 2012 - 23:04

Reminds me of zynzilla btw: http://www.renoise.com/tools/zynzilla

#6 drakmaniso

drakmaniso

    Advanced Member

  • Normal Members
  • PipPipPip
  • 102 posts
  • Gender:Not Telling

Posted 27 March 2012 - 07:17

Thanks for the nice comments. :)

i'm hooking this up to a keyboard shortcut right nowww


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

Reminds me of zynzilla btw: http://www.renoise.com/tools/zynzilla


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…


#7 f+d+k

f+d+k

    Big Super GrandMasta Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPip
  • 716 posts
  • Gender:Not Telling
  • Location:On Land
  • Interests:고추장

Posted 27 March 2012 - 09:22

I'll probably get rid of the "Create?" dialog box, this doesn't seem to be the renoise way.

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

#8 esaruoho

esaruoho

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 2531 posts
  • Gender:Male
  • Location:Kontula, Helsinki, Finland
  • Interests:// Free Energy // Cymatics // Sound visualization // Sustainable energy production // Apple devices // Tesla Motors //

Posted 27 March 2012 - 09:27

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

| lackluster Website | lackluster on bandcamp | lackluster on facebooklackluster on soundcloud | esaruoho on twitter |

esaruoho@gmail.comesaruoho on reddit | esaruoho on ello | 

| OS X 10.11 El Capitan | Mac Book Pro 2.66 GHz Intel Core 2 Duo / 8GB 1067 MHz DDR3 |

| Latent Impulse Tracker/Scream Tracker 3/Schism Tracker <-> Renoise fanatic |

More API functions, please! ;)

#9 drakmaniso

drakmaniso

    Advanced Member

  • Normal Members
  • PipPipPip
  • 102 posts
  • Gender:Not Telling

Posted 27 March 2012 - 13:50

New version:

Attached File  org.drakmaniso.Padsynth_Rns280_V0.2.xrnx   13.57KB   243 downloads

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?

#10 drakmaniso

drakmaniso

    Advanced Member

  • Normal Members
  • PipPipPip
  • 102 posts
  • Gender:Not Telling

Posted 28 March 2012 - 17:10

And another new version:

Attached File  org.drakmaniso.Padsynth_Rns280_V0.3.xrnx   15.06KB   213 downloads

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!

#11 Djeroek

Djeroek

    Probably More God or Borg Than Human Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 6706 posts
  • Gender:Male
  • Location:Borneo

Posted 28 March 2012 - 17:14

Cool, will test tonight!

#12 drakmaniso

drakmaniso

    Advanced Member

  • Normal Members
  • PipPipPip
  • 102 posts
  • Gender:Not Telling

Posted 29 March 2012 - 17:41

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:

Attached File  org.drakmaniso.Padsynth_Rns280_V0.4.xrnx   15.67KB   223 downloads

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.
  • Garf and esaruoho like this

#13 esaruoho

esaruoho

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 2531 posts
  • Gender:Male
  • Location:Kontula, Helsinki, Finland
  • Interests:// Free Energy // Cymatics // Sound visualization // Sustainable energy production // Apple devices // Tesla Motors //

Posted 29 March 2012 - 17:50

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

| lackluster Website | lackluster on bandcamp | lackluster on facebooklackluster on soundcloud | esaruoho on twitter |

esaruoho@gmail.comesaruoho on reddit | esaruoho on ello | 

| OS X 10.11 El Capitan | Mac Book Pro 2.66 GHz Intel Core 2 Duo / 8GB 1067 MHz DDR3 |

| Latent Impulse Tracker/Scream Tracker 3/Schism Tracker <-> Renoise fanatic |

More API functions, please! ;)

#14 drakmaniso

drakmaniso

    Advanced Member

  • Normal Members
  • PipPipPip
  • 102 posts
  • Gender:Not Telling

Posted 29 March 2012 - 17:55

it seems rendering takes a bit longer now tho.

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.

im a bit confused about the keyzone thing tho.

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.

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

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

#15 Djeroek

Djeroek

    Probably More God or Borg Than Human Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 6706 posts
  • Gender:Male
  • Location:Borneo

Posted 29 March 2012 - 18:09

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


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:

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 you can ask vV how he worked around the 'Script not responding' notice, using a progress bar in one of his scripts?

http://forum.renoise...post__p__269296

I understand, i have walked the same road when writing the slices to instrument tool. When using the idle notifier to give Renoise some room, this problem got resolved. When adding the progress meter, i also got an insight of frankly how long stuff takes. Thanks to some piece of Taktiks code, i could improve the speed of the process tremendously.
You can choose to work either frame by frame or simply copy a complete range. The first choice is a very poor choice.



#16 esaruoho

esaruoho

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 2531 posts
  • Gender:Male
  • Location:Kontula, Helsinki, Finland
  • Interests:// Free Energy // Cymatics // Sound visualization // Sustainable energy production // Apple devices // Tesla Motors //

Posted 29 March 2012 - 18:11

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.


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

| lackluster Website | lackluster on bandcamp | lackluster on facebooklackluster on soundcloud | esaruoho on twitter |

esaruoho@gmail.comesaruoho on reddit | esaruoho on ello | 

| OS X 10.11 El Capitan | Mac Book Pro 2.66 GHz Intel Core 2 Duo / 8GB 1067 MHz DDR3 |

| Latent Impulse Tracker/Scream Tracker 3/Schism Tracker <-> Renoise fanatic |

More API functions, please! ;)

#17 drakmaniso

drakmaniso

    Advanced Member

  • Normal Members
  • PipPipPip
  • 102 posts
  • Gender:Not Telling

Posted 29 March 2012 - 18:45

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 completely forgot to mention that I updated the first post with an explanation of how the synth works. Hopefully it's comprehensible enough.


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

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.

Edited by drakmaniso, 29 March 2012 - 18:46.


#18 f+d+k

f+d+k

    Big Super GrandMasta Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPip
  • 716 posts
  • Gender:Not Telling
  • Location:On Land
  • Interests:고추장

Posted 29 March 2012 - 18:49

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

#19 drakmaniso

drakmaniso

    Advanced Member

  • Normal Members
  • PipPipPip
  • 102 posts
  • Gender:Not Telling

Posted 29 March 2012 - 20:12

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.

#20 zeitgeber

zeitgeber

    Advanced Member

  • Normal Members
  • PipPipPip
  • 106 posts
  • Gender:Male
  • Location:Rijswijk, The Netherlands

Posted 29 March 2012 - 20:43

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


#21 zeitgeber

zeitgeber

    Advanced Member

  • Normal Members
  • PipPipPip
  • 106 posts
  • Gender:Male
  • Location:Rijswijk, The Netherlands

Posted 29 March 2012 - 21:07

love it, nice job!
I don't hear much difference between the placement types, I can remember making some really strange but beautiful dissonances with zynaddsubfx version of padsynth... not sure though, maybe just me and I need to try this out more carefully.


#22 drakmaniso

drakmaniso

    Advanced Member

  • Normal Members
  • PipPipPip
  • 102 posts
  • Gender:Not Telling

Posted 29 March 2012 - 21:26

Thanks!

In order to have dissonance, for "Multiplied" and "Powered" you need the "Treshold" and "Harmonize" settings at minimum, and set "Amount" to a quite high or low value. This last rotary encoder is logarithmic, not linear, so the values around 0 are for subtle adjustments.

For "Waved", you need to set the period to something above 1, and play with the amount ("Harmonize" still at 0%).

Also, you can check the resulting deformation in the first sample generated (the one named "PadSynth Parameters"), if you use the "Test Note" mode instead of "Keyzones".

I could also implement the same placement methods used in ZynAddSubFx, if you think they are more useful.

Edited by drakmaniso, 29 March 2012 - 21:29.


#23 zeitgeber

zeitgeber

    Advanced Member

  • Normal Members
  • PipPipPip
  • 106 posts
  • Gender:Male
  • Location:Rijswijk, The Netherlands

Posted 29 March 2012 - 21:32

Cool! I'm tweaking around with it now and I'm finding some sweet sounds.. will manage :)

btw I also found another, stranger implementation of padsynth in this application (at least I think it is the same type of algorithm): http://archive.notam...kiv/doc/mammut/

you might find it interesting, very nice for mangling sounds.. dunno how applicable a renoise implementation would be as the CPU usage is pretty steep in comparison, dunno how fast Lua FFT would be..


#24 wahrk

wahrk

    Big GrandDaddy Member

  • Normal Members
  • PipPipPipPipPipPipPipPip
  • 487 posts
  • Gender:Male
  • Location:Austin, Tx
  • Interests:music, computers, language, philosophy, games

Posted 29 March 2012 - 23:03

Neato. I'm gonna play around with this.

#25 drakmaniso

drakmaniso

    Advanced Member

  • Normal Members
  • PipPipPip
  • 102 posts
  • Gender:Not Telling

Posted 30 March 2012 - 02:49

i just wish that both resynth and padsynth would allow for both to run in the same instrument, would be perfect :)

I've made it possible to open PadSynth over an existing (non-padsynth) instrument, but I don't know how to offer this feature to the user. I see two possibilities:

  • Add a new menu entry in the context menu; I don't like this because this menu is already long, and if more synths comes up...
  • Just always add PadSynth over the selected instrument if there is one; this means that to create a completely new instrument, the user will have to delete first the previous one, or select an empty slot.
My preferred solution would #2, but may be that would confusing?

Also, at the moment ReSynth doesn't seem to like if someone add samples after its own, and refuses to open. Someone will have to request this feature to mxb too... :lol:

btw I also found another, stranger implementation of padsynth in this application (at least I think it is the same type of algorithm): http://archive.notam...kiv/doc/mammut/

Nice, I didn't know that one. Will test it.

Edited by drakmaniso, 30 March 2012 - 06:32.