11 Commits

Author SHA1 Message Date
lou 117a0c65d6 stop: 清锁改用通配 —— 锁文件是每声道一份(.lock0/.lock1), 只删基名会留残留 2026-09-23 21:11:18 +08:00
lou 5c6a982210 修低频过量的四条: HRIR 均衡 + 房间 IR 校平 + LN_MAX_BOOST + EQ 平直
诊断见 README「实测(2026-09-20)」: 链路的**线性**部分干净(无驻波、失真 −116 dB),
"低频脏 + 沙沙"来自电平被顶穿之后软限幅常年介入 —— 归一化把内容提到满刻度, 宽频信号
一削, 互调产物堆在低频(听感"脏")、高频碎屑(听感"沙沙")。实测超软限幅阈值样本 50.49%、
峰值因子被从 14 dB 压到 2.0 dB。

四条修复:
1. LN_MAX_BOOST 20 -> 12(默认值): 20 dB 的提升上限让任何轻内容都被顶穿满刻度
2. HRIR 同相合并响应均衡(lowshelf 500Hz −7.2dB Q=0.707, 12 条共用一条曲线,
   方向线索 ILD/ITD 不受影响): 这套 HRIR 是原始测量数据、没做过漫反射场均衡。
   ★ 口径注意: 标准 DF-EQ 用各方向**功率平均**做参考, 只要求压 1.5 dB; 但真实内容
   L≈R 时两耳信号是**相加**的, 同相合并响应才对应实测的 7.5 dB
3. 房间 IR 低频校平(lowshelf 300Hz −21dB Q=0.70): 低频比中频高 24.5 dB -> 压到 +5.8 dB
   (留一点厚度); IR 峰值随之掉 3.7 dB, 湿路 gain 0.4 -> 0.61 补偿, 保持混响响度不变
4. EQ 微笑曲线(20~63Hz +2.5 / 高频 +3)改回平直

复测(同素材同脚本): 低频 20~200Hz **+13.6 -> +0.2 dB**; 整链峰值因子 **2.0 -> 12.2 dB**;
超阈值样本 **50.49% -> 0.00%**; 峰值/RMS −0.1/−2.1 -> −6.2/−18.4 dBFS。
响度目标回到 −14 dB 也不会再顶穿。

新增: 工具/分析均衡曲线.py(量曲线)、工具/均衡IR.py(施加校正, 可重跑);
README 加「IR 校正」节 + 修复前后对照 + 两条测量方法上的坑。
IR 备份: hrir/*.pre-eq.wav 与 reverb/*.wav.pre-eq.wav(频响校正前)、
reverb/*.orig.wav(剪直达声前)。重跑顺序: 先 重做混响IR.py, 再 均衡IR.py。
2026-09-20 13:05:10 +08:00
lou c362aabb5e 修"播着播着没声音" + 响度目标 -16 调到 -12
- 10-/30- conf 的虚拟声卡与各级输出都加 node.always-process + node.pause-on-idle=false:
  空闲时若被 suspend, 客户端(Chromium 经 pipewire-pulse)会认为输出端不再消费而停止推数据,
  表现为"播着播着突然没声音, 刷新页面才恢复"
- LN_TARGET_DB -16 -> -12(听着更响)
- 新增 测试/监控链路.py
2026-09-20 12:55:51 +08:00
lou 43919f5f97 开机自启: 链路靠 PipeWire 自动加载 conf(不需要服务); 面板加 systemd --user 服务 collaplex-audio-panel.service(start 时自动装并 enable, Restart=no); 修 stop 漏杀按相对路径起的面板进程(端口被占导致新服务起不来); 打包带上 systemd/; README 加自启段 + 进程匹配要按后段的坑 2026-09-19 20:48:47 +08:00
lou ddd642b772 主命令改成日常三个动作: start(接管系统音频) / stop(恢复默认输出+停面板) / web(起面板并打开浏览器); 安装脚本 /proc 进程消失竞态静默; README 与 deb 描述同步; 版本 1.0.1 2026-09-19 20:13:12 +08:00
lou f1d6f84b2f 发布准备: 主命令 collaplex-audio(install/uninstall/status/panel) + 打包deb.sh(deb 1.9MB, Arch all, 依赖 python3-numpy/scipy, 装完不自动启用) + 安装脚本支持系统解释器(deb 场景无 venv) + 自检补湿量进程 + README 重写(链路图/面板/预设/数据来源/坑表/实测表/测试脚本清单) 2026-09-19 20:02:21 +08:00
lou 6f5729baf2 前端加 4 个电平表(入L/出L/入R/出R, 双声道由 flock 分槽) + 混响湿度滑块(实时); 湿量抽成独立 DSP 增益级(wet_gain.py), 混响仍用 PipeWire convolver 跑 3 秒长 IR; 实测湿量 0 无尾巴 / 1 有 3 秒衰减尾巴 2026-09-19 19:37:54 +08:00
lou 5a4b11092c 前端: 抽公共层(dsp/common.py 共享内存协议)+ 32段EQ/总音量 DSP(dsp/eq.py, scipy sosfilt) + 本地控制面板(web/, 滑块+滚轮捕捉); 安装脚本接 30-collaplex-eq; pyright strict 0 error 2026-09-19 18:34:56 +08:00
lou 0dc55ddcb5 归一化接在核心前面: 全局音频 -> 虚拟声卡 -> 响度归一化 -> HRTF(湿量0.3) -> 数字输出; 安装脚本单脚本可复现(含残留DSP清理) 2026-09-19 18:16:43 +08:00
lou 0840c7d398 HRTF 独立实例: 接入(collaplex_hrtf_in) -> 双耳 HRTF + 房间混响(湿量0.3) -> 数字输出; 虚拟声卡退回纯转发 2026-09-19 18:06:23 +08:00
lou f1a3c80fd4 固化链路: 虚拟声卡 + 响度归一化 -> 数字输出 (安装脚本可复现部署) 2026-09-19 17:22:03 +08:00