Peaks and Sustain level

Hi,
Last weekend I replaced one of my Doepfer A140 ADSR’s with a Peaks. The A140 is analog and has one feature that the Peaks seems to miss at this moment: I can tweak the sustain level when the ADSR is gated. Peaks keeps the sustain level from the trigger moment, and will only refresh after triggering. If there is someone with a firmware hack : I am interested !

Cheers,

Hans

1 Like

@hansh :+1:

I don’t know how I’ve missed this… You’re right, changing the sustain pot whilst a gate is high doesn’t change the sustain level. It only changes on next gate/trigger. This is not ideal and I’m guessing is a bug.

At first I thought it may have been a bug introduced from Peaks v1.1 RC but I tried v1.0 firmware and it does it too. I was going to start a new thread when I found this one.

I think you should be able to change the Sustain level whilst a gate is high as per all other ADSR’s I’ve used.

Steve

This is not a bug but I can change it.

There is a big advantage to this behaviour, and that is that you can tweak the sustain without it affecting the signal, since it will affect the output only when it gets triggered the next time.

I like the behaviour this way. Means when I’m trying to manually control transitions in a patch I can make adjustments for what will happen on the following step/gate. Makes it easy to set things ready to all change together on the next step. Bit like cueing the playback of an ableton live clip and it waiting for the start of the next bar.

I’m the opposite. I don’t find this an advantage. If I have a long gate going to the ADSR I don’t want to wait until next trigger before sustain changes because I might not know when that is or if at all (eg Random / Probability etc) or it could simply be ages until next gate. Blindly (deafly) changing the sustain level in hope that it’ll be correct on next gate doesn’t seem right.

Also, the Attack, Decay and Release portions can be changed (lowered) whilst the envelope is in the respective section so why not Sustain too? Imagine not being able to change Release time until the next envelope cycle and having it too high / maximum.

However, if people like this behavior, maybe leave it as is given it’s the only ADSR (that I know of) which does this. I have other dedicated envelopes to use. Since it’s taken me this long to notice shows I don’t use Peaks as a ADSR often.

:slight_smile:

Steve

Because changing the attack, sustain or release does not have the potential to create any discontinuity (you’re changing a rate, not a level).

Anyway, it’s a very easy change, just one line iirc. Since you’ve built the firmware of your Peaks from source, it shouldn’t be difficult to customize it.

It just occurred to me when this behavior is beneficial. Expert-mode: switching between ADSR1 and ADSR2. The sustain pot may be in a different position to it’s current level.

Nice to know. I might have a look at some stage.

Steve

I take it I should be looking somewhere in
"peaks/modulations/multistage_envelope"?

Yes, something like if (sustained) start_value_ = level_[sustain_point_]; before https://github.com/pichenettes/eurorack/blob/master/peaks/modulations/multistage_envelope.cc#L79

A bit late , but I will explain my typical use of this. As mentioned by others most analogue envelope let you tweak the sustain level while active. I am mostly using this with filter envelopes: There are usually 3 options for tweaking the filter response : cutoff, modulation amount and sustain. I have a preference to use sustain for tweaking as this has less impact on the attack/decay/release behavior. Also returning to “original” value is imho a bit easier. As always: other arguments in the modular world are also valid ones :slight_smile:

Cheers
Hans

I confirm that the line of code above does what it’s supposed to do (tested on Peaks).

Just tried it… works fine. Thanks Olivier. :thumbsup:

Found a bug. (Not caused by the above mod). Minor thing. Changing to Split mode fires both envelopes.