用《超级解霸》播放VCD时声音为何断断续续

Author: 张韫劼 Date: 2000年 第9期

  本人的电脑配置为:IBM 6×86 MX Pro 200、Winfast 280 V2显卡、ALS100+声卡、16M EDO内存、2.1G硬盘、操作系统为Pwin98。
  当我第一次在这台机器上运行《超级解霸5.0》播放影碟时,却发现当《超级解霸》的音频设置为精密或正常44100Hz时,从音箱中发出的声音竟然断断续续,惨不忍闻,只有把它设置为22050Hz时,声音才正常。可是《超级解霸》中的音频解霸及Xing 3.1等其他播放软件均能正常工作在44100Hz,这显然不是因为声卡不支持44100Hz的原因。难道是CPU在作怪?因为据说在音频回放过程中须要进行大量的浮点运算,而Cyrix系列CPU浮点能力弱是人所共知的,所以我拔下了我的声卡,把它插进了另外一台赛扬266中,结果与在我的机器上完全一样,这下我糊涂了!
  遇到这种问题当然不能轻易放过,于是我找来《电脑报》,查阅各种有关软硬件故障的版面,想从中找到类似的问题及解决方法。功夫不负有心人,终于在1999年1月18日的《电脑报》上的《专家坐堂》栏目中,发现有一位仁兄遇到的问题与我一模一样,而“专家”给出的解释是:由于ALS100+这类声卡从总线接收数据的速度较慢,并且对CPU的占用率较高,而《超级解霸》为了提高音质和效果,在音频处理上采用了纯浮点运算以及较其他软件更为复杂的算法,且播放VCD时视频处理比音频处理要占用更多的CPU资源,如果要以44100Hz回放音频,音频数据处理量也更大了,使这类声卡不能及时处理音频数据,保持与视频处理同步,导致声音出现断续现象。
  原因是找到了,只可惜“专家”们当时没有给出问题的解决方法,好在22050Hz和44100Hz的听觉效果差别不是很大(在一般机器上),唉!得过且过,谁叫我当时挑声卡时图便宜,现在总不能为了这点问题去升级我的声卡吧!
  一次偶然的机会,我打开了“控制面板/多媒体”,发现在“设备选项/媒体控制设备/波形音响设备”中提供了一项调整录音或回放过程中用于缓冲音频数据的内存容量的设置,经历过DOS时代的我立刻联想到了SMARTDRV,难道……为了印证我的想法,我把该设置由默认值(4秒)调到了最大值(9秒),设置完成后退出“控制面板”,运行《超级解霸》,放入一张碟片开始播放,然后把音频设置为精密44100Hz,果不出所料,音箱中再也没有出现断断续续的声音,取而代之的是流畅的音速和纯和的音质。
  原来,Windows 95/98系统为声卡提供了一种类似于为硬盘和光驱提供的内存缓冲技术,通过为声卡提供一部分内存作为音频数据缓冲区,有效地解决了在运行复杂程序时,一部分声卡由于从总线接收数据慢造成不能及时处理数据的问题。
  玩过软播表的朋友肯定都有过这样的体会,拿Yamaha XG-100来说,单纯用它播放MID文件或运行一些简单的小游戏还没什么问题,可在运行一些大型游戏时就不能正常工作了,比如在玩《大富翁4》时,进入游戏后,就听不到为游戏提供的MIDI格式的背景音乐了。现在好了,只要你把这项设置重新调整一个合适的值,再进入游戏,怎么样,听到了吧?XG-100的效果和FM的效果可不一样哦!
  最后须要说明一下,在实际应用中,该设置值并不一定要调到最大,应视不同声卡的性能及所运行的程序不同而异。另外,这项值设得越大,意味着声卡占用的系统资源就越多,而其他设备可用的系统资源就越小,从而影响到应用程序(主要是游戏及软解压软件)的执行效率。以我的ALS100+为例,在运行《超级解霸》播放影碟时,只要将该值设为6,即可正常工作在44100Hz,如果设为9,声音当然没问题,但是却会严重降低画面的播放速度。所以在具体设置时,应多试几次才能找到一个兼顾各方面的合适的值,不至于浪费资源。