我最近写道:“GogglesMM 一直是我最喜欢的播放器之一。” 因此,当我在考虑采访构建和维护开源音乐播放器的开发者时,Sander Jansen 很快浮现在我的脑海中。Sander 是 Goggles Music Manager (GogglesMM) 的开发者和维护者,这是一款非常出色的开源音乐播放器,特别适合以非常透明的方式将音乐流从计算机传输到数模转换器 (DAC)。
在本系列的第一篇文章中,我采访了 Guyadeque 音乐播放器的创建者 Juan Rios;以下是我与 Sander 对话的编辑版本。
认识 GogglesMM 开发者 Sander Jansen
问:您为什么决定创建和维护开源音乐播放器?关于 GogglesMM,您真正关心的是哪些方面?
答: 当时对可用的播放器不太满意(它们占用大量内存,或者启动缓慢,或者严重缺乏友好的用户界面),我想我可以尝试自己编写一个。起初,我主要关注音乐组织(典型的艺术家/专辑/曲目布局),同时保持低内存占用并保持快速。
问:您能详细谈谈您面临的组织问题吗?我知道许多对古典音乐感兴趣的人也希望按作曲家排序;这是您考虑过的吗?以及分离指挥、独奏家和管弦乐队?
答: 组织音乐收藏的限制因素一直是文件格式及其支持的标签选项。我们将所有元数据存储在数据库中以进行快速检索,但这仅仅反映了文件本身的内容。
我的理念一直是,您应该能够复制文件,并且仍然拥有所有元数据,而无需也复制数据库。由于没有涵盖所有文件格式的元数据的统一标准,尝试支持最常见播放格式的播放器必须做出选择,这些选择通常偏向于支持标签方面的最低公分母。像 ID3v2 这样的格式支持各种元数据标签,并且可能嵌入到大多数文件中。这听起来可能是一个好主意,但是您有在其他软件或设备中破坏播放的风险。在 GogglesMM 中,写入新标签时,本机标签格式将始终具有优先权。
GogglesMM 确实支持指挥和作曲家标签。允许任意标签当然很好,但这确实使事情变得更加复杂,从数据库设计到 UI 选项。在保持简单方面肯定有一些道理。

问:请介绍一下 GogglesMM 使用的库。
答:我使用 FOX 库作为 GogglesMM 的图形用户界面。这是一个非常不错的库,尽管它近年来没有跟上较新的 UI 功能。在我以前的工作中,我们使用它将我们的应用程序移植到 Windows 和各种 Linux/Unix 版本。
GogglesMM 有自己的播放引擎,但依赖于常用的第三方库来解码各种音频编解码器。早期版本使用 xine,但由于缺乏对无缝播放的精细控制,我决定自己开发一个。
问:自 2016 年以来,您一直在 Launchpad 上构建 GogglesMM,甚至在那之前就开始工作了。那么为什么 Debian 和 Ubuntu 存储库中有一个非常旧版本的 GogglesMM,而不是您的版本?
答: GogglesMM 缺乏更新的官方软件包可能有很多原因。在 Launchpad 上提供构建似乎是阻力最小的路径,因为没有人有兴趣维护软件包。Ubuntu 上的旧版本应该会慢慢消失,因为我停止分发的请求终于得到了承认。将来,我可能会将其作为 snap 软件包提供。
问:您在白天的工作是软件开发人员吗?
答: 是的,我是 Baron 的软件开发人员,我的日常工作包括 Baron Weather API 的开发和维护,这是一种通过互联网分发各种天气数据的服务。
自 2000 年代初以来,我一直使用 Linux 作为我的主要平台,用于开发和桌面使用;首先是 Mandrake 发行版,然后是 Arch Linux,因为滚动发布发行版吸引了我,并且使我无需每年重新安装操作系统(并且它是我知道的首批 686 优化发行版之一)。
问:您是音乐家吗?您喜欢如何听音乐?
答: 我不是音乐家。GogglesMM 是我在车里或外出时使用的主要音乐播放器,在这种情况下,我使用手机。我在各种设置中使用 GogglesMM。在工作时,在笔记本电脑上,我主要通过耳机收听。根据活动的不同,这些可以是播客、背景音乐或我更认真收听的东西。这一切都取决于我当时的活动。
在家里,我有一台媒体 PC 通过 HDMI 连接到我的 7.1 环绕声系统。它允许我播放一些多声道专辑以及常规立体声,当然。此外,我还有一台可以访问相同媒体文件的常规台式机。两者都使用 GogglesMM。
问:我尝试配置我的音乐播放器,以将音乐数据以未更改的形式传递到 DAC。似乎 GogglesMM 确实试图避免重采样、更改字长等等。
答:是的,当我构建我的播放引擎时,我确保可以做到您正在尝试完成的完全相同的事情。
- 目前,GogglesMM 本身不进行重采样;有一些实验性代码,但它不完整,通常永远不会启用。
- GogglesMM 将尝试将任何解码后的数据原样传递给其任何输出插件(ALSA、Open Sound System [OSS]、PulseAudio),这意味着解码器支持的任何本机格式。对于无损编解码器,这通常意味着原始数据所用的任何格式。
- 如果输出插件/设备不支持特定的音频位深度或数据类型,则播放引擎将尝试将其转换为支持的类型(以尽可能少的精度损失)。
- 之后,音频将传递到 Pulse、ALSA 或 OSS。PulseAudio 对于普通用户来说往往很简单,但可能会对音频进行一些转换。您最好的选择是 ALSA。
- 根据您配置的 ALSA 设备,ALSA 可能会进行某种转换。GogglesMM 中有一个选项可以禁用 ALSA 重采样。另一种方法是直接指定“hw”设备,而不是“default”或“plug”设备。这似乎是获得您想要的确切结果的最佳方法。请参阅 ALSA 文档,了解其设备命名方案。
- 任何时候音频格式或采样率发生变化,GogglesMM 都会根据需要重新配置其输出设备,并且播放应正常继续。如果发生这种情况,曲目之间可能会有轻微的静音。(我们必须等到所有样本都已播放完毕,然后停止播放,重新配置设备,然后在之后恢复播放。)

