我正在使用Web Audio API来获取来自麦克风的声音的频率。为此我在这个github仓库中找到了一些有用的代码:https://gist.github.com/giraj/250decbbc50ce091f79e。Web Audio API - 获取正确的频率
现在我的问题是,我得到了很多不同的频率,只有一个小小的声音。这声音可能来自我的声音或来自乐器。
这些频率像90到4000Hz之间。但是据我所知,一个人的声音或者一个乐器的音符只能以Hz为单位有一个单一的频率。我很确定,我只是在演奏一种单调。
那么我怎么能知道,每个音的3或4个频率中的哪个频率是我正在搜索的频率。我需要这个值,从他们的频率中识别C,D,E等音符。我希望这个问题不是脱离主题,因为我真的很努力地找到一个解决方案,我不知道这是API本身的一个可解决的问题,还是我不得不消除一些频率。我将不胜感激任何形式的帮助。
编辑:我想补充说,我从来没有达到这个频率列表中列出的相同的音符值:http://www.phy.mtu.edu/~suits/notefreqs.html。我正在使用钢琴应用程序,该应用程序始终在Play商店的频率应用程序上提供正确的频率。所以我甚至怀疑我收到的结果。
声音几乎从不是单一频率 - 唯一(很少)是人为的。我们认为音调的东西实际上是由一个频率为f的内容组成的(这就是所谓的基础,就是你所想的)和一系列“谐波”,它们的内容都是f '('2f,3f,4f,5f等)。要确定正在播放的音符,您必须考虑到这一点。一种方法是查找谱图中谐波之间的距离('f')。 – Linuxios
感谢这个建议,以前不知道。我会考虑这个问题。 – Kuhfleisched