M Series 的 macOS 配合 airpods 有个很酷空间音频特性,在你选择 head tracking 的空间音频模式时,声音会渲染成好似从你头部前方某个空间中固定的位置发出的,无论你怎么转动头部或者站起来小幅度走动,这个相对位置锁定都保持不变,听起来就像你物理空间的前方固定位置真有一个声源。

但这个特性是 AVFoundation 框架中的虚拟音频节点实现的,而 fb2k 使用的是更底层的 coreaudio,因此在它播放时,无法启用这个空间音频特性。所以我又 vibe 了一个插件,用 AVF 框架来输出,这样就能通过 fb2k 播放音乐同时启用空间音频了。

但是 airpods 的音质也没 那么 好,我使用的是其它的耳机怎么办?
—— 所以我又做了一套完整的虚拟 5.1 渲染引擎。这个模式使用成熟的经典 STFT upmix 配合 AVF 的 HRTFHQ 渲染器,把分离到不同声道的声音渲染到 6 个虚拟空间中的环绕喇叭,你可以自由调整这些喇叭的摆放来微调自己喜欢的声场。

(预留了控制层的结构,理论上来讲可以做一个脚本引擎让这些虚拟喇叭围着自己转,但有点太癫了所以 暂时 没做)
这个项目几乎完全由 Opus 完成,所以包含 DSP 在内的复杂的算法都完全开源,我把踩过的坑都留存在了 memo 文档里,方便以后移植或开发同类项目时参考。(如果你做的播放器也想移植类似的空间音频效果,让我来混个 contribution 也是可以的)

