论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
4.内存利用。人耳可辨声音的最高频率可达20kHz以上,因此DSP的采样率至少也要达到与此相当的水平,而为了容纳立体声双声道信息,采样率还要再翻一倍。常见的WAV声音的采样率有44100、22050、11025等。在这么高的采样率下,声音的数据量自然很大,如44k采样率下,20秒的录音数据长达800多k。为在DOS常规内存内处理这种规模的数据,实例程序采取了分块处理的方式,将数据分成以当前剩余自由内存大小为单位的块,将其逐次读入,逐次处理。同时,由于C语言的read()函数每次读操作的字节数最多不过64k-1,因此,每一个分块又需分
若干次读入。实例表明,经此法处理的播放程序不受WAV文件长度的限制,笔者在Windows下录制的长达5M多的WAV文件(11k采样率,约8分钟)也照播不误。
5.声音文件。本文提供的程序实例其声音数据取自WAV文件,其实,对于VOC文件,本播放技术也一样适用,只不过数据的读取格式有所不同而已。关于WAV文件的格式,可参考文献3,VOC文件的格式参考献1和2。
实例程序用Borland C++ 3.1编译,在配置OPTI 386主板、海洋48
6主板及多种与SoundBlaster Pro兼容声卡的兼容机上运行通过。
三、源程序清单
#include
#include
#include
#include
#include
#include
#include
#include 下一篇: