用你的控制台摇滚起来

在文本模式下播放和管理您的音乐。

你们中的一些人可能已经使用诸如 play 之类的单行命令从终端播放过音频文件,甚至使用命令行在图形音乐播放器中打开播放列表。命令行集成是使用 Linux 软件的众多优势之一。本文是为那些想要完整的聆听体验——浏览、管理和播放音乐——而无需离开文本控制台的人们准备的入门介绍。

得益于 Ncurses (New Curses) 部件库,开发人员可以设计在任何终端模拟器中运行的文本用户界面 (TUI)。Ncurses 应用程序界面是交互式的,并且根据应用程序的不同,可以捕获来自击键以及鼠标移动和点击的事件。它看起来和工作方式很像图形用户界面,只是它全部是 ASCII——或者可能是 ANSI,取决于您的终端。如果您使用过 GNU Midnight Commander、Lynx 或 Mutt,您就已经熟悉 Ncurses 的优点了。

无论是文本界面还是图形界面,直观的界面在媒体播放器中都尤其重要。没有人愿意翻阅长长的手册页或求助于 Ctrl-c,仅仅是为了停止播放烦人的重复歌曲,而且大多数用户(我相信在Linux Journal的读者中存在一些例外)不想仅仅为了 ls 专辑目录中的歌曲,决定要听哪一首,然后 play 它,然后再 play 不同目录中的歌曲而输入一系列命令。如果您曾经使用纯命令行应用程序(例如 SoX)播放音乐,您就会明白我在说什么。当然,播放文件的单个命令非常方便;然而,本文的重点是 TUI 而不是 CLI 应用程序。对于许多文本模式程序来说,Ncurses 是可用性的窗口(此处没有双关语)。

给开发人员的提示:如果您想编写控制台音乐播放器,请利用 Curses Development Kit (CDK),其中包括几个现成的部件,例如滚动跑马灯和内置文件浏览器。

现在,开始介绍音乐播放器!

Mp3blaster

Mp3blaster 是我用过的第一个控制台音乐播放器。那是在 2007 年,那时它已经是一个成熟且功能齐全的应用程序。它的历史实际上可以追溯到 1997 年,那时主流还没有真正接受 MP3 格式,更不用说为控制命令行音乐播放提供有吸引力的界面的想法了。那时,它谦逊地被称为“Mp3player”。

尽管名称如此,Mp3blaster 除了 MP3 之外还支持多种格式。目前,这些格式包括 OGG、WAV 和 SID。请密切关注未来对 FLAC 的支持,因为它已在最新的源代码压缩包中的待办事项列表中。

Mp3blaster 的一个不错的功能是顶部面板,它显示了播放列表管理的重要键盘快捷键。您可以使用 + 和 - 滚动浏览此列表。右侧还有一个有用的图表,其中显示了 ASCII 艺术播放符号(例如 |> 表示播放)及其各自的快捷键。按 ? 获取详细帮助。

您可以在配置文件中自定义任何快捷键绑定,该文件通常位于 ~/.mp3blasterrc。我不得不更改其中的几个,以便在 GNOME 中使用 Mp3blaster,因为它们与我的全局热键冲突。Mp3blaster 的默认快捷键绑定更适合在没有 X 的情况下使用。

图 1. Mp3blaster 中的播放列表

Herrie

Herrie 在荷兰语中意为“喧嚣”,于 2006 年首次发布。不知何故,在许多关于控制台音乐播放器的文章中都没有提及它,但音乐网站 Last.fm 上的 Herrie 社区群组显示了真正的粉丝奉献精神。

Herrie 非常适合 Last.fm 用户,因为它非常容易设置曲目上传。本文中的大多数音乐播放器都以某种方式支持上传——毕竟它们都是开源软件,理论上,您可以编写脚本使任何东西做任何事情——但 Herrie 的配置异常简单。您只需将您的用户名和密码放入您的 ~/.herrie/config/herrie.conf 文件中即可。请注意,密码不应以明文形式存在;相反,您应该输入 printf %s p4ssw0rd | md5 的输出,如配置文件本身所述。

