用外置库libsndfile,可以读取数据,频率,通道等等
以下是一段读取samplewav,将数据存入double格式的array:
#include "sndfileh"
#pragma comment(lib, "libsndfile-1lib")
void readwav(double output[length]){
SNDFILE sf;
SF_INFO info;
int num_channels;
int num, num_items;
double buf;
int f,sr,c;
int i,j;
infoformat = 0;
sf = sf_open("samplewav",SFM_READ,&info);
if (sf == NULL){
printf("Failed to open the file\n");
exit(-1);
}
f = infoframes;
sr = infosamplerate;
c = infochannels;
printf("frames=%d\n",f);
printf("samplerate=%d\n",sr);
printf("channels=%d\n",c);
num_items = fc;
printf("num_items=%d\n",num_items);
buf = (double )malloc(num_itemssizeof(double));
num = sf_read_double(sf,buf,num_items);
sf_close(sf);
printf("Read %d items\n",num);
for (i = 0; i < num; i += c){
for (j = 0; j < c; ++j){
if ((i+j)<length) {
output[i+j] = buf[i+j];
}
}
}
}
可以显示音乐频率值波动表的音乐软件有很多,如:天天动听、酷狗音乐、百度音乐、AIMP3等,也可以安装音乐播放器频率显示效果的插件。
音频的含义:是个专业术语,人类能够听到的所有声音都称之为音频,它可能包括噪音等。声音被录制下来以后,无论是说话声、歌声、乐器都可以通过数字音乐软件处理,或是把它制作成CD,这时候所有的声音没有改变,因为CD本来就是音频文件的一种类型。而音频只是储存在计算机里的声音。如果有计算机再加上相应的音频卡——就是我们经常说的声卡,我们可以把所有的声音录制下来,声音的声学特性如音的高低等都可以用计算机硬盘文件的方式储存下来。反过来,我们也可以把储存下来的音频文件用一定的音频程序播放,还原以前录下的声音。
音频的定义:
1、Audio,指人耳可以听到的声音频率在20HZ~20kHz之间的声波,成为音频。
2、指存储声音内容的文件。
3、在某些方面能指作为滤波的振动。
采样频率:
采样频率就是采用一段音频,做为样本,因为wav使用的是数码信号,它是用一堆数字来描述原来的模拟信号,所以它要对原来的模拟信号进行分析,我们知道所有的声音都有其波形,数码信号就是在原有的模拟信号波形上每隔一段时间进行一次“取点”,赋予每一个点以一个数值,这就是“采样”,然后把所有的“点”连起来就可以描述模拟信号了,很明显,在一定时间内取的点越多,描述出来的波形就越精确,这个尺度我们就称为“采样频率”。
我们最常用的采样频率是441kHz,它的意思是每秒取样44100次。之所以使用这个数值是因为经过了反复实验(实际上是那个时代才是视频27/10001时钟做CD刻录遗留问题),人们发现这个采样频率最合适,低于这个值就会有较明显的损失,而高于这个值人的耳朵已经很难分辨,而且增大了数字音频所占用的空间。
一般为了达到“万分精确”,我们还会使用48kHz甚至96kHz的采样频率,实际上,96kHz采样频率和441kHz采样频率的区别绝对不会象441kHz和22kHz那样区别如此之大,我们所使用的CD的采样标准就是441kHz,目前441kHz还是一个最通行的标准,有些人认为96kHz将是未来录音界的趋势。
采样频率提高应该是一件好事,但我们真的能听出96kHz采样频率制作的音乐与441kHz采样频率制作的音乐的区别吗?不过随着高端音响设备的大众化,我们也许就会在Party时听到更高质量的音乐了。
比特率:
比特率是大家常听说的一个名词,数码录音一般使用16比特、20比特或24比特制作音乐。什么是“比特”?我们知道声音有轻有响,影响声音响度的物理要素是振幅,作为数码录音,必须也要能精确表示乐曲的轻响,所以一定要对波形的振幅有一个精确的描述。
“比特(bit)”就是这样一个单位,16比特就是指把波形的振幅划为2^16即65536个等级,根据模拟信号的轻响把它划分到某个等级中去,就可以用数字来表示了。
和采样频率一样,比特率越高,越能细致地反映乐曲的轻响变化。20比特就可以产生1048576个等级,表现交响乐这类动态十分大的音乐已经没有什么问题了。刚才提到了一个名词“动态”,它其实指的是一首乐曲最响和最轻的对比能达到多少,我们也常说“动态范围”,单位是dB,而动态范围和我们录音时采用的比特率是紧密结合在一起的,如果我们使用了一个很低的比特率,那么就只有很少的等级可以用来描述音响的强弱,当然就不能听到大幅度的强弱对比了。
动态范围和比特率的关系是;比特率每增加1比特,动态范围就增加6dB。所以假如我们使用1比特录音,那么我们的动态范围就只有6dB,这样的音乐是不可能听的。16比特时,动态范围是96dB。这可以满足一般的需求了。20比特时,动态范围是120dB,对比再强烈的交响乐都可以应付自如了,表现音乐的强弱是绰绰有余了。
发烧级的录音师还使用24比特,但是和采样精度一样,它不会比20比特有很明显的变化,理论上24比特可以做到144 dB的动态范围,但实际上是很难达到的,因为任何设备都不可避免会产生噪音,至少在现阶段24比特很难达到其预期效果。
常见音频文件格式:
1、CD格式天籁
当今世界上音质最好的音频格式是什么?当然是CD了。因此要讲音频格式,CD自然是打头阵的先锋。在大多数播放软件的“打开文件类型”中,都可以看到cda格式,这就是CD音轨了。
2、WAV无损
是微软公司开发的一种声音文件格式,它符合 PIFFResource Interchange File Format 文件规范,用于保存WINDOWS平台的音频信息资源,被WINDOWS平台及其应用程序所支持。
3、MP3流行
MP3格式诞生于八十年代的德国,所谓的MP3也就是指的是MPEG标准中的音频部分,也就是MPEG音频层。
根据压缩质量和编码处理的不同分为3层,分别对应“mp1"/“mp2”/“mp3”这3种声音文件。需要提醒大家注意的地方是:MPEG音频文件的压缩是一种有损压缩,MPEG3音频编码具有10:1~12:1的高压缩率,同时基本保持低音频部分不失真,但是牺牲了声音文件中12KHz到16KHz高音频这部分的质量来换取文件的尺寸,相同长度的音乐文件,用mp3格式来储存,一般只有wav文件的1/10,而音质要次于CD格式或WAV格式的声音文件。
4、MID作曲家最爱
经常玩音乐的人应该常听到MIDI(Musical Instrument Digital Interface)这个词,MIDI允许数字合成器和其他设备交换数据。MID文件格式由MIDI继承而来。MID文件并不是一段录制好的声音,而是记录声音的信息,然后在告诉声卡如何再现音乐的一组指令。这样一个MIDI文件每存1分钟的音乐只用大约5~10KB。今天,MID文件主要用于原始乐器作品,流行歌曲的业余表演,游戏音轨以及电子贺卡等。mid文件重放的效果完全依赖声卡的档次。mid格式的最大用处是在电脑作曲领域。mid文件可以用作曲软件写出,也可以通过声卡的MIDI口把外接音序器演奏的乐曲输入电脑里,制成mid文件。
5、WMA最具实力
WMA (Windows Media Audio) 格式是来自于微软的重量级选手,高保真声音通频带宽,音质更好,后台强硬,音质要强于MP3格式,更远胜于RA格式,它和日本YAMAHA公司开发的VQF格式一样,是以减少数据流量但保持音质的方法来达到比MP3压缩率更高的目的,WMA的压缩率一般都可以达到1:18左右,WMA的另一个优点是内容提供商可以通过DRM(Digital Rights Management)方案如Windows Media Rights Manager 7加入防拷贝保护。这种内置了版权保护技术可以限制播放时间和播放次数甚至于播放的机器等等,这对被盗版搅得焦头乱额的音乐公司来说可是一个福音,另外WMA还支持音频流(Stream)技术,适合在网络上在线播放,作为微软抢占网络音乐的开路先锋可以说是技术领先、风头强劲,更方便的是不用象MP3那样需要安装额外的播放器,而Windows *** 作系统和Windows Media Player的无缝捆绑让你只要安装了windows *** 作系统就可以直接播放WMA音乐,新版本的Windows Media Player70更是增加了直接把CD光盘转换为WMA声音格式的功能,在新出品的 *** 作系统Windows XP中,WMA是默认的编码格式,大家知道Netscape的遭遇,“狼”又来了。WMA这种格式在录制时可以对音质进行调节。同一格式,音质好的可与CD媲美,压缩率较高的可用于网络广播。虽然网络上还不是很流行,但是在微软的大规模推广下已经是得到了越来越多站点的承认和大力支持,在网络音乐领域中直逼mp3,在网络广播方面,也正在瓜分Real打下的天下。因此,几乎所有的音频格式都感受到了WMA格式的压力。
6、Real流动旋律
RealAudio主要适用于在网络上的在线音乐欣赏,大多数的用户仍然在使用56Kbps或更低速率的Modem,所以典型的回放并非最好的音质。有的下载站点会提示你根据你的Modem速率选择最佳的Real文件。real的的文件格式主要有这么几种:有RA(RealAudio)、RM(RealMedia,RealAudio G2)、RMX(RealAudio Secured),还有更多。这些格式的特点是可以随网络带宽的不同而改变声音的质量,在保证大多数人听到流畅声音的前提下,令带宽较富裕的听众获得较好的音质。
随着网络带宽的普遍改善,Real公司正推出用于网络广播的、达到CD音质的格式。如果你的RealPlayer软件不能处理这种格式,它就会提醒你下载一个免费的升级包。许多音乐网站 提供了歌曲的Real格式的试听版本。现在最新的版本是RealPlayer 11。
7、VQF
雅马哈公司另一种格式是vqf,它的核心是减少数据流量但保持音质的方法来达到更高的压缩比,可以说技术上也是很先进的,但是由于宣传不力,这种格式难有用武之地。vqf可以用雅马哈的播放器播放。同时雅马哈也提供从wav文件转换到vqf文件的软件。 此文件缺少特点外加缺乏宣传,几乎已经宣布死刑了。
8、ogg新生代音频
ogg格式完全开源,完全免费, 和mp3不相上下的新格式。 与MP3类似,OGGVorbis也是对音频进行有损压缩编码,但通过使用更加先进的声学模型去减少损失,因此,相同码率编码的OGGVorbis比MP3音质更好一些,文件也更小一些。另外,MP3格式是受专利保护的。发布或者销售MP3编码器、MP3解码器、MP3格式音乐作品,都需要付专利使用费。而OGGVorbis就完全没有这个问题。OGGVorbis虽然还不普及,但在音乐软件、游戏音效、便携播放器、网络浏览器上都得到广泛支持。
9、FLAC自由无损音频
FLAC即是Free Lossless Audio Codec的缩写,中文可解为无损音频压缩编码。FLAC是一套著名的自由音频压缩编码,其特点是无损压缩。不同于其他有损压缩编码如MP3及AAC,它不会破坏任何原有的音频资讯,所以可以还原音乐光盘音质。它已被很多软件及硬件音频产品所支持。FLAC是免费的并且支持大多数的 *** 作系统,包括Windows,基于Unix内核而开发的系统 (Linux, BSD,Solaris,OSX,IRIX),BeOS,OS/2,Amiga。并且FLAC提供了在开发工具autotools,MSVC,Watcom C,ProjectBuilder上的build系统。
9、APE网络无损
APE是流行的数字音乐文件格式之一。与MP3这类有损压缩方式不同,APE是一种无损压缩音频技术,也就是说当你将从音频CD上读取的音频数据文件压缩成APE格式后,你还可以再将APE格式的文件还原,而还原后的音频文件与压缩前的一模一样,没有任何损失。APE的文件大小大概为CD的一半,但是随着宽带的普及,APE格式受到了许多音乐爱好者的喜爱,特别是对于希望通过网络传输音频CD的朋友来说,APE可以帮助他们节约大量的资源。
作为数字音乐文件格式的标准,WAV格式容量过大,因而使用起来很不方便。因此,一般情况下我们把它压缩为MP3或 WMA 格式。压缩方法有无损压缩,有损压缩,以及混成压缩。MPEG, JPEG就属于混成压缩,如果把压缩的数据还原回去,数据其实是不一样的。当然,人耳是无法分辨的。因此,如果把 MP3, OGG格式从压缩的状态还原回去的话,就会产生损失。
然而APE压缩格式即使还原,也能毫无损失地保留原有音质。所以,APE可以无损失高音质地压缩和还原。当然,只能把音乐CD中的曲目和未压缩的WAV文件转换成APE格式,MP3文件还无法转换为APE格式。事实上APE的压缩率并不高,虽然音质保持得很好,但是压缩后的容量也没小多少。一个34MB的WAV文件,压缩为APE格式后,仍有17MB左右。对于一整张CD来说,压缩省下来的容量还是可观的。
APE的本质,其实它是一种无损压缩音频格式。庞大的WAV音频文件可以通过Monkey's Audio这个软件压缩为APE。很多时候它被用做网络音频文件传输,因为被压缩后的APE文件容量要比WAV源文件小一半多,可以节约传输所用的时间。更重要的是,通过Monkey's Audio解压缩还原以后得到的WAV文件可以做到与压缩前的源文件完全一致。所以APE被誉为“无损音频压缩格式”,Monkey''s Audio被誉为“无损音频压缩软件”。与采用WinZip或者WinRAR这类专业数据压缩软件来压缩音频文件不同,压缩之后的APE音频文件是可以直接被播放的。Monkey's Audio会向Winamp中安装一个“in_APEdll”插件,从而使Winamp也具备播放APE文件的能力。同样foobar2000,以及千千静听也能支持APE的播放。
以上就是关于怎样用c语言读取WAV文件振幅信息全部的内容,包括:怎样用c语言读取WAV文件振幅信息、什么音乐软件可以显示音乐频率值的表、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)