Commit Graph

8 Commits

Author SHA1 Message Date
edgevoid c23936e69f 发版 1.3.6: 打包脚本版本号 + release 说明更新
- 打包deb.sh: VER 1.3.0 -> 1.3.6
- 发布release.sh: release 正文补 1.3.1~1.3.6 的改动清单
2026-09-14 08:04:19 +08:00
edgevoid d8c3a27821 v1.3.0: 离线渲染(音频/视频→空间音频FLAC, 渲染锁+文件就绪检查) + 组件看门狗(30s核对期望状态并自愈)
- 离线渲染.py: pan上混5.1 → sofalizer(H4 SOFA) → 房间IR(afir) → loudnorm → 96k FLAC
  视频自动取音轨; 已是5.1的片源不重上混; 实测约 4.4 倍速
  两道锁: (1)渲染锁 —— 一轮任务期间拒绝新任务, 不排队堆积
          (2)文件就绪检查 —— 相隔1.2s两次stat大小/时间不变且ffprobe能读, 未落盘的跳过
  三个入口: 命令行 / 面板「离线渲染」区(拖拽或贴路径, 实时进度+日志+取消) / 右键「打开方式」
- 音频守护.py + config/组件配置单.json: 30s 核对 DSP进程数与槽位新鲜度/链输出连线/
  默认设备/虚拟声卡优先级/中间级音量/节点份数/面板/物理设备静音, 扫到就修
  (能温和就温和, 链路级才重建), 同类问题 90s 冷却, 连续 3 次修不好转只报警
- 组件配置单.md: 链路拓扑 + 组件表 + 六个必须 + 自愈表
- 面板: 控制滑块从图表卡片独立成「控制」卡片; 数字/模拟输出音量条拉长到各占一半
  (合计 = 虚拟声卡开关卡片总高); 新增离线渲染区
- 修: DSP 孤儿抢共享槽位导致重建后无声(claim_slot 抢不到槽位即退出 + 重建前收旧 DSP)
- 修: 打包会把正在用的 PipeWire 配置移开(prune_duplicate_confs 只在自己写到生效目录时清理)
- 修: 离线渲染的 SOFA/混响IR 改为多路径探测(开发目录与 deb 包内布局不同)
- .gitignore: 保留 reverb/ 房间IR(离线渲染要卷积的素材)
2026-09-13 23:24:22 +08:00
edgevoid 18cc030cac v1.2.0: 全系统响度归一化(pipe 插件挂自研 DSP) + 目标响度可调 + 控制台 4 路电平/增益历史
新增功能
- 响度归一化/: 挂未文档化的 filter-chain `pipe` 插件跑自研 DSP, 把任何往虚拟声卡
  推流的软件(Chrome/播放器/短视频)响度拉平到同一目标。ITU-R BS.1770 滑窗能量 ->
  联合响度 -> 目标增益(6 dB/s 限速 + 峰值保护), 左右声道共享同一增益防声像漂移。
  实测: 输入 20 dB 差 -> 输出 0.02 dB 差; 开销约 30% 单核; 延迟 +11 ms
- 目标电平可调(热生效, 不重建链路): 面板「目标响度」滑块(-40 ~ -6 dBFS) /
  POST /api/loudness {"target_db"} / 直接改 ~/.local/state/cinema-spatial/loudness.json,
  DSP 每秒重读该文件 -> 1 秒内跟上
- 控制台: 电平表拆成 4 路(原始 L/R + 处理后 L/R, 绿/蓝两条线), 新增增益历史曲线
  (看得到"锁住 -> 换段 -> 追赶"的全过程); 修表头被长数值挤扁

关键实现决定(都是实测撞出来的)
- 归一化必须做成**独立 filter-chain 实例**串在上混图之前 —— pipe 节点塞进那个
  40+ 节点的大图里(图入口/copy 之后/输出末端都试过)会被正常 fork、数据也在流,
  但收到的永远是恒定 -43 dBFS 空数据, 音频绕过, 零报错
- pipe 的 command 必须是**纯 ASCII 路径**: 传中文路径时静默失效(节点照建、音频
  绕过、DSP 不 fork、无日志) -> 入口固定为 /usr/bin/collaplex-loudness-norm
- 整条链必须有下游消费者, 否则图不被驱动, DSP 收到全 0
- 系统级(/usr/share)与用户级(~/.config)的**同名 conf 会被同时加载**(不是覆盖),
  会建出两份同名节点让音频进错实例 -> 铁律: 同名只留一份

打包
- 补入 loudness/loudness_norm.py 与 /usr/bin/collaplex-loudness-norm(ASCII 路径)
- 生成配置时用 CINEMA_SPATIAL_LN 指定包内入口(开发机是 ~/.local/bin)
- postinst: 装完自动启动控制台并打开浏览器(su 到登录用户 + 补 XDG_RUNTIME_DIR)
- 依赖加 xdg-utils
2026-09-13 18:06:52 +08:00
edgevoid f1a1199ae3 v1.1.1: README 重写为正式文档(概述/核心技术/信号链/参数/已知问题/实测数据/版本记录); 打包版本跟随 VER 2026-09-13 16:43:36 +08:00
edgevoid a7d0e88bec v1.1.0: 单声道合并 / 运行期重连(切设备不重启) / 等目标回来(蓝牙重连) / 能量归一修削波 / 电平显式连线不经麦克风 / 面板核心技术区 / 打包修 control 版本+补音频状态.py与web目录 2026-09-13 16:38:00 +08:00
edgevoid 38e2e2f68a release: v1.0.1 -- 空间音频设备自检 + README 补4条实测坑(峰值因子/音量分层/USB profile/pw-cli info) 2026-09-13 06:50:35 +08:00
edgevoid 9d3265aa28 fix: 输出目标自动探测物理设备(去硬编码, 可移植); 加 91-clock 与 release 发布脚本 2026-09-13 00:00:46 +08:00
edgevoid 68db84a10c 初始化: 耳机电影院空间音频(PipeWire filter-chain + SADIE-II HRTF)
- 两个虚拟声卡: 5.1 直通版 / 立体声矩阵上混版
- 全链路 96kHz/24bit, SADIE-II 真人 HRTF 96K/512tap
- 命令: 空间音频(开关) / mpv-影院(单程序)
- deb 打包 + 验收测试脚本
- README 记录 9 个实测踩坑(增益校准/采样率/相位等)
2026-09-12 23:52:43 +08:00