2

macOS 上的高音质播放器,是不是智商税?

 11 months ago
source link: https://sspai.com/post/80703
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

我一直不理解:高音质播放器为什么要通过复杂的「播放设置」来标榜「专业性」?按照 Dieter Rams 的「设计十诫」,这样的做法甚至连「诚实」都算不上。

高音质播放器早已多如牛毛,macOS 上也不例外。如果你收藏了一些「无损音乐」,或者使用 USB 解码器,下面这一长串名字1,至少有一两个会看起来眼熟,也许某个已经「荣登」你的信用卡账单了。

  • Amarra
  • Audirvana
  • BitPerfect
  • Decibel
  • Fidelia
  • JRiver Media Center
  • Pure Music

在「位元完美」2(Bit-Perfect) 的范畴内3,本文「解密了」macOS 上高音质播放器的核心功能、设置与营销技巧。无论你对正在使用的播放器是否满意,这些干货都值得你看看。更重要的是,别错过文末的「应用推荐」。

作为「高保真播放器」的 Mac

与技术相比,对人们有信心更为重要。要相信他们基本上是善良、聪明的。如果你给他们工具,他们会用这些工具做很棒的事情。

—— Steve Jobs (1955-2011)

从这段话中不难看出「内容创作场景」始终是 Apple 产品的驱动力;而「内容消费场景」也往往得益于此。以「音频回放」为例:

  • 为了给「数字音频工作站」提供可靠的、低延迟的音频 I/O(输入/输出),Apple 在 WWDC 2003(没错,是 2003)上推出了音频 HAL(硬件抽象层)接口,早于 Windows 平台上对标的(第三方)ASIO 协议。
  • 2009 年,Apple 在 Mac OS X 10.6 中支持 USB Audio Class 2.0 协议支持(与 RME 推出 USB 2.0 音频界面卡同步)。这也是 USB 解码器规格书中经常出现「仅支持 Mac OS X 10.6 以上版本」字样的原因。相比之下,微软在 2017 年构建的 Windows 10 中,才加入了对 USB Audio Class 2.0 的支持。

macOS 上主流的高音质播放器全部基于以上接口与协议。

你也许有这样的疑问:从年份上看来,这些技术似乎已经「廉颇老矣」,与近两、三年出现的「计算音频」、「空间音频」等摩登词汇相比,「尚能饭否」?其实不然。每套接口对应着不同的设计目的。对于与「输出设备」打交道较多的「高音质播放」场景,这些接口仍然是最佳选择,因为:

  • 客观地讲,这些接口满足了高音质播放器的功能需求,并且足够贴近「输出设备」(即使达不到「直接处理硬件中断」的程度)。
  • 那些使用更底层接口的4,随着操作系统的更新与替代性接口的出现,会逐渐(或已经)无法正常工作。
  • 那些使用更高层接口的5,在营销中占据劣势。 CoreAudio 在这个「全靠忽悠」的小圈子里已被不幸「黑化」(满足若干条件时,这些高层接口依然可以做到「位元完美」的回放)。
1

主流高音质播放器均使用底层的 HAL 接口。来源:developer.apple.com

好了,我们开始梳理一下 macOS 上高音质播放器的关键功能与设置。

采样率切换

音频内容的「采样率」和「位深」,有时会被比喻为监视器的「分辨率」与「色深」。营销人员胆子再大些,还能把一张满是感人马赛克的图片,和另一张300dpi的图片,类比成「44.1kHz」和「DSD256」…… 下次再见到这样的宣传,请勿当真。

当你播放一张 24/486格式的专辑,而解码器却工作在 24/192 状态时,并不会听到 Papi 酱视频里那样的倍速音效 —— 在你的 Mac 上,「操作系统」或「播放应用」用 DSP 算法完成了「采样率转换」(SRC)操作7。有些解码器具备「内部升采样」功能,这意味着你听到的音乐可能是双重 SRC 的产物。

对「高音质播放」而言,应当在 Mac 上进行「采样率转换」么?对大部分用户而言,并不建议。这在「数字音乐」和「输出设备」之外,引入了新的「影响因子」。这个「影响因子」并不透明,还受到诸如参数配置、应用程序版本、商业授权等因素的影响。

