【问题标题】:Sound Processing - Beat Matching Music Player on Android声音处理 - Android 上的节拍匹配音乐播放器
【发布时间】:2009-07-23 14:03:37
【问题描述】:

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

我知道可以加快和减慢一首歌曲的速度,并使声音正常化,以使人声和乐器仍然达到相同的音高。

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

  • 击败比赛连续歌曲
  • 保持恒定的节拍以进行跑步
  • 可以通过加速度计或手动确定节拍
  • 在运行点(地理定位或计时器)自动发出警报和通知

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

即时执行此操作是否可行?你会使用什么方法?流到手机的服务器?也许可以离线分析桌面上的歌曲并通过系链同步到您的设备?

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

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

Gav

【问题讨论】:

  • 进行精确的 2X 速度播放(不提高音高)可以比任意(例如 1.1032X 或 0.92345X)移动播放快得多,这就是糟糕的设备这样做的原因。
  • 很抱歉再次提出一个老问题,但您有没有这样做过?我有兴趣看到一些可以实现这一目标的代码。谢谢

标签: java c++ android


【解决方案1】:

这在智能手机类型的设备上在技术上是可行的,尽管即使在功能强大的 PC 上而不是实时实现良好的音高转换和时间拉伸效果也非常困难。

可以在功能相对强大的移动设备上实时实现音高转换和时间拉伸(我已经在三星 i760 智能手机上的 .Net CF 中完成了),而不会对处理器造成过多负担(简单版本仅此而已比普通 MP3 播放贵)。效果不是很好,虽然如果音高和时间变化比较小的话听起来也不算太差。

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

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

【讨论】:

    【解决方案2】:

    其实你会遇到两个问题:

    1. 找到一首歌曲的节奏并不容易。最常见的方法是自相关,这涉及到相当多的微积分,所以我希望你已经学习了。
    2. 实际上,在不改变音高的情况下改变歌曲的节拍更加困难,并且仍然会导致歌曲中出现声音伪影。通常,以这种方式编辑音频需要很长时间,并且需要大量修补才能使歌曲听起来不错。要真正实时执行此操作将非常非常困难。实际过程包括对音频进行傅里叶变换、移频以及进行傅里叶逆变换。更多的微积分,这次是虚数。

    如果您真的想从事这方面的工作,我建议您参加电气工程系的信号和系统课程。

    也许是一个更简单的想法:找到用户库中所有歌曲的节奏,然后专注于播放与慢跑者的节奏接近的歌曲。你仍然需要做#1,但你不需要担心#2。

    【讨论】:

      【解决方案3】:

      动态更改音频速度绝对是可行的;我不确定它在 G1 上是否可行。

      我建议不要自己编写源代码,而是查看 MythTV 源代码和/或 mplayer 源代码。它们都支持在补偿音频的同时加快视频播放速度。

      【讨论】:

        【解决方案4】:

        http://picard.exceed.hu/tcpmp/test/

        tcpmp 完成了您在一个笨拙的 Palm Centro 上所要求的一切......还有更多,包括视频!如果它可以在 Palm Centro 上完成,那么它肯定可以在 Android 上完成!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-09-13
          • 1970-01-01
          相关资源
          最近更新 更多