-
v1.0.9 — 输出设备不写死 + 自动挂载守护 Stable
released this
2026-09-24 09:37:59 +08:00 | 0 commits to main since this release输出设备不写死: 面板设备选择 + 自动挂载守护
症状: 开机后 / 插上 USB 耳机后听感变成「双重混响」, 只有
collaplex-audio stop+start才恢复。根因: 链路末段的输出设备原来写死在
30-collaplex-eq.conf的node.target(安装时探测一次)。
开机时那台设备要是还没枚举出来, 会话管理器建链时目标不存在 -> 末段连到别处或者干脆不连;
设备出现后不会自己改回来。两次实测的时序:日期 开机 EDIFIER USB 枚举 时差 2026-09-23 21:01:17 21:03:01 +1 分 44 秒 2026-09-24 08:57:07 09:19:43 +22 分 36 秒 修法(三段缺一不可):
段 做什么 选择落盘 ~/.local/state/cinema-spatial/output.json;安装.sh优先用它, 设备不在位也照样按它建链面板按钮 「输出设备」卡片: 下拉硬件输出 + 「应用」-> 立刻重挂 + 落盘( GET /api/devices,POST /api/device)守护线程 web/output_route.py: 每 3 秒核对「选中设备在位 且collaplex_eq_out只连它」, 不对就拆错的补对的 -> 设备一插上自动挂好, 不用重启链路设备名带 USB 序列号、跨重插稳定, 所以「选哪台」能记住; 不稳定的是「建链那一刻设备在不在」。
实测:
场景 结果 面板真鼠标点「应用」切到内建模拟输出 / 再切回耳机 routed立刻跟随手动把末段连到错设备 守护 2 秒纠回 末段连线全拆 守护 3 秒挂回 collaplex-audio start自检打印 输出设备: ... [在位]两个坑(写进来省的再踩):
pw-dump的 Link 对象键名是output-port-id/input-port-id—— 写成output-port时
一条连线都读不到, 而且不报错- 面板服务是
systemctl --user enable --now: 已在运行时不会重启, 改完web/*.py必须
restart才生效(否则接口 404, 而内存里还是旧代码)
安装:
sudo dpkg -i collaplex-audio_1.0.9_all.deb(装完不自动接管,collaplex-audio start才生效)Downloads
-
v1.0.8 Stable
released this
2026-09-20 17:16:10 +08:00 | 2 commits to main since this release场所预设: 「电影院」「歌剧院」一键切 EQ + 混响
影院和歌剧院最本质的差别是混响时间(0.4
0.8 s vs 1.41.8 s) —— 光切 EQ 不够, 所以把
这两个入口从 EQ 预设里单独立出来, 做成一排「场所」按钮, 点一下同时切:场所 实际混响时间 湿量 EQ 取向 电影院 0.4~0.8 s 0.35 X-curve 高频滚降 + sub 低频 = 厚, 暗, 有力 歌剧院 1.4~1.8 s 0.78 木质厅堂温暖 + presence = 暖, 亮, 有细节 EQ 依据
- 电影院: 高频按 X-curve(ISO 2969 国际版, 2 kHz 以上约 -1.5 dB/oct, 实测
2k -> 4k -> 8k -> 16k 逐段 -1.5)再叠银幕透声损失; 低频 2560 Hz +2.53 dB
(影院 sub / LFE 通道的体感) - 歌剧院: 中低频 150
400 Hz +2 dB(木质厅堂的温暖); 25 kHz +0.5~1 dB
(没有扩声系统, 歌手和乐器的投射全靠这个 presence 区, 不能削); 高频只随空气吸收缓降 - 两者在 3.15~5 kHz 相差 3 dB 且方向相反, 这是它们听感上最大的分野
按钮亮绿框标示当前选中; 之后手动拖 EQ 滑块或湿量推子会自动取消高亮。
总音量不在这套里 —— 那是个人听音响度, 不该切个场所就被改掉。实现上踩的一个坑
wet的 change handler 里是await post(...)之后才清高亮 —— 属于异步, 会在
applyVenue点亮之后才跑, 把高亮又清掉(第一轮 CDP 验收就是这么挂的)。改成在 dispatch
那一刻用标志记录意图, handler 据此判断要不要清。安装:
sudo dpkg -i collaplex-audio_1.0.8_all.deb(装完不自动接管,collaplex-audio start才生效)Downloads
- 电影院: 高频按 X-curve(ISO 2969 国际版, 2 kHz 以上约 -1.5 dB/oct, 实测
-
v1.0.7 Stable
released this
2026-09-20 13:51:36 +08:00 | 3 commits to main since this releaseEQ 预设 +2: 「电影院」「歌剧院」(按现实场所声学设计)
前 10 个是常见调音口味; 这两个按现实场所的声学特性设计, 不是随手画的微笑曲线。
电影院 —— 厚, 暗, 有力
- 高频按 X-curve(ISO 2969 国际版): 2 kHz 以上每倍频程约 -1.5 dB
(北美 SMPTE 版是 -3 dB/oct, 更暗)。实测本预设 2k -> 4k -> 8k -> 16k 逐段 -1.5 dB。
再叠一层银幕透声损失(穿孔幕布在 4~10 kHz 的衰减)。 - 低频 25
60 Hz +2.53 dB: 影院有 sub / LFE 通道(标定电平比主声道高 10 dB)+ 厅内增益。 - 中低频 200~400 Hz 略降: 银幕后扬声器 + 厅堂增益让这一段容易浑, 让出一点。
歌剧院 —— 暖, 亮, 有细节
- 中低频 150~400 Hz +2 dB: 木质地板/墙面的厅堂温暖(bloom), 大提琴/男中的厚度来源。
- 2
5 kHz +0.51 dB: 歌剧院没有扩声系统, 歌手和乐器的投射全靠这个 presence 区 ——
不能削(削了就闷), 这正是和影院最大的分野。 - 极低频 20~40 Hz -1 dB: 没有电声强化, 自然厅堂里这一段本就不强。
- 高频缓降: 10 kHz 以上 -0.5~-2 dB(比影院缓得多), 只有大空间的空气吸收。
两者差异(实测平均)
频段 电影院 歌剧院 差 25~60 Hz +2.75 -0.62 影院重 +3.4 dB 150~400 Hz -0.10 +1.90 歌剧院足 +2.0 dB 1~2 kHz -0.25 +0.25 基本持平 3.15~5 kHz -2.00 +1.00 歌剧院足 +3.0 dB 8~16 kHz -4.25 -0.75 歌剧院足 +3.5 dB 搭配建议
混响时间才是这两个场所最本质的差别, 影响比 EQ 更大:
场所 实际混响时间 建议湿量 电影院(带银幕的放映厅) 0.4~0.8 s 0.30~0.40 歌剧院 1.4~1.8 s 0.70~0.85 面板上直接拖, 实时生效。
顺带修
.presets button.on的样式一直定义了, 但没有任何代码加这个类 —— 点了预设没有选中反馈。
现在点预设会高亮该按钮, 手动拖滑块 / 全部归零则自动取消高亮。安装:
sudo dpkg -i collaplex-audio_1.0.7_all.deb(装完不自动接管,collaplex-audio start才生效)Downloads
- 高频按 X-curve(ISO 2969 国际版): 2 kHz 以上每倍频程约 -1.5 dB
-
v1.0.6 Stable
released this
2026-09-20 13:40:19 +08:00 | 4 commits to main since this release参数持久化: 面板改动落盘, 重启后自动恢复
修的坑:
open_store()原本是"文件不存在就零填充创建", 而/dev/shm是 tmpfs ——
重启后参数全变 0。听感上不是"参数没保存", 而是**"混响突然没了"**(湿量 0),
极易被当成链路故障去查。环节 做什么 面板改参数 落盘到 params.json(值没变不写)DSP 启动 检测到共享内存是新建的 → 自动从落盘恢复 落盘缺失/损坏 退回默认(全平直 / 0 dB / 0.3) 实测(清空
/dev/shm参数 + 重启 pipewire): 参数自动恢复, 与落盘逐值一致 ——
总音量+2.0/ 湿量0.600/ EQ 非零 30 段 ✓落盘位置
~/.local/state/cinema-spatial/params.json(与响度归一化的loudness.json同目录)。
本包同时包含 v1.0.5 的修复 —— 低频脏 + 沙沙:
- 根因: 归一化把内容顶到满刻度 → 软限幅一半以上时间介入(峰值因子 14→2 dB), 宽频一削,
互调产物堆低频(脏)、高频碎屑(沙沙) - 四条修:
LN_MAX_BOOST20→12 / HRIR 同相合并响应均衡(−7.2 dB, 不是标准 DF-EQ) /
房间 IR 低频校平(−21 dB, 湿路 gain 0.4→0.61 补偿) / EQ 微笑曲线改平直 - 复测: 低频 20~200 Hz +13.6 → +0.2 dB, 超软限幅阈值样本 50.49% → 0.00%
- 另修: 混响立体声丢失(IR 保双声道 + convolver
channel 0/1)
安装:
sudo dpkg -i collaplex-audio_1.0.6_all.deb(装完不自动接管,collaplex-audio start才生效)Downloads
- 根因: 归一化把内容顶到满刻度 → 软限幅一半以上时间介入(峰值因子 14→2 dB), 宽频一削,
-
v1.0.5 Stable
released this
2026-09-20 13:06:15 +08:00 | 5 commits to main since this release修复: 低频脏 / 沙沙 —— 根因是电平被顶穿后软限幅常年介入
诊断: 链路的线性部分其实干净(20~330 Hz 峰谷 2.1 dB, 无驻波; 纯音谐波 −116 dB)。
脏与沙沙来自: 归一化把内容提到满刻度, 宽频信号一削, 互调产物堆在低频(听感"脏")、
高频碎屑(听感"沙沙")。实测(同一粉噪素材, 只改电平):
条件 峰值因子 超软限幅阈值样本 直通(不过链, 参考) 14.1 dB 0% 绕归一化 13.5 dB 0% 整链 修前 2.0 dB 50.49% 整链 修后 12.2 dB 0.00% 四条修复
LN_MAX_BOOST20 → 12(默认值) —— 20 dB 的提升上限让任何轻内容都被顶穿满刻度- HRIR 同相合并响应均衡(lowshelf 500 Hz −7.2 dB Q=0.707, 12 条共用一条曲线,
方向线索 ILD/ITD 不受影响): 这套 HRIR 是原始测量数据、没做过漫反射场均衡 - 房间 IR 低频校平(lowshelf 300 Hz −21 dB Q=0.70): 它低频比中频高 24.5 dB,
压到 +5.8 dB 留一点厚度; IR 峰值掉 3.7 dB, 湿路gain0.4 → 0.61 补偿 - EQ 微笑曲线改回平直(20~63 Hz 原本 +2.5 dB、高频 +3 dB)
复测(同素材同脚本)
指标 修前 修后 低频(20~200 Hz 相对 1 kHz) +13.6 dB +0.2 dB 整链峰值因子 2.0 dB 12.2 dB 超软限幅阈值样本 50.49% 0.00% 峰值 / RMS −0.1 / −2.1 dBFS −6.2 / −18.4 dBFS 另修: 混响立体声丢失
工具/重做混响IR.py曾把双声道房间 IR 压成单声道(取x[:, 0]), 而revL/revR
读同一个文件 -> 两路湿声完全同源、混响糊在正中央。现在 IR 保持双声道, conf 用
PipeWire convolver 的channel = 0/channel = 1分别取左右(实测验证: 用"左零右真"
的探针文件, 右耳尾巴不塌, 左右差仅 1.1 dB)。安装
sudo dpkg -i collaplex-audio_1.0.5_all.deb collaplex-audio start # 装完不自动接管, 要手动 start细节见 README「IR 校正」与「实测(2026-09-20)」两节。
Downloads
-
v1.0.4 — 开机自启 Stable
released this
2026-09-19 20:49:06 +08:00 | 9 commits to main since this release日常使用形态: 装完起一次, 之后开机自动可用。
链路不需要服务 —— 4 份 conf 部署在 ~/.config/pipewire/pipewire.conf.d/, PipeWire 一起来就自动加载, 虚拟节点与 DSP 进程跟着起; 默认输出由 WirePlumber 记忆。
面板用 systemd 用户服务 collaplex-audio-panel.service(登录即起, Restart=no), start 时自动装上并 enable。因为音频设备与 PipeWire 都是用户级的, 开机自启实际是登录自启。要还原: systemctl --user disable --now collaplex-audio-panel.service 加 collaplex-audio stop。
另外两个修复:
- 去掉 deb 的 Recommends: google-chrome|chromium —— 在 snapd 被 mask 的机器上 apt 会因为它失败而卡住依赖配置(本次实测踩到), chromium 只是面板截图可选件。
- collaplex-audio stop 原来只按绝对路径找面板进程, 面板若以相对路径起过就漏杀 -> 端口被占、新服务起不来; 改为按后段 web/server.py 匹配。
实测(重启 PipeWire 等价开机): 6 节点自动重建、默认输出回到 collaplex_vsink、6 个 DSP 自动起、面板 active。
其余同 v1.0.2(修回声)。安装: sudo dpkg -i collaplex-audio_1.0.4_all.deb, 然后 collaplex-audio start
Downloads
-
v1.0.2 — 修回声 Stable
released this
2026-09-19 20:32:40 +08:00 | 10 commits to main since this release修掉混响路径里那个明显的回声。
根因: 房间 IR 是含传播延迟的房间响应 —— 前 20ms 是静音、主峰在 30ms(= 声源到麦克风 10.3m 的声程), 而且前两次反射与直达声同量级(30ms 处 0dB, 40ms 处 -1.6dB)。干声(HRTF)是零延迟的, 两路一相加就成了湿声晚 30ms 还很响 = 回声。
取证: 播单脉冲、录数字输出。修前主峰后 120ms 处有一个 -26dBFS 的孤立峰(比周围高 12dB); 湿量设 0 则完全没有 -> 确认出在混响路径, 与 DSP 进程无关(6 节点/6 进程不重复)。
修法: IR 裁掉前 22ms 纯静音 + 前 55ms 余弦渐入(直达声段 0 -> -23.6dB), 只留混响尾; 再把卷积增益重标 0.126 -> 0.4 补回混响量。修后包络单调衰减, 无孤立峰。
原 IR 备份为 房间混响IR-96k.orig.wav, 处理脚本 工具/重做混响IR.py, 取证脚本 测试/test_echo.py。
其余同 v1.0.1(start / stop / web 三个动作)。
Downloads
-
v1.0.1 — 日常三个动作 Stable
released this
2026-09-19 20:13:31 +08:00 | 12 commits to main since this release主命令改成日常三个动作(load进系统后手动 start 才接管)。
collaplex-audio start 启动: 接管系统音频(部署配置 + 重载 PipeWire + 自检)
collaplex-audio stop 停止: 恢复系统默认输出, 同时关掉面板
collaplex-audio web 面板: 起控制面板并打开浏览器实测: stop 后默认输出回到硬件设备(alsa_output.pci-0000_05_00.1.pro-output-3)、conf.d 清空;
start 后 6 节点 + 6 个 DSP 进程全回、默认输出回到 collaplex_vsink;
web 起面板 8789 并打开浏览器。其余同 v1.0.0。安装: sudo dpkg -i collaplex-audio_1.0.1_all.deb, 然后 collaplex-audio start
Downloads
-
v1.0.0 — Collaplex 音效 第二代 Stable
released this
2026-09-19 20:04:42 +08:00 | 13 commits to main since this release第二代重构版(对第一代 cinema-spatial 推倒重构)。
链路: 虚拟声卡 -> 响度归一化 -> 双耳 HRTF(SADIE II H4, 96kHz) + 房间混响 -> 32 段 EQ + 总音量 -> 数字输出。共 6 节点 + 6 DSP 进程。
实测: 归一化输入差 20.00dB -> 输出差 0.00dB; HRTF 左右相关 0.679; 湿量 1 时 3 秒混响尾巴; 总音量 +12dB 输出峰值 -1.11 dBFS 不削波; 纯音谐波 -91 dB; 面板刷新 62Hz。
面板: 4 个双声道电平表 + 归一化电平/动态增益 + 湿度/总音量滑块 + 32 段 EQ(10 预设)。
安装: sudo dpkg -i collaplex-audio_1.0.0_all.deb && collaplex-audio install
依赖: python3-numpy python3-scipy pipewire wireplumber。装完不动系统音频, 手动 install 才接管。Downloads