• v1.3.6 c23936e69f

    v1.3.6 Stable

    edgevoid released this 2026-09-14 08:04:44 +08:00 | 1 commits to main since this release

    collaplex-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 d8c3a27821

    v1.3.0 Stable

    edgevoid released this 2026-09-13 23:24:36 +08:00 | 8 commits to main since this release

    collaplex-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 18cc030cac

    v1.2.0 Stable

    edgevoid released this 2026-09-13 18:07:00 +08:00 | 9 commits to main since this release

    collaplex-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 a7d0e88bec

    v1.1.1 Stable

    edgevoid released this 2026-09-13 16:43:35 +08:00 | 12 commits to main since this release

    collaplex-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 06f8680e63

    v1.1.0 Stable

    edgevoid released this 2026-09-13 16:38:04 +08:00 | 13 commits to main since this release

    collaplex-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 589244d4c3

    v1.0.1 Stable

    edgevoid released this 2026-09-13 06:50:24 +08:00 | 17 commits to main since this release

    collaplex-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 68db84a10c

    v1.0.0 Stable

    edgevoid released this 2026-09-13 00:00:31 +08:00 | 19 commits to main since this release

    collaplex-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