我做了个 macOS 菜单栏音频工具,可以同时控制多个输出设备的音量和延迟

发布于

# 1. 事情是怎么开始的

我用 Mac 的时候,常年都会接一块显示器,有时候还会接入蓝牙音箱。平时系统只能选择一个默认输出,我就在想:既然面前有两三个能发出声音的设备,为什么不能让它们同时发声?

我上网找了攻略,发现可以用系统内建的“音频 MIDI 设置”创建多输出设备。声音虽然能同时出来,但操作很繁琐:没有一个好用的总音量控制,也不方便分别调整 AirPods 、显示器和其他音箱。更麻烦的是不同设备会有延迟,声音不同步的时候,听起来就像在 KTV 里一群人在抢麦。

# 2. 为什么还是决定自己做

我没有一开始就直接做,因为很怕自己变成那种做出十分钟 Demo 就宣布解决问题的自嗨开发者。自己遇到的问题,可能已经有人解决过,也可能市面上早已有成熟产品;如果不先研究,只是在浪费 token 、重复造轮子。

我最早看到了 GitHub 上的 FineTune ,但是它设计的理念是针对单个 APP 音量调节,对于多设备输出,也是从 APP 进入,不太符合我的习惯。还有就是类似的 APP ,他们都没有针对多设备同步时候,无线或者蓝牙音箱延迟进行调整的功能。我有个蓝牙音箱,总是比 Mac 的自带音箱慢一点。还有收费的 SoundSource 等等,他们的虚拟声卡功能更专业,不过也没有针对同步功能进行优化。
所以才开始做 Tutti 。

[演示视频](https://youtu.be/s_t-8aCeBWE)

# 3. Tutti 现在能解决什么

![Tutti 控制面板](https://raw.githubusercontent.com/BarryBarrywu/tutti/main/docs/screenshots/panel.webp)

Tutti 是一个常驻 Mac 菜单栏的音频控制工具。最基础的功能,是在面板里勾选多个本地输出设备,让 MacBook 扬声器、AirPods 、蓝牙音频设备、USB 音频设备或者 HDMI 显示器同时播放,并分别控制音量。

它也可以按 App 调整音量和分配输出。例如,可以让某个 App 从显示器播放,另一个 App 从 MacBook 扬声器播放。或者和你朋友一人一副 AirPods 看电影,苹果在 iPhone 上实现了这个 AirPods 同播的功能,我不知道为什么在 Mac 上却没有?

我还做了左右声道拆分,可以把左、右声道分别交给两个输出设备,就可以实现戴耳机才能实现的立体声效果,来听一些左右声道的歌非常爽;

![Tutti 立体声](https://tutti.barrybarrywu.com/docs/stereo-pair.webp)

你也可以单独调整某台设备的延迟。通过延迟补偿,可以尽量把不同设备听到的声音对齐。

![Tutti 延迟](https://tutti.barrybarrywu.com/docs/balance.webp)

上面所有的设备都保存成预设一键切换,我甚至做了 iOS 的 APP ,可以当做遥控器控制 Mac 上的 Tutti 。

# 4. 我在实现上的取舍

Tutti 是原生 macOS 应用,为了不做的那么“重”,它只用 CoreAudio 来实现,不需要安装虚拟音频驱动或系统扩展。退出后会恢复系统原来的音频输出。应用本体支持 macOS 13 及以上;按 App 控制音量、EQ 和输出需要 macOS 14.4 及以上。

这是我第一次真正把一个 App 从想法、代码、测试,一直做到官网、支付和售后。整个流程走完后,我最大的感受是:Vibe coding 做出一个能运行的玩具并不难,但要把它做成一个稳定、有人愿意使用的产品,需要花更多时间处理兼容性、反馈和各种边缘问题。

第一版虽然很快就做出来了,但我不知道功能优先级应该怎么排,也不知道是否真的有人需要。后来找了一些用户测试,根据他们使用的设备、实际需求和遇到的问题,持续迭代了一个多月,才决定正式拿出来分享。

# 5. 已知限制和商业化思考

目前已知的主要限制:

- AirPlay 设备不能加入 Tutti 的多输出组合;
- 部分 App 或新的 macOS 测试版可能存在 Core Audio 兼容问题;
- 应用音量和应用输出功能需要 macOS 14.4 及以上。

这个产品在我想开始做的时候,我就决定它一定是一个大部分功能免费,但是呢,专业功能或者说某些痛点功能是进行收费的。因为我不想把它当做一个 demo 或者说一个玩具来去做,我希望它是一个成熟的产品,那它就是要面向市场去获得一些商业化上的正反馈。所以 Tutti 的基础功能可以免费使用,Pro 提供 7 天试用,之后是一次买断。

# 6. 想听听大家的真实使用方式

我现在最想了解的是:

1. 大家平时会给一台 Mac 同时连接哪些音频设备?
2. 在多设备输出、应用音量和应用输出分配之间,大家最常遇到的问题是什么?

欢迎访问:[Tutti 官网](https://tutti.barrybarrywu.com/)

---

原文链接:[点击查看](https://www.v2ex.com/t/1228355)

评论(3)

老哥,其实已经有 SoundSource 这类软件了。不过看了下你的截图,UI 设计确实比它家好看点。

· 0 个赞

回复

确实,不过咱们的定位还是有点区别的。SoundSource 属于那种专业的系统级调音台,单控 App 音量、全局 EQ 这些很牛,当然价格也摆在那。我做这个主要是为了方便普通用户,重点是解决多设备同时输出和分别调音量、延迟的痛点,顺便做了个 iOS 端当遥控器。算是两个方向吧,谈不上谁替代谁。

· 0 个赞

我刚开始做 Tutti 的时候也做了调查,SoundSource 确实做得很专业。不过我觉得 Tutti 并不是它的替代品。虽然功能上有重叠,但我们关注的重点不同:SoundSource 更像是“系统级音频调音台”,专注于单独控制每个应用的音量、全局 EQ 和耳机校正,而 Tutti 则是面向普通用户,强调多输出设备的操作,使用上更友好方便。比如说,让 Mac 扬声器、显示器和 USB 音箱同时播放,并能单独控制音量、延迟和左右声道,还能设置设备优先级和保存预设。现在我还在探索如何将 iPad 和 iPhone 一起加入多设备同播的功能。两个产品的方向都有各自的优势,不能完全互相替代。

· 0 个赞