首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用aubio库获取音乐符号

使用aubio库获取音乐符号
EN

Stack Overflow用户
提问于 2013-06-24 18:19:42
回答 1查看 2.1K关注 0票数 2

嗯,这是我关于堆栈溢出的第一个问题,所以我对它感到很兴奋:)这里是:我的输入是一个wave文件。现在,我用我的吉他录制了一首曲子。所以这个波文件包含了这个仪器录音。我想做的是,得到每个音符的乐谱(A,B,C等)。我听说过像快速傅立叶变换这样的技术,但考虑到我对如何使用快速傅立叶变换的贫乏知识,我想使用奥比奥库。

因此,aubio提供了:提取音调候选点的自动发痒和提取onset的aubiocut。

我被困住的地方是:如何在使用aubio播放的音符的特定时间上获得频率?据我所知,自动发痒和紫罗兰会有帮助,但我不知道如何在它们之间进行映射。如能提供任何帮助,将不胜感激:)

嗨,皮姆:谢谢你的回答。请你分析一下这个输出好吗?

aubiopitch -i Reverse_Open.wav

1.408 68.9486465454 1.536 81.7372512817 1.664 164.290893555 1.792 164.464691162 1.92 82.6862487793 2.048 328.539306641 2.176 218.885116577 2.304 219.06237793 2.432 219.042160034 2.56 219.133621216 2.688 145.751785278 2.816 146.437744141 2.944 146.199829102 3.072 195.059829712 3.2 194.912689209 3.328 195.724975586 3.456 195.517547607 3.584 247.317428589 3.712 246.764221191 3.84 246.857452393 3.968 145.454727173 4.096 328.569610596 4.224 329.625823975 4.352 329.16619873 4.48 328.906402588 4.608 328.96786499 4.736 329.187835693 4.864 145.741394043

我的音符和频率是:E(82 approx),A(110),D(147),G(197),B(247),E(329.2),它在1.344,1.888,2.4,2.88,3.36,3.872 resp上播放(根据自动发痒,我认为是正确的)。你知道如何从上面的输出中提取出这6个音符和它们的时间吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-24 23:38:59

自动发痒输出一个元组的列表。每个元组包含两个浮动:

  • 以秒为单位的时间戳
  • 赫兹基频

这里有一个吉他声音的例子:

代码语言:javascript
复制
$ aubiopitch -i guitar_Cold_Blood_-_Baby_I_Love_You.wav | head
0.000000 0.000000
0.005805 293.884338
0.011610 386.387207
0.017415 0.000000
0.023220 551.689758
0.029025 3608.569336
0.034830 3588.231201
0.040635 416.824066
0.046440 3606.715576
0.052245 417.116425

如果您好奇(请是),您可以获得最新的git版本,并尝试演示脚本demo_pitch.py

代码语言:javascript
复制
$ ./python/demos/demo_pitch.py bass_Don_Ellis_-_Conquistador.wav

您将得到以下情节:

  • 第一行表示波形。
  • 第二行,提取的音高轨迹,以中频表示。
  • 第三,这些基音候选点的置信度(使用yinfft算法)。

在这个低音线的样本中,在瞬态攻击中提取音高比在稳定状态下更具有挑战性。可以丢弃低于任意阈值(此处0.8)的候选音高(虚线绿线),而可以保留其他候选音高(实心蓝线)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17282268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档