java - 声音处理 - Android 上的节拍匹配音乐播放器

标签 java c++ android

所以我想为 Android 制作一个新的音乐播放器,它将是开源的,如果您认为这个想法有任何好处,请随时告诉我,也许我们可以共同努力。

我知道可以加快和放慢歌曲的速度并使声音正常化,这样人声和乐器的音高仍然相同。

我想为 Android 制作一个针对慢跑者的媒体播放器;

  • 击败连续歌曲
  • 保持恒定的节拍以奔跑
  • 可以通过加速度计或手动建立节拍
  • 在运行过程中自动发出警报和通知(地理位置或计时器)

现在我知道这会在许多用例中失败(慢歌听起来很愚蠢,歌曲中的节拍变化变得一团糟)但我觉得它们是可以克服的。我真正需要知道的是如何开始使用 C++(使用 Android NDK)编写应用程序,该应用程序将执行分析并调整流。

即时执行此操作是否可行?你会使用什么方法?流式传输到电话的服务器?也许对通过系绳同步到您的设备的桌面上的歌曲进行离线分析?

如果一篇文章的问题太多,我最感兴趣的是分析 MP3 波形以找到节拍的最简单方法。最重要的是,如何进行操纵,改变节拍,将是我的下一个兴趣点。

我有一个很小的破 mp3 播放器,它可以在运行时以双倍速度播放,所以我相信它可以做到!

加夫

最佳答案

这在智能手机类型的设备上在技术上是可行的,尽管即使在功能强大的 PC 上也很难实现音高音调和时间拉伸(stretch)效果,而且不是实时的。

可以在功能相对强大的移动设备上实时实现变调和时间拉伸(stretch)(我已经在三星 i760 智能手机上的 .Net CF 中完成),而不会过度占用处理器(简单版本并不多)比普通 MP3 播放贵)。效果不是很好,但如果音调和时间变化相对较小,听起来也不会太糟糕。

实时自动确定歌曲的速度可能太耗时,但这部分过程可以在播放之前执行,或者可以在当前歌曲播放之前对下一首歌曲完成玩完了。我自己从来没有这样做过,所以我不知道。

你提到的其他一切都相对容易做到。但是:我不知道 Android 的 API 在音频输出方面有多简单,甚至不知道它是否允许低级别访问该项目所需的音频播放。

关于java - 声音处理 - Android 上的节拍匹配音乐播放器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1171988/

相关文章:

用于检查 jar 文件是否已签名的 java 代码

c++ - 在 C++ 中关联 3 个事物的最佳方式

c++ - 使用 int 计算并输出 float?

java - 为什么 JDK 1.4 和 1.5 的输出不同?

java - 在 JAVA 中使用 XSLT 转换 XML

c++ - 如何启动多个线程并且每个线程处理不同的文件?

安卓界面设计

android - AChartEnging XYMultipleSeriesRenderer y 标签填充

android - 配置android以编程方式运行ffmpeg命令

java - 读入字符串,检查字符串,并输出数字