【发布时间】:2010-11-23 14:41:56
【问题描述】:
我想学习如何编写一个分析歌曲的音乐应用程序。
我该如何开始?是否有分析声波的库?
我知道 C、C++、Java、Python、一些汇编和一些 Perl。
【问题讨论】:
我想学习如何编写一个分析歌曲的音乐应用程序。
我该如何开始?是否有分析声波的库?
我知道 C、C++、Java、Python、一些汇编和一些 Perl。
【问题讨论】:
您可能想从 MIDI 格式开始,与压缩格式相比,它相当简单,并且您可以在其中生成一些不错的东西。
取决于你真正想做什么。
【讨论】:
要分析声波,您需要进行某种傅立叶变换 (fft),这样您就可以将歌曲拆分成它的频率以及它们如何随时间变化。 numpy中有fft支持,我没用过,不知道好不好用。但这将是一个很好的起点。
然后你需要对频率和模式进行某种统计分析,然后我就不再知道我在说什么了。
不过,很酷的东西,去吧!
【讨论】:
一旦您了解了 Lennart 提到的 FFT 内容,您可能希望了解一下用于分析音符之间的间隔和聚合模式的马尔可夫链。
这是一种老生常谈,但马尔可夫链过去曾被用于构建一种来自各种歌曲的旋律的统计模型,可用于生成新的旋律。马尔可夫链可以对书面英语句子做同样的事情。举个例子,玩一下 megahal chatterbot,看看马尔可夫链如何产生在统计上看起来像它的输入的错位输出(在 megahal 的情况下,它看起来像英文句子)
您可以想象前 100 名的混搭,并让马尔可夫链生成器爆出下一个热门歌曲。
另一方面,您可能要考虑这样一种可能性,即不是音乐本身的任何品质使歌曲流行。或者可能是音乐质量问题与营销相结合。
【讨论】:
计算机音乐的作曲和分析是一个巨大的领域。这种类型的工作有两个基本领域,它们有些重叠。
存在许多libraries, tools 和专门的programming languages,它们可以帮助解决这些问题的不同部分。这是与音乐相关的programs and libraries for Python 列表。有很多可用的技术;您应该能够找到可以为您完成工作的首当其冲的东西。正如其他答案所暗示的那样,通过 Fourier Transforms 等非常低级的频率分析工具重新实现“音乐解析器”虽然可能,但将非常困难,而且几乎肯定没有必要。
如需更多建议和具体问题,International Society for Music Information Retrieval 有一个邮件列表,您可能会觉得很有帮助。
【讨论】:
Echo Nest remix API 可让您在 Python 中分析和操作音乐。这里有一些例子:Where's the pow 和这里:You make me quantized miss lizzie。这里有一个很棒的教程:An overview of the Echo Nest API
【讨论】: