同步AudioTrack流媒体与节拍器用户界面
问题描述:
我想做一个节拍器的应用程序,我借用了BeatKeeper app/github回购的核心代码。当节拍器击打时,我正试图同步UI。 BeatKeeper回购试图试图解决这个问题,但解决方案不足。我也尝试了几种方法,但都没有奏效。同步AudioTrack流媒体与节拍器用户界面
我使用AudioTrack类来编写音频(这是一个小军鼓声音)。音频从wav文件导入。给定每分钟节拍,我计算应该写入的小鼓样本的数量,然后用0填充剩余样本(用于静音)。因此,对于每个节拍,我都会向AudioTrack写入圈套样本,然后写入无声样本。在编写圈套示例之后,我发送一条消息(使用Handler)到更新当前节拍的TextView的UI线程。但是,这两者不同步。
有谁知道如何做到这一点?我已经编译了一些完美的节拍器应用程序(Mobile Metronome和Metronome Beats)。通过他们的代码,我发现进口的AudioTrack,所以我认为这是可能的AudioTrack。
我创建了一个非常裸露的骨骼应用程序/ github回购分享代码。 Metronome类是魔法发生的地方。我还创建了一个branch,并尝试使用AudioTrack的NotificationMarkerPosition来更新UI。使用监听器,我使用当前的头部位置并在每次发生事件时添加一个新标记以获得永久性节拍事件。然而,这种尝试在几次跳动之后开始漂移,并且也开始下降。我甚至试图解释漂移并纠正它,但那也行不通。
我知道通常习惯在问题中发布代码,但回购看起来对我更实际。如果有必要,但我可以发布代码。我会很感激任何帮助/建议或替代品,使节拍器与用户界面同步。
您是否有Visualizer的经验,并相信它可以用于我的用例,或者它只是一个建议?我没有很多音频编程方面的经验,但到目前为止,我还没有看到有人为我的特定用例使用可视化工具。 我想试一试,但我只是想衡量我的期望。谢谢 – blinkmacalahan
只是一个建议。 –