2012-02-24 4 views
0

나는 화음 탐지 알고리즘과 관련하여 이미 여기에 몇 가지 질문이 있음을 알고 있습니다. 그러나 이들 대부분은 노래를 코드 또는 코드 녹음 세트로 해석하는 것과 관련이있는 것으로 보입니다. 내 화음은 기타 코드의 단일 스트 럼을 녹음 한 다음 연주 된 코드를 반환하기 위해이를 분석하는 데에만 관심이 있으므로 훨씬 더 간단해야합니다. 이것이 너무 어려우면 특정 코드가 올바르게 연주되는지 여부를 알 수있는 정도면 충분합니다. 사용자는 연주를 시도하는 코드가 제공되고, 스트러밍 후 응용 프로그램은 올바른 코드 (메모리 게임의 일부)를 연주했는지 여부를 알립니다. 애플리케이션이 이미 어떤 코드를 기대하는지 알 수 있기 때문에이 두 번째 옵션이 더 쉬울 것이라고 생각합니다.오디오 샘플의 개별 기타 코드 인식

나는 이미 동일한 응용 프로그램의 일부로 기타 튜너 용 FFT 및 고조파 제품 스펙트럼을 사용하고 있으며 기타 코드를 인식하기 위해 FFT로 출력되는 주파수 스펙트럼을 분석 할 수있는 방법에 대한 조언을 정말 듣고 싶습니다. 나는이 문제에 대한 다른 제안을 할 수 있으며, 얻을 수있는 도움에 정말로 감사 할 것입니다.

감사

+0

[이 질문 [https://stackoverflow.com/a/39234337/500207]에 대한 응답으로 https://gist.github.com/fasiha/957035272009eb1c9eb370936a6af2eb에서 여러 가지 기술을 구현했습니다. –

답변

0

이런 종류의 작업을 수행하는 방법을 궁금하게 생각하는 사용자는 Harmonic Product Spectrum and Pitch Class Profiles/Chroma Vectors를 살펴보십시오. 이들의 조합이 핵심입니다. 또한, 반대로 검색어 "여러 F0 추정"을 사용하여 "코드 탐지는"보증합니다 훨씬 더 나은 결과 : 너무 늦기 비록

1
당신은 지문의 당신의 세트 내에서 가장 가까운 일치하는 정규화 된 스펙트럼을 찾고 다음 가장 일반적인 코드를 지문 및 시도 할 수

. 예 : 주파수 영역에서 패턴 매칭 문제로 간주하십시오.

+0

답변 주셔서 감사합니다. 핑거 프린팅 방법을 사용하는 방법에 대해 자세히 설명해 주시겠습니까? 서로 다른 코드에 대한 피크를 확인한 다음 일종의 최대 우도 알고리즘을 사용하는 것이 매우 간단할까요? – nihilo90

0

당신이 만약 ... 내가이 당신을 도울 것입니다 희망, 답장 전자 또는 미디 기타 또는 다른 미디 악기를 프로그래밍 한 다음 코드 메모 등을 탐지하는 것과 같은 매우 효과적인 Java 패키지 JFugue가 있습니다.이 악기에는 더 많은 기능이 있습니다. 나는 당신이 그것을 보길 제안한다. Jfugue.org

0

나는 처음에는 FFT를 사용하여 전체 코드를 식별하기가 어려웠다. 그러나 내 실험이 진행되는 동안 단일 사운드 데이터의 주파수를 얻기위한 기본 알고리즘으로 FFT를 사용하여 기타 코드 식별자를 만들 수있었습니다. FFT 튜너의 문제점은 소리의 근음만을 감지한다는 것입니다. 내 실험에 따르면 연주되는 현의 모든 음표를 연주하고 식별 된 음표를 사용하여 연주되는 코드를 알 수 있습니다. 지금은 내 연구가 주요 기타 화음과 Em 및 Am과 같은 마이너 화음을 탐지하는 데 여전히 제한적이었습니다.