存在许多种声音格式(WAV、MIDI、MPEG 等)。下面,我们列出各种格式以及可以用来播放它们的应用程序。
MIDI 代表乐器数字接口(Musical Instrument Device Interface)。MIDI 文件通常具有 .mid
扩展名。它们包含音序信息,即关于何时以何种方式播放何种乐器的信息,等等。根据您的硬件(以及您可能用来播放它们的软件),声音可能非常棒,或者可能非常糟糕。
这个软件包包括 mp
(一个命令行 MIDI 文件播放器)和 xmp
(一个基于 XView 的 MIDI 文件播放器,不要与也称为 xmp
的模块播放器混淆)。您需要 SlingShot 扩展才能使用 xmp
。它还包含其他用于播放 Adagio 乐谱的程序。
如果您有 GUS,mp
也可以播放 MOD 文件(有关模块的更多信息,请参见模块部分)。
一个小小的烦人 bug(在某些硬件上的 0.5 版本中)是声音在结尾处会中断。也就是说,它不是按照 MIDI 文件指定的方式结束声音,而是通过以长间隔播放最后一个音符之前的音符来结束。这并没有阻止我使用 mp
,但它可能会阻止某人将其用于“真正”的工作。它的启动也相对较慢。
该软件包没有提及任何版权(至少我找不到任何),所以我假设它可以自由地再分发和修改。(按照版权法的严格解释,没有任何东西赋予一个人做这些事情的权利,但我有点怀疑这是否是作者的意图。)
它是 CMU MIDI 工具包到 Linux 的移植版本(尽管添加了足够多的内容使其值得怀疑),作者是 Greg Lee (lee@uhunix.uhcc.hawaii.edu
)。
可以从 ftp://tsx-11.mit.edu/pub/linux/packages/sound/adagio05.tar.gz 获取。此处包含的二进制文件为 a.out 格式(与旧库链接),并且 xmp
二进制文件在 X11R6 环境(XFree86 3.1.1,libc 4.7.2)中会发生段错误。mp
二进制文件在 a.out
环境中工作正常。
您需要进行一些 hackery 才能编译它。实际上,这不算什么 hackery。您所要做的就是在 Makefile 中的 SHROBJ
和 XMPOBJ
的末尾包含 -lfl
开关。这是为了链接到 flex
库,默认情况下不会链接到该库。然后按照安装说明进行操作。如果您想编译 xmp
,请不要忘记安装 XView 和 SlingShot 扩展。
有些人推荐这个实验性程序,因为它具有良好的音质(这是非常正确的,它比 Sound Blaster 16 上的 mp
好得多,尽管在像 GUS 这样的带有波表合成的声卡上可能不会有太大差异)。但是,它会遭受高 CPU 负载的影响。它通过首先将 MIDI 转换为 WAV,然后播放 WAV 来播放 MIDI(如果您愿意,也可以将 MIDI 文件转换为 WAV 文件而不播放)。这是其 CPU 密集型性质的原因。
它还具有可选的 ncurses、SLang、Tcl/Tk 或 Motif 界面。
您需要 Gravis Ultrasound 音色补丁文件才能使用它。有关更多信息,请查看 TiMidity 随附的 FAQ。
作者是 Tuukka Toivonen (tt@cgs.fi
)。
最新版本的 TiMidity 可以在 TiMidity 主页 找到。此页面还包含指向小型 GUS 音色补丁库的链接。
这是一个 MIDI 播放器,可以播放 FM、GUS 和外部 MIDI。与其他 MIDI 播放器相比,它应该具有更快的启动时间。它还能够播放 Creative Music Files、Microsoft RIFF 文件以及来自 Ultima 7 等游戏的大型 MIDI 存档。
它具有 X 界面和 SVGA 界面。它还具有实时播放选项,可以跟踪每个通道上的所有音符和当前播放时钟(自动包含在 xplaymidi
和 splaymidi
中)。
您应该这样做,例如
$ splaymidi foo.mid; stty sane
如果您要使用 SVGA 界面,因为它没有正确重置终端 tty 模式。SVGA 界面可能会在不久的将来被移除。
它由 Nathan Laredo (laredo@gnu.org
或 laredo@ix.netcom.com
) 编写。
可以从 ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/playmidi-2.3.tar.gz 获取。
模块(在计算机音乐中)是数字音乐文件,由一组采样和音序信息组成,告诉播放器何时在哪个音轨上以什么音高播放哪个采样(乐器),并可选择执行诸如颤音之类的效果。
它相对于 MIDI 的一个优势是它可以包含几乎任何种类的声音(包括人声)。另一个优势是它在任何平台上听起来都几乎相同,因为采样都在模块中。它的一个缺点是与 MIDI 相比,文件大小要大得多。另一个缺点是它没有真正的标准格式(唯一的“真正”标准是 ProTracker,许多模块与它不太兼容)。它起源于 Amiga。
最常见的格式具有 .mod
扩展名。还有许多其他扩展名,具体取决于它们的格式。
这个非常便携的程序(它已被移植到许多平台)播放 Soundtracker 和 Protracker 音乐模块。它使用 16 位立体声输出,我认为质量非常好。如果您需要一种简单的方法来降低 CPU 负载,请使用 -mono
选项。
这是一个礼品软件程序(引用作者的话)。它由 Marc Espie (Marc.Espie@ens.fr
) 编写。
可以从 ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/tracker-4.3-linux.tar.gz 获取已为 Linux 调整 Makefile 的版本。
这是一个用于 Gravis Ultrasound 声卡的音乐模块播放器。支持的格式包括 4/6/8 声道 MOD、8 声道 669、MultiTracker (MTM)、UltraTracker (ULT)、FastTracker (XM) 和 ScreamTracker III (S3M)。
它需要 3.0 或更高版本的声卡驱动程序。当然,还需要 GUS。您可能需要修改内核以使音量控制按您想要的方式工作。
这具有 X 界面。它使用 QT 工具包(需要 0.99 或更高版本)。查看 QT 工具包主页 以获取有关 QT 的信息。
这可以自由分发。它最初由 Hannu Savolainen 编写,现在由 Andrew J. Robinson (robinson@cnj.digex.net
) 维护。
可以从 ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/gmod-3.1.tar.gz 获取。
这个便携式模块播放器播放 XM、ULT、STM、S3M、MTM、MOD 和 UNI 格式。(UNI 格式是 MikMod 使用的内部格式。)它支持压缩模块文件。它使用 16 位立体声进行声音输出。如果您需要一种简单的方法来降低 CPU 负载,请使用 -m
选项(用于单声道输出)。
Unix 版本可以使用 ncurses 或 Tcl/Tk 作为其界面。它也可以用作库,而不仅仅是一个独立的程序。
它最初由 Jean-Paul Mikkers (mikmak@via.nl
) 编写。现在由 Jake Stine (dracoirs@epix.net
) 维护。这是一个共享软件,如果您想将其用于商业用途,则必须注册。您还需要获得商业再分发的许可(非商业再分发不需要此类许可)。
可以在 MikMod 主页 找到。
这是一个模块播放器(不要与 Adagio 的 xmp
混淆),它可以播放 MOD、S3M、MTM、PTM、PTR、STM、669 和 XM 模块(也支持其他格式,但仍处于实验性或不完整状态)。如果您有带有波表合成的声卡(GUS 或 SoundBlaster 32AWE),那么您可以使用声卡的此功能来降低 CPU 负载。它还支持压缩模块。
xmp
的 X 前端也可用。
它由 Claudio Matsuoka (claudio@pos.inf.ufpr.br
) 和 Hipolito Carraro Jr. 编写。
可以在 xmp 主页 找到。
这播放 4/6/8 音轨 MOD 模块和 Scream Tracker 3 模块。默认情况下,它使用采样率为 22000 Hz 的 8 位单声道输出。您可以使用选项 -s
启用立体声,-b
启用 16 位输出,-f
设置采样频率。但是,声音输出比 tracker 差(有些噪音),因此我建议使用 tracker
而不是 s3mod
来播放普通 MOD 文件(除非您的机器性能不足)。与 tracker 相比,它的 CPU 负载要小得多。
它由 Daniel Marks 和 David Jeske (jeske@uiuc.edu
) 版权所有,但您可以对其进行任何操作(除了您不能声称是您编写的)。
可以从 ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/s3mod-v1.09.tar.gz 获取。
这个测试版程序在 Gravis Ultrasound 声卡上播放 MOD(15/31 乐器,最多 32 个声音)、MTM、ULT 和 S3M。如果您安装了 gzip
、lharc
、unzip
和 unarj
,它也可以使用压缩模块。它无法播放 Powerpacked 模块或使用某些 Amiga 作曲家(“PACK”签名)压缩的模块。
这需要至少 3.0 版本的声卡驱动程序。它不能与 2.90-2 或更早版本的声卡驱动程序一起使用。文本界面需要 ncurses。还包括一个 X 界面,它使用 Tcl/Tk。
它由 Mikael Nordqvist (mech@df.lth.se
或 d91mn@efd.lth.se
) 编写。
可以从 ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/mod-v0.81.tgz 获取。
这是一个 alpha 模块播放器,可以播放 MTM、S3M 和 MOD 模块。它旨在成为用于没有 DSP 的声卡的模块播放器(不要与 Creative Labs 称为 DSP 的东西混淆)。它的 CPU 负载与 tracker
相当。
它具有一项功能,允许模块在它们想要时循环播放。循环次数可以通过 -l
选项限制。它仅使用 8 位声音输出(截至 0.1 版本)。
它由 Toru Egashira (toru@jms.jeton.or.jp
) 编写。
可以从 ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/nspmod-0.1.tar.gz 获取。
这个 alpha 程序旨在以最少的 CPU 资源播放 4 声道模块。它并非旨在产生高质量的声音。因此,它产生的唯一声音输出是 22 kHz 单声道输出。此外,输出不如应有的干净,反映了其 alpha 状态。
它由 David Groves (djg@djghome.demon.co.uk
) 编写。
可以从 ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/yampmod-0.1.tar.gz 获取。
MPEG 是一种标准,用于指定数字存储的视频和相关音频的编码。MPEG 通常与视频相关联,但该标准的音频部分可以单独使用。MPEG 标准的音频部分定义了三个层:layer I、II 和 III。可以解码更高层的播放器也可以解码较低层(例如,layer III 播放器可以播放 layer II 文件)。Layer I MPEG 音频文件通常具有 .mpg
扩展名(因此,如果某个扩展名为 .mpg
的文件无法由 MPEG 视频播放器播放,则它很可能是一个音频流),layer II 通常具有 .mp2
扩展名,而 layer III 通常具有 .mp3
扩展名。音频压缩效果非常好。一个 2 兆字节的 layer II MPEG 音频文件可能需要 25 兆字节的原始 PCM 采样文件才能达到相同的质量。
这个测试版程序是一个高效的 MPEG 音频流播放器,它支持 layer I、II 和 III。它基于来自许多来源的代码。它能够实时播放 HTTP 读取的流(即,可以直接通过万维网播放 MPEG 音频流)。
主要作者是 Michael Hipp (Michael.Hipp@student.uni-tuebingen.de
)。它可以免费使用和分发未修改的形式用于非商业目的。明确允许包含在免费软件集合中(例如 FTP 服务器的 CD-ROM 映像)。
最新版本可以从 mpg123 主页 获取。
这个 MPEG 音频流播放器仅支持 layer I 和 layer II 流,并且不支持 layer III 流。它支持 Linux 上的 16 位声卡。
它的 CPU 占用率很高,在 60MHz Pentium 上占用高达约 55% 的 CPU 时间。在 66MHz 486 上,输出是无法忍受的,因为 CPU 无法跟上声音。如果发生这种情况,请尝试仅播放音频流的一侧(使用 -l
或 -r
选项),而不是默认的立体声。
可能需要稍微更改其中一个文件才能编译它。也就是说,您可能需要在文件 configuration.sh
的开头添加以下行。
#! /bin/sh
作者是 Tobias Bading (bading@cs.tu-berlin.de
)。maplay
1.2 可以从 ftp://ftp.cs.tu-berlin.de/pub/misc/maplay1.2/maplay1_2.tar 获取。
这是 maplay
1.2 的非官方修改版(即非原始作者),因此它可以以低得多的 CPU 负载运行。它主要通过使 u-law 输出在 SPARC 以外的其他平台上实际工作来实现这一点。请注意,默认情况下它使用 u-law 输出,因此音质较低。
修改由 Orlando Andico (orly@gibson.eee.upd.edu.ph
) 完成。
可以从 ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/maplay-1.3b-Linux.tar.gz 获取。
这是 maplay
1.2 的另一个衍生版本。它增加了对 MPEG Layer 3 音频流的支持。目前,它的播放似乎有一些 bug(您可能会听到一些尖叫声)。您可能需要调整选项来解决此问题。
修改由 Timo Jantunen (timo.jantunen@hut.fi
或 jeti@cc.hut.fi
) 完成。它说它可以自由使用,但不允许从中赚钱。但是,我不太确定此版权的有效性,因为原始的 maplay
是在 GNU 通用公共许可证下发布的,该许可证不允许衍生作品具有不同的版权。
可以从 ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/maplay3.tar.gz 获取。
这个测试版播放器是 maplay
1.2 的另一个衍生版本(实际上,它是 maplay
1.2+ 的衍生版本,而 maplay
1.2+ 只是 maplay
1.2 的 MS Windows 衍生版本)。它增加了对 MPEG Layer 3 音频流的支持。它还能够播放 WAV 文件。它还可以播放通过 HTTP 连接接收的音频流。
splay
的另一个功能是它可以作为库(在 LGPL 下)使用,因此可以在其他程序中使用。它还尝试通过使用线程(您需要 pthread
才能使用此功能)和少量内联汇编来提高性能。
splay
使用命令行界面和可选的 X 界面(使用 QT)。
如果在编译后它不起作用(例如,它发生段错误),请尝试在不使用线程的情况下重新编译它。
这由 Jung Woo-jae (jwj95@eve.kaist.ac.kr
) 编写。
可以从 splay 的主页 获取。
这个程序是一个带有图形用户界面的 MPEG 音频播放器。它基于 splay
,因此它包括对高达 III 的 MPEG 音频层的支持。它还能够实时播放 MPEG 音频流,流由 HTTP 提供。它也很容易配置。
它使用 QT 工具包(至少需要 1.2 版本)。它还使用 LinuxThreads 库(包含的二进制文件仅适用于 0.5 版本)。
作者是 Joel Lindholm (wizball@kewl.campus.luth.se
)。
最新版本可以从 ftp://kewl.campus.luth.se/pub/jukebox 获取。
这个测试版 MPEG 音频播放器仅支持 MPEG Layer 3 音频流。它能够直接播放到声卡,并且可以输出到原始 PCM 或 WAV 文件。这也给 CPU 带来了相当大的负载(在 133MHz Pentium 上约为 60%)。
它由 Tomislav Uzelac (tuzelac@rasip.fer.hr
) 编写。它可以自由使用和分发,只要未经许可不得进行商业销售(但明确允许将其包含在包含免费软件的 CD-ROM 中)。
可以从 ftp://ftp.rasip.fer.hr/pub/mpeg/amp-0.7.3.tgz 获取。
这个 alpha 库旨在成为 MPEG 音频解码库的快速实现,供各种 GUI 前端使用。它支持 MPEG 音频 layer I、II 和 III。它能够随机访问比特流。包含一个命令行界面。Linux 版本中还包含一个 Motif (Lesstif) 前端。
这由 Gilles Boccon-Gibod、Alain Jobart 和其他人编写。该库的前端可以免费下载。该库本身必须获得许可才能使用(提供源代码和二进制许可证)。
该库的前端可以从 XAudio 主页 获取。
这实际上是一个转换器,可将 MPEG Layer 3 音频流转换为 WAV、AIFF、SND、AIFC 或仅是原始 PCM 采样文件。Linux 版本不直接将声音输出到声卡。必须先将其转换为其他格式。
但是,当您尝试使用 sox
播放转换后的文件时,您可能会得到噪音,因为 PCM 采样中的字序不正确(至少在 Intel 平台上)。您需要为 sox
提供 -x
选项来解决此问题。但是,有些播放器不必被告知字序错误,因此您可能不必担心这一点。
如果您有一台非常快的计算机(可能至少是 100Mhz Pentium),那么您可以尝试直接播放 MPEG Layer 3 流,而无需像以下示例中那样先将音频文件转换为另一种格式(此示例假定您正在使用 sox
并播放 44.1 kHz 立体声采样)。
$ l3dec foo.mp3 -sto | play -t raw -x -u -w -c 2 -r 44100 -
-r
后的数字是音频流的采样率,-c
后的数字取决于它是单声道还是立体声(甚至是四声道)。如果这看起来太复杂,您可以使用 shell 脚本或别名之类的东西。
这是 Fraunhofer-IIS 版权所有的共享软件。可以从 ftp://ftp.fhg.de/pub/layer3 获取适用于 x86 系统的 Linux 演示版本。演示版本仅转换 layer III 音频流。
这个测试版软件是一个带有图形界面的 MPEG 音频流播放器,类似于 Windows 程序 winamp
使用的界面。
任何地方都没有提及版权(我假设它可以免费用于个人用途)。它由 Mikael Alm (psy@x11amp.bz.nu
)、Thomas Nilsson (fatal@x11amp.bz.nu
) 和 Olle Hallnas (crocodile@x11amp.bz.nu
) 维护。
可以从 X11Amp 的主页 获取。此处仅提供 Intel Linux 和 FreeBSD 的二进制文件。
引自 sox
手册页
这些文件看起来与 IFF 文件非常相似,但不完全相同。它们是 Windows 3.1 的本机声音文件格式。显然,Windows 3.1 对计算机行业非常重要,以至于它必须有自己的声音文件格式。
这些文件通常具有 .wav
扩展名。
另请参见sox 和 bplay 部分,了解除此处列出的播放器之外的其他 WAV 播放器。
此程序支持使用 WAV 格式进行播放和录制。它使用锁定,以便一次只能播放一个声音。它的锁定功能也可以独立于其声音播放功能使用。
除了命令行界面外,它还具有 Motif 界面,可以与 Lesstif 一起使用。
它最初由 Andre Fuechsel (af1@irz.inf.tu-dresden.de
) 编写,但经过发展,被 Warren W. Gay (bx249@freenet.toronto.on.ca
或 wwg@ica.net
) 完全重写。
可以从 ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/wavplay-1.0.tar.gz 获取。
本节列出了一些播放声音格式的内容,这些格式不值得单独一节(即,只有一种播放器可用的格式),或者播放多种格式的播放器。
这个程序实际上是一个转换器,也就是说,它将一种声音格式转换为另一种声音格式。但是,某些版本的 sox
在作为 play
调用时会播放声音(Sound HOWTO 中的 play
应用程序可能指的是这个)。它支持原始(无标头)二进制和文本数据、IRCAM Sound Files、Sound Blaster .voc
、SPARC .au
(带标头)、Mac HCOM、PC/DOS .sou
、Sndtool 和 Sounder、NeXT .snd
、Windows 3.1 RIFF/WAV、Turtle Beach .smp
、CD-R 和 Apple/SGI AIFF 和 8SVX 格式
自从 1.3.6x 内核中的某个位置开始,您可能需要在其中一个文件中进行少量更改才能使其直接播放声音。也就是说,您可能需要将 sbdsp.c
中的第 179 行从
if (abuf_size < 4096 || abuf_size > 65536) {
改为
if (abuf_size < 1 || abuf_size > 65536) {
但再说一遍,您可能不必这样做。但是这样做不会破坏任何东西。
它由许多人编写并拥有版权,可以用于任何目的。
可以从 ftp://sunsite.unc.edu/pub/Linux/apps/sound/convert/Lsox-linux.tar.gz 获取。
Chris Bagwell (cbagwell@sprynet.com
) 的更新版本(基于原始 sox
的最新 gamma 版本,并包含上述修复)可以从 http://home.sprynet.com/sprynet/cbagwell/projects.html 获取。此外,此版本支持 MS ADPCM 和 IMA ADPCM WAV 格式。
这个测试版程序播放原始音频、WAV 和 VOC 文件。它还能够录制到这些文件。它使用多种技术来获得尽可能高的速度,以便即使在慢速机器上也能可以接受地运行。其中一项技术要求将已安装的程序设置为 setuid root。希望使用此功能的偏执狂可能希望使用 Ian Jackson (ijackson@gnu.org
) 的 Debian 软件包,该软件包禁用了需要 setuid 位的特性。
作者是 David Monro (davidm@gh.cs.usyd.edu.au
)。
可以从 ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/bplay-0.96.tar.gz 获取。
这个程序模拟 Commodore 64 的声音接口设备芯片(MOS 6581,通常称为 SID)和微处理器单元(MOS 6510)。因此,它能够加载和执行 C64 机器代码程序,这些程序产生音乐或声音。通常,这些是从游戏和演示程序中提取的代码和数据的独立片段,并已直接从 C64 传输过来。
默认情况下,它使用命令行界面。还有 Tk 和 QT 界面可从主软件包中单独获得。
它由 Michael Schwendt (sidplay@geocities.com
) 维护。
可以从 SIDPLAY 的主页 获取。
这使您可以实时收听以专有格式存储的声音,而无需先下载整个声音文件。它可以单独使用,但它实际上旨在与 Web 浏览器一起使用(明确支持的浏览器是 Mosaic 和 Netscape)。它不能在没有 X 的情况下使用(您将无法在文本控制台中使用 Lynx 使其工作)。
但是,存在一个 hack,允许从文本控制台运行 RealAudio 播放器。它需要 X 虚拟帧缓冲区 (Xvfb) 服务器才能工作。此 hack 可以从 ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/traplayer-0.5.tar.gz 获取。
这是 Progressive Networks, Inc. 的产品。它不能被再分发、修改等。查看许可证以获取有关您可以执行的操作的确切详细信息。可以通过在 RealAudio 主页 免费注册获得。
人们可能会想,有时过度使用的连接实用程序 cat
与播放声音有什么关系。我将通过一个示例展示它的用法。
$ cat sample.voc > /dev/dsp
$ cat sample.wav > /dev/dsp
$ cat sample.au > /dev/audio
对 .au
文件执行 cat
到 /dev/audio
通常会起作用,如果您足够幸运,该文件具有正确的字节顺序(对于您的平台)等,则对使用 PCM 采样的声音文件(如 .wav
或 .voc
)执行 cat
到 /dev/dsp
甚至可能会听起来正确。
这不是 cat
的完全无用的用法。例如,如果您有一个声音文件,您的程序都无法识别,并且您知道它使用 PCM 采样,那么您可能能够以这种方式非常粗略地了解它的声音(如果您幸运的话)。