如果你正在构建「本地无损音乐收藏」,下面这 3 个问题「也许会迟到,但从不缺席」。本文分享了我的思考和实践,希望这些问题不再成为你「爱乐」路上的绊脚石。最重要的,别错过文末的「应用推荐」。

I. 文件夹与文件命名

计算机科学里只有两个难题:缓存失效与如何命名。

—— Philip Lewis Karlton (1947-1997)

有人觉得这不过是个梗,也有人每读一遍都心有余悸:读者越是「内行」,对「命名」的要求就越高。《英语维基百科》维护了至少两篇《古典音乐作品命名规范》。话说回来,无论你听不听古典音乐,想要构建一个高质量的本地音乐收藏,「命名」这关都不好过。

下载来的数字专辑,很可能永远保留着由分销商命名的文件与文件夹,不做修改(毕竟大家都很忙)。以分销商的视角,供应商(唱片厂牌)是一级目录,而供货商内部 SKU(唱片编号)则是二级目录。这就不难理解为什么这张下载自 NativeDSD 的单曲专辑有着以 PTC 5186924 开头的文件名:

下载的数字专辑,保留着分销商的命名。

再翻翻其他的音乐文件夹,又可能是这样的:

文件夹里的文件名更为粗犷。

在「一致比完美更重要」收获公认的时代,很难把这些「野生」的命名方式和「高质量音乐收藏」联系起来。屏幕对面的你,也许早就有了改进思路,已然跃跃欲试了!动手之前,我们先看看你能想到「最棒的」命名方式,有没有这些缺陷:

  • 在文件与文件夹名称中,你为每张专辑录入了几十至几百个字符,但是播放器却「选择性忽视」了这些信息。播放器偏爱音频文件内嵌的「标签」,或者「刮销」得到的「音乐元数据」,并基于这些「音乐元数据」提供浏览、搜索等功能。播放器越聪明,文件与文件夹名称的用途越少。
  • 复杂的《命名规范》丧失了通用性和美感。即使你构思了一个周密无比的 naming scheme,你也不会安利给朋友 —— 她会觉得你要么有强迫症,要么在表演行为艺术(或者兼而有之)。
  • 当你收藏了近百张专辑时,你开始怀疑自己违反了(亲自制定的)《命名规范》,并渴望有工具能进行「辅助性检查」。
  • 如果你用播放器(或者标签编辑器)修改了音频文件的「标签」,那么你可能需要对文件与文件夹重做一次,或者干脆接受他们「渐行渐远」的事实。
  • 你有时觉得「大平层」(所有专辑都直接放在 ~/Music/ 文件夹下)欠缺精致;又有时觉得「小复式」(如 ~/Music/贝多芬/交响曲 这样的多层结构)不太实用:第一级应该是「作曲家」还是「艺术家」?有「多位作曲家」的专辑该如何处理?
  • 对古典乐迷来说,作品的「调」(如「C minor」)、「常用名」(如「Pathétique」)、「作品编号」(如「Op. 13」)要不要都照顾到?如果唱片公司给专辑起了「商品名」(如「A Window in Time」),那么从文件夹与文件名称中,可能无法获得有关曲目的任何信息。

静心思考,「本质冲突」大概率发生在这儿:

  • 「音乐元数据」是多维的、易变的、能适配使用场景的;
  • 「音乐文件夹」却是拓扑结构固定的、需要提前规划的。

相对而言,接下来的问题稍微简单点儿。

II. 有「破音」的 CD 抓轨

无损音乐可以由 CD 抓轨获得。「本地音乐收藏」也因此有着比「串流平台」更高的自主性。但即便使用了内置「缓存失效」1与「多次抓取」技术的「低倍速音轨提取程序」(如 XLD、EAC 等),也无法完全避免(因为缺少校验而出现的)破音、噪音、或数字静音。当光碟有物理损伤时,出现的机率更高。

AccurateRip 技术在 2003 年应运而生:AccurateRip 数据库中存储了近 500 万张 CD 光碟的 CRC 校验。与 AccurateRip 数据库比对一下,你就知道「哪几轨」存在提取错误。

AccurateRip 与 AccurateRip 数据库

问题又来了:知道错了又能怎样?你并没有办法修复啊(大神除外,见「我为什么把这张CD抓取了300遍」)。CUETools 技术在 2008 年应运而生:CUETools 数据库中存储了近 700 万张 CD 光碟的里德-所罗门(RS)纠错码,能够修正音轨提取时常见的「错误模式」。

CUETools 数据库

你可以使用 AccurateRip 识别抓轨错误,并用 CUETools 修复错误(后者目前没有 macOS 版本),但这必须发生在「播放」之前。因为说到底,我们只有一个「真实需求」:不要在播放时听到(因为音轨提取错误而导致的)破音。

III.「五花八门」的音频文件格式

当 400 元买到的固态硬盘能够存储 4,000 张 CD 音质的无损音乐时,我不再担心本地音乐的「存储成本」。但我始终关注无损音乐的「存储格式」。

无损音乐文件的「编解码过程」是无损的。从这一视角看来,无损音乐的诸多「格式」并没有本质差异 —— 我们可以用 XLD 轻松地从 WavPack 转成 FLAC,从 Apple Lossless 转成 Monkey’s Audio,或者干脆转成 WAV。只要文件完整,对「音质」并无影响。

无损音乐文件的实质差异体现在 3 类:

  1. 文件格式差异,比如 .flac.ape
  2. 编码器与版本差异,比如 libFLAC 1.4.30.9(有些格式存在多个编码器的实现方式)
  3. 编码参数差异,如压缩级别、分块大小等(libFLAC 有 9 个压缩级别,Monkey’s Audio 有 5 个压缩级别)

任何一个具体的音频文件,都是这个「三维空间」上的一个点。看看下面这些事实,你就理解了为何「高质量音乐收藏」应当「谨慎地」选择「文件格式」、「编码器版本」与「编码参数」:

  • 如果你有自行编辑音乐元数据「标签」的习惯,你可能早已知道:不同的「文件格式」对音乐元数据「标签」的支持并不相同。
  • 使用不同的「编码参数」,解码速度有着几倍到几十倍的差异。在播放时,你将体会到不同的切歌速度、不同的缓冲速度、或者不同的 CPU 占用率。
  • 一些由陈旧的「编码器版本」所创建的文件,会逐步失去播放器 100% 的支持(WavPack 和 Monkey’s Audio 都有 Legacy File 的概念)。如果你的音频文件不幸在此列,下次播放之前或需手动「转码」。

也许你已经为「一致化」做出了努力,比如:

  • .dsf 文件保存 DSD 音频
  • .flac 文件保存 PCM 音频
  • .cue 和「整轨」音频保存光碟抓轨
  • 使用固定的「编码器版本」与「编码参数」

恭喜你,这可是迈出了一大步!虽然仍然有一些遗憾:

  • 你想使用 .cue 和「单轨」音频来保证没有丢失专辑中「某一轨」,但是 .cue 文件对高格式和 DSD 音乐的支持并不好。
  • 你无法使用「只读存储」(例如设置了写保护的 NAS 空间或 SD 卡)来存储你的音频文件,因为任何对音乐元数据「标签」的改动,都需要写回音频文件。

为了从源头上避免和本文提到的这些问题「正面交锋」,我完成了一次「长征」。所幸你无需再这样辛苦,因为我让 Tonal 学会了我的「方法论」。


不妨试试 Tonal

Tonal 是 macOS 上的高音质播放器。使用侧边栏上方的「+」按钮,你可以选择一个文件夹,先将其中的音乐添加至 Tonal 收藏,而后方能管理与播放。

使用侧边栏的「+」按钮,将音乐添加至 Tonal 收藏中。

有些「固执」的播放器

