2013-03-08 3 views
3

저는 현재 제로 크로싱 추정을 사용하여 들어오는 신호의 주파수를 감지해야하는 오디오 프로세싱 소프트웨어를 개발 중입니다. 완전한 죄파가 입력 일 때 빈도를 추정하는 것은 어렵지 않지만 피아노에 관해 말할 때 음파는 다르며 이에 대한 이론이 바뀝니다.알 수없는 패턴 추출 C

현재 소프트웨어는 모든 제로를 감지하고 그 사이에 색인 위치를 저장합니다 (얼마나 많은 샘플이 기록되었는지 기록하기 위해).

다음은 44.1kHz로 샘플링 된 130Hz 피아노 C 노트의 각 영점 사이의 샘플을 포함하는 배열입니다.

44 11 36 65 56 12 37 66 52 13 38 67 51 11 39 68 50 11 47 60 49 11 48 61 47 14 47 66 43 13 

알 수없는 길이의 알 수없는 패턴을 결정하는 작업입니다. 그러나 이러한 패턴에는 오류 마진이있을 수 있습니다. 예 :

44, 11, 36, 65 
56, 12, 37, 66 
52, 13, 38, 67 

은 패턴입니다. 따라서 패턴의 평균 합계를 처리 한 후 주파수를 쉽게 감지 할 수 있습니다. 어떻게 패턴을 그대로두고 길이가 불분명한지 알고 이러한 유형의 패턴을 감지 할 수 있습니까?

+0

나는 주파수를 추정하기 위해 제로 크로싱을 사용하지 말 것을 제안합니다 ... –

+0

[auto-correlation] (http://en.wikipedia.org/wiki/Autocorrelation)을 상기시켜줍니다. 아무튼, 당신은 [피치 탐지] (http://en.wikipedia.org/wiki/Pitch_detection_algorithm)를 찾고 있어야합니다. –

+0

구현 된 마이크로 프로세서가 실시간으로 FFT를 실행할 수 없기 때문에 ZeroX 접근 방식을 사용하고 있습니다. @OliCharlesworth –

답변

0

먼저 신호를 저역 통과시켜야합니다. 이렇게하면 여분의 제로 크로싱을 초래하는 높은 배음을 포함하여 신호 성분이 감소합니다. 여기에서 요점은 다른 고조파에 비해 기본 파의 강도를 높이는 것인데, 이는 사실상 외의 제로 크로싱을 생성하는 것입니다. EQ에 대한 몇 가지 힌트를

는 :

http://blog.bjornroche.com/2012/08/basic-audio-eqs.html

와 EQ가 특별히 감지 피치에 해당 같이 당신의 신호에 따라

http://blog.bjornroche.com/2012/07/frequency-detection-using-fft-aka-pitch.html

을, 당신은 같은 가파른 뭔가를해야 할 수도 있습니다 고차원 또는 다른 종류의 필터.

물론 0X 피치 검출은 본질적으로 제한 될 것이며 로우 패스는 충분하지 않을 수도 있습니다.

업데이트 : 저역 통과의 목적은 소음을 제거하는 것이 아니라 근본을 강조하는 것임을 분명히했습니다.

+0

로우 패스 필터는 기본 주파수가 음표 피치의 가장 강한 스펙트럼 요소 인 경우에만 도움이됩니다. 피아노를 비롯한 많은 악기에서 많은 음표에는 해당되지 않습니다. – hotpaw2

+0

사실, 그건 사실이 아닙니다. 기본이 존재하는 한 가장 낮은 피치가 될 것이므로 저역 통과 필터는 다른 부분들에 대한 근본적인 관계를 강화합니다. 그래서 나는 그것을 제안했습니다. 이 답변을 좀 더 명확하게 편집 할 것입니다. –

+0

@BjornRoche : 사실, * 사실이 아닙니다 (반드시)! http://en.wikipedia.org/wiki/ 서브 파닉스 –

관련 문제