我有一个波形,表示为从-1到1的浮点数组。是否可以将此波形作为重复声音播放?
我发现了很多从数组中播放音频的例子,但都与字节数组有关,需要一些非常复杂的代码。
答案 0 :(得分:1)
如果不了解它,为什么不直接为这些值指定一个范围,并按音调播放此范围。
-1 ... 1
50Hz ... 20,000Hz
您可以像这样轻松计算:
//input is the float array
int minPitch = 50;
int maxPitch = 20000;
int pitch = (int)((input[idx] + 1) * ((maxPitch - minPitch) / 2) + minPitch);
这将为您提供数组中值的间距。
答案 1 :(得分:1)
假设您的浮点数组包含PCM数据,并且您希望以8位方式播放它,将其转换为字节数组很容易:
int off=(signed!=0 ? 0 : 128);
for(int i=0; i<samples; i++){
val=(int)(pcm[i]*128. + 0.5);
if(val>127)
val=127;
else if(val<-128)
val=-128;
buffer[index++]=(byte)(val+off);
}
}
此代码是来自JOrbis的稍微修改的代码,此处pcm
是您的浮点数组,buffer
是字节数组。