当这个「影响因子」变化时,你将无法独立地评估系统中其他部分的性能,也不能回答「从 HDTracks 买的高格式的『吉普赛之歌』是否比 CD 更好听」这样的问题。

1

「音频 MIDI 设置」已经 16 岁了

使用 macOS 自带的「音频 MIDI 设置」应用,你可以手动地将输出设备的「采样率」与专辑格式相匹配,再配合「位深」和「音量」设置,也能做到「位元完美」(Bit-Perfect)的回放。这明显不现实。

1

Studio Display 最高支持 96 kHz 的采样率,不过竟然有 8 个声道。

根据音乐内容格式,自动调节输出设备的「采样率」,是「高音质播放器」的必备功能。

「位深」亦称采样精度。对 USB 接口的解码器而言,「界面位深」可以理解为 USB 线缆上传输的「数据格式」8。

在 Audio MIDI Setup 应用中,你同样可以手动调整输出设备的「界面位深」。

1

较新的 USB 解码器支持 32 位的界面深度,虽然意义不大。

USB 音频协议本身支持 IEEE-754 格式的 32 位浮点数,但只被专业设备采用。所有的「Hi-Fi 解码器」都采用有符号整数作为「界面格式」。有些用户倾向于将其设置为设备支持的最大值(如 32 位整数),以降低「低音量下的量化噪音」9。这个主张是否成立,需要一些补充信息:

  • 如果音量由「操作系统」或「播放器」使用「音量算法」进行调节(比如你正在用 TV 看剧),那么将输出设备的「界面位深」设置为该设备支持的最大值(并尽量选择带有「抖动」的音量算法)是正确的(R-2R 架构解码器存在例外,在此不做讨论)。
  • 如果音量由「输出设备」或者模拟域的「前级放大器」控制,并使用「位元完美」(Bit-Perfect)的播放应用,这时「界面位深」仅需等于(或大于)「源位深」即可。新型(如使用 ESS 系列芯片的)「输出设备」的音量算法有 32 位或更高的整数精度,与「界面位深」并无关联。

有些「输出设备」的「位深指示」能显示实际「内容位深」,而非「界面位深」10:无论你把「界面位深」设置成 32 位还是 24 位,当「位元完美」地播放 CD 内容时,屏显都是「16 位」。这个功能能识别一部分通过「简单移位」生成的「假高格式」音乐。

根据音乐内容格式,自动调节「输出设备」的位深,是「高音质播放器」的必备功能。

部分高音质播放器提供了「整数模式」(Integer-Mode)设置。这是一个 macOS 的特有概念。如果该应用同时有 Windows 或者 Linux 版本,你在那里将找不到这个选项。

一个(简化的)数字链路「大致上」可以这样表示:

1

高音质播放器的数字域链路(示意图)

「驱动程序」根据「音频设备」所要求的 界面格式(如 24 位整数)传输数据,却允许播放器按照 虚拟格式(如 32 位浮点数)提供数据。

  • 对于 32 位的「源格式」,为了「位元完美」的回放,必须使用「整数模式」才能完成,因为 IEEE-754 格式的 32 位浮点数仅可以表示 25 位有符号整数。
  • 对于 24 位或 16 位的「源格式」,无论是否使用「整数模式」都能实现「位元完美」(Bit-Perfect)的播放。但是「整数模式」避免了一次由 32 位浮点数到 24 或 16 位整数的额外转换 —— 本应如此。

「整数模式」应由高音质播放器自动启用。一定要将这个设置「暴露」给用户,或者大肆鼓吹,则是「营销需要」。

通常,你在刷 B 站的同时,也能听到 QQ 提示音 ——「驱动程序」允许多个「应用程序」同时使用一个「输出设备」。但是一个「输出设备」只有一路输入啊?没关系,「驱动程序」会「混音」。不过,有一些场景下,你可能不希望或者不能允许「混音」的发生:

  • 你不希望在听着马勒的「复活」时,喇叭里发出阿里旺旺的「叮咚」声。
  • 以 DoP 协议播放 DSD 内容时,如果和另外的音频流「混合」,会丢失 DoP 标志,退回 PCM 模式。

「独占模式」解决了这个问题。独占的「输出设备」只接受一路输入,其他应用也无法对其进行其他操作。为了回放 DSD 内容,和避免其他应用的干扰,高音质播放器应当自行完成「独占模式」的设置。

