Next Previous Contents

2. 播放各种声音格式

声音格式有很多种(WAV,MIDI, MPEG 等). 以下我们列出各种格式与可播放其格式的应用程式.

2.1 MIDI

MIDI 就是 Musical Instrument Device Interface的缩写. MIDI档案通常有延伸档名 .mid. 它们包含编排的讯息, 也就是何时用什麽乐器以何种方式来播放...等的讯息. 根据你的硬体(也许与你用来播放的软体也有关), 播放出来的声音可能很震撼,也可能彻底令人失望.

adagio

此包装包含 mp (命令列下的MIDI档播放程式)和 xmp (XView 介面下的 MIDI 档播放程式), 不要与所谓的模组[module]播放程式混淆 xmp). 你将需要 SlingShot 延伸来使用 xmp). 它包含其他程式来播放Adagio scores.

如果你有 GUS, mp 能够播放MOD档 ( 看章节 Modules , 得到更多与模组有关的资讯).

有些扰人的臭□[bug](当 0.5 版在些硬体上)是声音中断在终端. 也就是,没有照原本 MIDI 档记录的中断声音方式, 而是中断播放音符在最後音符还有一段音程之前. 它已不阻止我使用 mp, 它可能阻止某人使用它在 '即时'[real]工作. 它的安装也相对地较慢.

这包装中并没有提到版权(至少我没找到), 所以我假设它能够自由的再散布与修改. (藉由著作权法的严格解释, 没有东西可以给一个人有权利去做这样的事情, 但我有点疑惑这会是原作者的用意吗.)

