如何计算在Android45分贝的声音在线试听频率是多少

用Android设备来播放指定频率的纯音艏先考虑到纯音是一种固定频率的声波,其实也就是正弦声波了其实所有声音都是有正弦波组成,只不过纯音是固定频率的正弦波那麼要实现Andoird播放纯音,那么首先就应该绘制出正弦波来 那么看下面这段代码:

首先正弦波的高度设置为127,因为这里只打算使用8位的采样率2的8次方就应该是256,所以正弦波的波峰就应该是127了sin(byte[] wave, int waveLen, int length)方法就是根据波的长度还有整个声波的总长度来生成正弦波的值。最后可以根据数组丅标将值打印出来就是正弦波的形状了(只是不是很规则啦。。)

生成正弦波的方法有了那么接下来就该实现播放正弦波的方法了。Android给我们实现了这个接口那么就是AudioTrack这个类了。将正弦波传入这个类的write方法中就可以播放正弦波了。。很简单吧 那就直接看代码吧。

初始化AudioTrack首先传入一个指定频率这里先将声音总频率设置为44100,然后计算出单个正弦波(也就是2PI)的长度最后将单个正弦波的长度乘以頻率取得声波的实际频率,这样的是为了避免声波最后出现一段空的声波 然后将参数传入刚才SinWave类的sin方法中取得正弦波。AudioFormat.ENCODING_PCM_8BIT就是指定AudioTrack使用8位采样率

这里注意,AudioTrack.play()是还不能播放声音的因为这个时候AudioTrack里面还没有声波数据。下面这段代码才是真的播放声音:

将刚才生成的正弦波数據写入AutioTrack中那么声音也就播放出来了。。

下面是我写的一个例子。只需要修改指定频率那么就可以播放你想要播放45分贝的声音在线試听了。(注:声音关小点哦!!特别是3000Hz以上45分贝的声音在线试听特别刺耳。切记切记)


我要回帖

更多关于 45分贝的声音在线试听 的文章

 

随机推荐