C#的声音波形显示
秦丹 摘要:Wav文件包含文件头和数据块,记录了声音的波形。.Net C#开发环境提供了文件流和流的读写器等操作类,可以方便地实现对wav文件的解析从而得到声音的波形数据,再利用Graphics类十分接近原声,能获得非常高的音质[2],其缺点是文件体积较大。为了文件体积较小,人们又推出mp3、ra等格式的文件,其特点是采用了压缩技术,其代价是声音的品质有所下降。还有一类声音文件采用音***和发声指令的手段还原声音,如midi文件,它只是模仿各类乐器的演奏效果而不是记录声音,更重要的是它不能发出人声,因此其使用受到极大限制。
由于wav文件直接记录波形,便于各类应用程序解析声音信息, C#从wav文件中获取波形并绘制声波。wav文件格式是RIFF文件格式的一种。wav文件分文件头和数据块两部分,文件头又分为RIFF/WAV文件标识和声音数据格式两部分[3]。
wav文件的编码方式主要有PCM (PulseCode Modulation脉冲编码调制)和ADPCM (Adaptive Different ial Pulse Code Modulation自适应差分脉冲编码调制)两种。使用PCM脉冲编码调制的采样文件,其文件头为4字节,但有时wav文件头中会增加fact块,此时其文件头可达58字节。而ADPCM编码的采样文件,若其包含有fact块,则其文件头可达90字节。wav文件头记录的主要信息包括采样频率、采样精度和声道数。采样频率越高音质越接近原声,采样频率通常有11025hz、22050hz、44100hz、48000hz四种。采样精度数值越大分辨率越高。声道数包括单通道和双通道两种,前者只能让一个喇叭发音,后者则能让两个喇叭发音从而产生立体声效果。
#绘制声波波形
Visual Studio 。C#,特别适于用户界面设计。.Net C#语言在图形处理方面提供了GDI+技术,使用Graphics类封装诸多的图形绘制方法,能绘制直线、曲线、多边形、椭圆,甚至还能将文字作为图形输出[4],以便于产生特效,还提供了图像的翻转、扭曲以及像素操作等丰富功能,为图形图像编程提供全方位的支持,最大程度地减少了对底层API的直接调用,提高了编程效率。
C#提供了一系列静态和非静态的文件操作类支持文件的创建、复制、删除和读写操作。为了实现文件的随机读取,.NET C#提供了FileStream文件流以记录文件的操作位置。利用静态类File的Open()等方法可以返回一个指向硬盘上特定文件的文件流实例。再利用文件流实例作为参数初始化一个流的读写器对象,由流的读写器最终实现对文件的读写操作,其操作可以指定每次读写若干字节,十分灵活方便。流的读写器又分为二进制读写器和文本读写器,前者空间利用率高,而后者所写的文件便于阅读,二者各有所长。该文采用后者。
FileStream fs=("C:\\");
StreamReader sr=new StreamReader(fs);
char[
基于.Net C#的声音波形显示 来自淘豆网www.taodocs.com转载请标明出处.