我如何构建和维护 Cantata,一个开源音乐播放器

在与构建和维护开源音乐播放器的开发者对话的这一期中,我们听取了来自 Canata 的 Craig Drummond 的声音。
137 位读者喜欢这个。
Yellow and red record playing

Opensource.com

这是与构建和维护开源音乐播放器的开发者进行对话的系列文章中的第三篇。Craig Drummond 是 Cantata 的开发者和维护者,Cantata 是一款开源音乐播放器,充当 音乐播放器守护程序 (MPD) 音乐服务器 的前端(客户端)。我在家中有两台小型无头计算机配置为音乐服务器——一台连接到我们客厅的立体声音响,一台在我楼上的办公室。当我寻找控制这些服务器的方法时,我第一次遇到了 Cantata,哇,它真是一件令人印象深刻的作品。

我对更多地了解 Cantata 很感兴趣,所以我很感激 Craig 同意接受这次采访(为了篇幅和清晰度,采访内容经过了轻微编辑)。 闲话少说,让我们与 Craig 聊天吧。

Chris Hermansen: 查看 Cantata 的 GitHub 页面Cantata 的 Debian 发布历史,似乎您从 2014 年之前就开始从事 Cantata 的工作了。 大概是这样吗? 是什么让您决定启动这个开源音乐播放器项目? 这是否与您的评论“Cantata 最初是 Qt MPD 客户端 (QtMPC) 的一个分支?”有关?

The Cantata open-source music player.

Craig Drummond: 我从 2011 年开始从事 Cantata 的工作。我曾经是 KDE 和 Amarok 用户(喜欢 Amarok 1.x,不太喜欢 2.x)。 事实上,我曾经是 KDE 核心开发团队的成员。 虽然我喜欢 Amarok 的 UI,但我需要登录 KDE 才能播放音乐,但我希望 让我的音乐播放 并远程控制它。 我四处寻找, 找到了 MPD——一个无头音乐播放器。 作为 KDE 用户,我寻找 KDE/Qt GUI,我找到的最好的 GUI 是 QtMPC。 这个项目已经被放弃了很长一段时间,并且有一些奇怪的 UI 怪癖,这让我很恼火。 因此,我采用了 QtMPC 代码库,修复了它的一些 UI 怪癖,并将其移植为尽可能多地使用 KDE 库。 最初,我计划将补丁发送回 QtMPC,但我做了太多的更改。

CH: 您在白天的工作中也是一名软件开发人员吗? 您在 Linux 环境中工作,还是在其他环境中工作?

CD: 是的,软件也是我的日常工作。 它是 Linux、Windows 和 Android 开发的混合体。 大多数时候使用 Windows,Linux 在 VM 中运行。 我更喜欢使用 Linux,但这并非由我决定。

CH: Cantata 真正让我印象深刻的一件事是其对细节的极致关注——例如,设置页面上精心编写且有用的“微帮助”片段。 Cantata 有哪些真正对您重要的方面?

Cantata's Collection Settings dialog.

CD: 这不是我真正考虑过的事情。 Cantata 多年来一直在有机地发展,通过添加我想要的功能(AudioCD、封面下载等)以及添加其他人要求的功能(ReplayGain、我从未使用过的 Last.fm 音频指纹识别、Jamendo、Magnatune 等)。 Cantata 有如此多的选项 并且没有用户指南,因此我认为在配置页面上添加注释将有助于解释某些选项、限制等。 我喜欢 Cantata 的一个方面是整体外观; 从单色图标(Font Awesome 在这方面非常出色)到按专辑对队列中的曲目进行分组、队列背景等。 对我来说,UI 看起来漂亮很重要——正如所说,这是 fork QtMPC 的原因之一。

CH: 如果我没有弄错,MPD 的最新版本似乎支持封面共享(有关示例,请参阅 此处,搜索“albumart”)。 您是否有计划将此功能添加到 Cantata? 还是继续依赖 MPD 配置具有“附近”的封面服务器?

CD: Cantata 已经支持从 MPD 获取封面——此功能是去年 11 月通过另一个用户的补丁实现的。

CH: 我必须更新我正在运行的版本。 您是音乐家吗? 您如何使用 Cantata——耳机、独立 DAC 还是家用立体声音响? 您是专注地听,还是主要作为背景音乐? 您在听音乐时工作吗?

CD: 我当然不是音乐家!。 我有一把吉他,勉强能弹奏 Stairway to Heaven——但这几乎是我的能力极限。 我的听歌方式是混合的。 现在当我打字时,我正在收听 Radio Paradise 上的摇滚混音——主要作为背景音乐。 但是,当我拿到一张新专辑时,它通常会成为我数周内唯一听的东西。 我真的很喜欢听音乐,并且会尽可能经常地播放音乐。

我现在的所有听歌都由 Logitech Media Server 处理。 为此,我有两个 airplay 扬声器、一个旧的 squeezebox 收音机和一个蓝牙扬声器(我通过 pi zero-w 上的 squeezelite 将 BT/LMS 连接起来使用)。 我从不使用耳机,总是通过扬声器。 我有一个 TEAC reference 500 系统,我用 Libratone Zipp (Airplay) 替换了它。

CH: 请向我们介绍一下 Cantata 使用的库。 例如,您为什么决定使用 Qt?

CD: 嗯,作为一名前 KDE 用户,Qt 是显而易见的选择。 毕竟,QtMPC 是基于 Qt 的。 Cantata 的最初几个版本是基于 KDE 的,只有 Qt 构建作为可选选择。 后来(我认为是 2.0),我将代码迁移到仅 Qt5,并放弃了 Qt4(以及 KDE)支持。 即使我现在正在使用 GNOME,我仍然很喜欢 Qt 库。 Qt 使跨平台开发相对容易——因此 Cantata 具有 Windows、macOS 甚至 Haiku 端口。 所有其他库的使用主要是因为它们是其功能的默认库(例如,libmtp)。 我使用 Taglib 进行标签读取/写入,主要是因为它具有类似 Qt 的界面。 但是,它偶尔会导致崩溃,因此 Cantata(如 Clementine)会启动一个单独的进程来读取和写入标签。

CH: 您之前提到您正在从 MPD 作为服务器迁移到 Logitech 媒体服务器。 您能详细说明一下这个决定吗?

CD: 我一直在寻找一个在家中播放音乐的系统,以及我的妻子会使用的系统。 (Cantata Windows 端口的开始是为了看看她是否会使用它,但 [她] 从未使用过。) 我四处寻找解决方案。 我的 Android 手机上有 BubbleUPNP。 我尝试使用该选项,让 MiniDNLA 与 Chromecast 音频对话,但很快就被曲目之间两到三秒的间隔所困扰。 在这次尝试之后,我尝试了 Plex,它也可以播放到 Chromecast 音频设备。 但同样,曲目之间有 0.5 秒的间隔(对于现场专辑来说很糟糕),并且更新音乐数据库的速度很慢。

最后,我偶然发现了 LMS。 此选项也支持 Chromecast 音频设备,但它也支持 Airplay、DLNA 和无头 squeezelite 应用程序。 我早就放弃了 Chromecast,但 Airplay 支持非常棒。 使用 LMS,我可以让我的音乐在整个房子里播放,将音乐队列从一个设备移动到另一个设备等等。 所有这些都通过开源服务器 (LMS) 与开源播放器(Airplay“桥接器”、squeezelite 等)对话。

而且,最棒的是——我的妻子现在实际上可以使用该系统了。 她在她的 iPhone 上使用 iPeng 来控制设备——在 Android、iOS 等上拥有控制点,使事情变得更加用户友好。

从我的角度来看,我喜欢 LMS 将服务器与播放分离的方式,而 MPD 它们是同一个。 让一个服务器处理多个播放设备的音乐库和播放队列对我来说很有意义。

CH: 关于 LMS 的有趣评论。 我记得当我真的想要 Logitech Transporter 时,我自己也对它很感兴趣。 显然,我需要再次看看。 您是否了解 MPD 和 LMS 社区的相对规模? 两个社区的总体活跃程度?

CD: 说实话,不太确定。 我在 LMS 社区中比以往在 MPD 中活跃得多。 (MPD 的作者从不喜欢 Cantata 存储自己的音乐列表缓存这一事实)。 LMS 论坛 (forums.slimdevices.com) 似乎比 MPD 论坛 (forum.musicpd.org) 更活跃。 LMS 用户和开发者非常友好,Michael Herger(一位 Logitech 员工)乐于助人,通常会快速回复查询。 但正如所述,我从未真正与 MPD 进行过太多互动,因此我无法真正提供有关该方面的太多信息。