I/O 缓冲

「I/O 缓冲」(I/O Buffer Size)是个「连续值」(如 512 个采样),有时通过滑块调节,有时会以 Mode 1、Mode 2 等「神秘形式」存在。

我们知道「驱动程序」并不生产音频内容,只是音频内容的「搬运工」。为了将音频内容发送至「音频设备」,「驱动程序」会定期向「应用程式」请求音频内容。这称为「I/O 操作」(搬砖)。但是搬砖的节奏是快是慢?对于专业应用来说,太快或太慢都不行。

  • 每毫秒搬一次,处理器开销高:每秒钟不得不做 1,000次 「I/O 操作」
  • 每分钟搬一次,输出延迟高:第 60 秒才开始搬运第 0 秒产生的音频

「I/O 缓冲」调节的就是搬砖节奏 —— 缓冲越大,频率越低。因为对「输出延迟」没有要求,「高音质播放」应当增大「I/O 缓冲」来降低「CPU 占用率」。

高音质播放器应当自动为设备选择最大的「I/O 缓冲」。让用户自己来设定?妥妥的「营销伎俩」罢了。

I/O 占比

就高音质播放而言,「I/O 占比」(I/O Procedure Duration)是个「智商税」设置。如果你找不到这个设置,那最好。

虽然名字挺专业,但理解起来并不难。如果「驱动程序」每隔 1 秒钟搬运一次数据(「I/O缓冲」= 1 秒),从你在 Garage Band 里敲下军鼓,到从扬声器听到声音,最长要等多久?你可能想抢答:「1 秒种」!但正确答案是「可能要 2 秒种」。

「驱动程序」请求音频内容之后,不会让「音频设备」立即读取。「驱动程序」知道,「应用程式」最长需要「1 秒种」才能造出来这「1 秒钟」的音频内容。如果在第 1.0 秒「驱动程序」向「应用程式」请求数据,「驱动程序」通常让「音频设备」在第 2.0 秒读取音频内容,最早这时你才能听到军鼓声。

1

默认情况下,I/O 占比 = 100%

有些「专业应用」不接受这样的高延迟,他们向「驱动程序」信誓旦旦地承诺:「哥,我是个快手,填满这『1秒钟』的『I/O缓冲』我连『0.1秒钟』都不用,你就让『音频设备』在『0.1秒钟』以后来读就行」。凭着这张「承诺书」,输出延迟一下子就减少了「0.9秒钟」。在 macOS 平台下,这个「承诺书」就是 I/O 占比(IOCycleUsage),用途是帮助「专业应用」和 I/O 延迟斗智斗勇。

显而易见,对于「高音质播放」场景,降低「0.9」秒的延迟,没有任何意义。

有时也称作「缓存大小」、「缓存空间」等,设置方式既可能是个开关,又可能是以 MB 或者 GB 为单位的内存空间大小。

你可能以为「内存播放」特别酷:输出设备可以直接访问 RAM 里面已经「无损解压」的音频。而现实却是残酷的:而当你固执地把 10 GB 的 DSD 256 一次性写到「内存堆」里,macOS 不得不把他们再次「交换」回固态硬盘上。

这是一个「智商税」设置,满足了和下面「系统优化」一样的「纯营销目的」。

这同样是一个「智商税设置」。如果你的「高音质播放器」里找不到这个设置,那就对了。

「关闭一些系统服务,降低 CPU 占用率,就能提升音质」—— 这套比「金坷垃」更容易上口的「营销话术」,虽然早在 10 年前就已被证伪,但仍然出现在一些「高音质播放器」里,原因就不过多解释了。

文末介绍的 Tonal 有着比一些「高音质播放器」更低的 CPU 占用率(欢迎自行测试)。仅仅这一点,无法为「播放音质」背书。

1

播放 16/44 音频内容时,Music 应用使用了 13.8% 的 CPU。

大部分 Mac 用户无需时刻关注 CPU 占用率。诊断如「运行迟缓」等问题时,从 macOS 的「活动监视器」入手,了解各种系统资源的使用情况,并分析其合理性,方为明智之举。相信「高音质播放器」的「系统优化」功能,无异于被收了「智商税」。

人类使用工具,而非工具使用人类;不要被这样的「营销话术」洗脑,成为工具的奴隶。无论是「系统服务」还是「第三方服务」,都不是「播放音质」的拦路虎。

