在openSUSE Tumbleweed上使用EasyEffects调整音效

我这是个双系统,之前在windows10上面已经可以用equalizerapo这个软件来调整音效了,效果非常不错。

现在有个问题是我经常需要切到opensuse下面做一些事情,在这个系统上面听歌的话,效果和windows10比起来是真的拉跨,太难受了。。

所以就想办法在这个系统上也把音效调整一下,搜了一下发现可以用easyeffects这个软件,这篇文章就记录一下配置过程。

一开始我就掉到一个坑里面去了,我以为直接像这样安装一下就能用了:

sudo zypper in easyeffects

结果装好后发现这个软件里面找不到音频设备,然后又搜索了一下发现这个软件是基于pipewire的,而opensuse上面默认使用的音频服务是pulseaudio。所以要用这个软件的话得把pulseaudio切换到pipewire。

实际上到这里我也了解到这个软件原先的名字叫pulseeffects,这是它之前的旧版本。在opensuse上面也可以安装这个旧版本来支持pulseaudio,这样就不用切换到pipewire了:

sudo zypper in pulseeffects

但是我秉着用新不用旧的原则就没有装这个旧版本,我还是决定切换到用pipewire。切换到pipewire需要安装这三个包:pipewire/pipewire-pulseaudio/pipewire-alsa。

我使用了下面的命令安装了pipewire相关的包,没有安装pipewire这个包的原因是我发现我的系统上已经装过了:

sudo zypper in pipewire-pulseaudio
sudo zypper in pipewire-alsa

我检查包之间的依赖关系发现应该是当时装easyeffects的时候自动安装了pipewire这个包,这样就掉进了第二个坑。

在安装这两个包的时候zypper一直提示依赖有问题,我就按照提示把这两个包的厂商都改为packman了,也就是通过packman来安装这两个包。

装好后打开easyeffects能用了,我也用了一会儿,但是后面发现我装的这几个有关pipewire的包版本和依赖都对不上号。。

有的是来自oss源的,有的是来自packman源的,我就想着弄成统一的,因为这样乱七八糟的话以后dup的时候容易出问题,所以我执行了下面的命令:

sudo zypper in --from packman pipewire

然后我记不太清了,好像是安装这个包重启后还是在一次dup重启后,系统的声音就挂了。。

和pipewire相关的包现在已经全部用的是packman源里面的了,但是系统没有任何声音。很明显这是packman源里面的pipewire有问题,所以我卸载了所有和pipewire相关的包:

sudo zypper rm -u pipewire
sudo zypper rm -u pipewire-pulseaudio
sudo zypper rm -u pipewire-alsa

这里又掉进了一个坑,我不知道为啥latte-dock这个包会和pipewire的这几个包有依赖关系,在卸载这几个包的时候,把我的dock栏也给卸载没了。。

之后我又重新装回了latte-dock,安装的时候发现latte-dock和pipewire-pulseaudio有依赖关系:

sudo zypper in latte-dock

但问题来了,装latte-dock又重新装回了packman源里面的pipewire-pulseaudio,这样解决不了问题啊。。所以我再次把latte-dock给卸载了,同时把之前安装的easyeffects也一并卸载了

sudo zypper rm -u latte-dock
sudo zypper rm -u easyeffects

此时我突然意识到,应该是软件源的优先级出了问题。我的packman源优先级比oss源的优先级高,所以安装pipewire-pulseaudio这些包的时候都是通过packman源来安装的。但是easyeffects这个软件是从oss源里面装的,它依赖的pipewire也是从oss源装的,这样就导致了依赖关系不对。

所以要解决的话,就很简单了,把packman源的优先级调低,让zypper默认从oss源里面来装pipewire-pulseaudio这些包。

查看oss源和packman源的优先级:

sudo zypper lr -P

我看到oss的优先级是默认的99,而packman的优先级是90,所以现在我把packman的优先级改为100:

sudo zypper mr -p 100 packman

再重新安装回latte-dock:

sudo zypper in latte-dock

这次我看到latte-dock的依赖关系也随着软件源优先级的改变而改变了,这次安装latte-dock不会装pipewire-pulseaudio这些包了,这次它装回了系统默认的pulseaudio。。

重启后,系统的声音恢复了。现在再把pipewire和easyeffects装回来:

sudo zypper in pipewire pipewire-pulseaudio pipewire-alsa
sudo zypper in easyeffects

再次重启后,查看pipewire相关的服务,确保没有错误且是已经启动的状态:

systemctl --user status pipewire.service
systemctl --user status pipewire-media-session.service
systemctl --user status pipewire-pulse.service

然后检查pipewire是否已经替换pulseaudio:

pactl info

正常情况下Server Name后面会有下面的输出:

......
User Name: imlala
Host Name: Moonbridge
Server Name: PulseAudio (on PipeWire 0.3.39)
Server Version: 15.0.0
......

现在就完全正常了。总结一下本次发生的问题我认为是多个因素导致的。

首先是我自己的软件源优先级设置有问题,但是packman的优先级我当初添加这个源的时候命令是直接用的官方的,官方的wiki上面都是给的90的优先级,谁会去注意这么个小的细节。。

其次是给easyeffects打包的维护者,我觉得他这个包依赖关系处理有问题。你要么就不依赖pipewire这个包,让用户自己手动去装,要么就把pipewire/pipewire-pulseaudio/pipewire-alsa这三个包都写进去,单装一个pipewire,easyeffects也还是不能用。而且还容易导致依赖关系出错。

最后就是packman源里面和pipewire相关的包肯定也是有问题的,正常情况下这几个包装上去就应该直接能用,啥都不需要设置才对,但是它却报错,装回oss源里面的就好了。具体是啥问题那只能让这几个包的维护者找原因了。。

不得不感叹一下,linux的依赖关系是真的错综复杂,而且这货就怕依赖关系出错,依赖错了就各种蛋疼了。。还好这回问题不大,只涉及到了几个不是很重要的包。

下面简单记录一下easyeffects的用法。

首先打开这个存储库,找到对应耳机型号的eq文件:https://github.com/jaakkopasanen/AutoEq

例如我的shp9500:https://github.com/jaakkopasanen/AutoEq/tree/master/results/oratory1990/harman_over-ear_2018/Philips%20SHP9500

只需要里面的ParametricEQ.txt文件,下载或者把里面的内容保存到本地,然后点easyeffects上面的plugins按钮,再点击左侧的add plugin按钮:

在里面选择Equalizer,然后点右侧的Load APO Preset:

选择之前保存的ParametricEQ.txt文件,然后手动把Input滑块的数值调整到和文件内的Preamp数值一致:

注:easyeffects从6.1.4版本起,可以自动识别这个了,就不需要手动调整了。我装的还是6.1.3。

最后打开一个播放器或者浏览器进行测试,正常的话可以看到发声的软件:

我用了一段时间后和windows10对比,感觉效果还是比windows10上面的equalizerapo要差一点,但是肯定比之前没开要强很多。

全部为采集文章,文中的 联系方式 均不是 本人 的!

发表评论