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

Java 将波形(浮点数组)作为声音播放,java,audio,Java,Audio,我有一个波形,表示为从-1到1的浮点数组。是否可以将此波形作为重复声音播放 我发现了许多从数组播放音频的示例,但都与字节数组有关,并且需要一些非常复杂的代码。在不太了解它的情况下,为什么不给这些值分配一个范围,然后逐个音调播放这个范围呢 -1 ... 1 50Hz ... 20,000Hz 你可以很容易地这样计算: //input is the float array int minPitch = 50; int maxPitch = 20000; int pitch = (i

我有一个波形,表示为从-1到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);

这将为您提供数组中值的基音

假设您的浮点数组保存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);
                }
              }
int off=(有符号!=0?0:128);
对于(int i=0;i127)
val=127;
否则,如果(val