如何在Android中制作可变长度的声音

Posted

技术标签:

【中文标题】如何在Android中制作可变长度的声音【英文标题】:How to make a variable length sound in Android 【发布时间】:2014-04-10 06:39:50 【问题描述】:

我正在尝试制作一个像钢琴风琴一样演奏声音的应用程序。当用户按下按钮时,它将播放类似钢琴的声音。困难在于用户可以将手指按住任意长的时间。当他们抬起手指时,应该会消失而不是突然停止。

我玩过 SoundPool 和 Media Player,但它们似乎不适合。

那里有很多钢琴应用程序...有人知道他们是如何解决这个问题的吗?

【问题讨论】:

您可能想研究在软件中实现some sort of envelope。 【参考方案1】:

您需要使用 AudioTrack 类。基本用法是使用 AudioTrack 的 write() 方法在您希望听到它的任何持续时间写入您的声音数据。您需要为要“播放”的每个同时发出的声音使用单独的线程。

这里是AudioTrack reference page 和这里是a blog entry,作者很好地展示了如何在没有太多干扰的情况下做什么。

【讨论】:

谢谢,我查看了piano.zip 文件中的代码,并且按钮确实可以播放可变长度。

以上是关于如何在Android中制作可变长度的声音的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Android 中的多个声音块创建单个声音文件

在android中将录制的声音调制成不同的效果?

如何在 UITableView 中优雅地处理来自网络的可变长度文本?

如何在 TensorFlow 中处理具有可变长度序列的批次?

如何在 python 中获取声音文件(.wav)的时间长度? [复制]

C99 在运行时如何计算可变长度数组的大小?