能够添加到 Tonal 中的音乐,必须满足三点要求。首先:

  • Tonal 仅支持这些格式的无损音乐:
 无损文件格式  常见后缀
 FLAC .flac
 Monkey’s Audio .ape
 WavPack .wv.wv + .wvc
 Apple Lossless .m4a
 WAV .wav
 AIFF .aiff
 DSD .dsf.dff(包括经 DST 编码的 .dff
 SACD .iso

看过之后,你可能会说:「没问题」—— 毕竟文章标题就是「无损音乐」嘛!何况主流的无损音频格式,似乎都在上面的表格里。再来看第二点要求:

  • Tonal 只收录完整的专辑2:无论是「分轨」的音频文件,还是包含 .cue 文件的「整轨」专辑,都可以添加到 Tonal 收藏中;但如果一张专辑丢失了某个音轨,Tonal 就会说不。

如果你听古典音乐,或者只收藏完整的专辑,那么这一点要求你仍然会觉得「可以接受」—— 欣赏一张专辑就像在看展,「从头看到尾」才容易理解策展人的逻辑嘛!而且「无缝播放」(Gapless)也只能通过收藏整张专辑来实现。那我们再来看最后一点:

  • 收录 CD 格式的专辑时,Tonal 会自动地进行 AccurateRip 验证。如果 AccurateRip 报告你的音频文件包含抓轨错误,Tonal 会尝试使用 CUETools 自动修复。修复失败的专辑会被拒绝添加至 Tonal 收藏中。

Tonal 是第一个提供 CUETools 纠错功能的原生 macOS 应用。这就是 Tonal 在播放 CD 音质的专辑时没有破音的秘密。

自动管理的音乐收藏

一旦音乐被加添加至 Tonal 中,Tonal 便会自动地管理你的音乐收藏,并不再读取原始文件。在内部,Tonal 使用标准的 FLAC 与 WavPack 编码器来分别存储 PCM 与 DSD 音频3。这意味着:

  • 我们不再需要维护「文件与文件夹名称」
  • 无论播放任何专辑,都能体会相同的切歌速度、缓冲速度、与一致的 CPU 占用率

默认情况下,你的音乐收藏存储在 ~/Music/Tonal/ 文件夹中,但你可以随时移至外置硬盘或者 NAS 中。我把一张 1TB 的 SD 卡藏在了 MacBook Pro 的 SD 读卡器中,专门存放由 Tonal 管理的音乐收藏。

我的 Tonal 音乐收藏住在这里。

如果你厌倦极了手工管理「零散文件夹」的体验,Tonal 的「一站式方案」让我们回归到「爱乐者」的初心。如果你难以接受 Tonal「托管式收藏」的思路,那么不妨这样思考:

你的 iPhone 里有成千上万张照片,但你并不以「文件和文件夹的集合」来思考你的相册。你不会为每张照片命名,也不太关心HEIF、HEIC、JPEG、PNG这些图片格式。

因为你有了「照片」(Photos)应用。


「与众不同」的 Tonal

本文介绍了 Tonal 如何利用「添加音乐」的操作与「收藏托管」的思路,解决了 3 个构建无损音乐收藏时的常见问题(复杂的文件夹命名、有破音的 CD 抓轨、不一致的文件格式)。不过,在介绍 Tonal 的系列文章中,最精彩的并不是这一篇:

  • 如果你关心 macOS 下高音质播放的秘密,请阅读 macOS 上的高音质播放器,是不是智商税?,了解 Tonal 是如何处理「高音质播放」的。即使你不喜欢 Tonal,也能更好地理解 Roon、Audirvana、BitPerfect 等应用的设置方法。
  • 如果你是一个古典音乐爱好者,却始终无法找到完美支持古典音乐的播放器,请阅读 在 macOS 上听古典音乐?没有 Apple Music Classical 不要紧,了解为什么「对古典音乐的支持,Tonal 都藏在了细节里」。这篇文章的大部分内容同样适用于其他音乐类型。
  • 千万别错过本系列文章中的最后一篇 音乐元数据,原来还能这么玩,因为这是一个「大块儿头」,也是 Tonal 的最大的创新(或槽点)。Tonal 的音乐元数据编辑功能「特别的好玩儿」,如果您希望自己的音乐收藏「更完美」,值得花点时间来了解。

无需订阅

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

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

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

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

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

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