没错又是我全 v 站唯一一个 fb2k 插件开发者
M Series 的 macOS 配合 airpods 有个很酷空间音频特性,在你选择 head tracking 的空间音频模式时,声音会渲染成好似从你头部前方某个空间中固定的位置发出的,无论你怎么转动头部或者站起来小幅度走动,这个相对位置锁定都保持不变,听起来就像你物理空间的前方固定位置真有一个声源。
但这个特性是 AVFoundation 框架中的虚拟音频节点实现的,而 fb2k 使用的是更底层的 coreaudio,因此在它播放时,无法启用这个空间音频特性。所以我又 vibe 了一个插件,用 AVF 框架来输出,这样就能通过 fb2k 播放音乐同时启用空间音频了。
但是 airpods 的音质也没 那么 好,我使用的是其它的耳机怎么办?
—— 所以我又做了一套完整的虚拟 5.1 渲染引擎。这个模式使用成熟的经典 STFT upmix 配合 AVF 的 HRTFHQ 渲染器,把分离到不同声道的声音渲染到 6 个虚拟空间中的环绕喇叭,你可以自由调整这些喇叭的摆放来微调自己喜欢的声场。
(预留了控制层的结构,理论上来讲可以做一个脚本引擎让这些虚拟喇叭围着自己转,但有点太癫了所以 暂时 没做)
- 我其实想以后能配合外挂的空间定位设备做成任意耳机头部追踪的,但我还没想好那个「空间定位设备」是什么形态。
这个项目几乎完全由 Opus 完成,所以包含 DSP 在内的复杂的算法都完全开源,我把踩过的坑都留存在了 memo 文档里,方便以后移植或开发同类项目时参考。(如果你做的播放器也想移植类似的空间音频效果,让我来混个 contribution 也是可以的)
- Releases: https://github.com/pnck/foo_out_avfoundation/releases
- 如果你有更专业的 review 意见和讨论(算法、AVF 框架的经验)可以发到 fb2k 的开发者社区帖子
- 如果喜欢的话可以通过站内的 $v2ex 打赏支持


