Krótka odpowiedź brzmi, że potrzebujesz więcej niż jednego algorytmu. Dobre metody rozpoznawania akordów można by bardziej trafnie określić jako "systemy", ale zazwyczaj są one oparte na początkowej transformacji do dziedziny częstotliwości (najczęściej DFT).
Jeśli chcesz representaton akord piosenki podobne do tego
C G Am F7 F6 C ...
to jest rzeczywiście problem, który jest nieco usunięte z uznając notatki w kawałek audio. W rzeczywistości istnieją dwa problemy (z grubsza):
- odkrycie, które Stanowiska są obecne w każdej chwili
- grupowania tych boisk w miarę upływu czasu, tak aby być w stanie przypisać etykietę akordów do przedziału czasowego.
Okazuje się, że sposób, w jaki przekształcasz się z dziedziny czasu (dźwięk normalny) do dziedziny częstotliwości (reprezentacja widmowa) ma tylko ograniczone znaczenie. Bardzo ważne jest to, co robisz później, a często wyrafinowane modele probabilistyczne (podobne do rozpoznawania mowy: HMM, DBN, ...) są używane do rozwiązania tego problemu.
Wypróbuj google scholar "transkrypcja akordów" lub "detekcja akordów" lub "oznaczanie akordów" dla zaawansowanych badań w tej dziedzinie.
Większość z tych podejść wykorzystuje dyskretną transformatę Fouriera (DFT) do utworzenia początkowego spektrogramu. Również podczas dalszego przetwarzania różnią się one nieznacznie, chociaż zastosowano różne techniki wygładzania szeregów czasowych: ukryte modele Markowa, dynamiczne sieci bayesowskie, maszyny wektorowe (SVMstruct) i warunkowe pola losowe - między innymi. Najbardziej zaawansowani transkrypci używają automatycznego strojenia, informacji o kluczach, informacji o tonach niskich i informacji o pozycji metrycznej, aby poprawić wyniki. Mój thesis (Rozdział 2) daje dobry przegląd.
Otwartych algorytmy wykrywania akordów źródło:
nadzieję, że to pomaga.
Zapytaj chłopaków z Melodyne: http://www.youtube.com/watch?v=jFCjv4_jqAY – herzmeister
Jak myślisz, na jakiej podstawie FFT jest w twoim przypadku nieprzyjemny? – Biggles