Closed ideoforms closed 1 year ago
Closing as I don't think this is a problem that can be solved elegantly in the general case. Intuitively:
Multiply
with inputs of ASREnvelope
and Constant
should propagate the envelope's STOPPED
stateAdd
with inputs of ASREnvelope
and Constant
should not propagate the envelope's STOPPED
stateSo for state-propagation to be successful and consistent, all Node
s would need to implement a should_propagate_input_state
property. Relatively simple to solve for these basic cases, but gets harder for e.g. feedback delays, which would have to integrate significant logic to figure out when the delay is "finished" (tantamount to DetectSilence
).
The most common gotcha is cases in which an Envelope
have a multiplier or curve applied to them as in the issue description, so a good fix may be to implement a curve
and multiply
parameter across all Envelope
classes.
So that (e.g.)
env = ASREnvelope ** 2
still successfully triggers anauto_free
event, even though its value is aPow
node.