问题: 有没有办法使用AudioTrack和setLoopPoints()来配置基于每毫秒样本/帧精度的循环?
编辑:我知道大多数Android设备拥有的处理能力无法预期完美的准确性.但是,我希望平均循环时间接近速度的"真实"间隔(以毫秒为单位),因为这是我基于"动画"的方式,它也应该与速度同步(动画是一个重绘的SurfaceView)一段线在节奏间隔期间的坐标).
详细信息: 我正在尝试使用带有setLoopPoints的AudioTrack来创建准确的节拍器.为此,我使用两个wav文件(Tick和Tock)来填充byte []数组以提供给AudioTrack.考虑一下4/4时间的例子,我将填充一个byte [],一次使用Tick从[0]开始,三次使用Tock(使用arrayCopy())填充[length/4],[length/2]和[3*length/4],并假设wav数据不会相互重叠.
我的代码所做的粗略示例:
// read each wav file's header into its own ByteBuffer (with LITTLE_ENDIAN order)
// ... then get the size of the audio data
tickDataSize = tickHeaderBuffer.getInt(40);
tockDataSize = tockHeaderBuffer.getInt(40);
// allocate space for one loop at the current tempo into a byte[] array (to be given to AudioTrack)
// e.g. 22050hz * 2 Bytes (1 per channel) * 2 Bytes (1 per 8 bit PCM sample) = 22050*4 Bytes/second
// If …Run Code Online (Sandbox Code Playgroud)