2012-02-20 13 views
12

(Wstęp: To jest moje pierwsze pytanie związane z dźwiękiem w Stack Overflow, więc postaram się sformułować to najlepiej jak potrafię.)Używanie AVFoundation/CoreMedia/Other Frameworks do wykrywania beatów/znaków początkowych

Tworzę aplikację, która pozwoli użytkownikom zapętlić muzykę. W tej chwili nasze prototypy pozwalają "znacznikom pętli" (zaimplementowanym jako UISliders) przyciągać się w każdej sekundzie, określając początek i koniec pętli. Oczywiście, kiedy zapętlasz muzykę, sekundy są bardzo prostym sposobem na poradzenie sobie z tym, więc zamiast tego chciałbym użyć beatów.

nie chcę robić nic innego niż znak bije się UISliders przystawki do:

  • nakarmić loadMusic metoda plik audio.
  • Przeprowadź go przez bibliotekę, aby wykryć uderzenia lub przerwy między nimi (być może).
  • Przesyła tę wartość do metody suwaka setNumberOfTickMarks:.
  • Zysk!

Niestety, większość wyników, na które natknąłem się za pośrednictwem Google i SO, dostarczyło znacznie bardziej zaawansowane biblioteki detekcji bitów, takie jak te, z których korzystał remiks. Przesada w moim przypadku.

Czy to coś, z czym poradzi sobie CoreMedia, AVFoundation lub AudioToolbox? Jeśli nie, czy są inne biblioteki, które mogą sobie z tym poradzić? Moje badania nad dokumentacją Apple przyniosły tylko istotne wyniki ... w przypadku plików MIDI. Ale własne oprogramowanie Apple ma takie funkcje, jak na przykład iMovie's snap-to-beats functionality.

Wszelkie wskazówki, kody lub streszczenia byłyby ogromnie pomocne w tym momencie.

EDIT: Po zrobieniu trochę więcej kopanie wokół, wydaje się właściwą terminologią co szukam jest wykrywanie początek.

+1

Cóż, trzeba mieć dostęp do czystych danych PCM.Wybierz dowolną bibliotekę audio i zastosuj istniejące algortihms do danych. –

+0

To pytanie? Wydaje się, że ma linki do całkiem dobrych rozwiązań. http://stackoverflow.com/questions/657073/how-to-detect-bpm-of-the-song-by-programming –

Odpowiedz

4

Algorytmy wykrycia początków są dostępne w wielu smakach, od patrzenia na sygnał muzyki surowej do korzystania z technik w dziedzinie częstotliwości.

jeśli chcesz szybki i łatwy sposób determin gdzie bity są:

  1. posiekać sygnału muzycznego na małe segmenty (20-50ms fragmentów od)

  2. obliczyć kwadrat sumy średnia sygnału : Sum(Xn ^2)/N (gdzie N jest numerem próbki za 20-50ms)

Jeśli chcesz bardziej wyszukane techniki spojrzeć:

http://bingweb.binghamton.edu/~ahess2/Onset_Detection_Nov302011.pdf

lub dla zapalonych traktowania go:

http://www.elec.qmul.ac.uk/people/juan/Documents/Bello-TSAP-2005.pdf

Powiązane problemy