DAHDSR envelope patch uploaded
-
bsork
- Site Admin
- Posts: 1334
- Location: Asker, Norway
I've uploaded an envelope patch anyone intereset can try if they want:
http://www.sensomusic.com/forums/upload ... DAHDSR.pat
I will eventually put it into the add-ons, but I wouldn't mind any comments or bug reports before I do.
A short description: I've added a delay time and a hold time part to the normal ADSR envelope. It's also possible to have exponential or logarithmic curves on the attack, decay and release segments.
I've also added a couple of extra outputs that might come in handy once in a while. The segment output shows the current part of the envelope (0=stopped, 1 = delay, 2=attack, 3=hold, 4=decay, 5=sustaining, 6=release), while the pos output shows the progress from the gate is on and the delay segment starts at 0, up to the release segment ends at 1.
I've done quite a bit of testing, and as long as you don't mess to much with the time parameters while the envelope plays, it seem to work fine. Modulating the sustain level when playing should work fine.
http://www.sensomusic.com/forums/upload ... DAHDSR.pat
I will eventually put it into the add-ons, but I wouldn't mind any comments or bug reports before I do.
A short description: I've added a delay time and a hold time part to the normal ADSR envelope. It's also possible to have exponential or logarithmic curves on the attack, decay and release segments.
I've also added a couple of extra outputs that might come in handy once in a while. The segment output shows the current part of the envelope (0=stopped, 1 = delay, 2=attack, 3=hold, 4=decay, 5=sustaining, 6=release), while the pos output shows the progress from the gate is on and the delay segment starts at 0, up to the release segment ends at 1.
I've done quite a bit of testing, and as long as you don't mess to much with the time parameters while the envelope plays, it seem to work fine. Modulating the sustain level when playing should work fine.
Bjørn S
- nay-seven
- Site Admin
- Posts: 5684
- Location: rennes France
- Contact:
great, I 'll test that! ( think to an example patch for newbie when you add it as add-on )
-
multiphone
- Member
- Posts: 303
- Contact:
Thanks Bsork !
Very Nice.
Best
Very Nice.
Best
-
headphoner
- Member
- Posts: 225
Hi,
Very useful
It's allready in my patches.
Very useful
It's allready in my patches.
- senso
- Site Admin
- Posts: 4434
- Location: France
- Contact:
well done+++
Olivier Sens
www.brainmodular.com
www.brainmodular.com
-
headphoner
- Member
- Posts: 225
Hi bsork,
No bugs for the moment, it works very well.
No bugs for the moment, it works very well.
-
bsork
- Site Admin
- Posts: 1334
- Location: Asker, Norway
I've uploaded a slightly improved version: http://www.sensomusic.com/forums/upload ... AHDSR2.pat
There are two changes:
- The segment now outputs the position within each part of the envelope, so for instance the attack part goes from 2.0 to 2.9999...To get the same values as before, use a Trunc module.Obviously stopped=0 and sustaining=5 are as before. You could for example use for send only the attack or the release part of a sound to a delay, or start some other modulations when reaching the sustain point, without the need for a lot of extra logic or a whole extra EG.
- A new parameter: legato with three choices: off/retrig, keep time, and catch level.
- - off/retrig is the old behaviour, where the attack always starts from 0.
- - keep time will - if the release hasn't finished - start from the current value and use the full attack time to reach 1.
- - catch level (any suggestions for a better name?) will - if the release hasn't finished - find out where in the attack part the level is the same as the current value and continue the attack from there.
keep time and catch level don't work when delay > 0, as I couldn't find a way to incorporate that which made sense... If someone has some suggestions, bring them on.
---
Making this has made me wonder why the ADSR envelopes are still the norm on most software synths, as the inclusion of a Delay and a Hold doesn't really take much programming. In fact, those two are the simplest parts to code (for me, anyway). Granted, a delay at the start of the envelope is mostly not what you would use when controlling the volume envelope, but when using an EG to control eg the intensity or rate of tremolo or vibrato it can come in handy. A Hold part can be nice when you want to give a little extra punch to the attack of some sounds, as well as retaining the transient portion of samples. I'm sure, though, that a lot of the ADSRs out there have something of this built in; especially when it comes to emulations of hardware synths where there really should be some shaping of the curves as well as little bit of Hold before the decay sets in. But why not give the user control over the parameters? At least when not creating an emulation.
There are two changes:
- The segment now outputs the position within each part of the envelope, so for instance the attack part goes from 2.0 to 2.9999...To get the same values as before, use a Trunc module.Obviously stopped=0 and sustaining=5 are as before. You could for example use for send only the attack or the release part of a sound to a delay, or start some other modulations when reaching the sustain point, without the need for a lot of extra logic or a whole extra EG.
- A new parameter: legato with three choices: off/retrig, keep time, and catch level.
- - off/retrig is the old behaviour, where the attack always starts from 0.
- - keep time will - if the release hasn't finished - start from the current value and use the full attack time to reach 1.
- - catch level (any suggestions for a better name?) will - if the release hasn't finished - find out where in the attack part the level is the same as the current value and continue the attack from there.
keep time and catch level don't work when delay > 0, as I couldn't find a way to incorporate that which made sense... If someone has some suggestions, bring them on.
---
Making this has made me wonder why the ADSR envelopes are still the norm on most software synths, as the inclusion of a Delay and a Hold doesn't really take much programming. In fact, those two are the simplest parts to code (for me, anyway). Granted, a delay at the start of the envelope is mostly not what you would use when controlling the volume envelope, but when using an EG to control eg the intensity or rate of tremolo or vibrato it can come in handy. A Hold part can be nice when you want to give a little extra punch to the attack of some sounds, as well as retaining the transient portion of samples. I'm sure, though, that a lot of the ADSRs out there have something of this built in; especially when it comes to emulations of hardware synths where there really should be some shaping of the curves as well as little bit of Hold before the decay sets in. But why not give the user control over the parameters? At least when not creating an emulation.
Bjørn S
- nay-seven
- Site Admin
- Posts: 5684
- Location: rennes France
- Contact:
Thanks a lot Bsork !
-
Floego
- Member
- Posts: 319
- Location: Venezuela
Great patch bsork!
I would like to ask the possibility to use a button rather than a switch gate for the triggering of the envelope, as the adsr, asr patches (the ones bundled with usine) do.
I would like to ask the possibility to use a button rather than a switch gate for the triggering of the envelope, as the adsr, asr patches (the ones bundled with usine) do.
-
bsork
- Site Admin
- Posts: 1334
- Location: Asker, Norway
"One-shot" EGs like that is so easy to create using a PointsCurve module (like in the ADSR patch) that I I decided not to bother. But I'm still not finished with my EG "obsession", so I will have that in the back of my mind when creating new, expanded versions.Floego wrote:Great patch bsork!
I would like to ask the possibility to use a button rather than a switch gate for the triggering of the envelope, as the adsr, asr patches (the ones bundled with usine) do.
Bjørn S
-
bsork
- Site Admin
- Posts: 1334
- Location: Asker, Norway
@floego
I was thinking a little more around your question, and I think it wouldn't be to difficult to add a one-shot option without messing with the script. However, the sustain length might pose some problems. I'll see what I can come up with, and incorporate it in v3, which will have something similar to the legato, but for the release. Maybe tonight, or sometime next week.
I was thinking a little more around your question, and I think it wouldn't be to difficult to add a one-shot option without messing with the script. However, the sustain length might pose some problems. I'll see what I can come up with, and incorporate it in v3, which will have something similar to the legato, but for the release. Maybe tonight, or sometime next week.
Bjørn S
-
Floego
- Member
- Posts: 319
- Location: Venezuela
Thank you bsork!bsork wrote:@floego
I was thinking a little more around your question, and I think it wouldn't be to difficult to add a one-shot option without messing with the script. However, the sustain length might pose some problems. I'll see what I can come up with, and incorporate it in v3, which will have something similar to the legato, but for the release. Maybe tonight, or sometime next week.
-
bsork
- Site Admin
- Posts: 1334
- Location: Asker, Norway
And here's version 3: http://www.sensomusic.com/forums/upload ... AHDSR3.pat
The legato parameter has been renamed to attack mode, and another has been added: release mode. I have also changed the naming of the values to retrigger, constant time, and constant rate. The attack mode has all three, while the release mode has the last two.
These changes goes for both the script and the patch, while in the patch I've added a choice between gate mode (as before), and a trig mode where the gate is controlled with a play and a stop button, while the length of the sustain time can be controlled with a fader unless the stop button has been triggered.
The legato parameter has been renamed to attack mode, and another has been added: release mode. I have also changed the naming of the values to retrigger, constant time, and constant rate. The attack mode has all three, while the release mode has the last two.
These changes goes for both the script and the patch, while in the patch I've added a choice between gate mode (as before), and a trig mode where the gate is controlled with a play and a stop button, while the length of the sustain time can be controlled with a fader unless the stop button has been triggered.
Bjørn S
-
Floego
- Member
- Posts: 319
- Location: Venezuela
Thanks for the new version and the trigger mode ! 
I find the HOLD part very useful for percussive sounds.
How does the knobs adjust the curves? from log to exponential or viceversa?
I'll have to explore your patch a bit more, it owns many alternative ways to control a sound.
I find the HOLD part very useful for percussive sounds.
How does the knobs adjust the curves? from log to exponential or viceversa?
I'll have to explore your patch a bit more, it owns many alternative ways to control a sound.
-
bsork
- Site Admin
- Posts: 1334
- Location: Asker, Norway
I'm not quite sure what you should call the curves, actually. I'm using a power function: result = power(x, curve) where curve = 1 is linear.
The best way to check what's happening is connecting an Oscilloscope to the out parameter. That's what I've been using.
I agree on the Hold function. I have no evidence of this whatsoever, but I think it's more often used in samplers than synths to keep the original sound's transient more or less untouched by volume or filter modulations. I also have a vague memory of reading a test years ago of why classic synth X was "fat" while classic Y was "punchy", etc, and I remember that one of them had more punch just because the ADSR had a built-in Hold - but design or not. Not surprising - after all it's not far what happens with limiting or compressing.
Coming up next is modulation of the parameters. Am I being obsessed with EGs? :rolleyes:
The best way to check what's happening is connecting an Oscilloscope to the out parameter. That's what I've been using.
I agree on the Hold function. I have no evidence of this whatsoever, but I think it's more often used in samplers than synths to keep the original sound's transient more or less untouched by volume or filter modulations. I also have a vague memory of reading a test years ago of why classic synth X was "fat" while classic Y was "punchy", etc, and I remember that one of them had more punch just because the ADSR had a built-in Hold - but design or not. Not surprising - after all it's not far what happens with limiting or compressing.
Coming up next is modulation of the parameters. Am I being obsessed with EGs? :rolleyes:
Bjørn S
-
multiphone
- Member
- Posts: 303
- Contact:
Hello Bsork,
Brillant and essential !!
Thanks for the "trig mode" !!!
Perhaps one last entry the script would be the total duration of the envelope? It could well define the envelope of a sound based on its total length ?
Best
Brillant and essential !!
Thanks for the "trig mode" !!!
Perhaps one last entry the script would be the total duration of the envelope? It could well define the envelope of a sound based on its total length ?
Best
-
multiphone
- Member
- Posts: 303
- Contact:
Hello Bsork,
Yes, sorry if i'ts not realy clear.
Yes i mean total elapsed time.
For example if the duration of the sound are not the same each time, il you need a 100ms, real elapsed time of the first envelope and 150 ms of the second one an 90ms for the third one.
Best
Of course the addition of all components gives the total duration of the envelope Delay + Attack + Hold + Dec + Rel = Tolal Duration for data out is easy but for data entry ?
Best
Yes, sorry if i'ts not realy clear.
Yes i mean total elapsed time.
For example if the duration of the sound are not the same each time, il you need a 100ms, real elapsed time of the first envelope and 150 ms of the second one an 90ms for the third one.
Best
Of course the addition of all components gives the total duration of the envelope Delay + Attack + Hold + Dec + Rel = Tolal Duration for data out is easy but for data entry ?
Best
-
bsork
- Site Admin
- Posts: 1334
- Location: Asker, Norway
Been busy, and it will take some time before I have complete version with modulation ready, so in the meantime, here's v4 with an "elapsed time" ouput: http://www.sensomusic.com/forums/upload ... AHDSR4.pat
Bjørn S
-
multiphone
- Member
- Posts: 303
- Contact:
Hello Bsork,
Thanks for this new version !
I will test it in a situation quickly.
Best
Thanks for this new version !
I will test it in a situation quickly.
Best
