3

我为没有音频处理知识的音乐爱好者提出了一个项目建议。我认为这个项目很有趣,但我对如何实施它没有清晰的认识。

项目建议:有些人喜欢唱歌,但找不到合适的音乐伴奏(背景音乐)。会弹吉他的人,可以弹吉他唱歌(吉他提供的节奏是背景音乐)。该项目是为了达到类似于为人们唱歌而弹吉他的效果。

我认为要实施这个项目,需要以下组件:

  1. 音乐知识(吉他如何作为背景音乐演奏(也许简单的模式会起作用))
  2. 信号/音频处理

    • 按键检测
    • 节拍检测
    • 和弦匹配

为了达到我的目的,我是否错过了任何其他组件?任何图书馆可以帮助我吗?该项目预计在1.5个月内完成。可能吗?(我只是希望它像吉他初学者演奏背景音乐一样工作)。对于开发语言,我不会使用 c/c++。目前我最喜欢的是python,但可能会使用其他编程语言,只要它有助于简化实现过程。

我没有音乐背景,只学习非常基本的音频处理。任何建议或意见都可以接受。


编辑信息: 我尝试搜索自动伴奏,并且有一些软件。我没有找到任何开源项目,我想知道它如何处理音频信息的细节。如果你知道任何关于它的开源项目,请分享你的知识,谢谢。

4

1 回答 1

4

您可能会首先考虑吉他手在没有事先了解歌曲的键、和弦进程或节奏(更不用说它的结构、风格等)的情况下要成功地为歌手伴奏而必须做些什么.)

在伴奏者(人或计算机)以前没有听过歌曲的情况下实时执行此操作将很困难,因为需要一些时间来分析正在演唱的内容以便对伴奏做出适当的音乐选择。在现实世界中具有这种能力的吉他手或其他音乐家将被认为是高技能的。

如果你没有音乐背景,这听起来像是一个非常具有挑战性的项目,为期 1.5 个月。'也许简单的模式会起作用' - 也许,但有大量的简单模式可能!

不太雄心勃勃的项目可能是:

  • 录制整首歌并分析它,然后渲染背景(仍然需要大量工作!)
  • 创建一个单一的和声线或部分,就像人声和声器效果一样
  • 根据用户输入的和弦进行生成背景

编辑回复您的第一条评论:

如果您想生成完整的伴奏,则需要(如您所说)处理键和和弦进行以及时间(包括拍号和检测小节的哪个节拍是“节拍 1”)

获取这种级别的定时信息可能很困难,因为仅使用从歌曲中获取节拍的标准技术(在某些频率范围内寻找振幅峰值)是不可能从语音中检测节拍的。

您可能仍然可以通过根本不计算时间来获得良好的结果,只需在演唱音符(或其中的一部分)的开始及时演奏您的和弦。

然后你需要做的就是

  • 检测笔记。这篇文章是关于在 python 中检测音高的:Python 频率检测。幅度检测更直接。
  • 想出一个算法来计算乐曲的根音(以及 - 更雄心勃勃的 - 它改变的地方)。在某些情况下,仅凭旋律可能很难辨别。您可以先假设第一个音符或最常见的音符是根音。
  • 想出一个生成和弦进行的算法(在网上搜索“和声旋律”)。显然,没有客观上正确或错误的方法来做到这一点,您可能只能在有限的风格范围内令人信服地做到这一点。您可能想从假设和弦的有限子集开始,例如 I、IV、V。这些应该适用于大多数简单的“童谣”风格的曲调。

当然,如果您将自己限制在从第一拍开始的简单曲调,您可能会更容易计算出拍号。总的来说,我认为您的成功之路将是首先尝试处理简单的案例,然后在此基础上再接再厉。

于 2013-10-03T08:54:54.303 回答