Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Filter hangs fully open in some circumstances #5

Closed
polluxsynth opened this issue Mar 22, 2024 · 1 comment
Closed

Filter hangs fully open in some circumstances #5

polluxsynth opened this issue Mar 22, 2024 · 1 comment

Comments

@polluxsynth
Copy link
Owner

When a patch which previously has been working fine is loaded as a 'last state' snapshot in Zynthian, the filter can suddenly open completely after the filter envelope attack time has passed, regardless of the setting of other envelope parameters, or even the filter envelope amount control. After this has happened, the filter in that voice can't be brought back to normality unless the system is rebooted (or the plugin reloaded).

@polluxsynth
Copy link
Owner Author

Since the problem happens even when the filter envelope amount is zero, it must be some form of illegal value that gets past the control and into the filter. The prime suspect is a division in the envelope generator which might result in a division by zero under certain circumstances.

polluxsynth pushed a commit that referenced this issue Mar 22, 2024
If the default values (ADSR mode on, Sustain level zero) are first
loaded, and then a patch setting ADSR mode, depending on which
order the parameters are set, this can result in a
division-by-zero in calculate_sustain_asymptote().

Fix this by recalculating sustain_asymptote before every
usage.

(The envelope code should really be rewritten to avoid
recalculating coef at every phase transition; coefs should
be set when the parameters are set, separately for
each envelope stage).
polluxsynth pushed a commit that referenced this issue Mar 29, 2024
If the default values (ADSR mode on, Sustain level zero) are first
loaded, and then a patch setting ADSR mode, depending on which
order the parameters are set, this can result in a
division-by-zero in calculate_sustain_asymptote().

Fix this by recalculating sustain_asymptote before every
usage.

(The envelope code should really be rewritten to avoid
recalculating coef at every phase transition; coefs should
be set when the parameters are set, separately for
each envelope stage).
polluxsynth pushed a commit that referenced this issue Mar 30, 2024
If the default values (ADSR mode on, Sustain level zero) are first
loaded, and then a patch setting ADSR mode, depending on which
order the parameters are set, this can result in a
division-by-zero in calculate_sustain_asymptote().

Fix this by recalculating sustain_asymptote before every
usage.

(The envelope code should really be rewritten to avoid
recalculating coef at every phase transition; coefs should
be set when the parameters are set, separately for
each envelope stage).
polluxsynth pushed a commit that referenced this issue Apr 2, 2024
If the default values (ADSR mode on, Sustain level zero) are first
loaded, and then a patch setting ADSR mode, depending on which
order the parameters are set, this can result in a
division-by-zero in calculate_sustain_asymptote().

Fix this by recalculating sustain_asymptote before every
usage.

(The envelope code should really be rewritten to avoid
recalculating coef at every phase transition; coefs should
be set when the parameters are set, separately for
each envelope stage).
polluxsynth pushed a commit that referenced this issue Apr 4, 2024
If the default values (ADSR mode on, Sustain level zero) are first
loaded, and then a patch setting ADSR mode, depending on which
order the parameters are set, this can result in a
division-by-zero in calculate_sustain_asymptote().

Fix this by recalculating sustain_asymptote before every
usage.

(The envelope code should really be rewritten to avoid
recalculating coef at every phase transition; coefs should
be set when the parameters are set, separately for
each envelope stage).
polluxsynth pushed a commit that referenced this issue Apr 5, 2024
)

If the default values (ADSR mode on, Sustain level zero) are first
loaded, and then a patch setting ADSR mode, depending on which
order the parameters are set, this can result in a
division-by-zero in calculate_sustain_asymptote().

Fix this by recalculating sustain_asymptote before every
usage.

(The envelope code should really be rewritten to avoid
recalculating coef at every phase transition; coefs should
be set when the parameters are set, separately for
each envelope stage).
polluxsynth pushed a commit that referenced this issue Apr 5, 2024
If the default values (ADSR mode on, Sustain level zero) are first
loaded, and then a patch setting ADSR mode, depending on which
order the parameters are set, this can result in a
division-by-zero in calculate_sustain_asymptote().

Fix this by recalculating sustain_asymptote before every
usage.

(The envelope code should really be rewritten to avoid
recalculating coef at every phase transition; coefs should
be set when the parameters are set, separately for
each envelope stage).
polluxsynth pushed a commit that referenced this issue Apr 7, 2024
If the default values (ADSR mode on, Sustain level zero) are first
loaded, and then a patch setting ADSR mode, depending on which
order the parameters are set, this can result in a
division-by-zero in calculate_sustain_asymptote().

Fix this by recalculating sustain_asymptote before every
usage.

(The envelope code should really be rewritten to avoid
recalculating coef at every phase transition; coefs should
be set when the parameters are set, separately for
each envelope stage).
polluxsynth pushed a commit that referenced this issue Apr 17, 2024
If the default values (ADSR mode on, Sustain level zero) are first
loaded, and then a patch setting ADSR mode, depending on which
order the parameters are set, this can result in a
division-by-zero in calculate_sustain_asymptote().

Fix this by recalculating sustain_asymptote before every
usage.

(The envelope code should really be rewritten to avoid
recalculating coef at every phase transition; coefs should
be set when the parameters are set, separately for
each envelope stage).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant