假设我有生日快乐的音频文件。我想把这个音频文件转换成一个听起来像这样的音频文件:生日快乐。
首先,我想知道我是否有能力对此进行编程?一个几乎完成APCS课程的高中生会这样吗?
如果可以:我该如何更改歌曲的bpm?我搜索了很多网站,但都没有多大帮助。
我知道音频文件可以用波形表示。我如何扫描音频文件中的每个单独的波形(我需要它来隔离笔记(?
实际上,这是一个非常雄心勃勃的项目。一个原因是它涉及到使用数字信号处理工具,如FFT(快速傅立叶变换(来分析声音,以找出音高。你可能会找到一个可以做到这一点的库,但就编码这样一个工具而言,这将涉及一个陡峭的学习曲线。
如果你想进一步了解这一点,有一个很好的在线资源,名为"科学家和工程师数字信号处理指南"。我只需要高中数学(大量的三角函数(和一点微积分就可以完成并理解离散傅立叶变换。不过,这是一次提升。
试图分析节奏也不是一件容易的事。即使在专业的记谱系统中提供了先进的工具,如Finale,人们也很难及时地演奏节奏,以获得最好的转录工具。"量化"节拍的算法有帮助,但也限制了回放中可以包含的细节量。
我的猜测是,尽管这个项目很有趣,也很有价值,但要在学期结束前完成它,需要把预先构建好的部分组装起来。现在很多程序都是这样做的。
如果你将项目扩展到只让你的代码分析一个音符的短样本并给出它的音高,那么这将是令人印象深刻的,而且需要大量的工作才能实现。它可以用DFT算法来完成,而不需要FFT,从而减少了必须首先获取的信息量。这样,你只需要努力理解和实现这个关于计算DFT的链接上的材料。请注意,BASIC中有示例代码。贯穿本书的代码示例是一个很大的帮助。