在Java中播放整数/双数组

时间:2014-05-25 16:49:56

标签: java arrays audio

我正在尝试在Java程序中播放数组。 到目前为止,我能够使用以下代码播放字节数组:

AudioFormat audioFormat = new AudioFormat(samplingFreq, bps, 1, true, true);
SourceDataLine sdline = AudioSystem.getSourceDataLine(audioFormat);
line.open(audioFormat);
sdline.start();        
sdline.write(playArray, 0, playArray.length);
sdline.drain();
sdline.close();

然而,由于write方法只接受字节数组作为参数,因此我只能播放字节数组。我希望每个样本数组也能播放16/32位。

有没有办法使用AudioSystem(或任何其他类)播放整数数组甚至双精度数。

1 个答案:

答案 0 :(得分:0)

在@ greg-449的评论的帮助下,我能够解决问题。要每秒播放更高的比特,您只需要增加bps参数并一个接一个地发送字节。

例如,如果我们想要发送1867作为样本,我们需要16位,如下所示: 0000 0111 0100 1011

前8位是十进制7,后8位是十进制75,所以因为我们使用大端(AudioFormat参数的最后一个参数),我们的字节数组的第一个元素应该是7和第二个元素应该是75.因此对于16位,我们每个样本只需要两个字节。