图 2. Herrie 在顶部显示当前播放列表,在底部显示文件浏览器。

MOC

Music on Console (MOC) 对于包含 OGG、WAV 和 MP3 文件的音乐库来说是一个不错的选择。它开箱即用,易于使用,拥有类似于 Midnight Commander 的双窗格界面,左侧是文件浏览器,右侧是您的播放列表。默认快捷键绑定很直观——大多是代表其功能的单个字母,例如 n 表示“下一首曲目”,R 表示切换随机播放,因此命令行新手无需担心任何 Emacs 风格的数字杂技。

MOC 是我现在首选的 Linux 音乐播放器。它快速而流畅,而且它看起来正是我想要的样子,因为我已经编辑了我的 ~/.moc/config 文件来调整颜色和每个窗口窗格的宽度。另一个优点是它支持 JACK Audio Connection Kit (JACK)。

启动 MOC 的命令是 mocp

图 3. 我自定义的 MOC 布局

Emacs + Bongo/EMMS

如果 Emacs 风格的数字杂技是您的操作模式,请查看 Bongo 和 Emacs Multi-Media System (EMMS)。这两个媒体播放器都在 Emacs 中运行,并提供类似的功能。主要区别在于 EMMS 旨在在后台不显眼地运行,而 Bongo 则强调用户界面。

Bongo 和 EMMS 都是用 Emacs Lisp 编写的。您可以像安装任何其他 Emacs 包一样安装它们;这可能因发行版而异,但无论您使用什么操作系统,您最终都可能会编辑一些 Lisp 配置文件。首先要配置的事情之一是您的后端列表。这些程序实际上并不做播放音乐文件的脏活累活;相反,它们是其他程序的前端。

您可以将您选择的任何后端链接到文件类型,并传递自定义命令行参数。例如,Bongo 默认识别的后端之一是 mpg123。如果您希望它使用 mpg321,那么只需编辑配置文件中的该行,或者使用 Emacs 通过 M-x customize-group RET bongo RET 访问 Bongo 的内置自定义对话框。您可以添加自定义后端,只需几行这样的代码


