2010-11-19 21 views
9

Obecnie pracuję nad moim czwartym projektem roku (informatyka), który obejmuje automatyczną transkrypcję muzyki -> nuty. Robię to w Matlab w tej chwili, ale na pewnym etapie będzie musiał zostać przekonwertowany na Javę.MATLAB - Brakujący fundament z FFT

Mój problem: Mam program zwracający poprawne nuty dla czystego tonu sinusoidalnego, teraz napotkałem problem, jeśli chodzi o pobieranie częstotliwości podstawowej z nuty granej przez instrument naturalny. Z pewnymi nutami wydaje się, że szczyt reprezentujący podstawową nutę zupełnie nie istnieje. Na przykład, kiedy gram nutę G3 z pasma garażowego, jest to pokazane jako G4, ponieważ na moim wykresie pojawiają się tylko 1., 3., 5. i 7. harmoniczne. Próbowałem dodać obraz, ale ponieważ jest to mój pierwszy wpis, nie pozwalał mi. Wszelkie wskazania we właściwym kierunku zostaną bardzo docenione.

+0

Bummer o obrazie. Bardzo by to pomogło zobaczyć to, co widzisz. – xscott

+0

Pierwsza harmoniczna * jest * podstawowa. Jesteś pewien, że o to ci chodzi? –

+1

Tak, jestem pewien, że to nie daje mi podstaw, pierwszy szczyt jaki mi daje to 392 Hz, gdzie jak ja daje to G3, który ma 196Hz. Stworzyłem także witrynę dla mojego projektu, napisałem tutaj post na blogu, który ma obraz tytułowy ustawiony na moją fabułę, mam nadzieję, że to pomoże: http://csserver.ucd.ie/~djones/Project_Site/Blog/Entries/ 2010/11/19_Problem_Confirmation__Missing_Fundamental.html – Joneser

Odpowiedz

16

Nie jest to niezwykłe. Bardzo często podstawowym jest brakujące lub prawie takie same głosy męskie, duże instrumenty smyczkowe i wiele innych źródeł dźwięku.

To sprawia, że ​​użycie samego wyniku szczytowego FFT jest bardzo słabe przy określaniu nut z rzeczywistych instrumentów muzycznych, w przeciwieństwie do generatorów funkcji sinusoidalnych. To dlatego, że wysokość dźwięku różni się od częstotliwości szczytowej widma. Pitch to psychoakustyczne zjawisko percepcyjne. Więc o tym musisz przeczytać. Istnieje mnóstwo prac badawczych na ten temat.

Musisz więc spojrzeć na zupełnie inny zestaw algorytmów. Spróbuj cepstrums (analiza cepstralna), harmonicznych widma produktów autokorelacji i podobne (AMDF ASDF itd LGD), skupiony (Solidny algorytm Pitch Tracking), YAAPT itp

DODANO: Napisałem nawet dokładniejszy explanation of pitched sounds with missing fundamentals in a blog post .

+2

. Dzięki za to, jak łatwo można zaimplementować niektóre z tych algorytmów? Mam już 2 miesiące do mojego projektu, więc jest to ogromny cios dla mojego postępu, jeśli muszę to zmienić. – Joneser

+1

Doskonała odpowiedź!Wybór odpowiedniego algorytmu będzie zależał od jeszcze jednej rzeczy, czy udajesz transkrypcję muzyki monofonicznej? A może chcesz też pisać muzykę polifoniczną? – Nemeth

0

Czy próbowałeś go uruchomić przez spektrogram (spektrogram funkcji w MATLAB), aby zidentyfikować, co się dzieje?

Nie wiem, jakich algorytmów używasz, bez tych informacji, nie możemy powiedzieć, co jest nie tak. Alarmuje mnie to, że twoja druga trzecia harmoniczna (drugi szczyt na wykresie) jest znacznie większa niż twoja druga harmoniczna (pierwszy szczyt na wykresie).

