播放波形(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是字节数组。