Saltar al contenido principal
Herramienta AcoustiCalc Procesamiento local en el navegador

Detector de tonalidad y BPM

Gratis, sin registro y sin subir tu audio: tonalidad con código Camelot, tempo detectado, afinación de referencia y claves compatibles. Se calcula en tu navegador con Essentia.js.

Motor DSP
HPCP 36 bins · Essentia.js
Estado del motor
Procesado local

Qué mide exactamente

Tonalidad

Tónica y modo con su código Camelot, la relativa y las dos siguientes candidatas con su peso.

Tempo

BPM entero y con un decimal, confianza, tempo alternativo y la rejilla de beats detectada.

Afinación

Frecuencia de referencia de A4 y desviación en cents. Útil para saber si la canción está a 432 Hz o ligeramente desafinada.

Mezcla armónica

Las cinco claves compatibles con la detectada (misma, ±1 con la misma letra y el cambio A/B).

Cómo funciona la detección de tonalidad, explicado como un ingeniero

El motor no adivina: mide. Estas son las etapas reales, en orden.

1. Afinación de referencia

Antes de analizar la armonía se estima la afinación real de la grabación con TuningFrequencyExtractor (tramas de 4096 muestras, salto de 2048). Si el resultado cae fuera de 420–460 Hz se asume 440 Hz. Ese valor alimenta el HPCP y el extractor de tonalidad, de modo que una canción afinada a 441,3 Hz no se analiza como si estuviera a 440.

2. HPCP de 36 bins

Cada trama de 4096 muestras (ventana Blackman-Harris) se pasa por una FFT de 4096 puntos. De ahí se extraen hasta 100 picos espectrales entre 40 Hz y 5 kHz, y cada pico reparte su energía en un histograma de clases de altura de 36 bins con ponderación coseno y cuatro armónicos. Con 36 bins se resuelven las tres tonalidades menores relativas que el oído confunde; una FFT de 1024 puntos a 22 kHz, en cambio, tiene bins de 21,5 Hz que en la zona grave abarcan varios semitonos y arruinan el cromagrama.

3. Cuatro perfiles votando por segmentos de 15 s

El HPCP se acumula en segmentos de 15 segundos, se normaliza y se compara con cuatro perfiles de tonalidad (Krumhansl-Kessler, Temperley, EDMA y Bgate). Cada perfil emite un voto con su fuerza. Además, el algoritmo KeyExtractor de Essentia analiza la señal completa con corrección de desafinación y emite otro voto por perfil. El ganador es el que suma más peso; los empates se resuelven por número de votos.

4. Desambiguación relativa y confianza honesta

El croma global se reduce a 12 clases y se puntúa cada candidata combinando la correlación de Pearson con el perfil, la presencia de tónica, tercera y quinta, y (en menor) la sensible. Sólo se cambia el ganador si otra candidata lo supera con un margen claro de 0,03. La confianza mostrada combina el acuerdo entre votos, el margen de peso sobre la segunda opción y cuántos votos respaldan al ganador; cuando la corrección ha sido necesaria, se reduce un 8 %. No hay ningún «98,7 %» decorativo.

5. Tempo con dos estimadores

El BPM se estima dos veces: con PercivalBpmEstimator y con RhythmExtractor2013 en modo multifeature. Si ambos coinciden (ratio entre 0,95 y 1,05) se usa el segundo y la confianza sube un nivel. Si uno es el doble del otro se corrige la octava. Si discrepan, se puntúa cada uno por rango musical (60–180 BPM) y confianza. Si ninguno funciona, la herramienta muestra un error: no inventa 120 BPM.

6. Validación con canciones reales

La última comprobación con audio real usó diez previews de 30 segundos con tonalidad anotada en Hooktheory y tempo contrastado con SongBPM y Wikipedia. Resultado medido con este motor: 8 de 10 tonalidades correctas contando la relativa como válida y 10 de 10 tempos contando como válido el doble o la mitad cuando la herramienta lo marca como alternativa. El fallo de tonalidad fue «Rolling in the Deep» (C menor esperado, Sol mayor detectado). Es una muestra pequeña y sirve para lo que sirve: para no prometer precisión de laboratorio.

7. Lo que no calculamos

No verás «energía», «valence», «bailabilidad» ni «acústica». Esas métricas se calculan en muchas webs con heurísticas sin validación (a veces midiendo el centroide espectral sobre la forma de onda en el tiempo, sin FFT) y producen números que parecen científicos sin serlo. Aquí sólo se muestra lo que sale de una medición reproducible.

Rueda Camelot: las claves compatibles

