发信人: zinger.bbs@cs3.xmu.edu.cn (小白鼠), 信区: cnlinux
标 题: [CLDP] Sound-HOWTO (转载)
发信站: XMU CS BBS (Thu Nov 20 18:33:22 1997)
转信站: Lilac!ustcnews!ustcnews!sjtunews!xmucs
出 处: cs3.xmu.edu.cn
【 以下文字转载自 twlinux 讨论区 】
【 原文由 CLDP.bbs@physbbs.iams.sinica.edu.tw 所发表 】
The Linux Sound HOWTO -- Linux 音效指引
作者: Jeff_Tranter, jeff_tranter@pobox.com
译者: 伍永康yorkwu@ms4.hinet.net
中文版 v1.18, 1997年11月12日(原v1.18, 1 November 1997)
Abstract
本文件描述在Linux下的关於音效的支援. 它列举出支援的音效硬体设备,
也写到了如何 设好核心驱动程式,及常见问题的解答.
希望藉由它,可以让新手更提早上路,同时减少在
Usenet新闻组及通信论坛间的庞大``灌水量''.
1. 概论
这是Linux Sound HOWTO文件. 它的主要目标是提供一切安装及建置Linux音效支援所需知
识的快速参考资料. 我们一方面回答关於Linux下关於音效的常见问题, 另一方面也指出
关於电脑音效/音乐方面种种主题的参考资料的来源.
我们只关心适合Linux用的音效卡方面. 对於音效卡及电脑音效/音乐原理的资料,
请参阅参考资料那节列出的文件.
1.1 铭谢状
这份文件很多来自音效驱动程式程式码所附的文件(由Hannu Savolainen(
hannu@voxware.pp.fi)撰写). 谢谢Hannu及开发Linux核心音效驱动程式,
以及音效公用程式的许许多多其他人.
由於有 SGML Tools 套件,使得本文件可以由一个原始档产生出几种不同格式.
1.2 英文版版本沿革
1.1版
第一版; 只在Linux开发者通信论坛的SOUND频道张贴.
1.2版
次要的更动; 公开放在档案库的第一版.
1.3版
转换为SGML; 使用Matt Welsh的Linuxdoc-SGML工具转换而有多种格式;
由於新格式而改 变了外观结构, 内容仅有小改变.
1.4版
SGML的次要改动; 增加了PAS16及Adaptec 1542A SCSI卡不相容问题的解答.
The Linux Sound HOWTO -- Linux 音效指引 1
The Linux Sound HOWTO -- Linux 音效指引 2
1.5版
在1.1版核心中出现了2.5a版的音效驱动程式; 提到支援了GUS-MAX;
其它次要更动
1.6版
增加了关於错误``no space on device''的资讯. 提到 Hacker's Guide
放在'隐藏''的目录. 增加了双工模式问题; 关於错误``device busy''
的资讯; 其它次要改变.
1.7版
增加关於ASP及AWE32的资讯; VoxWare 2.9出来了;
回答了使用到IRQ2的问题; 参考到 Sound及SCSI HOWTO.
1.8版
增加了DOS下出现错误的问题; 进行许多次要改变,
以配合2.90版的音效驱动程式; DOOM的资讯; 如何减低杂音的问题.
1.9版
录音及相容卡的问题.
1.10版
本HOWTO上了Web, 还有印刷本和翻译本;
关於和QIC磁带驱动程式的DMA冲突的资讯; 还有 银河魔声卡(Sound Galaxy
NX Pro)及罗技 BusMouse 的资讯.
1.11版
迟来好久的更新(我那时很忙); 将文件置於GPL执照规定下; 跟上3.0版音效
驱动程式; 增加许多新支援的音效卡驱动程式资讯;
更多关於建置及解决问题的资 讯; 加入了很多HTML连结; 采用和CDROM-
HOWTO一样的格式.
1.12版
在1.3.34版核心又有了新的音效驱动程式; 新的设备档档名;
1542的位址修正为334(而非 333); 阐明Creative Labs Emu及ASP的状态;
加入 Creative Labs 及 MediaTrix 的网址.
1.13版
提醒 VoxWare 的名称(有问题); 更新以反应最新支援的卡及建置选项;
随插即用(PnP)方 面的支援问题; 区块大小(block size)方面的问题; 新的
xconfig 及 menuconfig 选项; mudutils 有音效设备支援了;
vger通讯论坛拜拜了; 强调作者的网站; 其它的次 要修订.
1.14版
Audio Excell DSP16目前尚未支援(应该几个月後就可以了); 设置程式改了;
义大利译本出来了; 在载入音效模组时, 给一个设定混音器增益的小技巧;
最新 稳定核心改为2.0; 新的音效驱动程式名称;
音效设备档的root权限问题.
1.15版
除去太旧过时的问题; 作者有了新E-mail地址;
修正一些套装软体的连结指标; 增加多媒 体那本书的更多资讯;
拼法及语法的小改变.
The Linux Sound HOWTO -- Linux 音效指引 3
1.16版
Hannu Savolainen给予了很多修订及校正;
增加六个月的``最佳参考期''期限 ; 书本的网页之新URL;
增加西班牙译本的连结; 拼法及文法的小改变.
1.17版
中译本出来了; 多了选择性的 GUS 驱动程式; 封包无线数据机(packet
radio modem); Linux Multimedia Guide 现已有法文及日文译本.
参考许多相关的 mini-HOWTO; IBM ThinkPad的指标器.
1.18版
韩文译版出来了; 对MIPS平台上的音效支援有了更多资讯;
更新多片音效卡支援的资讯;要以root身份执行fuser.
1.3 本中文版版本沿革
1.15版
最初的译本, 但并没有来得及公开.
1.16版
第一个公开的译版, 以试译方式进行.
1.17版
首次改为SGML格式.
1.18版
和上一版差没几天; 修正了上一版的几个编排错误;
第一次加上本中文版沿革.
1.4 最新版本何处寻?
本文件之最新版本将定期张贴於 comp.os.linux.answers 新闻组;
它也会放到很多保存这类资讯的匿名ftp站,诸如 <URL:ftp://sun□
site.unc.edu/pub/Linux/docs/HOWTO/>
本文件及其它HOWTO文件的超文字版也放在很多WWW站台上,包括<URL:http://sun□
site.unc.edu/mdw/mdw.html> 很多Linux的CD-
ROM也内含HOWTO文件,通常放在/usr/doc/目录下. 有时在CD-ROM 上的, 或列印的,
或在ftp站里的会是过时的版本. 如果在本 HOWTO 上的日期已距今超过 六个月,
那麽在Internet上可能已经有新版了.
本文的法文译本在 <URL:ftp://ftp.ibp.fr/pub2/linux/french/docs/HOWTO/>
本文的日文译本在 <URL:http://yebisu.ics.es.osaka-u.ac.jp/linux/>
本文的义大利文译本在 <URL:http://www.psico.unipd.it/ildp/docs/HOWTO/Sound-
HOWTO.html>
本文的西班牙文译本在 <URL:http://www.insflug.nova.es/how□
tos/online/sonido/sonido-COMO.html>
本文的中译本在 <URL:http://linux.ntcic.edu.tw/~yorkwu/linux/howto/sound/>
本文的韩文译本在<URL:http://members.iWorld.net/mangchi/HOWTO/Sound-HOWTO.html>
The Linux Sound HOWTO -- Linux 音效指引 4
多数本文件及其它的 Linux HOWTO 的翻译版也可以在 <URL:http://sun□
site.unc.edu/pub/Linux/docs/HOWTO/translations/> 以及 <URL:ftp://sun□
site.unc.edu/pub/Linux/docs/HOWTO/translations/>找到.
如果你将本文件翻做其它语言, 请告诉我, 我会在这里替它做个连结.
1.5 回馈
这份HOWTO文件, 需要各位读者帮助, 才能越来越好用. 如果您有任何建议, 修正, 或意见
, 请将它回给我,jeff_tranter@pobox.com. 我将会在下一版中试著加入这些意见.
(译注 : 对本中文版的意见, 请告诉译者yorkwu@ms4.hinet.net.)
我也很乐意尽我能力回答关於音效卡及Linux的一般问题. 但在这之前, 请先耐心读完这
整篇 HOWTO, 然後再给我和这问题相关的所有细节资讯. 请不要问我在非Linux作业系统
下关於音效卡的问题.
如果您在唯读光碟上或以硬拷贝形式发行此文件, 欢迎附送一份过来. 请寄到我的收信地
址. 也请考虑一下对 Linux 文件计画作点奉献, 以支持 Linux 的免费文件. 请和Linux
HOWTO 协调人 Greg Hankings ( gregh@sunsite.unc.edu )联络以得到更多资讯.
1.6 散布时的注意事项
原作版权为 Jeff Tranter (1995-1997) 所有.
中文版版权为伍永康及 Jeff Tranter (1997) 所有.
这份 HOWTO 是免费文件; 你可以在合於 FSF (自由软体基金会)出版的 GNU GPL (一般公
开授权)之规定下重新散播及/或修改它; 您可以自由决定适用 GPL 2.0 或之後的任何版
本.
这份文件我们希望对您有用, 但我们不提供任何保证, 即使是商业上
或合於某特殊用途的隐含保证亦然. 详情请看 GNU 一般公开授权书.
要取得 GNU 一般公开授权书(英文版), 您可以寄信到 Free Software Foundation, Inc.,
675 Mass Ave, Cambridge, MA 02139,USA.
2. 音效卡技术
为了有助於你对本文後面讲到的有些了解, 这一节简略地提一下电脑音效技术的概要.
如果想进一部了解, 请找数位音讯或数位信号处理的相关书籍.
声音是一种类比的现象; 它可能是在连续范围内的任意值. 然而电脑却是数位的,
只能对付范围中的几个点. 为了让声音能存进记忆体, 音效卡用了一种叫类
比/数位转换器(A/D或ADC), 将声波信号(以电压表示)转换成数字以供储存. 另外也用一个
数位/类比转换器(D/A或DAC)将数字反过来转换成电压, 送进喇叭, 发出声音.
由类比转换成数位的过程, 叫作取样, 会产生一些误差. 有两个因素决定转换过的声音转
得多好. 其一是取样率, 是在单位时间内, 硬体对声音作几次取样(通常用每秒
几次或赫兹为单位). 较低的取样率取出的声音就比较不准确. 其二是样本大小, 是每一次
取样的有效范围, 通常用bit表示. 有效范围越大, 就能取出较准确的数位化声音.
音效卡一般用8或16 bit取样, 取样率则在4000-44000Hz之间. 取样也分为单声道(单音)
The Linux Sound HOWTO -- Linux 音效指引 5
或双声道(立体声).
FM合成是产生声音的旧方法. 它把不同的波型(正弦波,方波,三角波等)组合起来
产生声讯. FM合成硬体上比较简单, 但是较难程式化, 也较没弹性. 很多音效卡仍提供FM
合成以和过去的音效卡及软体相容. 通常会提供几组独立的声音产生器及语音.
波型表合成集合了D/A转换的弹性及FM合成的多频道能力. 用这种方法, 数位语
音可以下载到专用的记忆体内, 在不太需要CPU负载的情况下播放, 合并及修改. 最新锐的
音效卡都支援波型表合成.
多数音效卡提供混音能力, 可将不同讯号来源的声音加以合并, 并控制增益 强度.
MIDI是指乐器数位介面(Musical Instrument Digital Interface), 是一种可以
让乐器彼此沟通的软硬体介面. 在MIDI bus上传送的事件可以存成MIDI档, 供日後修改及
重播. 很多音效卡提供MIDI介面, 即使没有, 靠音效卡本身的能力, 仍然可以播放MIDI档.
MOD档是电脑产生歌曲常用的格式. 除了记录音符外, 档案也记录了乐器(或语音
)的数位取样. MOD档是由Amiga电脑来的, 但只要有适当的软体, 在包括Linux的其它系统
上也能播放.
3. 支援的硬体
这一节列出目前Linux支援的音效卡及音效介面, 以撰写时最新的Linux核心为基准.
音效驱动程式有它自己的版本号码. 最新的稳定版Linux核心是2.0.31版, 使用
3.5.4-960630版音效驱动程式.
音效驱动程式作者, Hannu Savolainen, 经常在送出标准Linux核心的驱动程式
前先推出更新的beta版驱动程式. 最新的支援列表在 <URL:http://www.4front-
tech.com/ossfree/new_cards.html>(美国) 或<URL:http://per□
sonal.eunet.fi/pp/voxware/new_cards.html>(欧洲).
它们会告诉你哪种卡要哪一版以上的驱动程式, 或支援还在进行中. 包含在核心中的档案
/usr/src/linux/drivers/sound/Readme.cards也会列出支援的卡, 不过它不见
得是最新的.
在这份HOWTO里的资讯对Intel平台的Linux有效.
这个音效驱动程式应该也对多数Alpha平台上的音效卡有效. 然而, 有些卡虽然在i386机器
上用的好好的, 偏偏就和Alpha上的其它设备I/O位址相冲. 所以除非亲自尝试过, 不然也
不能确定一片音效卡能不能用.
在撰写这篇时, 这驱动程式尚不支援PowerPC版的Linux, 不过将来应该会支援.
在MIPS平台的Linux可以将音效驱动程式挂进核心, 有部份MIPS机器有EISA插槽,
或者内建的发音硬体. Linux的MIPS group告诉我,在将来他们很有兴趣加入对音效的支援.
Linux 核心也为 Atari 及 Amiga 平台的 Linux 提供了和 Intel 平台相容, 但使用这
些机器本身内建音效硬体的驱动程式 (译注: 这段可能和原文意思有出入)
SPARC平台的Linux目前还没有支援音效. (如同Amiga及Atari, SPARC机器有内建的音效硬
体, 所以写个新驱动程式就可以了)
The Linux Sound HOWTO -- Linux 音效指引 6
3.1 音效卡
以下音效卡为Linux核心驱动程式支援:
□ATI Stereo F/X (停产)
□AdLib (停产)
□Ensoniq SoundScape (及由Reveal和Spea生产的相容卡)
□Gravis Ultrasound
□Gravis Ultrasound ACE
□Gravis Ultrasound Max
□Gravis Ultrasound with 16 bit sampling option
□Logitech Sound Man 16
□Logitech SoundMan Games
□Logitech SoundMan Wave
□MAD16 Pro (OPTi 82C928, 82C929, 82C930, 82C924 晶片)
□Media Vision Jazz16
□MediaTriX AudioTriX Pro
□Microsoft Windows Sound System (MSS/WSS)
□Mozart (OAK OTI-601)
□Orchid SW32
□Personal Sound System (PSS)
□Pro Audio Spectrum 16
□Pro Audio Studio 16
□Pro Sonic 16
□Roland MPU-401 MIDI interface
□Sound Blaster 1.0
□Sound Blaster 16
□Sound Blaster 16ASP
□Sound Blaster 2.0
The Linux Sound HOWTO -- Linux 音效指引 7
□Sound Blaster AWE32
□Sound Blaster Pro
□TI TM4000M notebook
□ThunderBoard
□Turtle Beach Tropez ("classic"但非Plus)
□Turtle Beach Maui
□Yamaha FM synthesizers (OPL2, OPL3 and OPL4)
□6850 UART MIDI Interface
要注意的是随插即用(PnP)音效卡并不完全和较旧的, 非PnP的同型卡相容. 例如说,
SoundBlaster16 PnP就就没有和原来的SoundBlaster16完全相容. 同理可证 Soundscape
PnP及GUS PnP的情况也一样. 在後面我们会提到关於随插即用的更进一步资讯.
以下的卡没有支援, 原因不外乎它们太旧或厂商不给写驱动程式所需的程式设 计资讯.
□Pro Audio Spectrum (原始版)
□Pro Audio Spectrum+
□Diamond 制的早期音效卡 (使用 Sierra Aria)
Other sound cards that are claimed to be compatible with one of the supported
sound cards may work if they are hardware (i.e. register level) compatible.
其它宣称和有支援的卡相容的卡, 如果是硬体(暂存器等级)相容的话, 可能 也能用.
虽然大多数音效卡号称``和声霸卡相容'', 但能用Linux的声霸卡驱动程式的 卡少之又少.
这些卡如果用MSS/WSS或MAD16驱动程式通常会更好. 只有真正由Creative
Labs做的声霸卡(用Creative的晶片, 如SoundBlaster16 Vibra), 或 MV Jaz16 及
ESS688/1688 的卡才能无问题的用声霸卡驱动程式. 在所谓``声霸卡相容的16位元
音效卡''上用声霸卡驱动程式只是浪费时间罢了.
Linux核心也支援在音效卡上的SCSI介面(ProAudioSpectrum 16)及专属光碟机介面(如声霸
卡Pro). 请看LinuxSCSI HOWTO及CDROM HOWTO文件以作更深入了解.
在音效卡上常见的摇杆介面, 也有个核心可载入模组支援.
注意这里提到的SCSI,CD-ROM,摇杆及音效驱动程式彼此是无关的.
想对音效驱动程式进一步了解, 请翻到``参考资料''节, 找Hannu Savolainen 的网站.
3.2 选择性的音效驱动程式
除了核心内建的以外, 还有些不包括在核心中, ``非正式''的音效驱动程式,
它们可以拿来取代标准核心内的驱动程式.
4Front Technologies有卖商业版的Linux音效驱动程式. 它提供了比Linux核心中的免费版
The Linux Sound HOWTO -- Linux 音效指引 8
还多不少的功能. 请上<URL:http://www.4front-tech.com/> 4Front Technolo□
gies的网站看看.
Markus Mummert (mum@mmk.e-technik.tu-muenchen.de写了给 Turtle Beach Multi□
Sound(classic) , Tahiti, 及Monterey音效卡用的驱动程式, 文件中提到:
"It is designed for high quality hard disk recording/playback without
losing sync even on a busy system. Other features such as wave syn□
thesis, MIDI and digital signal processor (DSP) cannot be used. Also,
recording and playback at the same time is not possible. It currently
replaces VoxWare and was tested on several kernel versions ranging
from 1.0.9 to 1.2.1. Also, it is installable on UN*X SysV386R3.2 sys□
tems."
(它是为高品质硬碟录放音设计, 即使系统负载大, 也不会走音.
其它如波形合成, MIDI及数位信号处理器(DSP)则不能使用.
也不能同时录放音. 它目前可取代VoxWare , 并在1.0.9到1.2.1版核心测试过.
它也可以装在UN*X SysV386R3.2系统上.)
可在<URL:http://www.cs.colorado.edu/~mccreary/tbeach>找到.
Kim Burgaard (burgaard@daimi.aau.dk 写了给MPU-401用的驱动程式及公用程式. Linux
LSM 给予如下的介绍:
"A device driver for true Roland MPU-401 compatible MIDI interfaces
(including Roland SCC-1 and RAP-10/ATW-10). Comes with a useful col□
lection of utilities including a Standard MIDI File player and
recorder.
(一个给和MPU-401完全相容的MIDI介面(包括Roland SCC-1及RAP-10/ATW-10)用
的驱动程式. 也附带了好用的公用程式,
包括标准的MIDI档播放器及录制程式.)
Numerous improvements have been made since version 0.11a. Among other
things, the driver now features IRQ sharing policy and complies with
the new kernel module interface. Metronome functionality, possibility
for synchronizing e.g. graphics on a per beat basis without losing
precision, advanced replay/record/overdub interface and much, much
more."
(从0.11a版起, 又进行了多项改进. 其中包括了IRQ共用,
还有可编译为核心模组. 节拍器功能可达到每一拍都同步而不丧失准度,
改良的重播/录音及overdub(?) 介面及很多很多.)
可在<URL:ftp://sunsite.unc.edu/pub/Linux/kernel/sound/mpu401-0.2.tar.gz> 找到.
Jaroslav Kysela及其他人为Gravis UltraSound音效卡写了可选的驱动程式. 可以从
<URL:http://romeo.pf.jcu.cz/~perex/ultra>, Linux UltraSound计画的网页找到
相关资讯.
音效卡在Linux下还有一个新奇用途 -- 当作业馀无线电. 最近的 2.1.x 版核心包含
了一个可用声霸卡及Windows Sound System相容卡来实作1200 bps AFSK 及 9600 bps FSK
封包协定的驱动程式. 详情请见 Linux AX25 HOWTO. (我(作者)也是个火腿族, 台呼
VE3ICH)
The Linux Sound HOWTO -- Linux 音效指引 9
3.3 PC喇叭
另外还有一个不要额外硬体的驱动程式, 它利用PC喇叭. 它和音效驱动程式软体上大体相
容, 但可以想见的, 它的音质差多了, CPU负担也高多了. 它产生的结果视各别喇叭的特
性而有很大差别. 请看内附的文件以更深的了解.
目前版本是1.1, 可在 <URL:ftp://ftp.infomatik.hu-berlin.de/pub/os/linux/hu-
sound/>找到.
3.4 平行(印表机)埠
还有个选择, 就是用平行埠加上一些东西做数位/类比转换. 它的音质比PC喇叭好, 但CPU
负载仍嫌高. 前一小节提到的喇叭驱动程式有支援, 它还包含了制造所需硬体的说明.
4. 安装
要在Linux下享用音效, 必须先进行以下步骤:
1. 安装音效卡
2. 建造核心, 使之支援音效
3. 建造设备档
4. 启动Linux核心, 并测试
底下我们将对每一步作详细解说.
4.1 安装音效卡
按照说明书的指示, 安装硬体, 或是请厂商来装.
旧的音效卡通常有开关或跳线, 以设定IRQ, DMA通道等, 请把这些设定记下来. 如果你不
确定要怎麽调, 就照出厂值. 可能的话, 避免和其它设备(如网路卡, SCSI卡, 平行及串列
埠)相冲.
若你在DOS下有使用音效卡, 通常应该设成和DOS下一样. 不过有些情况下(特别是PnP的
卡)也可能要设成和DOS不一样的值. 这时可能要实验一下.
4.2 设定核心
安装时您用的是预先编译过的核心, 它们通常是不支援音效的. 所以最好自己编译适合自
己用的核心. 而且, 您也可能想要藉此来升级到更新版的核心, 或是缩小核心体积, 增加
可用的记忆体.
在如何建造核心方面, 您应该参考 Linux Kernel HOWTO.
我在这里只提和音效卡相关的部份.
如果您还没有编译核心, 加入音效支援的经验, 先读一下核心驱动程式里的Readme
档(特别是关於您的音效卡的部份)是个不错的主意. 以下档案可以在核心音效驱动程式
的目录中找到, 通常放在/usr/src/linux/drivers/sound:
The Linux Sound HOWTO -- Linux 音效指引 10
CHANGELOG - 简介每一版中的变更
COPYING - 拷贝及版权限制
Readme - 最新, 最重要的消息
Readme.aedsp16 - 关於 Audio Excel DSP 16 音效卡的资讯
Readme.cards - 设定音效卡的说明
Readme.linux - 安装核心以外散布的驱动程式之注意事项
Readme.modules - 如何作成可载入模组
Readme.v30 - 3.0 版的新功能介绍
experimental.txt - 讲一些实验中的功能
照一般造核心的程序来就好. 目前设定核心有三种介面可选择. 用 ``make xconfig ''
可叫出在X11下的图形设定介面; 用 ``make menuconfig'' 则是文字 模式的选单介面;
最原始的方法, 则是用 ``make config'', 提供了简单的文 字问答介面.
当用``make xconfig''或``make menuconfig''时, 所有Yes/No问题 都要特别小心确认.
这些命令给的预设答案都是No, 这并不见得就是正确的选择. 特别是 ``/dev/dsp and
/dev/audio support'' (CONFIG_AUDIO) 选项通常是要打开 的.
在这篇文件中, 我假设你用传统的命令行式 ``make config''来做.
虽然说其实别的方式也差不多.
设定音效的方法也有二则. 其一, ``老''方法(在2.0.0板以前的核心只能 用这方法),
使用一个内附的设定程式. 这种方法对多数音效卡有用, 除了少数需要
额外``低阶''驱动程式的(如miroSOUND, AWE32, 及AEDSP16)以外.
第二种是``新''方法, 它和设定核心的其它部份用的选单介面有较佳的整合性.
这方法对要韧体下载档的音效卡无效. 这些卡包括PSS, SM Wave, AudioTrix Pro 及
TurtleBeach Tropez/Maui卡, 对付它们你只好用老方法了.
``make xconfig''一定用``新''方法. 在``make menuconfig'' 中,
你可以在音效子画面中选择用``老''方法或``新''方法. 'make config'的情况,
预设是用``老''方法, 不过如果你已经用过 一次``新''方法了,
那麽它也会改成用新方法. 之後你仍可以在'make menuconfig'中切换回老方法.
我们建议用``make menuconfig''加``老''方法. 很多设定问题都
(至少一部份是)由於误用了新方法所致.
也可以把音效驱动程式做成核心可载入模组. 我建议一开始先不要做成模组, 等测试过可
用後, 再试试把它做程模组.
执行``make config''时, 以``y''回答下列问题, 以起动音效支援.
Sound card support (CONFIG_SOUND) [M/n/y/?]
这问题答完後, 音效设定程式会被编译, 执行. 它会问你要那些装置及选项. 回答这些问
题时要小心, 前面回答错误可能後面的问题就不会问了. 例如说, 如果你没有PAS16音效
卡, 第一个问题(PAS16)就不要答``yes''. 不要加入比你会用上的卡还多的驱 动程式,
这只会浪费记忆体. 有些驱动程式(像MPU-401)可能会和你的SCSI卡相冲, 结果 开不了机.
作者在此简短的叙述各个设定选项的意义. 对每一个问题请以``y''(yes)或
``n''(no)作答. 里面会显示预定答案, 如``[Y/n/?]''表示 预定``y''
而``[N/y/?]''表示预定是``n''. 你可以 直接按Enter选预定的答案,
但记住预定答案不一定是对的.
The Linux Sound HOWTO -- Linux 音效指引 11
输入问号(``?'')会给你对此选项的简短的描述.
也注意一下不见得每个问题都会问, 设定程式可能会依据前面的选择而自动取消或设定某
些选项.
Old configuration exists in /etc/soundconf. Use it [Y/n/?]
如果你以前有设定过音效驱动程式, 您的设定会被存起来.
如果您想直接用上次的设定, 回答``y''.
如果您想作些改变或换了新版核心, 您应该回答 ``n''
并继续下面的设定程序.
ProAudioSpectrum 16 support [Y/n/?]
只有当您有ProAudio Spectrum 16, ProAudio Studio 16或罗技 SoundMan
16 时, 答'y'. 如果您有其它Media Vision或罗技的卡, 还是请回答'n',
因为它们并不和 PAS16相容.
SoundBlaster support [Y/n/?]
如果您有真正由Creative Labs制的声霸卡或100%硬体相容(如 Thunderboard
或 SM Games )卡, 回答'y'. 如果您的卡在支援之列,
请先看Readme.cards中和卡相关的指示 再回答. 对完全不知道的卡,
如果它坚称是和声霸卡相容, 你可以回答'y'.
Gravis Ultrasound support [Y/n/?]
如果您有GUS或GUS Max,回答'y'. 不然就回答'n',
这个驱动程式吃记忆体吃得凶.
MPU-401 support (NOT for SB16) [Y/n/?]
这问题要小心. 几乎所有的卡都支援MPU-401 MIDI介面, 然而,
有些卡需要专属的驱动程 式. 在这种卡上开启这个驱动程式会造成冲突.
在没有MPU-401的电脑上使用这个驱动程式 也会造成麻烦.
如果你的卡在支援之列, 看Readme.cards档中的指示. 如果你有
真正的MPU-401 MIDI介面卡, 那就可以放心回答'y'.
6850 UART Midi support [Y/n/?]
最好回答'n'. 6850 UART 介面甚少被用到.
PSS (ECHO-ADI2111) support [Y/n/?]
如果你有Orchid SW32, Cardinal DSP16或其它用PSS晶片组(AD1848
编解码器 + ADSP-2115 DSP晶片 + Echo ESC614 ASIC晶片)的卡, 答'y',
不然答'n'.
16 bit sampling option of GUS (not GUS MAX) [Y/n/?]
如果您的GUS上有装16 bit取样子卡, 回答'y'. 如果您有GUS MAX, 回答
'n'. 启动这个就 会关闭GUS MAX.
GUS MAX support [Y/n/?]
除非你有GUS Max, 不然回答'n'吧!
Microsoft Sound System support [Y/n/?]
一样请先三思再答. 如果你有微软制的原版Windows Sound Sys□
tem卡或Aztech SG 16 Pro (或NX16 Pro)的话, 可放心回答'y'.
如果你的音效卡不在上面所列, 也可以答'y'试试.
对VoxWare支援的卡请先看Readme.cards.
有些驱动程式有自己的一套驱动MSS的 方法, 起动这个会造成冲突.
The Linux Sound HOWTO -- Linux 音效指引 12
Ensoniq Soundscape support[Y/n/?]
如果你的卡用的是Ensonic Soundscape晶片, 回答'y'.
这种卡至少有Ensoniq, Spea 及 Reveal(也做别种卡)在制造.
MediaTriX AudioTriX Pro support [Y/n/?]
如果你有AudioTrix Pro的话, 答'y'.
Support for MAD16 and/or Mozart based cards?
如果你是用莫扎特音效卡(OAK OTI-601)或MAD16(Opti
82c928或82c929)音效介面晶片. 这 种晶片非常普遍,
所以一些无牌卡也许就用它. 除此之外, MAD16也被一些知名厂商像 Turtle□
Beach(Tropez), Reveal(几种型式), 及 Dia□
mond(最新的)用来放在他们的卡上.
Support for Crystal CS4232 based (PnP) cards [Y/n/?]
如果你的卡用Crystal CS4232晶片, 答'y'.
Support for Turtle Beach Wave Front (Maui, Tropez) synthesizers [Y/n/?]
如果你有上面列出的卡才选'y'.
SoundBlaster Pro support [Y/n/?]
如果你的卡是声霸卡Pro或声霸卡16, 答'y'.
对声霸卡Pro相容的也可以用它. 回答'n'省 一点记忆体,
但'y'也是安全的选择.
SoundBlaster 16 support [Y/n/?]
如果你的卡是声霸卡16(包括AWE32), 答'y'.
Audio Excel DSP 16 initialization support [Y/n/?]
如果你用Audio Excel DSP16的话, 答'y'.
请看Readme.aedsp16以获得更多资 讯.
然後设定程式会问你关於高阶服务方面的问题. 建议对每一项都答'y', 除非你很
明白你不会用到这功能才答'n'.
/dev/dsp and /dev/audio support (usually required) [Y/n/?]
回答'n'的话, /dev/dsp及/dev/audio(及A/D及D/A转换装置)就不能 用了.
回答'y'吧!
MIDI interface support [Y/n/?]
回答'n'则会让/dev/midixx及使用/dev/sequencer和/dev/music的MIDI连接埠失效.
这选项也会影响MPU-401及General MIDI相容设备.
FM synthesizer (YM3812/OPL-3) support [Y/n/?]
在这请回答'y'.
/dev/sequencer support [Y/n/?]
回答'n'就会让/dev/sequencer及/dev/music失效.
Do you want support for the mixer of SG NX Pro ?
如果你有SoundGalaxy NX音效卡, 想支援它的延伸混音功能的话, 答'y'.
Do you want support for the MV Jazz16 (ProSonic etc.) ?
如果你有MV Jazz16(ProSonic等), 答'y'.
The Linux Sound HOWTO -- Linux 音效指引 13
Do you have a Logitech SoundMan Games [Y/n/?]
如果你有罗技SoundMan Games音效卡, 答'y'.
以上问题问完後, 设定程式提示你回答和卡相关的设定问题. 通常只问I/O位址, IRQ及DMA
号码. 对某些卡会要你用一些启始时需要的档案. 这是用在一些必须载入程式(微码)以起
动的DSP晶片或微处理器. 有时这写在.h档里, 在编译时加入驱动程式里. 同样,
读Readme.cards中关於你的卡的部份以便了解更多.
最後它会说:
The sound driver is now configured.
Save copy of this configuration to /etc/soundconf [Y/n/?]
(音效驱动程式已经设定完毕.
要不要将设定存到/etc/soundconf [Y/n/?])
正常状况下你会答'y', 这样一来, 今後你重编译核心的话, 可以直接用上次的音效驱动
程式设定.
如果你由旧版的音效驱动程式升级, 确定/usr/include/sys/soundcard.h及
/usr/include/sys/ultrasound.h以符号连结连到/usr/include/linux 下的同名档案,
或是它们分别包含#include <linux/soundcard.h>及#include <linux/ultrasound.h>
你现在已准备好, 可以编译及安装新核心了.
4.3 建立设备档
为了正常的操作, 必须为各音效设备建立设备档. 通常在你装Linux时就已经 建好了,
可以用下列的命令快速检查一下. 如果输出结果和下面很像(日期不一样 没关系),
那麽设备档差不多是设定正确了.
% ls -l /dev/sdnstat
crw-rw-rw- 1 root root 14, 6 Apr 25 1995 /dev/sndstat
译注: 作者打错了, 是ls -l /dev/sndstat才对
注意有了正确的设备档并不保证一切完美了. 在设备能用以前, 还是要先载入或加进
核心驱动程式(稍後再详述).
如果您觉得设备档设错了,
您可以以root身份执行在/usr/src/linux/drivers/sound目录里的Readme.linux档尾部,
那个很短 的shell script来重建它们. 另外, 多数Linux套件也提供/dev/MAKEDEV
script, 可以作 这种用途.
如果您用PC喇叭驱动程式, 请读内附文件, 以决定是否需要建立设备档.
4.4 起动Linux及测试
您至此应该可以准备起动新核心, 测试驱动程式了. 照著您平时安装及重启动新核心的步
骤去做(当然, 保留一份旧核心以防万一).
在起动中, 检查一下有没有类似以下的讯息:(如果讯息卷动太快, 您可以用dmesg
命令回过来查看.)
The Linux Sound HOWTO -- Linux 音效指引 14
Sound initialization started
<Sound Blaster 16 (4.13)> at 0x220 irq 5 dma 1,5
<Sound Blaster 16> at 0x330 irq 5 dma 0
<Yamaha OPL3 FM> at 0x388
Sound initialization complete
这应该和您的音效卡及跳线设定(如果有的话)一致.
如果您用可载入模组, 以上讯息就不会显示出来(除非您载入它时, 用``insmod sound
trace_init=1 '')
当音效驱动程式载入核心中时, 应该会显示``Sound initialization started
''及``Sound initialization complete''讯息. 如果没有, 表示音效驱 动程式没有载入,
这时您应该检查一下目前起动的核心有没有加入音效驱动程式支援.
如果在``Sound initialization started''及``Sound initialization complete
''间没有印出什麽东西, 那表示没有侦测到音效设备. 这最可能的原因是您没有使用
正确的驱动程式, 卡没被支援, I/O位址不对或您用了还没有设定过的PnP卡.
驱动程式起动中亦可能印出错误及警告讯息. 在设定完驱动程式後, 重启动时, 注意这
些讯息.
再来是检查/dev/sndstat设备档. 读取这个状态档可以得知额外的资讯, 或是音
效卡驱动程式是不是正确启动了. 输出范例如下:
The Linux Sound HOWTO -- Linux 音效指引 15
% cat /dev/sndstat
Sound Driver:3.5.4-960630 (Sat Jan 4 23:56:57 EST 1997 root,
Linux fizzbin 2.0.27 #48 Thu Dec 5 18:24:45 EST 1996 i586)
Kernel: Linux fizzbin 2.0.27 #48 Thu Dec 5 18:24:45 EST 1996 i586
Config options: 0
Installed drivers:
Type 1: OPL-2/OPL-3 FM
Type 2: Sound Blaster
Type 7: SB MPU-401
Card config:
Sound Blaster at 0x220 irq 5 drq 1,5
SB MPU-401 at 0x330 irq 5 drq 0
OPL-2/OPL-3 FM at 0x388 drq 0
Audio devices:
0: Sound Blaster 16 (4.13)
Synth devices:
0: Yamaha OPL-3
Midi devices:
0: Sound Blaster 16
Timers:
0: System clock
Mixers:
0: Sound Blaster
以上的命令也可能回报错误讯息. ``No such file or directory'' 表示您还
没建设备档(参考4.3节). ``No such device'' 表示音效程式没有载入, 或没
有连结进核心里. 请回到4.2节以修正之.
如果/dev/sndstat档中, 在``Card config:''段的几行写在括号里 (就像`` (Sound□
Blaster at 0x220 irq 5 drq 1,5)''), 它表示设备已经设定了, 但是没有侦 测到.
现在您应该可以试试放简单的音效档了. 抓范例音效档, 把它丢到设备档来检查.
% cat endoftheworld >/dev/dsp
% cat crash.au >/dev/audio
(确定您没有省略掉大於符号)
注意, 在平时用cat不是放音效档的贴切方法, 这只是为了检查罢了.
去抓合适的放音程式可以做得更好.
只有在/dev/sndstat内的audio devices这段至少列出一个设备的情形下, 以上命令才会
有效. 如果这段没列出什麽, 您应该检查一下为何设备没侦测到.
如果以上命令回报``I/O error'', 您可以用``dmesg''命令检查 核心讯息的尾部,
在那很可能会有印出错误讯息, 而且经常是 ``Sound: DMA (output) timed out -
IRQ/DRQ config error?'' 这个讯息是指驱动程式没有从音效卡得到应 该发生的中断.
The Linux Sound HOWTO -- Linux 音效指引 16
最有可能的原因是, IRQ和DMA的设定没有作用. 解决这问题的最好方法就 是土法炼钢,
把所有这张卡能设到的DMA和IRQ搭配都试试看.
另一种可能原因是驱动程式和卡不相容. 这几乎一定是所谓``声霸卡(Pro/16)相容卡
''和声霸卡驱动程式搭不起来. 这种状况下您要找出和您的卡能搭配的驱动程式才
行.(例如, 可以投书到comp.os.linux.hardware讨论区问问)
一些音效范例档可在 <URL:ftp://tsx-11.mit.edu/pub/linux/packages/sound/snd-
data-0.1.tar.Z> 抓到.
现在您可以试试录音了. 如果您的卡有录音能力, 您可以用以下命令来快速测试一下:
# 从麦克风录进 4 秒声音
EDT% dd bs=8k count=4 < /dev/audio >sample.au
4+0 records in
4+0 records out
# 把刚刚录的放出来
% cat sample.au > /dev/audio
显然您必需要有连接音效卡的麦克风, 还要对著它讲话, 才能试出有没有效. 您也许也需
要弄到一个混音程式, 设定麦克风为输入装置, 并设定其录音的增益.
如果以上测试都通过了, 您就有理由相信音效D/A及A/D硬体和软体都很正常. 如果您碰到
问题, 参考下一小节.
4.5 问题与解决
如果您进行了以上部骤, 仍然有问题, 那麽可以检查几个地方. 这些检查由简单到复杂
依序排列, 如果检查出问题, 先解决, 再进行下一道检查.
4.5.1 第一步: 确定您用您自己编译的核心起动.
您可以用核心的日期戳记来识别是不是您编译的那个有支援音效的核心. 您可以用
uname命令来作:
% uname -a
Linux fizzbin 2.0.0 #1 Tue Jun 4 16:57:55 EDT 1996 i386
或显示/proc/version档内容:
% cat /proc/version
Linux version 2.0.0 (root@fizzbin) (gcc version 2.7.0) #1 Tue Jun 4 16:57:55 EDT 1996
如果日期戳记不是您编译核心的时间, 那您用了旧的核心. 您真的重开机了吗? 如果您用
LILO, 是不是有重装呢(平常用/etc/lilo/install)? 如果是软碟起动, 您真的
做了新开机片, 并用它开机吗?
4.5.2 第二步: 确定核心音效驱动程式有编进去.
最简单的方法就是前面提过的, 检查``/dev/sndstat''的输出. 如果有地方不对,
那麽核心设定或建立一定有问题. 再重新设定及建立, 安装新核心的程序.
The Linux Sound HOWTO -- Linux 音效指引 17
4.5.3 第三步: 核心起动时有侦测到您的音效卡吗?
确定核心启动时您的卡有被侦测到. 您应该看过开机讯息了, 如果它卷得过快, 您通常可
用dmesg命令叫回来:
% dmesg
或
% tail /var/adm/messages
如果您的卡没侦测到, 就是某一处出问题. 确定那张卡真的装了. 如果那张卡在DOS下工
作得很好, 那你就有理由相信硬体是正常的. 不是您把音效卡设错型式, 下错参数, 就是
您的音效卡和核心音效驱动程式不相容.
一种可能就是需要特殊DOS驱动程式来驱动的``相容''卡. 试著起动DOS, 载入
厂商给的驱动程式, 然後按Control-Alt-Delete暖开机进Linux. 确定卡的I/O位 址,
DMA及IRQ设定都和DOS一样. 读在音效驱动程式原始码中的Readme.cards档
以得到关於设定您的这型卡的提示讯息.
如果您的卡并没有在本文件中列出, 可能是Linux驱动程式没支援的关系. 您可以参考本文
末的参考资料来求助.
4.5.4 第四步: 您能从dsp设备读出资料吗?
试试用前面提过的``dd''命令读取/dev/audio. 这个命令应该不会有 错误才对.
如果不行, 那可能是IRQ/DMA冲到, 或某种硬体不相容(设备不为Linux支援, 或用错驱
动程式).
还有一个少见的可能是不良的硬体. 可能的话, 在DOS下测试一下, 消去这种可能性.
4.5.5 要是这些都没用呢?
如果您还是有问题, 这里提供最後几招试试:
□小心重读这份HOWTO文件
□读本文件後列的参考资料, 特别是Hannu Savolainen的网站, 及相关的核心原始码
Readme档.
□到comp.os.linux或其它Usenet讨论区(comp.os.linux.hardware 是个好地方;
因为这儿水量多, 最好在标题栏注明 'sound', 这样适合的专家才会找到它.)
□用Web/Usenet搜寻引擎, 智慧型搜寻, 很快就能找到很好的结果. 一个好选择是
<URL:http://www.altavista.com>.
□用最新的Linux核心.(但是只在最後关头才用, 最新的发展用核心可能很不稳)
□发封信给音效驱动程式作者
□发封信给Sound HOWTO的作者
The Linux Sound HOWTO -- Linux 音效指引 18
□叫出emacs, 输入Esc-x doctor :-)
5. 支援音效的应用软体
如果你在Linux下能用音效卡, 我在这里提出一些你可能会想要的应用软体. 你可以查
一下Linux Software Map, 网际网路档案库, 或是你的Linux CD-ROM 以找出最新资讯.
你最少会想要以下的音效软体:
□音效档档案格式转换软体 (如 Sox)
□混音程式 (如 aumix 或 xmix)
□音效档播放软体 (如 play 或 wavplay)
□MOD 档案播放软体 (如 tracker)
□MIDI 档案播放软体 (如 playmidi)
这类工具有文字型式的, 也有GUI型式的. 也有一些比较诡异一点的(像语音分析及辨识),
你可能会想玩玩看.
6. 常见问题与解答
这一节回答经常在Usenet讨论区及通信论坛常被问到的问题.
可以在OSS音效驱动程式的网站看到更多问题的解答.
6.1 这一堆音效设备档各代表什麽?
以下是最``标准''的设备档档名, 虽然有些Linux套件可能用不太一样的名称.
/dev/audio
一般是连到 /dev/audio0
/dev/audio0
和Sun工作站相容的声讯设备 (只作了部份, 并不支援Sun的ioctl 介面,
只有u-law编码)
/dev/audio1
第二个音讯设备 (如果音效卡支援, 或不只有一张音效卡的话)
/dev/dsp
一般连到 /dev/dsp0
/dev/dsp0
第壹数位取样设备
/dev/dsp1
第贰数位取样设备
The Linux Sound HOWTO -- Linux 音效指引 19
/dev/mixer
通常连结到 /dev/mixer0
/dev/mixer0
第壹混音器
/dev/mixer1
第贰混音器
/dev/music
高阶编曲器介面
/dev/sequencer
低阶MIDI, FM, 及GUS存取用
/dev/sequencer2
通常连结到 /dev/music
/dev/midi00
第壹原生(raw)MIDI埠
/dev/midi01
第贰原生MIDI埠
/dev/midi02
第参原生MIDI埠
/dev/midi03
第肆原生MIDI埠
/dev/sndstat
读取时, 显示音效驱动程式的状态
PC喇叭驱动程式提供以下设备:
/dev/pcaudio
和/dev/audio同样
/dev/pcsp
和/dev/dsp一样
/dev/pcmixer
和/dev/mixer一样
6.2 怎样播放音效档案?
Sun工作站的音效档(.au)可以丢到/dev/audio来放出, 原始取样档可以丢到 /dev/dsp,
虽然这样一般来说会产生很差的输出. 使用像play这样的 程式比较好,
而且还能辨别音效档格式, 设定正确的取样率等.
像wavplay或vplay(在snd-util套件中)的程式, 给它WAV档会产生最佳结果. 然而它们无法
辨识Microsoft ADPCM压缩过的WAV档. 同时, 旧版的play(在Lsox套件中)对16位元的WAV档
处理并不好.
在snd-util中的splay命令如果以手动输入适切的参数, 可以用来播放多数音效档.
The Linux Sound HOWTO -- Linux 音效指引 20
6.3 怎样录制音效档?
可以从/dev/audio或/dev/dsp中读取取样过的资料, 可以转向到档案 去.
像vrec这样的程式可以较简单地控制取样率及时间等. 你也需要混音器,
以便选择想要的输入来源.
6.4 我可以有不只一片音效卡吗?
现在的音效驱动程式允许你装好几片声霸卡, 声霸卡Pro, 声霸卡16, MPU-401 或MSS卡.
装两片声霸卡是可能的, 不过要手动编辑 local.h, 定义SB2_BASE, SB2_IRQ, SB2_DMA 及
SB2_DMA2(有些情形下才要). 也可以同时装一片声霸卡及一片PAS16.
若是你用make config来设定较新的2.0.x版核心的音效的话,
你应该编辑/usr/include/linux/autoconf.h而非local.h. 你会看到几行:
#define SBC_BASE 0x220#define SBC_IRQ (5)#define SBC_DMA (1)#define SB_DMA2 (6)#define SB_MPU_BASE 0x0#define SB_MPU_IRQ (-1)
在它们後面加入几行(数值依照你的系统设定)
#define SB2_BASE 0x330#define SB2_IRQ (7)#define SB2_DMA (2)#define SB2_DMA2 (2)
以下驱动程式不准你装两片卡:
□GUS (驱动程式限制)
□MAD16 (硬体限制)
□AudioTrix Pro (硬体限制)
□CS4232 (硬体限制)
6.5 错误: No such file or directory for sound devices
要建立设备档啊! 请参见前面建立设备档的部份. 如果你确实有设备档, 检查主编号及次
编号是否正确. (一些旧一点的CD-ROM Linux套餐可能不会在安装时建立正确的设备档)
6.6 错误: No such device for sound devices
你的核心并不支援音效驱动程式, 或是I/O位址设定和硬体不一致. 检查你是否用新造的
核心开机, 并确认其设定和硬体是一致的.
6.7 错误: No space left on device for sound devices
如果你没有建立必要的设备档, 然後把音效档朝/dev/audio或/dev/dsp丢, 就会发生这种
情况. 这时这些``设备档''其实只是普通档案, 而且把你的磁碟塞满了. 你必
须照本文件中建立设备档这一小节的指引去执行那个script.
在Linux 2.0或之後, 当设备开启, 系统却没有足够的RAM时亦会发生. 对每个DMA通道,
音效驱动程式至少需要两页(8K)连续记忆体区块. 这种情型在不足16M的RAM或已经启动很
久的系统上可能发生. 要清出一些RAM, 在再开启设备档以前, 先编译及执行以下的C程式
也许可行.
The Linux Sound HOWTO -- Linux 音效指引 21
main() {
int i;
char mem[500000];
for (i = 0; i < 500000; i++)
mem[i] = 0;
exit(0);
}
6.8 错误: Device busy for sound devices
一个音效设备一次只能给一个程序用. 问题中, 最可能就是有别的程序正在使用这个设
备. 确定的方法之一是用fuser命令:
% fuser -v /dev/dsp
/dev/dsp: USER PID ACCESS COMMAND
tranter 265 f.... tracker
在上例中, fuser命令显示265号程序开启了该设备. 可以选择等它做完或把它砍掉, 这样
它就又能使用了. 你应该以root身份执行fuser命令, 这样才会列出除了你以外的使用者.
6.9 还是逃不了'device busy'的错误!
根据Brian Gough的说法, 使用一号DMA通道的声霸卡会和同样也占用DMA 1的QIC-02磁带机
驱动程式相冲, 造成``device busy''错误. 如果您使用FTAPE, 您可能有加进
这个驱动程式. 根据FTAPE-HOWTO, QIC-02驱动程式在使用FTAPE上不是必要的; 只有
QIC-117才必要. 重造核心, 使用QIC-117驱动程式, 取消QIC-02, 这样FTAPE及音效驱动程
式就能共存了.
6.10 音效档放到一半就停了
这种症状, 通常是先播放一秒左右, 然後完全停止, 或印出``missing IRQ'' 或``DMA
timeout''讯息. 八成是您的IRQ或DMA设错了. 核对一下, 您在核心中
的设定是不是和硬体跳线的一样, 而且并没有和别的卡相冲.
另一种症状是声音一直重覆. 这通常导因於IRQ冲突.
6.11 播放MOD档断断续续
要播放MOD档, 需要可观的CPU能力. 您可能跑太多程式导致系统反应过慢, 无法及时放
音. 有下面几种解法:
□用较低的取样率, 或只放单声道
□把其它执行中程式干掉
□买更快的电脑
□买更强的音效卡(像 Gravis UltraSound)
如果您有用Gravis UltraSound音效卡, 您应该使用专为GUS设计的MOD播放程式 (如 gmod)
6.12 编译音效软体时出错
1.0c版以後和以前的音效驱动程式用完全不同且不相容的ioctl()方式. 抓新版 的原始码,
The Linux Sound HOWTO -- Linux 音效指引 22
或做必要改变, 把它移执到适合新版驱动程式用. 详见音效驱动程式的 Readme档.
也请确定编译应用程式时, 您使用最新的soundcard.h及ultrasound.h.
请见本文开头处里的安装指引.
6.13 以前跑很好的软体, 却出现SEGV错误
这和上个问题可能是一样的.
6.14 音效驱动程式有何已知的限制及bug?
看音效程式里附的Readme及CHANGELOG档.
6.15 关於音效驱动程式的ioctl等, 哪里有记载?
它们有一部份放在现在以草案型式存在的Hacker's Guide to VoxWare.
最新版是第二草案, 可在<URL:ftp://nic.funet.fi/pub/OS/Linux/ALPHA/sound> 中找到.
注意这目录是``隐藏的'', 不会在目录列表出现. 如果您``cd''
进去再``dir''就可以发现这些档案.
在写这篇时, 新文件已经可以在4Front Techonlogies的网站上看到了.
另一个来源就是Linux Multimedia Guide, 在参考资料那节有讲.
6.16 要完全平顺地录放音, 需要多强的CPU才能办到?
这问题不好回答, 它取决於:
□使用PCM取样还是FM合成
□取样率及样本大小
□用哪个程式录放音
□音效卡硬体
□磁碟传输速率, CPU时脉频率, 快取大小等
一般来说, 任何386机器应该都可以在8位元音效卡上播放音效, 或用FM合成放 音乐.
然而, 放MOD档需要可观的CPU资源. 一些实验性的测量显示, 要以44KHz播放,要消耗一颗
486/50 CPU的 40% 能力; 386/25几乎不可能放比22KHz 更高的取样率.(以8位元音效卡,
如声霸卡, 所测得)一些像Gravis UltraSound的卡硬体提供更多功能, 需要的CPU资源就
较少.
这些是假设电脑没有在跑其它耗CPU能力的工作.
如果您的电脑有数学辅助处理器(或CPU内部有FPU), 用像sox这样的程式做
音效转换或增加效果会快不少. 虽然核心驱动程式本身是没有用到浮点运算啦.
6.17 PAS16和Adaptec 1542 SCSI卡的搭配问题
(以下解释由seeker@indirect.com提供)
The Linux Sound HOWTO -- Linux 音效指引 23
Linux只能认出在330(预设值)或334位址上的1542, 而PAS只能将MPU-401模拟设在 330.
即使你用软体消去MPU-401, 如果有东西还在这个预设位址上, 仍然会和1542 相冲.
把1542移到334就什麽都解决了.
另外, 1542和PAS-16都有用到16位元DMA, 所以如果你一面以16位元, 44KHz立体声 录音,
一面将档案存到挂在1542上的硬碟的话, 麻烦就来了. DMA会重叠, 导致RAM没有
时间充电, 然後就会出现 'PARITY ERROR - SYSTEM HALTED' 的讯息, 您
甚至还来不及知道怎麽当的. 更糟糕的是有些QIC-117磁带的协力厂商建议设定汇流排
开/关时间, 使1542占汇流排更久. 从Adaptec的BBS或Internet的其它地方抓 SCSISEL.EXE
程式, 减少BUS ON时间或增加BUS OFF时间, 直到这问题完全消失. SCSISEL 会改变 EEP□
ROM 的设定, 所以比在CONFIG.SYS中载入的DOS驱动程式效力更 持久,
开机就直接进Linux也有效(不像DOS修补). 又解决了一个问题.
最後一个问题 - 旧的Symphony晶片组剧烈地降低I/O周期时间, 加快汇流排存取.
我所玩过的各种卡中, 除了PAS-16以外, 没有一片卡有出现过任何问题. Media
Vision的BBS有个SYMPFIX.EXE可以将Symphony的汇流排控制器的诊断位元调整,
治好这种证状, 但这并不能算有力的保证. 您也许要:
□找主机板经销商, 换掉旧版的晶片
□换主机板, 或
□买别牌的音效卡.
Young Microsystems愿意以$30(美金)的代价为他们制的板子升级; 如果您能讲出谁制的或
谁进口的板子, 别的厂商也可能会这样(祝你好运). 据我所知这问题出於ProAudio的汇流
排介面晶片; 没有人会花$120买音效卡, 然後把它插在6MHz的AT上. 多数人会升
级到25-40MHz的386/486, 而如果设计正确, 至少能承受12MHz以上的汇流排频率. 讲完了,
下台一鞠躬.
第一个问题和你的主机板晶片组, 汇流排速率, 及其它BIOS设定,
还有月亮的圆缺有关.(?) 第二个问题牵涉到您的记忆体充电方式 (隐藏式或同步式),
1542 DMA 频率及汇流排I/O速 率(可能有关). 第三个问题, 可以打电话到Media Vision,
问他们哪些Symphony晶片组的 慢速设计和他们的卡不相容. 在此警告一下,
我问过的四位``工程师''中, 就 有三个头壳坏去. 听他们讲别人的硬体讲得啥一样,
其实他们甚至连自己的都搞不清楚.
译注: 这一段可能和原文意思差很多, 有建议请不吝提供.
6.18 可不可以同时录放音?
受限於硬体, 在多数音效卡上是不可能的. 一些新卡能支援这功能. 请看在 Hacker's
Guide to Voxware中的"bidirectional mode"这一节.
6.19 我的声霸卡16是设IRQ 2, 可是驱动程式不准我设这个值
在'286及以後的机器, IRQ2中断连接了第二个中断控制器. 它等同於IRQ 9.
6.20 声霸卡AWE32及声霸卡16ASP有支援吗?
在过去, Creative Labs很不愿意为这些卡出版程式设计资讯. 现在他们已经改变策略,
而在2.1.x核心中也包含了AWE驱动程式了.
The Linux Sound HOWTO -- Linux 音效指引 24
6.21 我离开Linux, 起动DOS, 然後有些软体发声不正常
这在暖开机进DOS後发生. 有时错误讯息会误导您, 以为是CONFIG.SYS档哪里 写错了.
多数现在的音效卡有软体设定的IRQ及DMA设定. 如果您的卡在Linux下及MSDOS/Windows
下设定值不一样的话, 可能会造成问题. 有些音效卡不准设新参数, 除非完全 reset.
(如把电源关掉再打开, 或使用硬体上的reset钮)
简单对付方法就是按下reset键, 或把开关关了再开, 不要用暖开机(即 Ctrl-Alt-Del).
正解则是确保您在MS-DOS及Linux下都用同样的IRQ及DMA设定 (或乾脆不要用DOS :-).
6.22 在Linux下跑DOOM出问题
想玩ID software出的DOOM游戏之Linux版的玩家们, 可能对这个有兴趣.
要正确的音效输出, 您必需使用2.90版或以後的音效驱动程式; 它支援了即时的
``DOOM模式''.
音效样本是16 bit. 如果您用8 bit音效卡, 您仍然可以用一些可在 <URL:ftp://sun□
site.unc/edu/pub/Linux/games/doom>中找到的一些程式, 让声音 出现.
如果DOOM动作不流畅, 把音效取消(把sndserver档改名)会有一些改进.
DOOM预设不支援音乐(如同DOS版). musserver程式将增加Linux下的 音乐支援.
它可以在<URL:ftp://pandora.st.hmc.edu/pub/linux/musserver.tgz> 中找到.
6.23 怎样降低音效卡产生的杂音?
用高品质的屏蔽电缆, 换个插槽插, 可能有助於减低杂音. 如果音效卡有音量调整钮, 您
可以试试不同的设定(通常最大声最好)
您可以用混音程式, 将不想要的输入(如麦克风)调成无增益
有些音效卡偷工减料, 没有好的遮蔽及接地, 容易产生杂音
最後, 在我的电脑上, 我发现核心命令列有个选项no-hlt可以降低杂讯. 这个选
项叫核心在跑闲置回圈时不要用HLT指令. 您可以开机时手动试试, 或在LILO设定档中加上
append="no-hlt"
6.24 能放音, 不能录音
如果您能放音, 却不能录音, 试试:
□使用混音程式选择适当来源(如麦克风)
□使用混音程式将该来源的增益调到最大
□可以的话, 在MS-DOS下测试, 看看是不是硬体方面的问题
有时录音及放音用的DMA通道是不同的. 这种情况下八成是录音用DMA设定不对.
The Linux Sound HOWTO -- Linux 音效指引 25
6.25 必须先进DOS跑驱动程式, 不然我的"相容卡"没法用
多数情况下, ``声霸卡相容''卡在Linux下若舍声霸卡驱动程式不用而改用 别的驱动程式,
会更好用. 多数号称相容(如``16位元SB Pro相容''或SB相容的 ``16位元'')的卡,
它的声霸卡相容模式是提供DOS游戏的相容性所做的. 多数卡有可能
被最近的Linux(2.0.1以後)支援的, 自身的16位元模式.
只有一些(通常很旧)的卡必须尝试用声霸卡模式运作. 新卡中只有一个例外, 那就是用
Mwave为主的卡.
6.26 我的16位元声霸卡相容卡在Linux下只能用8位元模式
号称和声霸卡相容的16位元音效卡其实只和8位元的声霸卡Pro相容而已. 它们有和声霸卡
16不相容的16位元模式, 和Linux音效驱动程式不相容.
也许改用MAD16或MSS/WSS驱动程式後, 您就能用16位元模式了.
6.27 在哪里找得到Linux的音效软体?
这里有一些好的档案库, 可以搜寻Linux专用的音效应用软体:
□ <URL:ftp://sunsite.unc.edu:/pub/Linux/kernel/sound/>
□ <URL:ftp://sunsite.unc.edu:/pub/Linux/apps/sound/>
□ <URL:ftp://tsx-11.mit.edu:/pub/linux/packages/sound/>
□ <URL:ftp://nic.funet.fi:/pub/OS/Linux/util/sound/>
□ <URL:ftp://nic.funet.fi:/pub/OS/Linux/xtra/snd-kit/>
□ <URL:ftp://nic.funet.fi:/pub/OS/Linux/ALPHA/sound/>
6.28 音效驱动程式可不可以编译成可载入模组?
最新的核心里的音效驱动程式可以做成可载入模组.
详情请参考:/usr/src/linux/drivers/sound/Readme.modules及/usr/src/linux/Documen□
tation/modules.txt(或/usr/src/linux/README)
6.29 我能把主控台的哔哔声改用音效卡发出吗?
试试oplbeep程式, 可在 <URL:ftp://sunsite.unc.edu/pub/Linux/apps/sound/oplbeep-
alpha.tar.gz> 中找到.
另一个变种, 叫beep程式, 可在 <URL:ftp://sunsite.unc.edu/pub/Linux/ker□
nel/patches/misc/modreq_beep.tgz> 中找到.
modutils套件有个范例程式及核心修补, 支援在核心要求时, 执行外部程式, 产生声音.
另外在一些音效卡上, 您可以将PC喇叭输出到音效卡上, 这样所有声音就都由音效卡
发出来了.
The Linux Sound HOWTO -- Linux 音效指引 26
6.30 VoxWare是什麽?
支援很多Intel为基台的Unix相容作业系统的核心音效驱动程式, 也可以以独立於
Linux核心的套件取得. 在1996年二月以前, 作者称这软体为 ``VoxWare''. 然而不幸的,
这名称已成了VoxWare Incorporated的注册商标, 不能再被使用了.
现在这个驱动程式的新名 称叫OSS/Free.
Open Sound System(OSS)是给很多Unix系统用的, 商业版核心音效驱动程式, 由 4Front
Technologies出售. 叫做 OSS/Free 的免费版本将继续在Linux系统上以免费型式存在.
更多资讯可在4Front Technologies网站(在<URL:http://www.4front-tech.com/>)
上看到.
同一个东西, 您可能有听过的名称还有TASD(暂时的无名音效驱动程式)及USS
(Unix音效系统)
欲取得更多资讯, 请见4Front Technologies的网页, 在<URL:http://www.4front-
tech.com/>. 我在1997年六月的Linux Journal有写过OSS/Linux的评论文章.
6.31 有支援随插即用音效卡吗?
到了Linux 2.1版後应该能完全支援随插即用. 现在要让随插即用音效卡能用, 还有不少
要做的.
如果您用有Plug and Play BIOS的新Pentium机器, 要小心设定您的卡. 确定您将核心
音效驱动程式的I/O位址, IRQ及DMA等设得和BIOS给的一样.
给Linux用, 可用来设定这种卡的随插即用工具是存在的. 您可以在Red Hat的网站
<URL:http://www.redhat.com/>找到. 它也可能包含在您的Linux套餐中.
如果您在 Windows95 下使用这种卡, 可以用设备管理员来设定卡, 然後用LOADLIN
暖启动进Linux. 确定 Windows95 及 Linux 使用相同的设定参数.
如果您在DOS下用这种卡, 您可以使用声霸卡16PnP卡附的icu公用程式, 在DOS 下设定.
然後用LOADLIN暖开机进Linux. 一样, 确定 DOS 及 Linux 用相同的设定参数.
商业版的OSS音效驱动程式支援声霸卡16PnP, 您可以向 4Front Technologies 购买.
6.32 Sox/Play/Vplay 回报 "invalid block size 1024"
在1.3.67版核心中的改变让(错误的)检查SNDCTL_DSP_GETBLKSIZE ioctl是否传回大
於4096的放音软体失效. 在最新的snd-util-3.x.tar.gz套件(在 <URL:ftp://ftp.4front-
tech.com/ossfree> 中的公用程式现已能处理这种状况了. 最新的驱动程式也已修正,
避免配置小於4096 bytes的碎块, 解决了旧公用程式的问题.
6.33 音效驱动程式为何要用自己的设定程式?
音效驱动程式支援很多不同的设定参数. 驱动程式中的configure
会检查各参数间的相依性. 而核心的设定工具就没有提供这样的功能.
这就是说, 最新的核心部份地允许音效驱动程式使用标准核心设定工具(参见前面
``设定核心''那一小节.)
The Linux Sound HOWTO -- Linux 音效指引 27
6.34 我载入音效驱动程式模组後,混音设定就被重设了
您可以将音效驱动程式做成可载入模组, 并使用kerneld自动载入及除去. 然而
这造成了一个问题 - 当模组重新载入时, 混音器设定又回归预定的值. 对有些音效卡来
说, 这会太大声(如声霸卡16)或太小声. Markus Gutschke (gutschk@uni-muen□
ster.de)发现了这问题的解决之道, 在您的 /etc/conf.modules档中加入如下的一行:
options sound dma_buffsize=65536 && /usr/bin/setmixer igain 0 ogain 0 vol 75
这会在音效驱动程式载入後立刻执行您的混音程式(在范例中是用setmixer). dma_buff□
size参数没有意义, 但是是必需的, 因为这个命令 需要一些命令列的选项.
把上面那行改成您想要的混音及增益设定值.
如果您将音效驱动程式连进核心, 而想在开机後就自动设定音量, 您可以在开机自动执行
档/etc/rc.d/rc.local中将混音程式加进去.
6.35 只有root能录音
在Readme.linux中的script, 会将音效设备档设成仅有root可读, 这是为了填补
安全上的漏洞. 在网路环境里, 外面的使用者可以远端连进有音效卡及麦克风的Linux系统
并窃听. 如果您不担心这个, 您可以改变这个script中的权限.
在预设的安装法, 一般使用者仍然可以播放音效档. 这不会造成安全上的负担, 反而可
以省掉很多麻烦.
6.36 在IBM ThinkPad上的音效硬体可以支援吗?
关於如何在Linux下使用IBM ThinkPad上的mwave音效卡之资讯,
可在<URL:http://www.screamin.demon.co.uk/>查到.
7. 参考资料
如果您有片支援CD-ROM或SCSI介面的音效卡, 参阅 SCSI HOWTO 及CD-ROM HOWTO
可能可以给您更多有用的资讯.
Sound Playing HOWTO 则对如何在Linux下播放各种不同的音效及音乐档有所介绍.
Ultrasound Plug'n'play Mini-HOWTO则描述了如何让Gravis UltraSound
PnP卡在Linux下使用的资讯.
Linux SoundBlaster 16 PnP Mini-HOWTO描述如何在Linux下使用PnP的 SoundBlaster 16
音效卡.
Linux SoundBlaster AWE64 PnP Mini-HOWTO描述在Linux下使用 SoundBlaster
AWE64的方法.
有份叫做Hacker's Guide to VoxWare的文件可在
<URL:ftp://nic.funet.fi/pub/OS/Linux/ALPHA/sound/>找著. 虽然大部份内容已
被<URL:http://www.4front-tech.com/pguide>中的这份所取代, 但关於 /dev/seque□
cer的这节仍然可能有用处.
以下的FAQ定期张贴於Usenet讨论区news.announce
以及档案库<URL:ftp://rtfm.mit.edu/pub/usenet/news.answers>中:
The Linux Sound HOWTO -- Linux 音效指引 28
□ PCsoundcards/generic-faq (Generic PC Soundcard FAQ)
□ PCsoundcards/soundcard-faq (comp.sys.ibm.pc.soundcard FAQ)
□ PCsoundcards/gravis-ultrasound/faq (Gravis UltraSound FAQ)
□ audio-fmts/part1 (Audio file format descriptions)
□ audio-fmts/part2 (Audio file format descriptions)
这些FAQ也列出一些和产品相关的通信论坛及档案库. 以下的Usenet讨论区主要讨论音效及
音乐相关的题材:
□ alt.binaries.sounds.* (张贴音效档,很多群组)
□ alt.binaries.multimedia (张贴多媒体档案用)
□ alt.sb.programmer (和声霸卡程式设计有关)
□ comp.multimedia (多媒体专题)
□ comp.music (电脑音乐理论研究)
□ comp.sys.ibm.pc.soundcard.* (各种IBM PC音效卡的群组)
在<URL:http://viswiz.gmd.de/MultimediaInfo/> 有个多媒体专门站台. Creative Labs
的网站则在<URL:http://www.creaf.com/>. MediaTrix 的网站在<URL:http://www.medi□
atrix.com/>
Linux通信论坛有许多关於不同主题, 包括音效, 的频道. 想知道如何参加, 寄
一封内容为"help"的信到majordomo@vger.rutgers.edu.
最好不要用它来问如何设定音效卡这类问题, 它们是为开发者讨论用的.
前面提过好几次了, 音效驱动程式包含很多Readme档, 理面有很多和驱动程
式相关的资讯. 它们常常放在/usr/src/linux/drivers/sound目录里.
驱动程式作者 Hannu Savolainen 可以由电子邮件寄到 hannu@voxware.pp.fi 取得联络.
他也有个网站在<URL:http://personal.eunet.fi/pp/voxware>
这对想知道驱动程式最新状况如支援的音效卡, 已知问题及修正等的人来说是最佳来源.
在4Front Technologies网站<URL:http://www.4front-tech.com/>上, 可以看到
Linux及其它Unix相容作业系统用的商业版音效驱动程式OSS的资讯.
Linux Software Map是搜索Linux软体的极佳参考.
用关键字像sound搜寻LSM是识别关於音效硬体的应用程式之好办法. LSM可在很多匿名档案
库, 包括<URL:ftp://sunsite.unc.edu/pub/Linux/docs/LSM.gz>中找到.
Linux 文件计画(LDP)制作了好几本 Linux 的书, 包括 Linux Installation and Getting
Started. 这些可从主要的 Linux FTP 档案库免费取得, 或是花钱买硬拷贝型式的文件.
最後呢, 虽然有点无耻, 不过还是容我在此打打小广告: 如果你想学学更多关於在 Linux
下的多媒体( 特别是关於 CD-ROM 及音效卡应用及程式设计的), 到书店找找我编著的
Linux Multimedia Guide,ISBN 1-56592-219-0, 由 O'Reilly and Associates 公司出版.
除了原始的英文版外, 法文版和日文版也正付印中. 若在北美洲, 请电 800-998-9938.
The Linux Sound HOWTO -- Linux 音效指引 29
或是光顾以下站台: <URL:http://www.ora.com/catalog/multilinux/noframes.html>
或本人的网址<URL:http://www.pobox.com/~tranter/>
The Linux Sound HOWTO -- Linux 音效指引 30
CONTENTS
1. 概论 ..................................................................... 1
1.1 铭谢状 .............................................................. 1
1.2 英文版版本沿革 ...................................................... 1
1.3 本中文版版本沿革 .................................................... 3
1.4 最新版本何处寻? ..................................................... 3
1.5 回馈 ................................................................ 4
1.6 散布时的注意事项 .................................................... 4
2. 音效卡技术 ............................................................... 4
3. 支援的硬体 ............................................................... 5
3.1 音效卡 .............................................................. 6
3.2 选择性的音效驱动程式 ................................................ 7
3.3 PC喇叭 .............................................................. 9
3.4 平行(印表机)埠 ...................................................... 9
4. 安装 ..................................................................... 9
4.1 安装音效卡 .......................................................... 9
4.2 设定核心 ............................................................ 9
4.3 建立设备档 ......................................................... 13
4.4 起动Linux及测试 .................................................... 13
4.5 问题与解决 ......................................................... 16
5. 支援音效的应用软体 ...................................................... 18
6. 常见问题与解答 .......................................................... 18
6.1 这一堆音效设备档各代表什麽? ........................................ 18
6.2 怎样播放音效档案? .................................................. 19
6.3 怎样录制音效档? .................................................... 20
6.4 我可以有不只一片音效卡吗? .......................................... 20
6.5 错误: No such file or directory for sound devices .................. 20
6.6 错误: No such device for sound devices ............................. 20
6.7 错误: No space left on device for sound devices .................... 20
6.8 错误: Device busy for sound devices ................................ 21
6.9 还是逃不了'device busy'的错误! ..................................... 21
6.10 音效档放到一半就停了 ............................................... 21
6.11 播放MOD档断断续续 .................................................. 21
6.12 编译音效软体时出错 ................................................. 21
6.13 以前跑很好的软体, 却出现SEGV错误 ................................... 22
6.14 音效驱动程式有何已知的限制及bug? ................................... 22
6.15 关於音效驱动程式的ioctl等, 哪里有记载? ............................. 22
6.16 要完全平顺地录放音, 需要多强的CPU才能办到? ......................... 22
6.17 PAS16和Adaptec 1542 SCSI卡的搭配问题 ............................... 22
6.18 可不可以同时录放音? ................................................ 23
6.19 我的声霸卡16是设IRQ 2, 可是驱动程式不准我设这个值 .................. 23
6.20 声霸卡AWE32及声霸卡16ASP有支援吗? .................................. 23
6.21 我离开Linux, 起动DOS, 然後有些软体发声不正常 ....................... 24
6.22 在Linux下跑DOOM出问题 .............................................. 24
6.23 怎样降低音效卡产生的杂音? .......................................... 24
6.24
i
能放音, 不能录音 ................................................... 24
6.25 必须先进DOS跑驱动程式, 不然我的"相容卡"没法用 ...................... 25
6.26 我的16位元声霸卡相容卡在Linux下只能用8位元模式 ..................... 25
6.27 在哪里找得到Linux的音效软体? ....................................... 25
6.28 音效驱动程式可不可以编译成可载入模组? .............................. 25
6.29 我能把主控台的哔哔声改用音效卡发出吗? .............................. 25
6.30 VoxWare是什麽? ..................................................... 26
6.31 有支援随插即用音效卡吗? ............................................ 26
6.32 Sox/Play/Vplay 回报 "invalid block size 1024" ...................... 26
6.33 音效驱动程式为何要用自己的设定程式? ................................ 26
6.34 我载入音效驱动程式模组後,混音设定就被重设了 ........................ 27
6.35 只有root能录音 ..................................................... 27
6.36 在IBM ThinkPad上的音效硬体可以支援吗? .............................. 27
7. 参考资料 ................................................................ 27
ii
--
CLDP homepgae: http://www.linux.org.tw/CLDP/
http://www.phys.ntu.edu.tw/~cwhuang/pub/os/linux/CLDP/
CLDP mailing list: ldp-trans@linux.org.tw
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:410.956毫秒