-
Notifications
You must be signed in to change notification settings - Fork 2.2k
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
Real-time-capable limiter #6305
Comments
....what about "porting" existing opensource ones ? Some examples:
EDIT: Hope that inspires. |
Flattered, but I don't recommend my SafetyLimiter -- I've found cases where it sounds bad. Designing a good brickwall limiter is pretty challenging, it turns out. |
Great resource, @forart, thank you very much! I haven't looked at all the referred repos in depth, but it looks indeed like a gold mine of inspiration. |
Well, that's why the HyMPS project exists: stimulate collaborations/knowledge-exchange between open source developers to favor their projects/softwares mutual evolution.
AAYSR (ask and you shall receive): just added this interesting @DanielRudrich's resource to brand new AUDIO \ Effects \ General subsection ! EDIT:
Well, although it's starting to get pretty meaty, consider that actually I'm (manually) maintaining/expanding/revising the whole HyMPS project alone: of course (constructive) contributions are always welcomed ! Happy coding ! |
It's definitely not just a limiter. Either under "multi" or "compressing". |
How about Dynamics? Thanks for adding it to your list! |
I ported starfish limiter to C++ a while ago, the code is lying around somewhere if anybody wants it |
I can't recommend my Simple Cython Limiter, either. It was written more of a demonstration of Cython than a good limiter. |
My cylimiter is based on @bastibe implementation, just rewritten to C++, a bit more optimized, wrapped to Python and PyPI packaged. It works well for machine learning applications and managing gain for speech ML model inputs and outputs but it hasn’t been evaluated for quality on music. |
The code use in https://github.com/x42/sound-gambit is a somewhat cleaner version of what is used https://x42-plugins.com/x42/x42-limiter as well as Ardour's LUFS normalization during export (https://github.com/Ardour/ardour/blob/master/libs/audiographer/private/limiter/limiter.cc). It is based on Fons Adriansens DPL-1 with the addition of true-peak support. It is close to audibly transparent, works very well for music and does not allow a single sample above the threshold. You don't have to take my word for it. Since audacity supports LV2 plugins you can already use it today and evaluate it. |
Interesting, I wasn't planning on adding a true-peak feature, but this makes it tempting. |
It is unrelated to true-peak detection. Details on phase rorationI should not have mentioned it since it's a feature common to pro audio limiters. e.g. u-he's presswerk has an option for this.Phase rotation is about altering the waveform shape but not the perceived sound [1]. It originated in FM broadcast to help make asymmetrical waveforms more symmetrical, which allows more gain before clipping. These days phase rotation circuits are used during mastering to increase headroom. In case of x42-limiter it is a side-effect of how the DSP works. Rotating the phase of the resulting signal will always only increase the signal level. -- [1] specifically it is a phase shift, where different components of the signal are delayed differently depending on their frequency. |
Tested |
Your idea
A limiter is an essential component in a mastering chain to reduce severeness of clipping.
Add a limiter to Audacity's built-in real-time effects. If appropriate, design it so that it can also be used as compressor.
Stretch goal: make it configurable for extra smoothness and classical music, in a Chris's compressor style.
Problem to be solved
Also, Audacity lacks real-time limiter and compressor, although these are essential to mastering.
Stretch goal would also resolve #2397.
Prior art
No response
Additional context
No response
The text was updated successfully, but these errors were encountered: