2012-02-26 11 views
5

In questo momento, sto lavorando per cercare di capire gli schemi di una canzone (ritmo) per rappresentarli visivamente. Quindi, ad esempio, il battito principale di una canzone (batteria) sarebbe un quadrato rosso, i battiti secondari (bassi) cerchi blu, ecc. Quindi ognuno di essi appare ogni volta che il loro rispettivo battito suona.Come capire gli schemi dei brani (ritmo) usando AS3 SoundMixer.computeSpectrum?

So che una canzone potrebbe avere molti schemi (beat) ed è questo il motivo per cui ho problemi. In questo momento sto cercando di ottenere solo i battiti principali. Sto cercando di risolverlo in questo modo:

Sto usando SoundMixer.computeSpectrum per ottenere un ByteArray costituito da una specifica intensità/frequenza. Questo ByteArray viene inviato ogni 1/10 di secondo. Sto cercando di raggruppare i dati di intensità/frequenza simili nei dizionari per capire gli schemi della canzone.

A figure that explains it better.

sto ottenendo i modelli da:

  • Famiglie (l'intero int/freq spec ogni 1/10): Tuttavia, per ottenere una famiglia sempre ripetuto in un la canzone è davvero rara. Praticamente non succede mai.
  • Membro della famiglia (individui int/freqid): I membri della famiglia sono comunemente ripetuti, ma da soli, sono inutili.
  • familiari Stati Twin Brothers (gruppo di membri della famiglia che suona sempre insieme): Questo è il lavoro, ma sto ricevendo un sacco di gruppi di fratelli gemelli, quindi è davvero difficile da analizzare loro e capire quali quelli sono i battiti principali.

fai a sapere se c'è un modo migliore per capire i modelli della canzone (del ritmo) utilizzando AS3 SoundMixer.computeSpectrum o qualsiasi altro oggetto/quadro/api?

PD: Non ho riconoscimenti avanzati di teoria musicale.

risposta

1

Julapy ha pubblicato una demo e un codice che rileva alcuni battiti ovvi. Julapy aggrega energia da computeSpectrum. Julapy aggrega su una banda di frequenza larga, non co-ocurring bande strette (familiari): http://www.julapy.com/blog/2007/12/30/beat-detection-in-flash/

Onestamente, non ho mai codificato gli algoritmi sottostanti, eppure pagina 2 di un articolo "Beat Detection Algoritmi", suggerisce la stima battiti al minuto stimando periodi della stessa banda di frequenza. Sembra che tu possa aumentare l'approccio di Julapy: http://archive.gamedev.net/archive/reference/programming/features/beatdetection/page2.html

A proposito, la demo e il codice dell'analizzatore del suono nel framework HYPE visualizza anche computeSpectrum in modi nuovi. Pur non risolvendo lo stesso problema, potrebbe valere la pena leggere il codice relativo a computeSpectrum: http://www.hypeframework.org/02_examples/soundanalyzer/content/01_soundanalyzer/

Problemi correlati