[Fpga-synth] Envelope - linear attack & expo decay/release?
Magnus Danielson
magnus at rubidium.dyndns.org
Sat Apr 4 21:53:26 CEST 2009
Scott Gravenhorst skrev:
> Eric B. wrote:
>> Here's a philosophical question:
>>
>> Last weekend I built an ADSR for my ARM/FPGA synth and it seems to work
>> fine. The thing that's bugging me is that I used linear calculations for
>> the gain, so when doing a long release that last little tail seems to
>> cut off rather abruptly.
>>
>> The obvious solution is to use exponential decay for the release. I know
>> how I'd implement that in hardware (scale the difference between where
>> you are and where you're going by some constant related to the rate &
>> add to current state). Question is, is the exponential curve also
>> appropriate for the attack & decay phases?
>>
>> The ultimate envelope would seem to be one with the option for
>> log/lin/expo curve on each segment, along with variable rate & target.
>> You'd need three parameters to define every segment. Probably too
>> complex, but certainly flexible.
>>
>> Thoughts? What have you tried in the past?
>>
>> Eric
>
> I went back to my GateMan synths and they are linear only ADSRs. They have the same
> "problem" that Eric describes.
>
> My question is: What envelope shapes are most useful?
>
> How much does it matter that A and D are expo?
>
> Would the most useful modification to an ADSR be simply selectable lin/expo for R?
For quick A, D and R it is not so important, but if you reach for longer
stretches, the end-result needs to be more expo at least.
Rolling back to the 80thies, the highly digital SID-chip was fairly easy
to design except for the ADSR for this particular reason. It took some
engineering time to get the envelopes right.
An exponential decay is not too hard to cook up correctly if one pulls
in a multiplier block or performs multiplications using a shift-add
approach, which can easilly be used for the full calculations with some
additional thought put into it. If you think about it, it should not be
too hard to achieve lin/exp as needed.
I think I would need to spend some quality time with paper and pen to
bring it all together, but I am confident that it will not be all that
complex in the end.
Cheers,
Magnus
More information about the Fpga-synth
mailing list