播放波形(浮点数组)作为声音

时间:2011-06-30 07:05:32

标签: java audio

我有一个波形,表示为从-1到1的浮点数组。是否可以将此波形作为重复声音播放?

我发现了很多从数组中播放音频的例子,但都与字节数组有关,需要一些非常复杂的代码。

2 个答案:

答案 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是字节数组。