10 Commits

Author SHA1 Message Date
lou 3b6ce2c57e 参数持久化: 面板改动落盘, 重启/开机后自动恢复
问题(09-20 实测复现): dsp/common.py 的 open_store() 是"文件不存在就零填充创建", 而
/dev/shm 是 tmpfs —— 重启后参数全变 0。听感上不是"参数没保存", 而是**"混响突然没了"**
(湿量 0), 极易被当成链路故障去查。

修法:
- common.py: 加 params.json 落盘(load_saved_params / save_params / restore_params);
  open_store() 检测到文件是"新建的"就从落盘恢复(带上下限夹取)。幂等 —— 两个声道进程
  同时判定为新建也没关系, 写进去的值一样。
- web/server.py: 面板每次改参数(POST /api/eq|volume|wet)后 save_params() 落盘; 值没变不写。
- 初始化.py: 改成"优先用落盘, 没有才用默认值", 并报告参数来源。

实测(rm /dev/shm/collaplex-eq* + 重启 pipewire): 参数自动恢复, 与落盘逐值一致
(总音量 +2.0 / 湿量 0.600 / EQ 非零 30 段)。

落盘位置 ~/.local/state/cinema-spatial/params.json(与 loudness.json 同目录)。
README 加「参数持久化」节 + 坑表条目。
2026-09-20 13:40:06 +08:00
lou 3f64190187 修'刷几条视频后没声音': 归一化 DSP 原来拿'连续 10 秒无数据'当'链路已断'的判据, 但音频流本来就有静默期(视频间隙/暂停/切歌), 于是正常使用时自己退出 -> pipe 断 -> 没声音, 刷新页面重连才恢复。改用'启动时的 ppid'比对(filter-chain 死后子进程被 systemd 收养, ppid 必变), 静默不再退出; IDLE_LIMIT 降级为 600s 兜底。实测: 静默 15s 后归一化进程仍在(修前降为 0) 2026-09-19 21:12:08 +08:00
lou 00c9ced2c0 前端: 归一化加输入电平与动态增益显示(读归一化 DSP 状态); 修总音量滑块回弹(activeElement 判断不准 -> 显式 busy 标志 + 松手静默期), CDP 真鼠标拖动实测 4->10.5 停住不回弹 2026-09-19 19:47:11 +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 b154ac46c1 修限幅介入过早: 阈值 -3.9 -> -0.63 dBFS(ceiling 0.99/knee 0.06). 纯音峰值因子仅3dB测不出, 音乐(10-14dB)峰值长期落在旧阈值内被压 -> 中低频谐波; 类音乐实测非瞬态增益精确 +6.00dB, 纯音+6dB 谐波 -65.6 -> -91.1 dB; 新增 test_limit.py(高峰值因子素材) 2026-09-19 19:27:04 +08:00
lou 38ae1fa22e 修块间台阶残留: 归一化增益改块内逐样本线性插值(zipper 噪声); 谐波(相对基频) +0/+6dB 由 -12.1/-15.9 降到 -90.1/-70.6 dB; 调试用的测试脚本收进 测试/, 清理全部调试残留 2026-09-19 19:22:48 +08:00
lou 2dd51e3324 修沙沙声: eq.py 块长不再假设固定的 1024 样本(quantum 在 32~2048 间变化, 原来用 np.resize 重复填充 -> 周期性伪影); 改为按实际块长一对一处理; 实测 4096/2048/1024/512/384 字节全部一对一 2026-09-19 18:58:30 +08:00
lou e8b402472c 修削峰: 总音量输出级 np.clip 硬削 -> soft_limit 软限幅(上限-1dBFS, tanh 渐近); +12dB 时贴顶样本 64.6%->0%, 峰值 -1.01 dBFS 2026-09-19 18:45:12 +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 f1a3c80fd4 固化链路: 虚拟声卡 + 响度归一化 -> 数字输出 (安装脚本可复现部署) 2026-09-19 17:22:03 +08:00