为何不能「零设置」?

我一直不理解:高音质播放器为什么要通过复杂的「播放设置」来标榜「专业性」?按照 Dieter Rams 的「设计十诫」,这样的做法甚至连「诚实」都算不上。

对于无需配置 DSP 参数、音量调节亦交由输出设备(如 USB 解码器)来完成的「位元完美」(Bit-Perfect)播放器,没有正当理由把这些设置暴露给用户。

不妨试试 Tonal

为了验证这个想法,我打造了 Tonal —— macOS 平台上的高音质播放器。

在 Tonal 的创作过程中,我的目标十分明确:Tonal 可以有「用户偏好」,却不能引入任何「播放设置」。使用 Tonal 播放音乐,你的预期是明确的:从 CD 格式到 DSD 256,只要设备支持,回放就一定是「位元完美」(Bit-Perfect)且处理得当的。

这种「简单」的高音质播放体验,是其他应用无法替代的。

1

Tonal 是 macOS 平台上的高音质播放器。

了解你的输出设备

通过 Tonal,你能了解某个 USB 解码器的真实规格。从下图中,Tonal 报告了我的 USB 解码器支持:

  • USB Audio Class 2.0 协议;
  • 「异步」传输模式;
  • 128 级音量调节;
  • 16、24、32 位深;
  • 高至 768 kHz 与 DSD 256 的采样率。
1

在中间的一列,Tonal 报告了 USB 解码器的技术规格。

听上去怎样?

从技术上,所有「位元完美」(Bit-Perfect)的正确回放,在「理论上」与「实践中」上并无任何差别;从伦理上,我不应提供「主观听感」等诱导性描述。你可以在 加拿大博主 @archimago 的博客 上了解这一事实。

如果你依然好奇,或者认为「高音质」的产品都得靠「主观听感」来「收货」,我只能以截图的方式「引用」两位用户的主观听感。

1

认出发件人身份的读者请留言,第一个留言者会获得内购兑换券一张。

1

在 Roon 的论坛上,我发现了讨论 Tonal 的帖子。

「与众不同」的 Tonal

本文介绍了 Tonal 是如何成为一个「零配置的高音质播放器」的。不过,在介绍 Tonal 的系列文章中,最精彩的并不是这一篇:

  • 如果你正在构建无损音乐收藏,请阅读 收藏无损音乐之前,先想好这 3 件事。希望这篇文章能引发你对本地音乐收藏的一些思考。
  • 如果你是一个古典音乐爱好者,却始终无法找到完美支持古典音乐的播放器,请阅读 在 macOS 上听古典音乐?没有 Apple Music Classical 不要紧,了解为什么「对古典音乐的支持,Tonal 都藏在了细节里」。这篇文章的大部分内容同样适用于其他音乐类型。
  • 千万别错过本系列文章中的最后一篇 音乐元数据,原来还能这么玩,因为这是一个「大块儿头」,也是 Tonal 的最大的创新(或槽点)。Tonal 的音乐元数据编辑功能「特别的好玩儿」,如果您希望自己的音乐收藏「更完美」,值得花点时间来了解。

Tonal 只有 25 MB,是名副其实的「轻量级」应用。你可以 在 Mac App Store 免费下载

免费版的 Tonal 在功能与使用时间上都没有限制,但最多添加 20 张(CD 或高格式)专辑,相信能支撑您构建一个心爱的「迷你收藏」。

超出之后需要一次性内购解除限制(非订阅)。推广期内国区定价 ¥348(不到其他区定价 $99.99 的一半)。有一个比付费解锁更好的办法:如果您评测了 Tonal,欢迎联系我领取内购兑换券11;如果您进行了深度评测,还会额外再提供一张兑换券,方便您赠送挚友。

下载之前,请先阅读 《Tonal 使用手册》(英文版)。

1

听,见不同。向 Apple 的「Think different」文案致敬。

最后,真诚地寻找一位「创始合伙人」,让 Tonal 的体验越来越美好,能给更多的爱乐者带来「小确幸」!欢迎私聊。

> 下载 少数派 2.0 客户端 、关注 少数派公众号,解锁全新阅读体验 📰

> 实用、好用的 正版软件,少数派为你呈现 🚀


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK