easyeffects icon indicating copy to clipboard operation
easyeffects copied to clipboard

enhancement: effects reactive to speaker volume

Open marcelohdez opened this issue 1 year ago • 5 comments

Hello, easyeffects is a great program which I use to make my speakers not sound completely horrible compared to my Macbook Air on my Framework 13.

However, Macbooks and other small speakers (AirPods, Pixel Buds Pro) use adaptive EQ's where they boost bass and treble on lower volumes to encourage lower volume listening and a fuller sound, due to how we hear sound, following the Fletcher–Munson curves.

Example: Macbook Air 2024 frequency response graph on RTINGS, here the frequencies below about 800hz stay the same volume as the speakers get louder, however the frequencies above that are all boosted.

I was wondering if there'd be any way a similar effect could be emulated with EasyEffects, even if it is just on the EQ plugin, like "from" and "to" sections which could be interpolated as speaker volume goes from 0% to 100%

marcelohdez avatar Dec 27 '24 23:12 marcelohdez

The loudness plugin available on EasyEffects process audio based on the Loudness curves. You can even select different ones. But may just using the autogain is enough. IT will depend on your hardware and your needs.

wwmm avatar Dec 28 '24 00:12 wwmm

Without having access to the code being used on Mac it is hard to say if it is possible to completely replicate its behavior. But with the plugins already available on EasyEffects it should be possible to get close to it.

wwmm avatar Dec 28 '24 00:12 wwmm

Hey! thanks for the reply, the loudness plugin is basically what I'm looking for, however it does not react to speaker volume but instead to a set output volume setting, is there a way to automate that with the system volume?

marcelohdez avatar Feb 03 '25 23:02 marcelohdez

however it does not react to speaker volume but instead to a set output volume setting, is there a way to automate that with the system volume?

Not at this moment. This kind of integration is hard to do. First because the loudness plugin output volume control would have to become the system volume control. Second because having more than one instance of the loudness plugin in our pipeline is a valid use case. So there is the issue about how to decide which one would become the system volume.

wwmm avatar Feb 04 '25 00:02 wwmm

A slightly less correct but much easier solution could be applying a post-gain after the loudness plugin that is the reverse of its' gain reduction, as audio is not clipped between nodes, only at the device output. The only thing required from EE would be allowing to link the gain parameters to the system volume, or the inverse of it, and maybe making sure the volume is applied correctly after preset changes.

stashymane avatar Mar 21 '25 11:03 stashymane