我已经为iPhone 实施了Demetri的Pitch Detector项目,并遇到了两个问题.1)任何类型的背景噪声发送频率读取香蕉和2)较低频率的声音没有正确调整.我试着调整我的吉他,而更高的琴弦工作 - 调谐器无法正确辨别低音.
音高检测代码位于RIOInterface.mm中,就像这样......
// get the data
AudioUnitRender(...);
// convert int16 to float
Convert(...);
// divide the signal into even-odd configuration
vDSP_ctoz((COMPLEX*)outputBuffer, 2, &A, 1, nOver2);
// apply the fft
vDSP_fft_zrip(fftSetup, &A, stride, log2n, FFT_FORWARD);
// convert split real form to split vector
vDSP_ztoc(&A, 1, (COMPLEX *)outputBuffer, 2, nOver2);
Run Code Online (Sandbox Code Playgroud)
然后Demetri继续确定"主导"频率如下:
float dominantFrequency = 0;
int bin = -1;
for (int i=0; i<n; i+=2) {
float curFreq = MagnitudeSquared(outputBuffer[i], outputBuffer[i+1]);
if (curFreq > dominantFrequency) {
dominantFrequency …
Run Code Online (Sandbox Code Playgroud) iphone signal-processing fft pitch-tracking accelerate-framework
我正在创建一个音调检测程序,它从帧的FFT中获得的功率谱中提取基频.这是我到目前为止:
现在程序生成一个整数,每帧的值从0到87.每个整数对应于根据此处找到的公式I的钢琴音符.我现在试图通过基于计算的音符合成声音来模仿输入信号中的旋律.我试图简单地生成一个正弦波,其幅度和频率对应于基频,但结果听起来没有原始声音(几乎听起来像随机的哔哔声).
我根本不了解音乐所以我可以根据从基频得到的信息,根据输入(乐器,声音,乐器+声音)产生类似声音的声音吗?如果没有,我可以尝试使用我目前拥有的代码.
谢谢!
我正在开发一把闪光吉他,发现麦克风数据频率的唯一明显方法似乎是使用 FFT。然而,经过大约 30 个小时的研究后,我无法找到最好的方法。我应该使用谐波积谱 (HPS)、倒谱还是最大似然?调谐器必须显示 25 到 3000Hz 的频率。
另外,如果有人知道一些准备找到基本频率的开源代码,请告诉我。我可以将它翻译成 ActionScript。
谢谢!