Pergunta

Eu tenho uma pergunta sobre o uso da FFT. Usando função getBand(int i) com Mínima Posso extrair a amplitude de uma frequência específica e fazer mapas bonitos. Funciona bem.

No entanto, essa é uma questão de curiosidade. Quando olho para os valores extraídos de tocar a mesma música duas duas vezes usando a mesma frequência (para que a amplitude deve ser idêntica), mas recebo valores muito diferentes - por que isso é?

0.0,0.0,0.0,0.0,0.0,0.08706585,0.23708777,0.83046436,0.74603105,0.30447206
0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08706585,0.4790409,0.9608221,0.83046436,0.74603105
Foi útil?

Solução

Tem certeza de que as entradas são exatamente as mesmas nos dois casos? Se você está apenas tomando um segmento aleatório de uma música, a saída de uma FFT será muito Diferente para diferentes pontos de partida da música.

Outras dicas

A decodificação de MP3 pode ser escamosa e/ou o buffer de chumbo da rotina da FFT pode ser flakey (comprimento diferente do silêncio que precede a série). Nesse caso, parece que o lead-in é cerca de duas etapas mais altas na 2ª saída.

Então, se o intervalo de tempo no qual as FFTs são realizado for maior que o tamanho da janela FFT, uma diferença no chumbo pode fazer com que as janelas da FFT aterrissem em partes bastante diferentes da série, o que poderia explicar os valores muito diferentes posteriormente nas saídas.

A situação deve ficar mais clara se você puder aumentar a 'resolução de tempo' (quantidade de FFTs realizada por tempo determinado) -ou aumentar o tamanho da janela FFT, portanto, as medições da FFT não são escassas. Idey, eles devem se sobrepor antes que pudéssemos esperar corresponder a um padrão entre as varreduras feitas fora de passo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top