-
-
Notifications
You must be signed in to change notification settings - Fork 1k
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
Kicker - Glitch on key off #7225
Comments
If I comment out the line
in
then I get the following output: I assume that there's either a jump with regards to |
Yeah, it looks like one of them lacks the offset. |
I have checked this some more and I think the problem is that
The value of I am not really sure yet if the problem is within Kicker itself or even outside of it. |
To be frank I don't really know that the offset is and I find it insane that every plugin has to juggle around with all these values and has to do all the calculations for itself. Code like that is repeated over and over throughout the code base which gives a large potential for bugs like the one reported here. Ideally the calculations should be implemented correctly in one place and that code should be reused by every plugin. The current state is really ridiculous. |
The tests above were present on a buffer size of 256. The glitch seem to disappear completely at a buffer size of 32. There's a hint of it on the second kick at buffer size 128. |
Hi @zonkmachine, it's definitively related to the buffer size. I think the problem is that the outside "framework code" and Kicker have a different understanding on how many release frames have already been applied on the buffer(s). In my example above the frame size was 256. Kicker applies the release as soon as Smaller buffer sizes just seem to reduce the potential discrepancy because the difference between what the note thinks was applied and what Kicker thinks can at most be the buffer size. In my opinion each plugin should keep track of the state because that's also how it's done in most other plugin formats (VST, CLAP, etc.). With these formats the plugin is only informed that a "(MIDI) Note Off" event has occurred at frame x and it can then interpret this however it wants. In many cases an internal ADSR would be informed to switch to its release stage but it could also do something completely different, e.g. open or close a gate. The assumption of the I assume that LMMS' "strange" architecture where each note is processed independently and where the same note can sound several times is one of the reasons why the known plugin formats are so hard to integrate as "natively" as they are integrated in other DAWs. Ok, I'll end my rant here. 😅 It's just sad because the current architecture, the code that's repeated over and over again, etc. is holding the software back. |
When applying its release stage Kicker did not take the frames before the release into account but instead always applied the release to the full buffer. This potentially lead to a jump in the attenuation values instead of a clean linear decay. See LMMS#7225 for more details.
@zonkmachine: Fixed by #7226. |
When applying its release stage Kicker did not take the frames before the release into account but instead always applied the release to the full buffer. This potentially lead to a jump in the attenuation values instead of a clean linear decay. See #7225 for more details.
System Information
Ubuntu 22.04
LMMS Version(s)
Tested on 1.2.2 up to 71dd300
Bug Summary
Kicker has a glitch around the time where key off is without the envelope engaged. You see a glitch below 2/3 into the sample.
Steps To Reproduce
Project that demonstrates the issue: KickerGlitch.mmp.txt <-- remove .txt
Screenshots / Minimum Reproducible Project
Please search the issue tracker for existing bug reports before submitting your own.
The text was updated successfully, but these errors were encountered: