2026-09-12 23:52:43 +08:00
|
|
|
#!/bin/bash
|
|
|
|
|
# 把电影院空间音频全链打包成 deb (2026-09-12)
|
|
|
|
|
# 包名 collaplex-cinema-spatial, Arch: all (纯脚本+数据, 无编译)
|
|
|
|
|
set -eu
|
|
|
|
|
SRC="/home/lou/桌面/工作区/实验/空间音频"
|
|
|
|
|
PKG="collaplex-cinema-spatial"
|
2026-09-13 16:43:36 +08:00
|
|
|
VER="1.1.1"
|
2026-09-12 23:52:43 +08:00
|
|
|
BUILD="/tmp/${PKG}-deb"
|
|
|
|
|
ROOT="/usr/share/cinema-spatial"
|
|
|
|
|
SOFA_SRC="$SRC/sofa/H4_HRIR_SOFA/H4_HRIR_SOFA/H4_96K_24bit_512tap_FIR_SOFA.sofa"
|
|
|
|
|
|
|
|
|
|
echo "=== 1. 准备目录 ==="
|
|
|
|
|
rm -rf "$BUILD"
|
|
|
|
|
mkdir -p "$BUILD/DEBIAN" "$BUILD/usr/bin" \
|
|
|
|
|
"$BUILD${ROOT}/hrir" "$BUILD${ROOT}/sofa" \
|
|
|
|
|
"$BUILD/usr/share/pipewire/pipewire.conf.d"
|
|
|
|
|
|
2026-09-13 16:38:00 +08:00
|
|
|
# ★ 源必须是项目目录: 旧版从 ~/.local/bin 拷, 那份可能落后于项目(2026-09-13 补回丢失的 cp)
|
|
|
|
|
cp "$SRC/空间音频" "$SRC/mpv-影院" "$BUILD/usr/bin/"
|
2026-09-12 23:52:43 +08:00
|
|
|
chmod 755 "$BUILD/usr/bin/空间音频" "$BUILD/usr/bin/mpv-影院"
|
|
|
|
|
|
|
|
|
|
echo "=== 3. HRTF 数据 (12 个 IR + SOFA) ==="
|
|
|
|
|
cp "$SRC/hrir/H4-96k/"*.wav "$BUILD${ROOT}/hrir/"
|
|
|
|
|
cp "$SOFA_SRC" "$BUILD${ROOT}/sofa/"
|
|
|
|
|
|
|
|
|
|
echo "=== 4. 项目脚本与文档 ==="
|
2026-09-13 16:38:00 +08:00
|
|
|
# ★ 音频状态.py 是 CLI 的设备/状态后端(CLI 会去找 $ROOT/音频状态.py), 漏打会致
|
|
|
|
|
# "切设备/诊断"直接报"缺 音频状态.py" —— 2026-09-13 补
|
|
|
|
|
cp "$SRC/生成配置.py" "$SRC/音频状态.py" "$SRC/换HRTF.sh" "$SRC/README.md" "$BUILD${ROOT}/"
|
2026-09-12 23:52:43 +08:00
|
|
|
chmod 755 "$BUILD${ROOT}/换HRTF.sh"
|
|
|
|
|
|
|
|
|
|
echo "=== 5. PipeWire 配置 (用安装路径生成) ==="
|
2026-09-13 16:38:00 +08:00
|
|
|
mkdir -p "$BUILD${ROOT}/web"
|
|
|
|
|
cp "$SRC/web/index.html" "$SRC/web/webui.py" "$SRC/web/启动.sh" "$BUILD${ROOT}/web/" 2>/dev/null \
|
|
|
|
|
|| cp "$SRC/web/index.html" "$SRC/web/webui.py" "$BUILD${ROOT}/web/"
|
|
|
|
|
|
2026-09-12 23:52:43 +08:00
|
|
|
CINEMA_SPATIAL_IR="${ROOT}/hrir" \
|
|
|
|
|
CINEMA_SPATIAL_OUT="$BUILD/usr/share/pipewire/pipewire.conf.d/90-cinema-spatial.conf" \
|
|
|
|
|
python3 "$SRC/生成配置.py"
|
2026-09-13 00:00:46 +08:00
|
|
|
cp "$SRC/91-clock.conf" \
|
2026-09-12 23:52:43 +08:00
|
|
|
"$BUILD/usr/share/pipewire/pipewire.conf.d/"
|
|
|
|
|
|
|
|
|
|
echo "=== 6. control ==="
|
2026-09-13 16:38:00 +08:00
|
|
|
cat > "$BUILD/DEBIAN/control" <<EOF
|
2026-09-12 23:52:43 +08:00
|
|
|
Source: collaplex-cinema-spatial
|
|
|
|
|
Package: collaplex-cinema-spatial
|
|
|
|
|
Section: sound
|
|
|
|
|
Priority: optional
|
|
|
|
|
Architecture: all
|
2026-09-13 16:38:00 +08:00
|
|
|
Version: $VER
|
2026-09-12 23:52:43 +08:00
|
|
|
Maintainer: edgevoid <edgevoid@users.noreply.github.com>
|
|
|
|
|
Depends: pipewire, libmysofa1, mpv
|
|
|
|
|
Description: Cinema spatial audio for headphones (HRTF virtual surround)
|
|
|
|
|
Renders audio into binaural using a SADIE-II human HRTF through a PipeWire
|
|
|
|
|
filter-chain virtual sink, so ordinary headphones give a cinema-like
|
|
|
|
|
sense of direction and space.
|
|
|
|
|
.
|
|
|
|
|
Provides two virtual sinks (5.1 passthrough and stereo-upmixed) plus the
|
2026-09-13 16:38:00 +08:00
|
|
|
space-audio and mpv-cinema commands.
|
|
|
|
|
.
|
|
|
|
|
Core: image-source room acoustics tracing (8473 early-reflection paths,
|
|
|
|
|
0-80 ms) + Sabine statistical tail (80 ms-2 s) -> a 96 kHz true room
|
|
|
|
|
impulse response, convolved binaurally; wet path energy-normalised.
|
2026-09-12 23:52:43 +08:00
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
echo "=== 7. 打包 ==="
|
|
|
|
|
cat > "$BUILD/DEBIAN/postinst" <<'EOF'
|
|
|
|
|
#!/bin/sh
|
|
|
|
|
set -e
|
|
|
|
|
if [ "$1" = "configure" ]; then
|
|
|
|
|
echo "collaplex-cinema-spatial 已安装。"
|
|
|
|
|
echo " 命令: 空间音频 开|开5.1|关|状态 mpv-影院 电影.mkv"
|
|
|
|
|
echo " 虚拟声卡定义: /usr/share/pipewire/pipewire.conf.d/"
|
|
|
|
|
echo " 生效: systemctl --user restart pipewire pipewire-pulse wireplumber"
|
|
|
|
|
fi
|
|
|
|
|
EOF
|
|
|
|
|
chmod 755 "$BUILD/DEBIAN/postinst"
|
|
|
|
|
dpkg-deb -b --root-owner-group "$BUILD" "$HOME/桌面/${PKG}_${VER}_all.deb"
|
|
|
|
|
echo
|
|
|
|
|
echo "=== 结果 ==="
|
|
|
|
|
ls -lh "$HOME/桌面/${PKG}_${VER}_all.deb"
|
|
|
|
|
echo
|
|
|
|
|
dn=$(dpkg-deb -c "$HOME/桌面/${PKG}_${VER}_all.deb" | wc -l)
|
|
|
|
|
echo "包内文件数: $dn"
|
|
|
|
|
dpkg-deb -c "$HOME/桌面/${PKG}_${VER}_all.deb" | awk '{print $6}' | head -30
|