小编use*_*594的帖子

在Android中使用动画精确同步循环音频

问题: 有没有办法使用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)

java audio android opensl audiotrack

5
推荐指数
1
解决办法
967
查看次数

标签 统计

android ×1

audio ×1

audiotrack ×1

java ×1

opensl ×1