-
Notifications
You must be signed in to change notification settings - Fork 203
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
Cliky Enveloppe #2
Comments
Hi Johann, I'm assuming the amplitude envelope is causing the clicks, though I'm not sure under what settings you are getting this behavior. It would be really helpful if you could save a patch from the standalone app (download at tytel.org/helm) and send it to me at matthewtytel@gmail.com. Then I could give you some better information or fix the problem. Here are some thoughts though: Also, when engine runs out of voices and is not in legato mode, it will kill the oldest voice really quickly (not immediately) and then retrigger the envelopes. I need to test this 'kill time' on different sample rates, so that might be the cause of the clicks. |
Hi Matt, Here is the kind of patch used : http://ibin.co/26MP3PdWM5Nm ( amp attack at 0 ) I have try to reproduce the behaviour in "helm" and putting an attack of 0.03 resolve near all kind of problem I get, and it doesn't change "too much" the character of the sound, so it's great but I have to find why it works on the GUI and not in my case ( my tracker ). So you can close this issue because it doesn't really exist I will reopen it if I am able to produce it with midi gears. I need to understand digging the code why for me, I fall into the "kill oldest voice" problem. I call noteOn(note,velocity) and noteOff(note), getControls().at and in a thread 1. Thank you |
Ah ok cool. If you're using the HelmEngine class, you shouldn't have to worry about killing the voices, should automatically be handled, but you can tweak how long it takes for a voice to be killed by setting the VOICE_KILL_TIME value in mopo/src/common.h. I don't think that's your problem though. Another thing you might run into is that the internal values for envelope time (e.g attack, decay, release) are squared before they are used. So setting attack to a value of 0.1 gives a time of 0.01 secs. That said, if you set the attack to 0.01 directly it will give you an attack time of 0.0001 secs which will definitely click. I know some synths have a 0.01 sec minimum on their attack, but some people want the clicks in their patches so I left a 0 sec minimum. I'm aware this is a little confusing, but these controls need to have linear internal values so we can modulate them with an LFO/Envelope. Then after adding the internal value to all modulations we do whatever scaling/skewing we want. For the attack/decay/release we want more resolution on the smaller time values and less resolution when they're longer. Quadratic scaling works well for this. |
Yes I'm using the HelmEngine because it's the most easy way to plug to. Here is the waveform produce from my code when I do a fast arpegiator on sine wave : http://imagebin.ca/v/26OHKeXkS8sH void init() put the system in a default state So if you see an obvious misunderstanding or misconfiguration from this part on how to use helm engine just tell me. |
I've found my issue. |
Hi Matt,
I have cut the helm engine to put it in my tracker, because this sound engine is really great.
I face an issue with the enveloppe.
When I trig sound really fast I end with clicky enveloppe. I think it is related to the way helm will reset the last used voice.
It is not a problem when you play 3 or 4 leads because you won't notice it. But if you play C2 at 120bpm you can hear it.
So I don't know which fix should be the best. Follow the last used enveloppe or use a free voice.
If I use a free voice I don't keep the monophonic way I want, so I think reused the last voice in a "monophonic" mode may be the best choice.
So any hint on your side should be good.
Regards,
Johann
The text was updated successfully, but these errors were encountered: