我正在尝试将整数数组转换为声音表示形式。目前,我将每个值作为一个单独的音调播放,但我想根据这些信息创建一个采样的波形并进行回放,如下所示:
image
每个红点代表一个数据点。理想情况下,我想以一种简单的方法结束,例如playSound(int[] array);
。我已经查看了javax.sound.sampled包,但不知道从哪里开始。
最佳答案
首先,样本数组不足以播放声音的信息。
javax.sound.sampled包在AudioFormat类中表示此信息。
您将需要构建一种音频格式,以反射(reflect)音频采样的方法。例如,如果您的样本占据了整个整数范围,并且每个样本都用一个整数表示,并且您以每秒22,000个样本进行采样,并且它是单声道声音,则可以构建以下AudioFormat ...
AudioFormat desiredFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,22000,32,1,32,22000,true);
一旦有了AudioFormat,就可以打开一行并将音频转储到该行。 This page演示了如何做到这一点(他们作弊并正在播放音频文件,以便他们从文件中获取AudioFormat)。
当然,您可能无法为所有格式打开一行,因此您可能必须进行一些转换。综上所述,可能有Java声音库可以使这变得容易得多。
关于java - 合成采样声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4952326/