播放波形(float数组)作为声音
问题描述:
我有被表示为从-1 float数组为1是否可以玩这个波形作为重复声音的波形?播放波形(float数组)作为声音
我发现从一个阵列播放音频的例子不胜枚举,但都涉及到字节数组,并要求一些很费解的代码。
答
不知道这件事了,你为什么不只是分配一个范围值,并通过音玩这个区的音色。
-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);
这将使你在数组中值的间距。
答
假设你的int数组保存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
是字节数组。