EN · ES
RELACIÓN. PROP. IV · N.º 1

De la afinación de los tambores

JUN.–JUL. MMXXVI·FIGS. 2·460 PRUEBAS·9 MIN.

Un instrumento para la afinación de los tambores: apunte un micrófono al tambor, golpéelo, y la aplicación lee el tono de cada golpe —la fundamental del parche al centro, la voz del birlo al borde—, lo lleva alrededor del parche en orden de estrella y aprende la firma de sobretonos del tambor particular que tiene enfrente. Un segundo movimiento es un entrenador de práctica que califica su manoteo contra el libro que todo baterista posee y pocos terminan.

EL INSTRUMENTO MISMO drumtuner-production.up.railway.app corre en el navegador — conceda el micrófono, golpee el tambor. el audio nunca sale del dispositivo.
Del problema

Un tambor no es un instrumento armónico. Donde los sobretonos de una cuerda se apilan en múltiplos enteros exactos, los modos de una membrana golpeada caen en razones incómodas —1.00, 1.59, 2.14, 2.30—, y por eso los rastreadores de tono hechos para voz y guitarra se niegan a escuchar un tom correctamente. La especificación fundacional hizo de esto un primer principio y declaró ningún motor de tono por aprendizaje automático: los afinadores comerciales de hardware que esta aplicación se propuso igualar son procesamiento clásico de señales por dentro, y los rastreadores neuronales están entrenados exactamente con el audio armónico que un tambor no es.

La dificultad genuina es la resolución. Limpiar un parche —llevar cada birlo al mismo tono— exige oír diferencias de alrededor de un hertz en el rango de 150–300 Hz, contra una FFT cruda cuyos contenedores miden unos diez hertz de ancho. El refinamiento sub-hertz es todo el juego.

Del método

El motor aterrizó en una sola sesión nocturna: una ventana Blackman–Harris sobre una FFT sencilla con relleno de ceros al cuádruple; selección de picos por prominencia topográfica verdadera; interpolación parabólica en dominio logarítmico; y luego un refinamiento de vocoder de fase a dos cuadros que acerca cada estimación a una décima de hertz. Los ataques se detectan por flujo espectral, y la captura corre en un AudioWorklet que alimenta un búfer circular fuera del hilo de render. Cada etapa se construyó con pruebas primero, contra tambores sintéticos: accesorios deterministas de golpe modal cuyas frecuencias, amplitudes y tasas de decaimiento se reajustaron después con mediciones de grabaciones reales.

FIG. 1a — MODO (0,1) · GOLPEADO AL CENTRO f0 = 124.8 Hz — la fundamental + toque FIG. 1b — MODO (1,1) · TOCADO AL BORDE f1 = 212.9 Hz ≈ 1.71 × f0 — la voz del birlo
las dos voces de un parche — golpeado al centro, tocado al borde fig. 1 — medidas en el tom de piso del autor
Del instrumento ante un tambor real

Las primeras sesiones en vivo fueron una lección de humildad. Seis golpes reales produjeron de veintiuna a veinticuatro lecturas de tono, con la pantalla vagando 364 → 654 → 196 Hz tras cada golpe, mientras que tres golpes de doce no obtuvieron lectura alguna: un soplo subaudible del tono de la sala, dos a cinco milisegundos antes del ataque verdadero, se estaba consumiendo en silencio el tiempo muerto del detector. Las correcciones fueron medidas, no adivinadas: compuertas de energía numeradas sobre un piso de ruido rastreado, y una compuerta de ascenso que exige que cada golpe sea 1.2× más fuerte que cualquier cosa en los 0.45 segundos previos — dimensionada para aguantar los vaivenes lentos que producen los modos batientes de la membrana. Después la tubería se reprodujo cuadro por cuadro contra grabaciones de 24 bits del tambor del propio autor hasta que produjo exactamente una lectura por golpe.

Un defecto era activamente dañino. El objetivo de la sesión es la fundamental del parche, pero los birlos se tocan al borde, donde un modo distinto de la membrana suena aproximadamente 1.7× más arriba — así que la aplicación le decía a su usuario que cada birlo bien afinado estaba de sesenta a ochenta hertz alto, y obedecerla habría desafinado el tambor muy por debajo del tono buscado. La teoría de la membrana ideal pone esa razón en 1.59; el tom de piso del autor midió 212.9 / 124.8 = 1.71. El remedio fue dejar de confiar en la teoría: un paso guiado de intervalo (según el Drum Sound and Drum Tuning de Toulson) ahora mide la razón real de cada tambor y ancla de nuevo el objetivo de los birlos al parche particular que se está afinando.

Hasta elegir cuál tono reportar exigió reglas opuestas para los dos tipos de golpe. Al centro, la fundamental radia con eficiencia y muere en una décima de segundo mientras el modo del birlo sigue cantando — así que el grupo más grande de estimaciones suele ser el equivocado, y el golpe al centro debe elegir el grupo más grave con buen respaldo. Al borde es al revés: el tono del birlo es lo que siga vivo más tarde en la ventana, cuando el destello de la baqueta misma ya se fue.

El bombo se ganó su propio capítulo. Las grabaciones lo mostraban leyendo 170 cents abajo: los modos más graves del bombo estaban en 70 y 79 Hz, demasiado juntos para que un cuadro fijo de análisis de 60 milisegundos los separara, así que se fundían en un pico fantasma cerca de 71.5. Un segundo misterio del bombo —lecturas brincando entre 78 y 133 Hz en un tambor afinado idéntico— se zanjó con una figura de espectro que aún vive en el repositorio, anotada en español: el salto 78/133 es el detector, no el tambor. El cuadro ahora se alarga solo para ajustarse a la banda de búsqueda, la búsqueda de la fundamental se ancla al objetivo de la sesión, y un inspector de espectro deja que los curiosos vean el espectro del último golpe y arrastren las bandas a mano.

