-
Notifications
You must be signed in to change notification settings - Fork 69
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
ADSRNode issues #194
Comments
The approach I used sometimes didn't work, but I managed to set a boolean flag at the end of the release interpolation and use that instead. |
Hi, I'm currently rewriting ADSR and scheduling in order to be able to exactly know the status of a sound versus where it is in its schedule. |
I found a pretty good article on implementing "analogue" adsr filters in c++, is this similar to how you are rewriting the adsr node? He also has a javascript widget that plots the envelope and lets you play with the parameters, and a video on it. |
I did a quick and dirty test of the algorithm from that article and put it into a new adsr node, it sounds pretty good. |
No, that's not the approach I was taking, but I like it :) The aim in a rewrite is to have better behavior in a performance context ~ if you hit a note rapidly, it should gracefully switch into A mode no matter where it was already in the ADSR sequence. So if your new node is "playable" from an instrument, I'm very happy to take it as a PR in preference to my work in progress as I'm not yet satisfied with mine. |
Sure, I just need to clean it up a little.. Do you want me to make a PR with a new node for it, or replace the existing ADSRNode? |
I'm fine with a replacement, thanks! |
Hi,
I'm trying to implement a syntesizer with polyphony, and clean up each voice once the release section of the ADSRNode for that voice has "finished", so that I may free up the resources used by this part of the graph.
I have not found any good way to determine that the envelope is really done, there is a finished method, but this returns true the instant the release part of the envelope begins.
I added another method that seems to work, but if there's already a way to detect this without forking the project I would appreciate some pointers to it :)
the way I tried to fix it was like this:
Also there seems to be no way to have exponential ramps, only linear interpolation between the amplitudes. It is my understanding that ADSR envelopes usually are exponential, and not linear. Is this a feature that is planned for the future?
The text was updated successfully, but these errors were encountered: