-
v1.3.6 Stable
released this
2026-09-14 08:04:44 +08:00 | 1 commits to main since this releasecollaplex-cinema-spatial 1.3.6 — 耳机电影院空间音频 (PipeWire filter-chain + SADIE-II HRTF, 96kHz/24bit)
核心技术: 镜像法房间声学追踪(0-80ms 早期反射, 8473 条镜面路径) + Sabine 统计尾音(80ms-2s) -> 96kHz 真实房间 IR 双耳卷积; 湿量按能量归一。不是 Freeverb/Schroeder 类算法混响。
本版 1.3.6 —— 面板电平可视化大修 + 「没声音」类问题根治\n\n【1.3.6】电平表缩放加「平均 + 变速」: 峰值/谷值走 EMA(涨快落慢) + 目标量程走非对称 EMA(张开快/收缩慢, 即 attack/release 思路), 消除量程「一时全空一时拉满」的跳变。实测最大单帧跳变 6dB。\n【1.3.5】电平表波形放大: 量程跟随信号实际幅度(跨度x1.45), 波形占画布约 2/3。\n【1.3.4】原始/处理后电平表波形垂直居中: 顶线=峰值+半量程, 波峰不再贴框顶被标题压住。\n【1.3.3】响度归一化曲线改动态量程(波峰自动居中)。\n【1.3.2】面板补 favicon(内联 SVG 声波柱) + 修响度曲线被挤压。\n【1.3.1】★ 重要: 物理输出音量是档位、不是增益 —— 撤销上一版「把它对齐到虚拟声卡(1.0)」的错误假设(那会让动态被压扁: 面板波形顶满而听感反而更小); 看门狗只兜「静音/近乎归零」, 绝不改正常档位。\n\n本版 1.3.0 起 —— 新增【离线渲染】+【组件看门狗】
【离线渲染】音频/视频 -> 空间音频 FLAC (96kHz 双耳), 与实时虚拟声卡同一套参数:
- 链路: pan 上混 5.1 -> sofalizer(同一个 H4 SOFA, 96k/512tap) -> 房间 IR 卷积(afir) -> loudnorm
- 视频自动取音轨; 已是 5.1 的片源不重上混; 输出 <原名>.空间音频.flac
- 两块锁: (1) 渲染锁 —— 一轮任务期间不接受新任务(直接拒绝, 不排队堆积); (2) 文件就绪检查 —— 相隔 1.2 秒两次 stat 的大小/时间不变且 ffprobe 能读出音轨, 还在下载/写入的文件直接跳过
- 三个入口: 命令行 collaplex-render 文件... / Web 控制台「离线渲染」区(拖文件或贴路径, 实时进度条 + 日志 + 取消) / 文件管理器右键「打开方式 -> Collaplex 离线渲染」
- 实测 8 秒立体声 1.8 秒完成(约 4.4 倍速)
【组件看门狗】音频守护.py + config/组件配置单.json:
- 30 秒一轮核对整条链的期望状态: DSP 进程数与槽位新鲜度 / 链输出连线 / 默认设备 / 虚拟声卡优先级 / 中间级音量 / 节点份数 / 控制台 / 物理设备静音
- 扫到就修: 能温和就温和(改音量、切默认、pw-link 重连), 只有链路级问题才重建; 同类问题 90 秒冷却, 连续 3 次修不好转只报警
其他:
- 控制台: 控制滑块从图表卡片独立成「控制」卡片; 数字/模拟输出音量条拉长到各占一半(合计 = 虚拟声卡开关卡片总高)
- 修: DSP 孤儿抢共享槽位导致重建后无声(claim_slot 抢不到槽位即退出 + 重建前收旧 DSP)
- 修: 打包会把正在用的 PipeWire 配置移开(prune_duplicate_confs 在 OUT 落到非生效目录时不再清理 + CINEMA_SPATIAL_KEEP_CONFS=1 双保险)
自 1.2.0 以来新增文件: 离线渲染.py, 离线渲染-打开.sh, 音频守护.py, 组件配置单.md, config/组件配置单.json, 桌面项/
安装: sudo dpkg -i collaplex-cinema-spatial_1.3.6_all.deb; systemctl --user restart pipewire pipewire-pulse
Downloads
-
v1.3.0 Stable
released this
2026-09-13 23:24:36 +08:00 | 8 commits to main since this releasecollaplex-cinema-spatial 1.3.0 — 耳机电影院空间音频 (PipeWire filter-chain + SADIE-II HRTF, 96kHz/24bit)
核心技术: 镜像法房间声学追踪(0-80ms 早期反射, 8473 条镜面路径) + Sabine 统计尾音(80ms-2s) -> 96kHz 真实房间 IR 双耳卷积; 湿量按能量归一。不是 Freeverb/Schroeder 类算法混响。
本版 1.3.0 —— 新增【离线渲染】+【组件看门狗】
【离线渲染】音频/视频 -> 空间音频 FLAC (96kHz 双耳), 与实时虚拟声卡同一套参数:
- 链路: pan 上混 5.1 -> sofalizer(同一个 H4 SOFA, 96k/512tap) -> 房间 IR 卷积(afir) -> loudnorm
- 视频自动取音轨; 已是 5.1 的片源不重上混; 输出 <原名>.空间音频.flac
- 两块锁: (1) 渲染锁 —— 一轮任务期间不接受新任务(直接拒绝, 不排队堆积); (2) 文件就绪检查 —— 相隔 1.2 秒两次 stat 的大小/时间不变且 ffprobe 能读出音轨, 还在下载/写入的文件直接跳过
- 三个入口: 命令行 collaplex-render 文件... / Web 控制台「离线渲染」区(拖文件或贴路径, 实时进度条 + 日志 + 取消) / 文件管理器右键「打开方式 -> Collaplex 离线渲染」
- 实测 8 秒立体声 1.8 秒完成(约 4.4 倍速)
【组件看门狗】音频守护.py + config/组件配置单.json:
- 30 秒一轮核对整条链的期望状态: DSP 进程数与槽位新鲜度 / 链输出连线 / 默认设备 / 虚拟声卡优先级 / 中间级音量 / 节点份数 / 控制台 / 物理设备静音
- 扫到就修: 能温和就温和(改音量、切默认、pw-link 重连), 只有链路级问题才重建; 同类问题 90 秒冷却, 连续 3 次修不好转只报警
其他:
- 控制台: 控制滑块从图表卡片独立成「控制」卡片; 数字/模拟输出音量条拉长到各占一半(合计 = 虚拟声卡开关卡片总高)
- 修: DSP 孤儿抢共享槽位导致重建后无声(claim_slot 抢不到槽位即退出 + 重建前收旧 DSP)
- 修: 打包会把正在用的 PipeWire 配置移开(prune_duplicate_confs 在 OUT 落到非生效目录时不再清理 + CINEMA_SPATIAL_KEEP_CONFS=1 双保险)
自 1.2.0 以来新增文件: 离线渲染.py, 离线渲染-打开.sh, 音频守护.py, 组件配置单.md, config/组件配置单.json, 桌面项/
安装: sudo dpkg -i collaplex-cinema-spatial_1.3.0_all.deb; systemctl --user restart pipewire pipewire-pulse
Downloads
-
v1.2.0 Stable
released this
2026-09-13 18:07:00 +08:00 | 9 commits to main since this releasecollaplex-cinema-spatial 1.2.0 - 耳机电影院空间音频 (PipeWire filter-chain + SADIE-II HRTF, 96kHz/24bit)
核心技术: 镜像法房间声学追踪(0-80ms 早期反射, 8473 条镜面路径) + Sabine 统计尾音(80ms-2s) -> 96kHz 真实房间 IR 双耳卷积; 湿量按能量归一。不是 Freeverb/Schroeder 类算法混响。
本版 1.2.0 — 新增【全系统响度归一化】:
- 任何往虚拟声卡推流的软件(Chrome/播放器/短视频)响度自动拉平到同一目标, 换片不再一响一轻
- 目标电平可调: Web 面板新增「目标响度」滑块(-40 ~ -6 dBFS), 或 POST /api/loudness {target_db}, 或直接改 ~/.local/state/cinema-spatial/loudness.json; DSP 每秒热读 -> 1 秒内跟上, 不必重建链路
- 算法: ITU-R BS.1770 滑窗能量 -> 联合响度 -> 目标增益 -> 6 dB/s 限速 + 峰值保护; 左右声道共享同一增益(不漂声像)
- 实测: 输入 20 dB 差 -> 输出 0.02 dB 差; 开销约 30% 单核; 延迟 +11ms
- 控制台电平表拆为 4 路(原始 L/R + 处理后 L/R), 新增增益历史曲线(看得到动态平衡的全过程)
- 架构: 归一化做成独立 filter-chain 实例串联在上混图之前(pipe 节点塞进 40+ 节点的大图会收到恒定 -43dBFS 空数据, 音频绕过)
- 安装后自动启动控制台并打开浏览器
自 1.1.1 以来:
- 新增响度归一化 DSP(loudness/loudness_norm.py) 与入口 /usr/bin/collaplex-loudness-norm(纯 ASCII 路径)
- 控制台: 新增目标响度滑块、4 路电平、增益历史曲线; 修表头挤压
安装: sudo dpkg -i collaplex-cinema-spatial_1.2.0_all.deb; systemctl --user restart pipewire pipewire-pulse
Downloads
-
v1.1.1 Stable
released this
2026-09-13 16:43:35 +08:00 | 12 commits to main since this releasecollaplex-cinema-spatial 1.1.1 - 耳机电影院空间音频 (PipeWire filter-chain + SADIE-II HRTF, 96kHz/24bit)
核心技术: 镜像法房间声学追踪(0-80ms 早期反射, 8473 条镜面路径) + Sabine 统计尾音(80ms-2s) -> 96kHz 真实房间 IR 双耳卷积; 湿量按能量归一(湿量 G 时湿路 = 干路 + 20log10 G)。不是 Freeverb/Schroeder 类算法混响。
本版 1.1.1: README 重写为正式文档(核心技术/信号链/参数/已知问题/实测数据/版本记录), 未改动功能代码。
自 1.0.x 以来的主要变化:
- 单声道设备支持: 单声道蓝牙音响/耳机连不上(链输出是 2 声道 FL/FR, 单声道设备只有 1 个 MONO 端口) -> 新增单声道合并(自动/开/关), 默认按目标设备声道数自动判定
- 切换设备不再重启 PipeWire: 新增运行期重连(链输出本质是 stream, 端口可运行期改连) -> 蓝牙设备不再被重启带掉
- 修复'重启后目标失效': 原来固定 sleep 4 就判死, 而蓝牙/USB 设备要 3~8 秒重连 -> 改为轮询等待(最多 20 秒), 回退探测跳过显卡/HDMI
- 修复削波: 房间混响 IR 原来只按峰值归一, 能量增益 +11dB, 处理后峰值冲到 +12dBFS -> 改为能量归一(sigma ir^2 = 1)
- 电平表采集: 处理后电平改为按端口 id 显式连线读取链输出, 杜绝 pw-record 静默回退到麦克风
- 面板新增'核心技术'说明区; 新增输入增益(削波余量)滑块
- 打包: control 版本号改为跟随 VER(旧版恒为 1.0.0 致 dpkg 无法升级), 补入 音频状态.py 与 web/ 面板
安装: sudo dpkg -i collaplex-cinema-spatial_1.1.1_all.deb; systemctl --user restart pipewire pipewire-pulse
Downloads
-
v1.1.0 Stable
released this
2026-09-13 16:38:04 +08:00 | 13 commits to main since this releasecollaplex-cinema-spatial 1.1.0 - 耳机电影院空间音频 (PipeWire filter-chain + SADIE-II HRTF, 96kHz/24bit)
核心技术: 镜像法房间声学追踪(0-80ms 早期反射, 8473 条镜面路径) + Sabine 统计尾音(80ms-2s) -> 96kHz 真实房间 IR 双耳卷积; 湿量按能量归一(湿量 G 时湿路 = 干路 + 20log10 G)。不是 Freeverb/Schroeder 类算法混响。
本版新增/修复:
- 单声道设备支持: 单声道蓝牙音响/耳机连不上(链输出是 2 声道 FL/FR, 单声道设备只有 1 个 MONO 端口) -> 新增单声道合并(自动/开/关), 默认按目标设备声道数自动判定
- 切换设备不再重启 PipeWire: 新增运行期重连(链输出本质是 stream, 端口可运行期改连) -> 蓝牙设备不再被重启带掉
- 修复'重启后目标失效': 原来固定 sleep 4 就判死, 而蓝牙/USB 设备要 3~8 秒重连 -> 改为轮询等待(最多 20 秒), 回退探测跳过显卡/HDMI
- 修复削波: 房间混响 IR 原来只按峰值归一, 能量增益 +11dB, 处理后峰值冲到 +12dBFS -> 改为能量归一(sigma ir^2 = 1)
- 电平表采集: 处理后电平改为按端口 id 显式连线读取链输出, 杜绝 pw-record 静默回退到麦克风
- 面板新增'核心技术'说明区; 新增输入增益(削波余量)滑块
- 打包: control 版本号改为跟随 VER(旧版恒为 1.0.0 致 dpkg 无法升级), 补入 音频状态.py 与 web/ 面板
安装: sudo dpkg -i collaplex-cinema-spatial_1.1.0_all.deb; systemctl --user restart pipewire pipewire-pulse
Downloads
-
v1.0.1 Stable
released this
2026-09-13 06:50:24 +08:00 | 17 commits to main since this releasecollaplex-cinema-spatial 1.0.1 - 耳机电影院空间音频 (PipeWire filter-chain + SADIE-II HRTF, 96kHz/24bit). 安装: sudo dpkg -i collaplex-cinema-spatial_1.0.1_all.deb; systemctl --user restart pipewire. 本版: 空间音频命令增加设备自检(USB profile 变化致 target 失效时自动重建), 输出目标改为自动探测物理设备(优先USB), 去硬编码.
Downloads
-
v1.0.0 Stable
released this
2026-09-13 00:00:31 +08:00 | 19 commits to main since this releasecollaplex-cinema-spatial 1.0.0
耳机上的电影院空间音频 —— PipeWire filter-chain 虚拟声卡 + SADIE-II 真人 HRTF,全链路 96kHz/24bit。
安装
sudo dpkg -i collaplex-cinema-spatial_1.0.0_all.deb systemctl --user restart pipewire pipewire-pulse wireplumber依赖: pipewire libmysofa1 mpv
用法
空间音频 开 # 全局切到立体声上混版(推荐) 空间音频 开5.1 # 全局切到 5.1 直通版 空间音频 关 # 切回物理设备 空间音频 状态 # 查看状态 mpv-影院 电影.mkv # 只给 mpv 用说明
- HRTF 用 SADIE-II 真人受试者 H4,96K/24bit/512tap
- 立体声源自动矩阵上混,不需要多声道片源
- 若无声: python3 /usr/share/cinema-spatial/生成配置.py 重新探测输出设备
Downloads