Diferença na amplitude da mesma fonte usando FFT
-
24-09-2019 - |
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
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.