-
-
Notifications
You must be signed in to change notification settings - Fork 994
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
Refactor Effect processing #7484
Conversation
- Introduce `processImpl` and `sleepImpl` methods, and adapt each effect plugin to use them - Use double for RMS out sum in Compressor and LOMM - Run `checkGate` for GranularPitchShifterEffect - Minor changes to LadspaEffect - Remove dynamic allocations and VLAs from VstEffect's process method - Some minor style/formatting fixes
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should probably remove the gate feature since it seems to generally be problematic for many plugins (as @LostRobotMusic mentioned), though I'm not sure what that would mean for backwards compatibility (maybe the risk is low enough since its rarely used I'm assuming?)
I am planning to remove gate knob as a seperate PR. Informed it because there's chance of conflicts |
Co-authored-by: saker <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Functional review finished.
Outstanding reviews:
- Style review (at least, I did not do it)
- Testing review
When testing, different things should be tested:
- Testing
GranularPitchShifterEffect
- Testing a
LadspaEffect
- Testing a
Lv2Effect
(if the respective comment will be changed) - Trying
VstEffect
with different (very high?) sampleRates
I think there was a suggestion to handle W/D mix and check output level in single place, rather than letting each plugin handles them. This might be in the scope of this PR as well. |
Also, for |
I like that idea, though I'm not sure if it can be easily done while keeping in-place processing of the |
I think all the reviews have been addressed now. I was able to move the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Rework checked, OK from that point of view.
Style checked.
Testing still to be done.
Co-authored-by: Johannes Lorenz <[email protected]>
I see this needs testing. I would be interested. How exactly does one test this? |
@bratpeki This PR shouldn't change anything from a user's perspective, so testing would just involve using effects plugins (LMMS, VST, Ladspa, Lv2) and verifying that they still work as expected. If there are any regressions, it would probably affect the auto-off/gate |
See also #7484 (review) |
Alright, I'll clone it, build it, and use it for a few days, reporting back on any mishaps, if they occur! |
LB302 seems to not produce sound. |
It looks like it doesn't work on master either... strange. Not a bug from this PR fortunately |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm currently looking into the regression reported by @bratpeki that seems to not be from this PR. This PR however looks good to me.
Also, please check if TripleOsc is louder than before. It could also be unrelated to this PR, of course! |
@bratpeki This PR doesn't affect any of the instrument plugins so you don't need to test them |
LADSPA works great, LV2 has also been tested, I'll look at some LinuxVSTs as well! |
I have done tested a few AirWindows LinuxVST plugins, and they sound perfectly fine! I've tested the audio with Air, Chorus, StereoChorus, ADClip, and a few other plugins from the suite. I've left a somewhat detailed report and question on the Discord server. In any case, the audio sounds just fine, so this LGTM, but I'll leave it to you. Please let me know if you would like me to conduct any more testing on this! |
@bratpeki Thank you very much for testing! I'll look into what you mentioned on Discord, though I imagine it won't be an issue. |
Co-authored-by: saker <[email protected]>
…-process-wrapper
I couldn't find anything in the VST changes made by this PR that could explain the minor phase difference between this PR and master in the renders Peki shared on Discord. With everything else in the testing looking fine, and with 2 approvals, I think this is ready to merge. |
All LMMS effects share some identical boilerplate code at the beginning and end of their process loop, such as an early return if the effect is not enabled and calling the
checkGate
method, but these tasks should not be the plugin developer's responsibility. So I created a wrapper method that handles these tasks and simplifies the process method for all effect plugins.And along the way, I also made a few other minor changes.
Changes made:
processImpl
andprocessBypassedImpl
methods, and adapt each effectplugin to use them
checkGate
calls to theprocessAudioBuffer
wrapper methoddouble
instead offloat
for RMS out sumcheckGate
now runs for GranularPitchShifterEffect