ESPECTRO DE UN SOLO GOLPE — TOM DE PISO, GRABACIÓN EN VIVO DE 24 BITS f0 124.8 1.71 f0 212.9 baqueta ≈2.9 f0 aro ≈5 f0 100 200 300 400 500 600 Hz
un golpe, resuelto — la fundamental y el modo del birlo, con el destello de la baqueta y el canto del aro arriba fig. 2 — tras las sesiones de validación en vivo
De las fallas en el campo

La confiabilidad llegó por el camino difícil. Tres congelamientos distintos de «barra de nivel atorada» resultaron imposibles de diagnosticar desde la interfaz, y cuando por fin se atrapó al culpable con una traza de pila resultaron ser tres carreras de desmontaje acopladas: el worklet seguía entregando audio encolado después de que stop() anulara el contexto; stop() mismo no era idempotente; y una llamada a close() atorada dejaba como rehén a cada arranque siguiente. Las reparaciones —desmontaje de tomar-y-anular, un contador de generación para que los arranques suplantados limpien lo suyo, y una guardia de caducidad que lee un flujo muerto como silencio— están clavadas cada una con pruebas, incluida una en la que close() simplemente nunca regresa. Una autopsia aparte halló al afinador reportando el tono del golpe anterior con 719 milisegundos de retraso, porque la ventana de análisis terminaba en el ataque y contenía sobre todo el canto viejo; diferir el análisis un cuarto de segundo tras el ataque volvió la latencia un determinista ~260 milisegundos.

De llevar el tiempo

El segundo movimiento es un salón de práctica: ejercicios de Stick Control presentados como una autopista en perspectiva a la manera de un videojuego de ritmo, juzgados contra un transporte de reloj de audio que es la única autoridad sobre el tiempo — un golpe es perfecto dentro de ±25 milisegundos. Los ejercicios se escriben como ticks enteros a 6720 pulsos por negra, una resolución elegida para que cada subdivisión que el libro exige —de dosillos a octillos, dieces, doces, quinces— caiga en un tick exacto; un alineador por programación dinámica empareja golpes con objetivos para que un golpe perdido no pueda desatar una cascada de juicios falsos.

El módulo carga una ética estricta de honestidad, escrita como invariante en las instrucciones permanentes del proyecto. Un solo micrófono no puede saber qué mano golpeó, así que los carriles muestran únicamente la mano escrita — ningún visual puede pretender una detectada. La calibración de latencia es un bucle acústico: doce clics con separaciones pseudoaleatorias para que los ecos de la sala no puedan solaparse, correlación en cuadratura, mediana de los valores confiables — y cuando una ruta clase Bluetooth cae fuera de la ventana medible, el calibrador no devuelve nada, bajo el principio de que una respuesta recortada al borde es inmedible, no un dato. Hay incluso un botón dedicado de alto-por-tensión, y oprimirlo se califica como práctica correcta.

De la manera en que se hizo

La relación entera abarca veinte días de calendario —del 22 de junio al 12 de julio de 2026—, de los cuales once vieron commits: 214, a lo largo de 35 pull requests, cerca de la mitad en coautoría con Claude. El flujo fue de planeación primero de principio a fin: cuatro especificaciones fechadas y quince planes de implementación, cada uno exigiendo desarrollo guiado por pruebas, con la interfaz llegando como entregas de diseño incorporadas al repositorio que exploraban tres direcciones visuales antes de elegir una. La suite de pruebas llegó a 460 en la rama final. Las últimas funciones las construyeron agentes paralelos trabajando ramas separadas del mismo árbol, con cláusulas explícitas de coordinación en sus planes; el módulo de práctica aterrizó como un solo commit endurecido de antemano por una revisión adversarial de la especificación que produjo cuarenta y tres hallazgos verificados.

El método que más importó: grabar golpes reales, medir la frecuencia y el decaimiento de cada modo, reconstruir el tambor como accesorio sintético determinista, corregir el algoritmo y clavar la corrección como prueba de regresión con las mediciones crudas en los comentarios. La disciplina cortó en ambos sentidos — cuando el detector de ataques de práctica se calificó por primera vez contra grabaciones etiquetadas a mano, sacó un alarmante F1 de 0.59, y la investigación halló la falla en el calificador: la tubería de etiquetado había contado cuarenta y cuatro muestras como un milisegundo. La línea base verdadera era 0.876; la afinación honesta la llevó después a 0.987. Hasta la máquina que calificaba al detector tuvo que depurarse primero.

De lo que resta

La razón de birlo de un tom de piso es hoy una constante en el código; más parches merecen medirse, y el trato especial del bombo pide generalizarse a todo tambor grave. La biblioteca de práctica publica ejercicios originales a la manera de Stick Control mientras una transcripción privada de 867 ejercicios espera, solo de consulta, por respeto a derechos que no posee. Y el instrumento hasta ahora ha conocido una sala y los tambores de un solo ejecutante — debería conocer muchas. Puede tocarse en drumtuner-production.up.railway.app.

∴  Q. E. D.
∴  elicuellar.com PROP. IV · N.º 1 — SOFTWARE