正如所述,LMS 更适合我的需求,但 MPD 很可能对其他人来说是更好的选择。

CH: 您对 Cantata 有任何未来的计划吗? 您想添加的东西? 您从事的其他开源项目?

CD: Cantata 没有未来的计划,它现在非常处于仅修复 bug 的状态。 今年晚些时候,我将发布 v2.4.0,但这可能是很长一段时间以来的最后一个功能版本。 正如所述,我不再积极使用它。

至于其他开源项目:我曾经编写 KDE 字体管理器和 KDE 的仅图标任务栏,我为各种开源项目(KMediaFactory、Audex、Kino、MPDroid)贡献了补丁。 几年前,我编写了一个 Qt5 open-home 控制点。 这个项目从未成熟,并且考虑到我也放弃了 BubbleUPNP/MiniDNLA,我已经有很长一段时间没有使用它了。

我现在正在从事的主要项目是 LMS 的 Google Material 主题“皮肤”。 LMS 的默认 Web UI 虽然功能齐全,但并不漂亮,并且在移动设备上无法真正工作。 因此,在过去的一年中,我一直在为 LMS 编写 HTML5/Javascript 界面。 但是,我不是 Web 开发人员,所以这一切对我来说都是新鲜事物。 这个项目最棒的地方在于它安装在 LMS 服务器上,因此我可以拥有一个漂亮的 LMS UI,而无需安装任何软件(只需要浏览器)。 如果我要举办烧烤派对,我可以让客人更改曲目等,只需让他们将手机(iOS、Android 等)上的浏览器指向 LMS 即可。 如果您有兴趣,请在线搜索“lms material skin”。 我的 GitHub 页面上唯一的屏幕截图来自 v0.0.1(并且 UI 发生了很大变化)。 我几周前刚刚发布了 v1.0,但我仍在进行更改。 “尽早发布,经常发布。”

CH: 非常酷,我想我会看看。 我猜这最终会取代您家中 iPeng 的使用?

CD: 那会很好,但很难让我的妻子接受新事物。 她喜欢 iPeng,它对她来说也很好用,这对我来说很好——至少她最终开始使用我们的数字音乐收藏了。

CH: 我非常享受与 Craig 的对话。 虽然我对 Canata/MPD 在家中播放我的音乐感到非常满意,但这听起来好像我需要看看 Logitech Media Server。

音乐选择

我最近挑选了一些新专辑。 其中一张非常突出的是一张可爱的 CD(是的,既不是下载也不是黑胶唱片——我失去感觉了吗?)——Voices: Chant from Avignon。 我是遇到过的大多数格里高利圣咏的忠实粉丝,这是一个很好的例子。 在另一个极端,自从 2000 年代初在一张 CD 上第一次遇到 Kwanzaa Posse 以来,多年来我一直在寻找更多 Kwanzaa Posse,我找到了这个:Kwanzaa Posse Featuring Massive Attack–African Vibrations

最后,我请 Craig 推荐一首音乐。 他的回答是:“音乐是非常私人的东西——很难提出任何建议。 我目前非常喜欢 Avantasia,并且我已经成为 Iron Maiden、Magnum 和 Thunder 的粉丝很多年了,我都懒得提了! 话虽如此,我也喜欢 Aqua 的 Barbie Girl(我拥有他们的两张专辑!)。 我不喜欢大多数流行音乐,也不喜欢说唱(但喜欢 RunDMC 的 Walk this Way),并且永远无法接受爵士乐。”

接下来要阅读的内容
Chris Hermansen portrait Temuco Chile
自从 1978 年毕业于不列颠哥伦比亚大学以来,我几乎没有离开过计算机,自 2005 年以来一直是全职 Linux 用户,1986 年至 2005 年一直是全职 Solaris 和 SunOS 用户,在此之前是 UNIX System V 用户。

2 条评论

很棒的采访。 我学到了一些新东西。 我也喜欢格里高利圣咏,感谢您,我将去听 Kwanzaa Posse。

Creative Commons 许可本作品根据 Creative Commons 署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.