Czy jesteś pewien, że masz właściwie wszystkie próbki: np. Twój DFT ma tylko częstotliwości do połowy częstotliwości próbkowania (zarówno dodatni, jak i ujemny zakres częstotliwości)? Ponadto: jak tłumić jakąkolwiek przejściową część swojego sygnału?

+1

"Czy masz pewność, że wszystkie próbki są poprawne: np. twój DFT ma tylko częstotliwości do połowy częstotliwości próbkowania (zarówno dodatni, jak i ujemny zakres częstotliwości)?" Kiedy wykreślam prądy częstotliwości w stosunku do mocy, mam liczbę szczytów na początku zakresu, ale mam także kilka szczytów na końcu zakresu, biorąc pod uwagę tylko pierwszy zestaw szczytów, Czy mówisz, że jest coś, czego potrzebuję do szczytów na obu końcach, aby uzyskać dokładną wartość dla f0? Jeśli ktoś mógłby mnie zagłosować, abym miał 10 powtórzeń, to mógłbym opublikować zdjęcia – Joneser

0

Fakt, że widzisz wartości szczytowe przy 2f, 4f, 6f i 8f, oznacza, że ​​dane wejściowe są w rzeczywistości oktawą powyżej tego, o czym sądzisz, lub że źle interpretujesz skalę częstotliwości swoich wyników. Jeśli brakowało Ci podstawowej częstotliwości, zobaczysz także 3f, 5f i 7f.

Sugestie:

  • Działka swoje dane wejściowe przed wami FT to. Powinieneś być w stanie obserwować częstotliwość dominującego terminu.
  • Posłuchaj notatki wygenerowanej przez garaż. Czy jest powyżej lub poniżej środkowego C?
  • Sprawdź, czy rozumiesz skąd pochodzą wartości na skali częstotliwości na wykresie.
0

Nie jest niczym niezwykłym, że częstotliwość podstawowa nut instrumentu muzycznego jest tłumiona w stosunku do harmonicznych (zwanych również tonami podnoszącymi), a w niektórych przypadkach wartość częstotliwości podstawowej może być znacznie mniejsza od wielkości podteksty.

Spójrz na ten wykres częstotliwości/magii prawdziwego fagotu (nie syntezowanego fagotu) grającego w notatkę G3. Obserwować tłumiony element podstawowy (196,39 Hz) w stosunku do pierwszej harmonicznej. Ale obserwuj także, że wszystkie harmoniczne wielokrotne liczby całkowitej są widoczne aż do dziesiątej harmonicznej. W rzeczywistości istnieje o wiele więcej harmonicznych, ale nie są one widoczne na tym wykresie wielkości liniowej.

BassoonG3frequencyMagnitude

W twoim przypadku, dodatkowy fakt, że widmo Twojego G3 nuta jest pokazywanie tylko 1 oraz 3, 5 i 7 harmonicznych sugeruje, że coś jest nie tak. Wydaje się, że twoje brzmienie testowe zostało zsyntetyzowane, więc problem może dotyczyć sposobu syntetyzowania dźwięku.

Widma prawdziwych instrumentów muzycznych zazwyczaj pokazują podstawową częstotliwość i wiele harmonicznych całkowitoliczbowych, takich jak 1, 2, 3 itd., Jak widać powyżej. A harmoniczne zazwyczaj rozciągają się znacznie powyżej 6KHz dla większości dźwięków granych na większości instrumentów.

Spójrz na ten wykres częstotliwości/decybeli z prawdziwym fagotem (nie syntezowanym fagotem) odtwarzającym notatkę G3. Zauważ, że występuje w sumie 37 harmonicznych o wartościach całkowitych i wielokrotnych, aż znikną one z poziomu szumu w pobliżu -104 dB.

BassoonG3frequencyDecibelMagnitude

można słuchać tej próbki fagot i zobaczyć jego spektrum tutaj: Bassoon musical instrument spectrum

przeczytać także ten szczegółowy post analytical approaches to autonomous musical transcription