![]() |
1
2
fft使用频率箱,频率箱宽度基于fft参数。为了找到一个频率,你需要记录它的采样率,至少是样本中最高频率的两倍。然后找出两个周期之间的时间。如果它不是一个纯频率,这当然会更加困难。 |
![]() |
2
9
你想错了!!不是图书馆的错无论库是否正确地生成它,您都在寻找一个在实际声音中很少实际存在的模式。只有一个完美的正弦波,电子产生,将导致一个均匀的部分离散出现在频率图中的“尖峰”。如果你不相信,试着在winamp或媒体播放器中启动一个“频谱分析器”可视化。与其说这是个人电脑的错。 真正的声波是复杂的动物想象一下你脑海中的锯齿波或方形波。在fft中,那些锐利的转角或波上的点,看起来像是上吨的高次谐波,甚至是真正的傅立叶。如果你曾经在示波器上看到过真正的“sqaure波/锯齿波”,或者甚至是由一个应该产生正弦波的仪器产生的“正弦波”,只需一个音符就可以看到所有尖锐的角落和缝隙(如果你没有瞄准镜,那就大胆地放大波浪——你放大的越多,你看到的音符就越高)。是的,这些偏差都算作频率。 在频谱分析中,有时很难区分一个音符和整个乐团的区别。 但我只听到一个音符!那么耳朵是怎么做的呢?它考虑了整个波形。然后你的下半部大脑对上半部大脑的输入是什么:一个音符,而不是一大堆的泛音。 你不能完全做到这一点,但你可以通过“训练”来近似。 近似:建筑 一些 聪明的人播放乐器上的音符并“保存”频率图。对于多个频率范围内的音符,或者更好的是对所有音符都这样做。 然后插入注释,通过将该仪器保存的图形乘以2^(1/12)(或1/24乘以1/4步等)来填补空白(乘以1/2或1/4步)。 找出如何将它们存储在快速可搜索的数据结构中,如bst或trie。只需要返回一个“这有多接近”的分数。它还必须通过频率的比例来识别匹配,以防出现不同的音量。 使用智能下一次你要从那台仪器中寻找一个音符时,只要取下“heard”频率图,并在数据结构中找到它。你可以记录几种不同波形的仪器,并对它们进行搜索。如果有背景声音或多个音符,请进行最接近的匹配。然后,如果你想识别其他的音符,从采样的音符中“减去”找到的频率模式,然后冲洗,用泡沫重复。 你的声音不起作用…如果你曾经试着用吉他调谐器来调节自己,你就会知道调谐器没有那么聪明。当然,有些乐器(声音ESP)确实会在音高上浮动并产生不断变化的波形(即使没有人唱歌)。 你想完成什么?你不必完全喜欢“简单”的调谐器应用程序,但如果你不只是制作另一个调谐器应用程序,我猜你实际上想识别音符(例如,也许你想从收音机中的歌曲自动生成MIDI文件;-) 祝你好运。我希望你能找到一个能做这些垃圾的图书馆,而不是你自己的。 编辑2017请注意此网页: http://www.feilding.net/sfuad/musi3012-01/html/lectures/015_instruments_II.htm 在这一页下面,有各种器官管道的光谱分析。有很多很多的暗示。如果你先用它们“训练”你的应用程序(就像告诉一个孩子,‘这就是单簧管的声音……’),这些都是可能检测到的——只要足够多的工作就可以了。 |
![]() |
3
4
auriotouch看起来很奇怪,因为频率轴是线性的。当x轴不是对数刻度(传统上是log2)时,很难解释fft输出。 如果你不能使用我的整数FFT,请查看我的库: http://github.com/alexbw/iPhoneFFT 它使用双精度,支持多种窗口类型,并实现 Welch's method (随着时间的推移,这会给你更稳定的光谱)。 @zaph,fft确实计算了一个真正的离散傅里叶变换。它只是一种利用数字信号的位表示的有效算法。 |
![]() |
4
0
我用ooura fft来计算加速度数据的fft。我并不总是得到正确的光谱。由于某种原因,ooura fft在所有频率上产生了10^200阶谱量级的完全错误的结果。 |
![]() |
mikko · SwiftUI如何在不同堆栈中实现同一视图的平滑动画 5 月前 |
![]() |
routern · 如何组合contextMenu和圆角矩形? 5 月前 |
![]() |
DevHome98 · 3D触摸不适用于设备swift 1 年前 |
![]() |
dunoiww · 从全屏返回时如何触发onAppear 1 年前 |
![]() |
Community wiki · iPhone上ivar的继承问题 1 年前 |
![]() |
Community wiki · 查找iOS日历 1 年前 |
![]() |
Community wiki · 有效的IPhone编程技术[关闭] 1 年前 |