Java 将波形(浮点数组)作为声音播放
我有一个波形,表示为从-1到1的浮点数组。是否可以将此波形作为重复声音播放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
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