📄 sound-howto.txt
字号:
在 snd-util 中的 splay 命令如果以手动输入适切的参数,可以用来播放多数音 效档。 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 (5)#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 您要先建立设备档。 请参见前面建立设备档的部份。 如果您确实有设备档, 检 查主编号及次编号是否正确。 (一些旧一点的 CD-ROM Linux 安装套件可能不会 在安装时建立正确的设备档) 6.6 音效设备发生错误: No such device 您的核心并不支援音效驱动程式,或是I/O位址设定和硬体不一致。 检查您是否 用新造的 核心开机,并确认其设定和硬体是一致的。 6.7 音效设备发生错误: No space left on device 如果您没有建立必要的设备档,就把资料丢进 /dev/audio 或 /dev/dsp,就会发 生这种情况。 这时这些"设备档"其实只是普通档案, 而且把您的磁碟塞满了。 您必须照本文件中建立设备档 这一小节的指引去执行那个命令稿。 在 Linux 2.0 或之後,当设备开启,系统却没有足够的 RAM 时亦会发生。 对每 个 DMA 通道,音效驱动程式至少需要两页 (8K) 连续记忆体区块。 这种情型在 不足 16M 的 RAM 或已经启动很久的系统上可能发生。 在再开启设备档以前,也 许可以先编译及执行以下的 C 程式,以空出一些 RAM 出来。 main() { int i; char mem[500000]; for (i = 0; i < 500000; i++) mem[i] = 0; exit(0);}6.8 音效设备发生错误: Device busy 一个音效设备一次只能给一个程序用。 在这问题中, 最可能的情形就是有别的 程序正在使用这个设备。 确定的方法之一是用 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() 方式。 抓新 版的原始码,或做必要改变,把它移植到适合新版驱动程式用。 详见音效驱动程 式的 Readme 档。 也请确定编译应用程式时,您使用最新的 soundcard.h 及 ultrasound.h。 请见 本文开头处里的安装指引。 6.13 以前跑很好的软体,却出现 SEGV 错误 这和上个问题可能是一样的。 6.14 音效驱动程式有何已知的限制及 bug? 请看核心音效驱动程式里的档案。 6.15 关於音效驱动程式的 ioctl 等,哪里有记载? 目前除原始码以外最佳的文件在 4Front Technologies 的网站 [36]http://www.opensound.com。 另一个来源是 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提供) 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 会改变 EEPROM 的设定,所以比在 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 可不可以同时录放音? 一些卡的驱动程式能支援这功能。 请看在 4Front Technologies 的网站中的文 件, 了姐如何用它。 6.19 我的声霸卡 16 是设 IRQ 2,可是驱动程式不准我设这个值 在 '286 及以後的机器,IRQ2 中断连接了第二个中断控制器。 它等同於IRQ 9。 6.20 我离开 Linux,起动 DOS,然後有些软体发声不正常 这在暖开机进 DOS 後发生。 有时错误讯息会误导您,以为是 CONFIG.SYS 档哪 里写错了。 多数现在的音效卡有软体设定的 IRQ 及 DMA 设定。 如果您的卡在 Linux 下及 MSDOS/Windows 下设定值不一样的话,可能会造成问题。 有些音效卡不准设新参 数, 除非完全 reset。 (如把电源关掉再打开,或使用硬体上的reset钮) 简单对付方法就是按下reset键,或把开关关了再开,不要用暖开机(即 Ctrl-Alt-Del)。 正解则是确保您在MS-DOS及Linux下都用同样的IRQ及DMA设定 (或乾脆不要用DOS :-)。 6.21 在 Linux 下跑 DOOM 出问题 想玩 ID software 出的 DOOM 游戏之 Linux 版的玩家们, 可能对这个有兴趣。 要正确的音效输出,您必需使用 2.90 版或以後的音效驱动程式; 它支援了即时 的 DOOM模式。 音效样本是16 bit。 如果您用8 bit音效卡,您仍然可以用一些可在 [37]ftp://metalab.unc.edu/pub/Linux/games/doom中找到的一些程式,让声音 出现。 如果DOOM动作不流畅,把音效取消(把 sndserver 档改名)会有一些改进。 DOOM 预设不支援音乐(不像 DOS 版)。 musserver 程式将增加Linux下的 音乐支 援。 它可以在 [38]ftp://pandora.st.hmc.edu/pub/linux/musserver.tgz 中找 到。 6.22 怎样降低音效卡产生的杂音? 用高品质的屏蔽电缆,换个插槽插,可能有助於减低杂音。 如果音效卡有音量调 整钮,您可以试试不同的设定(最大声可能最好)。 您可以用混音程式,将不想要 的输入(如麦克风)调成零增益。 Philipp Braunbeck 报告他的 ESS-1868 音效卡上有个跳线用来关闭内建增益器 的, 如果装上,能帮助降低杂音。 在一台 386 电脑上,我发现核心命令列有个选项no-hlt可以降低杂讯。 这个选 项叫核心在跑□置回圈时不要用 HLT 指令。 您可以开机时手动试试, 或在 LILO 设定档中加上append="no-hlt" 有些音效卡偷工减料,没有好的遮蔽及接地,容易产生杂音 6.23 能放音,不能录音 如果您能放音,却不能录音,试试: * 使用混音程式选择适当来源(如麦克风) * 使用混音程式将该来源的增益调到最大 * 可以的话,在MS-DOS下测试,看看是不是硬体方面的问题 有时录音及放音用的 DMA 通道是不同的。 这种情况下八成是录音用 DMA 设定不 对。 6.24 必须先进 DOS 跑驱动程式,不然我的"相容卡"没法用 多数情况下,"声霸卡相容" 卡在 Linux 下若舍声霸卡驱动程式不用而改用 别的 驱动程式,会更好。 多数号称相容(如 "16 位元 SB Pro 相容" 或 SB 相容的 "16位元")的卡,它的声霸卡相容模式是提供 DOS 游戏的相容性所做的。 多数卡 自己的 16 位元模式可能在最近的 Linux(2.0.1以後) 会支援。 只有一些(通常很旧)的卡必须尝试用声霸卡模式运作。 新卡中只有一个例外,那 就是用 Mwave为主的卡。 6.25 我的 16 位元声霸卡相容卡在 Linux 下只能用 8 位元模式 号称和声霸卡相容的 16 位元音效卡其实只和 8 位元的声霸卡 Pro 相容而已。 它们有和声霸卡 16 不相容的 16 位元模式,和 Linux 音效驱动程式不相容。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -