编写自学习音乐制作工具

7 投票
5 回答
2256 浏览
提问于 2025-04-15 13:55

我想学习如何编写一个音乐应用程序,这个程序可以分析歌曲。

我该如何开始呢?有没有什么库可以用来分析声音波形?

我会一些C、C++、Java、Python,还有一点汇编和Perl。

相关问题: 音乐模仿的算法

5 个回答

3

要分析声音波形,你需要用到一种叫做傅里叶变换的东西(fft),这样你就可以把歌曲分解成不同的频率,并观察这些频率是如何随时间变化的。numpy这个库里有傅里叶变换的功能,我自己没用过,所以不太清楚效果怎么样。不过,这个是个很好的起点。

接下来,你需要对频率和模式进行一些统计分析,之后我就不知道该说什么了。

不过这很酷,去试试吧!

6

当你了解完Lennart提到的快速傅里叶变换(FFT)后,可能会想看看马尔可夫链,这是一种用来分析音符之间间隔和聚合模式的工具。

这方面的研究已经有一段时间了,但马尔可夫链过去被用来建立一种统计模型,可以从各种歌曲中提取旋律,并用来生成新的旋律。马尔可夫链同样可以处理英文句子。想看看效果的话,可以试试megahal聊天机器人,看看马尔可夫链是如何生成看起来像英文句子的混乱输出的。

你甚至可以把前100首歌混合在一起,让马尔可夫链生成下一个热门歌曲。

另一方面,你也可以考虑一下,可能并不是音乐本身的某种特质让一首歌变得受欢迎。或者说,受欢迎的歌曲可能是音乐质量和市场营销结合的结果。

10

用电脑来创作和分析音乐是一个很大的领域。这个领域主要有两个基本方向,它们之间有些重叠。

有很多很多的库、工具和专门的编程语言可以帮助解决这些问题的不同部分。这里有一份关于音乐相关的Python程序和库的列表。可用的技术非常多,你应该能找到一些能帮你完成大部分工作的工具。虽然像其他回答提到的那样,通过一些非常底层的频率分析工具,比如傅里叶变换来重新实现一个“音乐解析器”是可能的,但这会非常困难,而且几乎肯定是没有必要的。

如果你需要更多建议或有具体问题,可以去国际音乐信息检索学会的邮件列表,那里的信息会对你很有帮助。

撰写回答