根据音频输出自动切换均衡器预设(内置扬声器或外置)

以下事实来自64位笔记本电脑上Ubuntu 13.10的经验。

背景/问题:坏的发言者

正如许多人所知, 笔记本电脑扬声器具有“高度不等的频率响应”,正如音频专业人士所说。 普通人说:“他们听起来很糟糕 ”。

第一步解决方案:均衡

均衡提供了有价值的解决方法 ,通过一次性努力显着改善音质。 例如,我从Web Upd8安装了PulseAudio Equalizer 。

为了获得好的结果,应该根据测量结果选择均衡值,但这是另一个故事(我可以单独使用Ubuntu,尽管它很棘手,请向我详细说明)。

剩余问题:均衡曲线与输出有关

均衡值附于整个链,但通常只有说话者是不平等回应的主要来源。

这意味着我有两个均衡配置文件:

  • 一个用于笔记本电脑扬声器(均衡曲线变化很大)
  • 当外部立体声插入例如3.5mm插孔时,另一个(更平坦的曲线,因此通常可以禁用均衡)。

实践中的现状:自动取消/静音,良好但不足

  • 将3.5毫米插孔插入外接立体声时,内置扬声器会自动静音并通过Ubuntu堆栈进行音量调节。 这很好,但不够。
  • 拔下插头后,内置扬声器会再次自动启动。 这很好,但不够。

改进:不仅可以自动静音,还可以自动选择eq曲线

在拔出/插入3.5mm插孔时应用正确的均衡器预设会好得多。 插上外部立体声,选择平坦的曲线。 拔下立体声,内置扬声器获得校正曲线。


问题

如何制作快速而肮脏的黑客? 如何从脚本中检测插头?

  • 关于检测堵塞事件。 我在网络上找不到文档,加上关键字“jack”返回有关jack软件套件的结果,这里不相关。 微薄的起点: 声音 – 如何在取消/插入耳机时自动改变音量? – 询问Ubuntu Jack检测音频:蓝图:Ubuntu

  • 关于更改均衡器曲线,我找不到有关pulseaudio-equalizer-gtk任何文档。 一个概念validation脚本摆弄文件,然后调用pulseaudio-equalizer interface.applysettings可能会改变设置,但GUI不会知道。

如何进行干净设置:将均衡曲线分配给内置扬声器,而不仅仅是插件事件。

例如,假设我插入USB音频设备并通过它播放音频。 只要3.5毫米插孔未插入/插入,快速和肮脏的黑客就会改变EQ曲线,尽管音频实际上继续传输到USB音频设备而不是内部扬声器,使得eq曲线变化无关紧要。

在“干净”设置中,均衡配置文件将被清晰地分配给内部扬声器,使事物更加健壮。 无论情况如何,它总是(并且仅在需要时)应用。

有人在做吗? 任何提示?

感谢您的关注。

因为我有类似的问题,我制作了一个“快速而又脏”的python脚本,它使用pulseaudio的DBus-Events来检测何时激活哪个均衡器配置文件。

安装

要使用它,您必须将以下行添加到/etc/pulse/default.pa:

 load-module module-dbus-protocol 

然后通过pulseaudio-equalizer-gtk禁用均衡器并单击“应用设置”,现在关闭GUI。

下载apply-equalizer.py将其保存在某处并使其可执行。

以用户(!)执行。 也许你需要安装一些额外的python模块。 您也可以在登录时自动启动它(我不知道最好的方法是什么)。

用法

该脚本在〜/ .config / apply-equalizer下创建每端口[1]均衡器配置,并在设备更改输出端口(即插入或拔出耳机)时对它们进行符号链接。

[1]:许多声卡具有不同的端口 ,例如一个扬声器端口和一个耳机端口

所以:

  1. 拔下耳机。
  2. 打开pulseaudio-equalizer GUI
  3. 自定义均衡器设置,直到听起来不错
  4. 然后,“应用设置”将您所做的配置(包括是否启用了均衡器)分配给当前端口 (在这种情况下是扬声器)
  5. 关闭GUI并从步骤2开始重复您要分​​配的每个端口(耳机未插入)

现在,只要您在扬声器和耳机之间切换,均衡器设置就会自动调整。

这是一个手动解决方案,可在Equalizor ON(使用您喜欢的设置)和OFF之间切换:

 if [ "$(pulseaudio-equalizer status | grep "Equalizer status" | cut -d"[" -f2 | cut -d"]" -f1)" == "enabled" ]; then pulseaudio-equalizer disable else pulseaudio-equalizer enable fi 

将文件另存为bash脚本,通过直接从桌面或菜单面板启动脚本来创建新的面板启动器。