Done! Thank you :з
So I had one issue with this setup, and it was that it automatically applied the same enhancements to any headphones I plugged into the audio jack. The issue is that they are managed by the same audio device. I managed to solve that by taking advantage of the device-profile, which is shown in EasyEffects, but the GUI doesn’t give you any options to control things based on that… Perhaps this is obvious to some, but here are the steps I took.
First, I saved the enhancements to the speakers as an autoloading preset under the PipeWire tab in EasyEffects.
Next, under the Output tab, I disabled all the enhancements and saved that as a preset ‘Default (EE off)’. You could instead save any headphone enhancements you want to use. I haven’t gotten that far yet!
Then, I opened the directory in which those autoloading presets are saved, $HOME/.config/easyeffects/autoload/output/ and opened the corresponding file in a text editor. This was the file as saved by EasyEffects:
{
"device": "alsa_output.pci-0000_c1_00.6.analog-stereo",
"device-description": "Family 17h/19h HD Audio Controller Analog Stereo",
"device-profile": "analog-output-speaker",
"preset-name": "Best"
}
I just changed the last two lines as desired. Be sure to match the preset name exactly. (I was able to determine which device-profile was needed by running pactl list cards and looking at the Profiles section for the corresponding device.) Here’s the result of my changes:
{
"device": "alsa_output.pci-0000_c1_00.6.analog-stereo",
"device-description": "Family 17h/19h HD Audio Controller Analog Stereo",
"device-profile": "analog-output-headphones",
"preset-name": "Default (EE off)"
}
I saved that as a new .json file with the same name scheme as the others, device:device-profile.json. In my case it turned out as alsa_output.pci-0000_c1_00.6.analog-stereo:analog-output-headphones.json.
That was all it took, the software automatically disables enhancements for my headphones and enables them for speakers now! I’m delighted! I hope this is helpful.
Wow, I was making this way harder than it needed to be. I’m not sure how I didn’t notice, but the EasyEffects UI saves whatever device-profile is active at the time on the device when saving a preset, so it’s easy to save presets separately for headphones and speakers, or other audio devices.
I just tried out the script and in the first try got the error:
cp: Target ‘/home/<user>/.config/easyeffects’: File or Directory not found
So I created the target directory using ‘mkdir’ and ran it again without issues.
Would be nice if you could add that to the script to avoid that extra step.
EDIT: Looking a bit further into this issue I realized, that the reason for this directory missing was the fact, that I hadn’t installed EasyEffects to begin with.
Part of the reason was the absence of clear install instructions though (the rest being me rushing it).
Please provide clear install instructions at the top of your README to avoid such issues for new users to come.
Done :)
Thanks and sorry, I forgot to update my posting after looking further into this issue.
Looks like I didn’t have EasyEffects installed, because I thought the script would do everything needed, so my problem might have been avoided by installing it first. The README was very confusing to me in that regard. It would be advisable, to have a clear quick install instruction section at the top of the README to avoid any misunderstandings.
There is no universal quick install instruction for EasyEffects (there are many distros), so that’s left as an exercise for the reader :)
Still, it would have been helpful to users to mention inside the README, that EasyEffects has to be installed as a requirement.
Would you be willing to publish the repository under an open-source license?
I would like to statically configure this preset on my system via Nix (home-manager), and I have so far published my configuration publicly; for this to be able to include this preset there’d need to be a license that makes it redistributable.
This is just a request, you are free to deny it. I do though consider that it seems there’d be little downside to attaching a free license to the repository.
Since the repository includes code from @gracefu I’d need permission from you, too.
Does this still kill the battery life like crazy when running with it?
np, i’ll bop on the license
edit: done
eeh, dunno. it’s not that bad
I measured this with easyeffects enabled vs disabled and it’s something like an additional 3watts draw (9/10watts from ~5/6watts) at idle on a default f39 install. So it’s pretty appreciable IMNSHO
You could script something up to stop/start easyeffects on state change if that is important to you. I have a simple function I call that does that and kill/start services that I call manually.
Thanks so much for this trove of information.
Does this profile apply to the Framework 16? I figure it is probably pretty similar, but maybe some tweaks are in order because the shape, weight, resonance, etc. are all different.
Thank you!
I have not experienced a significant decrease in battery life.
I am using this on a FW16 and it does improve the sound quality. I have no idea if it could be even better.
@Anselm_Schuler, any chance you could link to your nix config? I’m also a nix user and would love to piggy back off of your setup.