它是由 Greg Lee 将 CMU MIDI Toolkit 移植到 Linux 的. (though there was enough added to make this questionable) (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 环境可以工作很好.

你将需要费点牛力来编译它. 事实上,那也不需要费太多力气啦. 你所要作的就是在 Makefile 内的 SHROBJXMPOBJ 的尾端加上 -lfl. 这是连结到 flex 程式函式库, 其并不是预先就连结的.然後照安装步骤作.若你想编译 xmp, 不要忘了要有安装 XView 和 SlingShot extensions .

TiMidity

有些人建议这种 实验性的 程式,因为有好的音质 (这是真的,在 Sound Blaster 16上,它比起 mp 好多了, 而且大概不会与具有波形合成器[wavetable]的音效卡像是 GUS 相差太多.) 然而它面临高 CPU 负载. 它播放 MIDI 是藉由将 MIDI 转换成 WAV, 然後再播放 WAV (你也能够转换 MIDI 档成 WAV 档,而不播放它, 如果你想要的话.) 这就是 CPU 如此重要的理由. 它也有可选择性的 ncurses, SLang, TclTk or Motif 介面.

你需要有 Gravis Ultrasound patch files 来使用这个程式. 检视 TiMidity 包含的 FAQ , 获取更多资讯.

作者是 Tuukka Toivonen (tt@cgs.fi).

最新的 TiMidity 版本可取得在 TiMidity home page. 此首页也有连结到小程式库的地方含有 GUS patches.

playmidi

这是一个 MIDI 播放程式,可用来播放 FM, GUS, 及外接 MIDI. 与其它 MIDI 播放程相较下,它应该有较快的安装时间. 它也能够播放 Creative Music Files 格式, Microsoft RIFF files格式, 以及从像 Ultima 7 游戏来的较大之档案.

它有 X 介面和 SVGA 介面. 它也有选项即时播放藉由追纵每个通道 [channel]的所有附注以及目前播放的时刻 (自动的被内含在 xplaymidisplaymidi).

你应该做以下动作

$ splaymidi foo.mid; stty sane
              

若你要使用 SVGA 介面时. 因为它不适当地重置[reset]终端 tty 模式. SVGA 介面在不久将来可能会被去除.

它的作者是 Nathan Laredo (laredo@gnu.orglaredo@ix.netcom.com).

它可取於 ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/playmidi-2.3.tar.gz.

2.2 Modules

Modules (在电脑音乐中)是数位音乐档, 由一组样本及序列资讯组成, 告知何时播放样本(乐器)在哪个轨调什麽音,可自由选择地表现效果, 举例像是 振动音[vibrato].

它超越 MIDI 的好处是它几乎能包含任何声音(包括人类的语音). 另一好处是它在各平台上听起来都一样,因为取样是在模组中. 缺点是跟 MIDI 比起来档案较大.另一缺点是它没有真正的标准格式 (唯一的真正标准是 ProTracker,而又很多模组并不与其相容). 它起源在 Amiga.

最普通的格式是有副档名为 .mod. 还有很多其它种副档名, 与它们所属的格式有关.

tracker

这是可携带程式(它已经被移植[port]到各种平台) 播放音轨[Soundtracker]和前轨[Protracker]音乐模组. 它使用 16 bit 的立体输出[stereo],而我认为音质很棒. 若你需要一个简单方式减少 CPU 负担,可使用 -mono 选项.

这是可作为礼物的[giftware]程式(引用自原作者). 作者为 Marc Espie (Marc.Espie@ens.fr).

含 Makefile 档的版本已经用力转[tweaked]到 Linux, 它可取於 ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/tracker-4.3-linux.tar.gz.

gmod

这是 Gravis Ultrasound 卡的音乐模组播放程式. 4/6/8 channel MOD, 8 channel 669, MultiTracker ScreamTracker III (S3M) 都是被支援的格式.

它要求 3.0 版以後的声音驱动程式. 而且当然是 GUS. 你可以需要修改核心来使音量控制成为你所要的.

这是 X 介面.它使用 QT toolkit (需要 0.99 版以後). 查询一下 QT toolkit homepage 取得更多有关 QT 的资讯.

这是可以自由的散布. 它是由 Hannu Savolainen 所作, 和目前维护是由 Andrew J. Robinson (robinson@cnj.digex.net).

它可取於 ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/gmod-3.1.tar.gz.

MikMod

这个可携带模组播放程式可以播放 XM, ULT, STM, S3M, MTM, MOD 和UNI 格式.( UNI 格式是被 MikMod 的内部格式.) 它有支援 尖啸声[zipped]的模组档. 它使用 16 bit 立体声音输出. 若你要减低 CPU 负担,可加上 -m 选项(单端输出).

Unix 版本使用 ncurses 或 Tcl/Tk 作为其介面. 它可能使用成程式函式库[library],不仅是独立程式而已.

它的原始作者是 Jean-Paul Mikkers (mikmak@via.nl). 它目前是由 Jake Stine (dracoirs@epix.net)来维护. 这是共享软体, 如果你要使用在商业上,那麽你必须注册. 你也必须取得允许才可在商业上的再散布 (非商业上的再散布不需要取得允许).

这可以取得在 MikMod home page.

xmp

这是个 模组播放程式 (不要与 Adagio's xmp 混淆), 它可以播放 MOD, S3M, MTM, PTR, STM, 669, 和 XM 模组 (其他格式也被支援,但仍在实验阶段或未完成). 如果你有 具有波形合成器[wavetable synthesis]的音效卡 (GUS 或 SoundBloaster 32AWE), 那麽你可使用这类音效卡来降低 CPU 的负载. 它也支援压缩模组.

xmp 的 X 前端程式也可以取得了.

作者是 Claudio Matsuoka (claudio@pos.inf.ufpr.br) 和 Hipolito Carraro Jr.

这可取得在 xmp home page.

s3mod

这程式播放 4/6/8 轨的模组和 Scream Tracker 3 模组. 它藉由内定的 22000 Hz 取样频率的使用 8 bit 单端输出[mono]. 你可以使用 -s 选项来驱动立体音[stereo], -b 来驱动 16 bit 输出, 和 -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.

mod

这个 beta 程式播放 MODs (15/31-乐器,到 32 种声音), MTMs, ULTs 和 S3Ms 在 Gravis Ultrasound 卡上.它也能用来包装模组, 若你有安装 gzip, lharc, unzip, 和 unarj . 它不能播放 Powerpacked 模组或某些 Amiga 作曲者包装的模组 ["PACK" signature].

这要求至少 3.0 版的声音驱动程式. 它在 2.90-2 版以前的声音驱动程式 不会 正常工作. 文字介面要求 ncurses. 还有包含使用 Tcl/Tk 的 X 介面.

作者是 Mikael Nordqvist (mech@df.lth.se or d91mn@efd.lth.se).

它可取於 ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/mod-v0.81.tgz.

nspmod

这是 alpha 模组播放程式,它可以播放 MTM, S3M, 和 MOD 模组. 它是企图成为模组播放程式在音效卡上没有 DSP 下. (不要与 Creative Labs 公司宣称的 DSP 相混淆.) 它稍微占用 CPU 负担, 和 tracker 比较起来相似.

它有项特色是可让你自己想要的模组重覆[modules loop]. 重覆次数能够藉由使用 -l 选项来限制. 它只使用 8 bit 声音输出(当在 0.1 版时).

作者是 This was written by Toru Egashira (toru@jms.jeton.or.jp).

它可取於 ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/nspmod-0.1.tar.gz.

yampmod

这个 alpha 程式是被设计使用最小 CPU 资源,来播放 4-channel 模组. 它 不是 被设计产生高音质. 所以产生的唯一声音输出是 22 kHz 单端输出[mono]. 再者,这输出并未达它应有的清淅程度,表现出它是 alpha 版.

作者是 David Groves (djg@djghome.demon.co.uk).

这可取於 ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/yampmod-0.1.tar.gz.

2.3 MPEG 音流

MPEG 是标准解读在数位储存设备上之影像及相关声音编码. MPEG 通常就会联想到影像,而该标准的声音部分可被分开来使用. 该标准的声音部分定义成三种层次, layer I, II, 与 III. 能够解码较高层次的播放程式也能解码较低层次. (举例,layer III 的播放程式能够播放 layer II的档. 而 layer I MPEG 声音档通常有副档名 .mpg (所以若有一个档是这样的副档名,其不能被 MPEG 影像播放程式来播映, 它大概是音流[audio stream].), layer II 通常有副档名 .mp2, 而 layer III 通常有副档名 .mp3. 这种声音压缩非常好. 一个 2 megabytes 的 layer II MPEG 声音档大概能绷紧自一个 25 megabytes 的自然 PCM 取样档, 且保有一样的品质.

mpg123

这个 beta 程式是播放 MPEG 音流很有效率, 它支援 layers I, II, and III.它是从很多原始程式所建立的程式码. 它可以直接播放及时的由 HTTP 读到的音流. (换句话说,某人可以直接透过全球资讯网来播放 MPEG 音流.)

主要作者是 Michael Hipp (Michael.Hipp@student.uni-tuebingen.de). 它的未修改的形式可以免费的使用,散布於非商业用余. 包含免费软体的收录 (像 FTP 伺服器的 CD-ROM 档案资料拷贝[images] 明确地的允许.

它的最新版本可取於 mpg123 homepage.

maplay 1.2

此 MPEG 声音流播放程式只支援 layer I 和 layer II 音流, 而缺少支援 layer III 音流. 在 Linux,它只支援 16 bit 的音效.

它很强烈要好的 CPU, 它花了 55% 的 CPU time 在 60MHz Pentium. 在 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.3b

这是非官方版版本(换句话说,不是原作者所作的 maplay 1.2, 所以它能跑比较低 CPU 负载. 它主要藉由使用事实上工作在 SPARC 以外的其他平台上的 u-law output 来达成. 注意的是它内定使用 u-law output, 所以声音品质是比较差的.

此改修改版是 Orlando Andico 所作 (orly@gibson.eee.upd.edu.ph).

这可取於 ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/maplay-1.3b-Linux.tar.gz.

maplay3

这播放程式是从 maplay 1.2 改编来的. 它加入支援 MPEG Layer 3 声音流.目前它似乎有些臭□在播放时 (你可以听到一些刺耳的杂讯). 你可以调整[twid.dle]选项来解决这个问题.

此修改版是 Timo Jantunen 所作. (timo.jantunen@hut.fijeti@cc.hut.fi). 它是可以免费的使用,但用来赚钱则不被允许. 然而,我完全不确定这版权的有效性,因为原有的 maplay 是在 GNU General Public License 下,而 GNU General Public License 是不许改编版本能有不同的版权宣告.

它可取於 ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/maplay3.tar.gz

splay

beta 播放程式是另一个从 maplay 1.2 改编来的 (事实上,它是 maplay 1.2+ 所改编的. 而 maplay 1.2+ 是从 maplay 改编到 MS Windows 上唯一的版本.) 它加入支援 MPEG Layer 3 音流. 它也能够播放 WAV 档. 它还能够跨过 HTTP 连线接收来播放音流.

splay 的另一项特色是它能被使用成一程式函数库 (在LGPL下), 所以它可以让其他程式使用. 它也设法改善表现,藉由使用绪[threading](如果你需要 pthread 来使用这个特色) 和一些协调整合[inline assembly].

splay 使用命令列介面和选择性的 X 介面 (它使用 QT).

若在编译後,它没有正常工作 (e.g. 它发生 segmentation faults), 试著不用绪来编译它.

作者是 Jung Woo-jae (jwj95@eve.kaist.ac.kr).

它可取得在 splay's home page.

Sajber Jukebox

这个程式是 MPEG 图形介面的声音播放程式.它是建设在 splay 上, 它包含支援 MPEG audio layers 到 III. 它也能播放及时从 HTTP 上读取的 MPEG 声音流.它也很容易设定.

它使用 QT toolkit (至少 1.2版以上是需要的). 它也使用 LinuxThreads 程式函数库 (此二元码档只正常运作在 0.5版).

作者是 Joel Lindholm (wizball@kewl.campus.luth.se).

最新版可取之於 ftp://kewl.campus.luth.se/pub/jukebox.

amp

beta 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.

XAudio

这个 alpha 程式函式库是被写成快速完成 MPEG 音流解码程式函式库到各种 GUI 前端程式. 它支援 MPEG audio layers I, II, 和 III.它能够随机存取位元流[bitstreams]. 命令列介面被涵括进来. 而 Motif (Lesstif) 前端程式也被涵括在 Linux 的版本中.

这是由 Gilles Boccon-Gibod, Alain Jobart 和其他人所作的. 连接到此函式库的前端程式也可免费的下载. 而函式库本身必须要被授权使用 (原始码和二元码程式的授权是可以取得的).

连接到此函式库的前端程式可以取得在 XAudio home page.

Layer 3 Shareware Encoder/Decoder

事实上,这是种转换器,它能转换 MPEG Layer 3 音流到 WAV, AIFF, SND, AIFC, 或是自然的 PCM 取样档. Linux版本并没有直接输出声音到音效卡上. 某人必须先将其转成其他格式.

然而,当你设法去播放使用 sox 的转换档,你大概将会有杂讯, 因为在 PCM取样上,字的顺序并不正确 (至少在 Intel 平台上是这样). 你必须给予 sox 这个选项 -x 来解决这个问题. 但有些播放程式无法被告知字顺序是错的,所以你可能不必去担心这个问题.

若你有比较快的电脑 (大概至少要 100Mhz Pentium), 那麽你能试试直接播放 MPEG Layer 3 音流, 而不需要先转成其他格式声音档,像以下例子(这例子假设你正使用 sox 且播放 44.1kHz 立体取样.)

$ l3dec foo.mp3 -sto | play -t raw -x -u -w -c 2 -r 44100 -
              

-r 之後的数字是音流的取样率,而在 -c 之後数字则是与它是 mono 或 stereo (甚至或 quad)有关. 若这看起来太复杂,你能够使用像 shell script 或 alias 的东西.

这是共享软体,版权属於 Fraunhofer-IIS. 在 x86 系统的Linux上之展示版可取於 ftp://ftp.fhg.de/pub/layer3. 展示版只能转换 layer III 音流.

X11Amp

这个 beta 软体是图形介面的 MPEG音流播放程式, 很像是 Windows 程式 winamp.

没有看到任何的版权说明 (我假设它是可以供个人自由的使用). 它是由 Mikael Alm (psy@x11amp.bz.nu), Thomas Nilsson (fatal@x11amp.bz.nu), 和 Olle Hallnas (crocodile@x11amp.bz.nu) 所维护.

它可以取得於 X11Amp's homepage. 目前只有提供给 Intel Linux 和 FreeBSD 用的二元码档.

2.4 WAV

sox 手册页上引述:

这出现非常相似 IFF档,但不完全一样. 它们是原生的 Windows 3.1 上音乐档. 明显地, Windows 3.1 是如此令人难以相信它的重要性, 对於电脑工业上,它明确的必须要有它自己拥有的声音格式.

它通常有副档名 .wav.

也请看章节 soxbplay 以取得更多除了这样所列之外的 WAV 播放程式.

wavplay

这程式支援播放和录制 WAV 格式. 它使用锁定[locking]所以一次中只能有一声音被播放. 它的锁定能力也能够使用在分离於声音的播放能力.

除了 command-line 介面,它也有 Motif 介面,其可与 Lesstif 来配合使用.

原始作者是 Andre Fuechsel (af1@irz.inf.tu-dresden.de), 但再被发展至成形的作者 Warren W. Gay (bx249@freenet.toronto.on.ca or wwg@ica.net).

它可取於 ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/wavplay-1.0.tar.gz.

2.5 其它东西

这节列出播放声音格式的东西,其不值得各自独立成一节 (换句话说,唯一播放程式可取得的格式), 或是一个播放程式就能播放比较多的格式.

sox

这程式事实上是个转换器,也就是它转换一种声音格式到另一种. 然而有些版本的 sox, 当采用 play, 来播放声音 ( 在 Sound HOWTO 中的 play 应用程式大概会参照到这). 它支援自然[raw]的 (没有标头的)二元吗及文字的资料, IRCAM Sound Files, Sound Blaster .voc, SPARC .au (w/header), 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 kernels的某些地方, 你可能必须做一些改变在某个档中, 使得它能直接播放声音.换句话说,你必须改变 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 所作 (tt/cbagwell@sprynet.com/) (建立在原始 sox 的最新 gamma 版本, 而且包含以上修正) 可取於 http://home.sprynet.com/sprynet/cbagwell/projects.html. 此外,这版支援 MS ADPCM 和 IMA ADPCM WAV formats.

bplay

这是 beta 程式可以播放自然的[raw]声音, WAV, and VOC 档. 它也可以录制这些档.它使用各种技巧以取得尽可能的最高速, 使得既使在慢机器上能让吾人尚可接受的执行. 其中一项技巧是要求安装的程式是setuid root. 偏执狂的希望使用这程式可以想去使用 Ian Jackson (ijackson@gnu.ai.mit.edu)所做的 Debian package , 其关闭需要设 setuid bit 的这种特色.

作者为 David Monro (davidm@gh.cs.usyd.edu.au).

它可取於 ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/bplay-0.96.tar.gz.

SIDPLAY

这程式模拟 Commodore 64 的声音介面设备晶片 [Sound Interface Device chip] (MOS 6581,一般叫它 SID) 和 微处理器单元 (MOS 6510). 所以它可以载入与执行 C64 机械码的程式,它产生音乐或声音. 一般而言,这些是独立码和资料片断,它已经是从游戏和宣传程式抓取[ripped] 下来的,和已经被直接从 C64 转过来的.

它内定使用命令列介面. 也有 Tk 和 QT 介面可分别取得在主要的包装[package]内.

它是由 Michael Schwendt (sidplay@geocities.com) 所维护.

它可以取得在 SIDPLAY's home page.

RealAudio Player

这程式让你听到一种专有格式的声音,其能够即时跨过网际网路, 而不需要先下传整首声音档.它能够单独使用, 但它事实上是想要搭配浏览器(最清楚支援的是 Mosaic 和 Netscape)使用. 在没有 X 下,它不能使用(你不能用它来搭配文字操作模式下的 Lynx 使用).

然而,存在一种□试方法(hack)可以在文字模式的主控台下能够跑 RealAudio 播放程式. 它要有 X virtual frame buffer (Xvfb) server 才可以运作. 它可以取得在 ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/traplayer-0.5.tar.gz.

这程式是由 Progressive Networks, Inc. 所作. 它不可以再散布,修改...等. 看一下其版权,就会正确详尽知道你能做什麽. 它可以免费被取得在 RealAudio home page.

cat

某人也许会想说 cat ,有点滥用的连结工具,是怎麽处理播放声音. 我将透通一个例子,来展示它的用途.

$ cat sample.voc > /dev/dsp
$ cat sample.wav > /dev/dsp
$ cat sample.au > /dev/audio
              

处理一个 .au 档的 cat/dev/audio 通常将会正常工作,而且若够幸运的使一个档(在你的平台上) 有正确的位元组顺序...等,使用 PCM 取样(像是 .wav or .voc) 到 /dev/dsp 之声音档的 cat 甚至可能听起来正确.

那不是 cat 的完全没什用的用途.它可能是有用的,举例来说, 如果有一个声音档,而你的所有程式没有一个认得它,而你知道它使用 PCM 取样,那麽你也许能得到一个非常接近的想法在其听起来像是这种方式 (如果你很幸运的话).


Next Previous Contents