我想学习如何编写一个分析歌曲的音乐应用程序。
我将如何开始,是否有用于分析声波的库?
我知道 C、C++、Java、Python、一些程序集和一些 Perl。
相关问题: 音乐模仿算法
计算机音乐的作曲和分析是一个巨大的领域。这种类型的工作有两个基本领域,它们有些重叠。
存在许多可以帮助解决这些问题的不同部分的库、工具和专门的编程语言。这是 Python 的音乐相关程序和库的列表。有很多可用的技术;您应该能够找到可以为您完成工作的首当其冲的东西。正如其他答案所暗示的那样,通过诸如傅立叶变换之类的非常低级的频率分析工具重新实现“音乐解析器”虽然可能,但将非常困难,而且几乎可以肯定是不必要的。
如需更多建议和具体问题,国际音乐信息检索协会有一个邮件列表,您可能会发现它很有帮助。
一旦你通过了 Lennart 提到的 FFT 东西,你可能想看看马尔可夫链来分析音符之间的间隔和聚合模式。
这是一种踩踏的基础,但马尔可夫链过去曾被用于建立一种来自各种歌曲的旋律的统计模型,可用于生成新的旋律。马尔可夫链可以对书面英语句子做同样的事情。举个例子,玩一下 megahal chatterbot,看看马尔可夫链如何产生在统计上看起来像它的输入的错位输出(在 megahal 的情况下,它看起来像英语句子)
可以想象,您可以将前 100 名混搭在一起,并让马尔可夫链生成器爆出下一个大热门。
另一方面,您可能要考虑这样的可能性,即不是音乐本身的任何质量使歌曲流行。或者也许是音乐质量问题与营销相结合。
要分析声波,您需要某种傅立叶变换 (fft),这样您就可以将歌曲分解为它的频率以及它们如何随时间变化。numpy中有fft支持,我没用过,不知道好不好用。但这将是一个很好的起点。
之后你需要对频率和模式进行某种统计分析,然后我就不再知道我在说什么了。
不过很酷的东西,去吧!
您可能想从查看 MIDI 格式开始,与压缩格式相比,它相当简单,并且您可以在其中生成一些不错的东西。
取决于你真正想做什么。
有Echo Nest 混音 API,可让您在 Python 中分析和操作音乐。这里有一些例子:战俘在哪里和这里:你让我量化了 lizzie 小姐。这里有一个很棒的教程:Echo Nest API 概述