(define-bongo-backend mpg321
  :pretty-name "MPG-Thr33-Tw0-0ne"
  :extra-program-arguments '("--loop 0")
  :matcher '(local-file "mp3" "wav"))

虽然我有时会使用 Emacs,但我不是高手;我承认我在 Bongo 上花费的时间令人沮丧。例如,我按了 Return 键开始播放曲目——很简单——但后来意识到我不知道如何关闭它。我输入了 M-x apropos RETURN bongo 并通读了 Bongo 命令列表,直到找到我需要的命令:M-x bongo-stop。GitHub 主页显示您也可以使用 C-c C-s 立即停止播放,并且还有其他用于更高级技巧的组合键,例如 3 C-c C-s 在接下来的三首曲目播放完毕后停止播放。

这个例子公平地代表了我迄今为止对 Bongo 的全部体验。如果您不太了解 Emacs,它可能会让人感到害怕,但它非常强大,并且充满了您可能从未想过的选项。

如果您是 Vi/Vim 的狂热爱好者,请考虑 Vimmpc 和 Vimp3。

图 4. Emacs 会话,底部窗口是 Bongo 播放器,顶部窗口是 Bongo 的 README,左侧是 Emacs 代码浏览器 (ECB)。

MPD + Ncmpcpp

在广阔的 Linux 音频世界中,Music Player Dæmon (MPD) 可以被认为是红巨星。如果您对在 Linux 中播放音乐做过任何研究,那么您很可能至少听说过它。它预装在许多发行版中,而且我还没有找到不包含它的主要存储库。

MPD 在技术上是一个服务器端应用程序;它非常适合在家庭媒体中心中设置网络音频。您也可以简单地将其用于本地播放。这里的优势在于您可以使用任何您想要的客户端来控制 MPD,并且有很多客户端可供选择。我可以轻松地用几页纸来讨论 MPD,但这超出了本文的范围。在线很容易找到文档。

现在,让我们继续介绍 Ncmpcpp。这是一个基于 Ncmpc 但更高级的 Ncurses MPD 客户端。它包括对 Last.fm 上传和通过外部库进行音乐可视化的支持。歌词获取和显示是内置的,可以通过按 l 键为选定的曲目激活。事实上,歌词功能最初吸引了我使用 Ncmpcpp。我尝试过各种脚本来获取其他控制台音乐播放器(特别是 MOC)中的歌词,但直到 Ncmpcpp 才对我有效。Ncmpcpp 还可以获取艺术家信息。

虽然 Ncmpcpp 一旦设置好就非常出色,但使用 MPD 客户端听音乐并不总是一个务实的选择。使用像 Mp3blaster、MOC 或 Herrie 这样的播放器,您很可能会更快地启动并运行。

我是一个喜欢通过在旧电脑和虚拟机上安装各种 Linux 发行版来做实验的人,而且我经常在这些环境中测试软件。关于 MPD 的真相是,很多事情都可能出错。每次我成功安装并使用它时,我都会(默默地)欢呼。与依赖项作斗争是成功的一半,而配置您的系统,尤其是您的 ~/.mpdconf 文件,是另一半。我已经让它在某些系统上顺利运行,但更多时候,我遇到了问题,并通过反复试验解决了它们。

不要让这让您气馁;如果您利用 MPD 及其广泛的客户端选择的功能,那么设置它们是值得的,而且如果您需要帮助,有很多地方可以获得帮助。MPD 手册页是必读的;除此之外,请通读官方 wiki 和论坛。您的发行版也可能提供文档。例如,Gentoo 的在线 wiki 有一个关于 MPD 的长篇章节。

图 5. 显示歌词的 Ncmpcpp

图 6. 在 Ncmpcpp 中浏览文件

XMMS2 + Kuechenstation/CCX2

与 MPD 一样,XMMS2 也是一个可以通过网络控制的守护进程,并且有各种各样的客户端可供选择。XMMS2 Wiki 承认这两个应用程序的开发人员有相似的目标,并且最终可能会进行合作。但就目前而言,它们是具有独立客户端的独立软件包。两个引起我注意的文本模式 XMMS2 客户端是 Kuechenstation 和 CCX2。

Kuechenstation 是一个 1337 音乐播放器。好吧,我主要是开玩笑,但看一眼它,您就会想到“八十年代的演示场景”。(Kuechenstation 实际上从 2008 年才开始出现。)它使用 FIGlet 库以由 ASCII 字符组成的超大字母的滚动跑马灯显示当前歌曲标题。

整个界面都很有吸引力且友好。您可以使用屏幕底部帮助性地列出的快捷键绑定在几个全屏模式之间导航。这些模式包括播放列表模式、艺术家信息模式和播客模式等等。播客功能尤其值得注意;我没有在本文讨论的任何其他音乐播放器中看到播客支持。Kuechenstation 帮助您从一些预先订阅的源开始,这些源都是德语的。

Kuechenstation 配置文件位于 ~/.config/xmms2/clients/kuechenstation.conf。您可以在其中选择您的播客订阅、界面颜色甚至滚动 FIGlet 字体。

图 7. 带有我自定义颜色主题的 Kuechenstation

CCX2 是用 Python 编写的,是另一个可靠的 XMMS2 客户端。它的命令模式对于 Vi/Vim 用户来说会很自然。所有标准的播放和播放列表管理功能都在那里:搜索、重命名、浏览、元数据显示等等。

那么,为什么我决定写两个 TUI XMMS2 客户端,而不是仅仅选择功能更多的那个呢?我的理由是,首先,Kuechenstation 和 CCX2 的界面截然不同,并且仅凭个人品味,每个界面都会吸引不同的用户。其次,每个界面都有另一个界面所缺乏的主要功能。CCX2 没有像 Kuechenstation 那样提供播客支持,但它确实开箱即用地支持歌词获取,而 Kuechenstation 则不支持。

图 8. CCX2 的歌词显示布局之一

我建议两个都试试。它们都很年轻,并且正在积极开发中,因此您错过的功能很有可能在未来会被添加进来。当然,如果您是开发人员,您可以尝试自己添加它。

nvlc

著名的 VLC 媒体播放器,以其播放几乎任何您扔给它的媒体文件的能力而闻名,它带有一个鲜为人知的 Ncurses 控制界面。要启动它,请输入 nvlc。与您可能习惯在 GUI 版本中看到的众多选项相比,交互式功能明显受到限制。按 B 键浏览您的文件,按 Return 键将文件添加到播放列表。按 h 键切换帮助视图以获取完整的快捷键列表。

乍一看,nvlc 似乎并没有那么特别。如果您想要一个预先配置了大量快捷键的播放器,它可能不适合您,但如果您愿意尝试,您可以使用它做很多事情——包括添加自定义快捷键。

nvlc 强大功能的途径是通过命令行参数。您可以传递从目录或播放列表(例如,nvlc /path/to/my/music)到复杂过滤器链的参数。如果您知道要传递哪些参数,那么您可以在 GUI 版本的 VLC 中执行的任何操作都可以在 nvlc 中实现。

提示:输入 nvlc -h 获取基本帮助,实际上非常冗长,或输入 nvlc -H 获取更冗长的帮助。输入 nvlc --list 查看您的安装中可用的模块,或输入 nvlc --list-verbose 获取更详细的输出。

对于初学者,请尝试


nvlc --audio-filter chorus_flanger --delay-time 150 
 ↪--dry-mix 0.8 --wet-mix 0.6 --feedback-gain -0.3 
 ↪/path/to/my/music.fileextension

图 9. nvlc 中的播放列表

MikMod

对于你们当中收集模块的怀旧爱好者——也许当您听到“MP3 播放器”和“音乐播放器”互换使用时会嗤之以鼻——有 MikMod。MikMod 是 Windows 之前的 Microsoft DOS 的老牌产品。您可以将其用作其他应用程序(例如 Emacs 中的 Bongo 或 EMMS)的后端,或用作独立的模块播放器。

MikMod 将播放多种模块格式。如果您的文件扩展名包括 MOD、XM、IT 或 S3M,那么您很幸运。对不起,MP3——MikMod 不适合您,也不适合所有 WAV、OGG 和 AIFF。在某种程度上,这有点令人伤心,因为我很想在一个像 MikMod 这样出色的播放器中播放我的标准音乐文件。我必须记住,MikMod 的许多功能,例如即时速度更改和乐器特定音量条,都是专门为模块文件格式构建的。也许这将激励我在 MilkyTracker 中制作一些声音。

图 10. MikMod 中的乐器音量级别

图 11. MikMod 的一些选项

结论

Linux 上有很多控制台音乐播放器可用。我根据我对它们的经验水平以及我认为独特且值得注意的功能,选择了我在本文中介绍的几个。如果这个主题引起了您的兴趣,请走出去(或 Google)探索一下。

资源

Ncurses: https://gnu.ac.cn/software/ncurses

Mp3blaster: http://mp3blaster.sourceforge.net

Herrie: http://herrie.info

MOC: http://moc.daper.net

Bongo: https://github.com/dbrock/bongo

EMMS: https://gnu.ac.cn/software/emms

MPD: http://www.musicpd.org

Ncmpcpp: http://unkart.ovh.org/ncmpcpp

Kuechenstation: http://kuechenstation.sourceforge.net

CCX2: http://palbo.github.com/ccx2

VLC: http://www.videolan.org/vlc

MikMod: http://mikmod.raphnet.net

加载 Disqus 评论