2011-02-06 4 views
1

저는 플래시 기타를 개발 중입니다. 마이크의 데이터 주파수를 알아내는 유일한 방법은 FFT를 사용하는 것입니다. 그럼에도 불구하고, 30 시간의 연구가 끝난 후에 나는 그렇게 할 수있는 최선의 방법을 발견하지 못했습니다. Harmonic Product Spectrum (HPS), Cepstrum 또는 Maximum Likelihood를 사용해야합니까? 튜너는 25에서 3000Hz까지 주파수를 보여 주어야합니다.FFT에서 기본 주파수를 얻는 방법은 무엇입니까?

또한 기본 주파수를 찾을 준비가 된 오픈 소스 코드에 대해 알고 있다면 알려주십시오. ActionScript로 변환 할 수 있습니다.

감사합니다!

답변

2

나는 내 기본 기억으로 회신하려고한다. 신호의 FFT가있을 때 근본적인 진폭은 없다.

+2

아니, 그렇지 않습니다. 이것은 스펙트럼의 첫 번째 고조파입니다. – Nemeth

+1

@Nemeth : "첫 번째 고조파"는 내가 아는 한 "기본"의 동의어이며 일반적으로 최대 진폭을가집니다. –

+0

@ 짐 : 많은 악기들에있어서 근본적인 것은 진폭이 가장 크지 않습니다 * 기타에 대해서는 잘 모르겠지만 노트의 종류와 기타에 따라 달라질 수 있습니다. 어느 쪽이든, 기본과 같은 단일 구성 요소를 임의로 살펴 보는 것이 아니라 올바른 * 피치 감지 * 알고리즘을 사용하는 것이 좋습니다. –

0

FFT는 악기의 기본 주파수를 찾는 가장 좋은 방법은 아닙니다. 실제로, 예, 케프 트럼을 사용하는 것이 더 좋습니다. 비슷한 질문을 여기에서 찾을 수 있습니다. Algorithm to determine fundamental frequency from potential harmonics 및 여기 : MATLAB - Missing fundamental from an FFT

+0

FFT 대신 무엇을 사용해야합니까? –

+0

당신은 자기 상관을 사용할 수 있습니다 : http://en.wikipedia.org/wiki/Autocorrelation 그러나, 기타로 작업 할 때, 음조는 근본적인 톤보다 더 중요한 개념입니다. 따라서 RAPT (피치 추적을위한 강력한 알고리즘)가 여기에 있습니다 : http://www.ee.columbia.edu/~dpwe/papers/Talkin95-rapt.pdf – Nemeth

+0

기사에 따르면 RAPT는 매우 좋은 알고리즘입니다. 그러나 나는 C에서 이것의 하나의 오픈 소스 구현을 보았고 수백 줄이있었습니다. – mmatloka

4

가장 성공적인 기술은 FFT를 사용한 다음 Harmonic Product Spectrum을 수행하는 것입니다. 구현이 간단하고 자원 집약적이지 않은 경우 결과 FFT를 올바르게 다운 샘플링하고 제품을 만들어야합니다.

다음과 같은 질문이 유용해야한다 : Detecting the fundamental frequency

관련 문제