每N毫秒播放一次声音

Raf*_*ele 12 java audio android

我正在开发一个节拍器应用程序.用户可以在运行时选择bpm,我的应用程序将相应地播放"tick"声音."tick"是单个节拍器"shot"(mp3).我尝试使用Handler和MediaPlayer实现它,但节拍器根本不精确.所以我想改变整个方法:当用户选择一个新的bpm值时,我通过每隔N毫秒重复一次嘀嗒声X次来合成一个新的声音,然后循环这个运行时创建的声音.这是一个有效的选择吗?如何在Android中实现?

Ale*_*qui 6

循环通过合成声音的替代方案似乎是现在的最佳选择.在Google I/O 2013上有一个关于音频的很棒的会议叫做高性能音频,我当然建议观察,以便更深入地了解系统如何工作以及开发人员在处理音频延迟时会遇到的问题.在大约17:00的视频中,有一个图表显示抖动与回调.在一个不存在的完美世界中(哦真的吗?),对于所有预定的音频回调,抖动将为零.但事实并非如此,因为图中的数据是使用未指定的ICS设备制造的,因为有高达35毫秒甚至更高的抖动,并且肯定会出现更糟糕的情况.

因此,由于节拍器是精密工具而且这些抖动并不好,所以应该将预定的播放方法放在一边.我甚至使用合成声音制作了一个相当可靠的节拍器工作AudioTrack.

希望它有所帮助^^

  • 对不起,如果这已经很晚了,请您在使用"AudioTrack"成功实现节拍器的地方发布代码吗? (3认同)
  • 此处:http://masterex.github.io/archive/2012/05/28/android-audio-synthesis.html (2认同)