如何实时将数据放入数组中?

时间:2016-07-31 15:25:25

标签: java arrays audio streaming real-time

(如果您不熟悉声音编程,请参阅“编辑”)

我正在撰写媒体艺术计划,我想做以下事情。

有一个SourceDataLine正在运行,
例如,每10毫秒,
我通过sourceDataLine.write()方法发送长度为1764的字节数组 (44100 Hz,16位立体声音频数据,441个样本* 2个字节(16位)* 2个通道= 1764)

如果已存在要播放的音频数据,
这很容易实现。
也就是说,从音频字节数组中取出1764并每秒发送到sourceDataLine 100次。

从这里开始,我的问题 我想在点击鼠标时播放声音 所以,我无法预先知道声音数据 要做到这一点,我必须知道点击的时间,
从定时信息中,我将声音数据写入适当的位置
字节数组 我怎样才能做到这一点?

我能想到的一种方法是 当声音开始时,我将System.nanoTime()存储到long变量,
点击后,我测量声音的位置 但它似乎不太酷。

我不会将MIDI用于此目的,
因为我想合成声音

谢谢。

EDITED
对于那些不熟悉Java音频API的人。

我想记录特定采样率的点击时间,
并输出实时记录数据。

EDITED2
检查每个样品中是否点击是不可能的,
因为两个原因 间隔很短。 (在44100赫兹的情况下大约23微秒)
2.结果数据的准确性(时间)会波动。

0 个答案:

没有答案