2012-02-26 12 views
5

Obecnie pracuję nad próbą odgadnięcia wzorów (rytmów) piosenek, aby przedstawić je wizualnie. Na przykład głównym rytmem utworu (perkusja) byłby czerwony kwadrat, wtórne rytmy (bas) niebieskie kółka itp. Tak więc każdy z nich pojawia się za każdym razem, gdy słychać ich odpowiedni dźwięk.Jak ustalić wzory piosenek (rytm) za pomocą AS3 SoundMixer.computeSpectrum?

Wiem, że utwór może mieć wiele wzorów (uderzeń) i właśnie z tego powodu mam problemy. Teraz próbuję uzyskać tylko główne rytmy. Próbuję rozwiązać to w ten sposób:

Używam SoundMixer.computeSpectrum, aby uzyskać ByteArray uzupełniony o specyfikację intensywności/częstotliwości. Ta ByteArray jest podawana co 1/10 sekundy. Próbuję pogrupować dane o podobnej intensywności/częstotliwości w słownikach, aby poznać wzory utworów.

A figure that explains it better.

Dostaję wzorców przez:

  • rodzin (cały int/częstotliwość Spec każda 1/10): Jednak, aby uzyskać Rodzina coraz powtórzył piosenka jest naprawdę rzadka. Praktycznie nigdy się nie dzieje.
  • Członek rodziny (indywidualne int/freq ids): Członkowie rodziny są często powtarzani, ale sami są bezużyteczni.
  • członek rodziny Twin Brothers (grupa członków rodziny, które zawsze ze sobą dźwięków): To działa, ale ja dostaję dużo grup braci bliźniaków, więc jest bardzo trudno je analizować i dowiedzieć się, które są to główne rytmy.

Wiesz, czy istnieje lepszy sposób, aby dowiedzieć się wzory utworu (rytm) za pomocą AS3 SoundMixer.computeSpectrum lub innego obiektu/ram/API?

PD: Nie mam zaawansowanych potwierdzeń teorii muzyki.

Odpowiedz

1

Julapy opublikowała demo i kod, który wykrywa jakiś oczywisty beat. Julapy agreguje energię z computeSpectrum. Julapy agreguje w szerokim paśmie częstotliwości, a nie wspólnie ocurring wąskich pasmach (członków rodziny): http://www.julapy.com/blog/2007/12/30/beat-detection-in-flash/

Szczerze mówiąc, nigdy nie kodowane poniższych algorytmów, jeszcze strona 2 z artykułu „Beat Detection Algorytmy” sugeruje szacowania uderzeń na minutę przez oszacowanie okresów tego samego pasma częstotliwości. Wygląda na to, że możesz wzmocnić podejście Julapy: http://archive.gamedev.net/archive/reference/programming/features/beatdetection/page2.html

Nawiasem mówiąc, demo analizatora dźwięku i kod w ramach HYPE również wizualizuje ComputeSpectrum w nowatorski sposób. Nie rozwiązując tego samego problemu, kod związany z ComputeSpectrum może być wart przeczytania: http://www.hypeframework.org/02_examples/soundanalyzer/content/01_soundanalyzer/