Skip to content
This repository has been archived by the owner on Sep 16, 2021. It is now read-only.

ADSR Slow-Attack #138

Open
Fire-wood opened this issue Nov 3, 2018 · 2 comments
Open

ADSR Slow-Attack #138

Fire-wood opened this issue Nov 3, 2018 · 2 comments
Labels
editor Issues related to the graphical editor library Issues related to the builtin module library

Comments

@Fire-wood
Copy link
Member

Using the ADSR graph to create sounds with a slow attack causes issues when playing sounds, as it will currently play through the whole graph when a key is pressed regardless of how long it is held (until it reaches the sustain point) instead of moving to it's equivalent volume after the sustain once the key is no longer held.

@Fire-wood Fire-wood added the editor Issues related to the graphical editor label Nov 3, 2018
@cpdt cpdt added the library Issues related to the builtin module library label Nov 3, 2018
@cpdt
Copy link
Member

cpdt commented Nov 3, 2018

So what we call the "ADSR" module is just a curve that has a few stop points - there's no way for it to return to the regular volume when the key is released if it hasn't reached the sustain point at the moment. This isn't the normal behavior, obviously.

I'm not sure what to do about this, other than saying that it doesn't have the expected behaviour, and the "Attack/Release" module is probably more useful there (although it doesn't have a separate sustain). Perhaps rename the "ADSR" one to "Envelope" and add an ADSR one that has the expected behaviour? I'm open to suggestions.

@Fire-wood
Copy link
Member Author

The simplest solution to achieve ADSR would be to implement the controls from 3x Osc - Attack, A-Tension, A-Hold, Decay, D-Tension, Sustain, Release, R-Tension (as the Attack/Release node). While this solution restricts how creative you can get with volume envelopes, it should be sufficient for most of the synths being envisioned.

A 'hacky' alternative would be to add 'Jump Tags' - namely if the time slider hits a jump tag, and the current gate/active value matches it, the time slider jumps its equivalent tag somewhere else on the graph (probably add the rule where the second tag must be after the first to avoid infinite loops). This would allow the possibility to manually find the likely spots that a synth key will be released and ADSR can be achieved that way (pretty dodgy and user-inefficient, but technically do-able).

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
editor Issues related to the graphical editor library Issues related to the builtin module library
Projects
None yet
Development

No branches or pull requests

2 participants