Detector de BPM de audio

Estime el tempo (BPM, pulsaciones por minuto) de un archivo de audio mediante un análisis de energía combinado con autocorrelación. Admite los formatos que su navegador sabe decodificar de forma nativa (WAV, MP3, OGG, M4A según el navegador).

Ejemplo:
Ningún archivo seleccionado — solo se analizan los primeros 60 segundos

Cómo funciona

La herramienta decodifica el audio, lo convierte en un único canal mono y calcula una envolvente de energía (RMS) sobre pequeñas ventanas de unos 20 milisegundos a lo largo de la pieza. A partir de esa envolvente se deriva una función de detección de ataques («onsets»), conservando solo los aumentos de energía. Sobre esa función se aplica una autocorrelación para encontrar el intervalo de tiempo que se repite con mayor regularidad; ese intervalo, convertido en pulsaciones por minuto, da el tempo estimado.

¿Es fiable al 100% esta estimación?

No, se trata de una estimación algorítmica simplificada, no de un detector de calidad de estudio como los que se usan en la producción musical profesional. La precisión varía mucho según el estilo musical: suele ser buena en música con percusiones marcadas y regulares (electrónica, pop, rock) y menos fiable en una pieza sin pulso nítido (música clásica, ambient, voces a cappella).

¿Por qué a veces el resultado parece el doble o la mitad del tempo?

Es un fenómeno clásico en la detección de tempo: el algoritmo puede fijarse en el doble o la mitad del tempo realmente percibido (por ejemplo, detectar 140 BPM cuando la pieza se percibe a 70 BPM), porque la energía rítmica suele ser igual de fuerte en las subdivisiones del tiempo. Por eso los candidatos secundarios (doble/mitad) se muestran junto al resultado principal.

¿Por qué solo se analizan los primeros 60 segundos?

Para ser rápido y no bloquear su navegador con archivos largos, el análisis se limita al primer minuto de la grabación, lo que basta de sobra para estimar un tempo globalmente estable.

Procesamiento 100% local: la decodificación (Web Audio API) y el cálculo del tempo se realizan íntegramente en su navegador; su archivo de audio nunca se envía a un servidor.