Cada tonalidad tiene un número (1–12) y una letra: A para menor, B para mayor. Dos canciones mezclan bien si comparten código, si sus números son consecutivos con la misma letra o si tienen el mismo número con la letra contraria. La distancia de un número equivale a una quinta justa, que es la relación armónica más estable después de la octava. La herramienta calcula esas cinco opciones para la tonalidad que detecta.

Siguiente paso

Preguntas frecuentes

¿Cómo sé la tonalidad de una canción sin oído absoluto? +
Sube el audio y el detector construye un perfil cromático (HPCP de 36 bins) con la energía de cada clase de altura y lo compara con cuatro perfiles de tonalidad conocidos. El resultado es la tonalidad más probable, con su código Camelot y una confianza calculada a partir del acuerdo entre votos y del margen sobre la segunda candidata. Si quieres comprobarlo, la herramienta te muestra también las alternativas y una confianza baja te avisa de que la canción puede modular.
¿Por qué a veces la tonalidad detectada es la relativa? +
Porque Do mayor y La menor comparten exactamente las mismas siete notas: sin melodía ni función armónica, el croma es idéntico. El motor desambigua con la progresión y el croma global, y si el margen entre ambas es pequeño etiqueta la confianza como baja y muestra la relativa en alternativas. En música real esto ocurre sobre todo en canciones con mucha ambigüedad modal.
¿El BPM detectado puede ser el doble o la mitad? +
Sí, y es normal. Un mismo patrón de batería puede leerse a 96 o a 192 BPM según qué pulso tomes como referencia. La herramienta muestra el tempo detectado y dos botones (×2 y ÷2) para ajustarlo, además del tempo alternativo con un decimal. No dividimos automáticamente entre 130 y 180 BPM porque en techno a 140 y drum & bass a 174 la mitad «correcta» es una decisión musical, no un cálculo.
¿Qué precisión tiene el detector? +
En la validación interna con diez canciones reales (previews de 30 s, tonalidad anotada en Hooktheory y tempo contrastado con SongBPM y Wikipedia) acertó 8 de 10 tonalidades contando la relativa como válida y 10 de 10 tempos contando el doble o la mitad marcados como alternativa. Son diez canciones, no un benchmark: no garantiza el mismo porcentaje con tu material, señales con mucha percusión o grabaciones desafinadas.
¿Se sube mi canción a algún servidor? +
No. El archivo se decodifica con la Web Audio API en tu equipo, se convierte a mono a 44,1 kHz y se envía a un Web Worker que ejecuta Essentia.js compilado a WebAssembly dentro de la propia pestaña. La única descarga de red es el motor de análisis (unos 2 MB) la primera vez; después queda en caché.
¿Por qué analiza sólo los 60 segundos centrales? +
Para que el resultado llegue en segundos y para evitar que una intro hablada o un outro con aplausos desplace el análisis. Si la canción dura más de 90 segundos se analizan los 60 s centrales, se te avisa y puedes pedir el análisis completo con un botón.
¿Para qué sirve el código Camelot? +
Para mezclar armónicamente. Cada tonalidad tiene un número y una letra (La menor = 8A, Do mayor = 8B). Las claves compatibles son el mismo código, los números ±1 con la misma letra y el mismo número con la otra letra. La herramienta te muestra esas cinco opciones ya calculadas para la tonalidad detectada.
¿Qué significan las cuatro barras de confianza? +
La confianza de tonalidad combina el acuerdo entre los votos de los cuatro perfiles, el margen de peso sobre el segundo candidato y el número de votos que respaldan al ganador. La de tempo se deriva de la confianza de RhythmExtractor2013, que va de 0 a 5,32 en la escala de Essentia: por debajo de 1 es muy baja, entre 1,5 y 3,5 es buena y por encima de 3,5 es excelente. Ninguna de las dos es un porcentaje de acierto garantizado.
¿Funciona con cualquier género? +
Funciona mejor con música tonal y con pulso regular: pop, rock, electrónica, hip-hop, latin. En free jazz, música contemporánea, grabaciones muy reverberadas o percusión sin altura definida la tonalidad puede ser ambigua y el tempo puede salir en el doble o la mitad. En esos casos la herramienta baja la confianza y lo dice.
¿Puedo detectar los acordes de la canción? +
Sí, con el detector de acordes de la suite, que usa el mismo motor de análisis con segmentación armónica y alineación a los beats. Está enlazado al final de esta página y en el menú de herramientas.

Motor de análisis: acousticalc-audio-analysis (Essentia.js, AGPL-3.0). Código fuente, versión y créditos en licencias open source.