问:相当多的开源音乐播放器使用 GStreamer;虽然有人告诉我,除非音量改变或输出设备不支持采样率或字长,否则它不一定会干扰比特流,但这仍然让我感到紧张,因为它可能会因为我不知道的某些奇怪的配置问题而“暗中”搞乱某些东西。
答: 这可能只是开发人员的懒惰!添加重采样器并动态进行格式转换和/或通道重新映射需要时间。随着 PulseAudio 的广泛部署,您不需要任何这些功能(在播放器本身中)来制作一个易于使用且可以正常工作的音乐播放器。GogglesMM 引擎的设计目的是避免做额外的工作。因此,Vorbis 解码器为我们提供的浮点样本将尽可能保持浮点,而 FLAC 解码器提供的 16 位样本将保持 16 位。只有当输出设备需要其他东西时,我们才会尝试转换它们。
这也表明,缓慢的开发可能是一件好事,因为您曾经认为需要的功能不再真正需要,因为它们已在上游实现。
问:我真正欣赏 GogglesMM 的另一件事是它的速度,即使在我的老旧双核台式机上也是如此。您能告诉我们您做了哪些工作来降低内存使用率并使 GogglesMM 快速响应?
答: 老实说,不多。我确实花了很多时间确保 SQL(ite) 查询速度很快(尤其是经常使用的查询),并确保数据库中没有存储重复信息。随着计算机变得越来越快,我在这方面考虑得越来越少,但这对我来说仍然很重要,当您启动应用程序时,它不会花费超过几秒钟的时间来显示并准备好使用。这也有助于我使用 FOX,它已经很快且轻巧。回到之前的话题,添加对任意标签等内容的支持肯定会对性能产生影响,并可能需要重写数据库设计。
问:您对 GogglesMM 有任何未来的计划吗?
答: 没有短期计划,但对于未来的开发,我一直在考虑包括对 HDPI 显示器、音频交叉淡入淡出、均衡器以及将我的 audioconvert 实用程序集成到 GogglesMM 中的支持。
问:audioconvert(音频同步和转换实用程序)的计划是什么?是将内容引入播放器,播放它,管理便携式设备上不同格式的集合,还是其他什么?
答: 最初,将其作为同一软件包的一部分会很方便,因为它可以共享相同的内部 FOX 库。也许可以重用部分代码库来管理便携式设备上的集合,尽管老实说,我看不出有这么大的需求。例如,我的主要音乐收藏以 FLAC 格式存储,并且我在单独的文件夹中维护这些文件的 Opus 和 MP3 格式副本,这些副本使用 audioconvert 同步。(这非常简单;只需运行 audioconvert --flac=opus /data/music/flac /data/music/opus。)我使用文件管理器将我想要的文件复制到我的便携式设备上。
我喜欢与 Sander 的对话,并了解了有关 GogglesMM 内部工作原理的一些有趣细节。对于任何想要牢固控制到 DAC 的处理管道的人来说,它都是一款出色的音乐播放器。
还有音乐……
几天前,我在播放一张从 CD 翻录的专辑,这张 CD 是我在一家著名的美国咖啡连锁店购买的,那是他们还在卖音乐 CD 的时候,我偶然发现了几首歌曲,这些歌曲启发我找到艺术家并购买了几张专辑下载。
第一张是 One and One is One,作者是 Joi。让我找到 Joi 的歌曲是“Asian Vibes”,它是南亚音乐和电子音乐的完美融合。我也非常喜欢其余部分;这是很棒的东西,我从对 Linux 友好的 7digital 下载供应商处以 FLAC 格式购买。
第二张是 Way Down Below Buffalo Hell,作者是 Jam Nation,也是从 7digital 购买的。我遇到的他们的第一部作品是 She Moved Through the Fair,这显然是为一个特定的录音项目创作的,该项目汇集了一群非常强大的音乐家。他们的音乐出现在我 1990 年代遇到的一些合辑中,我很想听到他们更多的作品。
最后,Sander 在我们的谈话中提供了一个很好的推荐:Blow Up Hollywood。他说,“他们是来自纽约的一支小乐队,刚刚发行了他们的最新专辑 Gold(他们上一张专辑中的一首曲目在此处出现)。”
6 条评论