De qué se trata
Guitar Tune es un afinador para la guitarra de seis cuerdas. La app funciona en Android, afina en la afinación estándar E A D G B e (mi, la, re, sol, si, mi) y se centra por completo en esta única tarea. Muestra qué cuerda hay que pulsar, cuánto se desvía esa cuerda y en qué sentido hay que girar la clavija. No hay cuenta ni acceso a internet. He creado la app con ayuda de la IA, siguiendo el modelo de mis apps Shopping List, My Notes y Birthdays.
La versión actual está disponible directamente como archivo APK:
https://github.com/netperformance/GuitarTune/releases/download/v1.0.2/GuitarTune-1.0.2.apk
El proyecto es de código abierto con licencia MIT y está disponible en GitHub:
github.com/netperformance/GuitarTune
Por qué un afinador propio
Muchas apps de afinador están sobrecargadas de funciones que no hacen falta para afinar. Yo quería una app con la que afinar rápido y sin distracciones.
Además, quien afina una guitarra por primera vez a menudo no sabe cuál es la cuerda La, qué clavija tiene que girar ni en qué sentido. Un afinador habitual solo muestra el nombre de una nota y una aguja. Guitar Tune muestra en su lugar el clavijero de una guitarra, es decir, el extremo superior con las clavijas. En él están marcadas la cuerda y la clavija de las que se trata, y una flecha indica el sentido de giro.
La app de un vistazo
La app está en alemán e inglés. Por eso, los textos de la app aparecen aquí en inglés, tal como se ven en la app. Las cuerdas llevan las letras de la notación inglesa: E (mi), A (la), D (re), G (sol), B (si) y e (mi agudo).
La app tiene una sola pantalla. Qué cuerda toca se ve abajo, en el clavijero: la cuerda y su clavija están marcadas en color. Arriba aparece en grande cómo suena la cuerda en ese momento: “Pluck the string” (pulsa la cuerda), “Too low” (demasiado baja), “A bit low” (algo baja), “In tune” (afinada), “A bit high” (algo alta) o “Too high” (demasiado alta). Una frase corta dice qué hay que hacer, por ejemplo “Tighten the tuning peg a little” (tensa un poco la clavija).

- Afinación guiada: la app empieza por la cuerda E grave. Después siguen A, D, G, B y la cuerda e aguda. Cuando una cuerda está afinada durante un segundo, recibe una marca verde y la app pasa a la siguiente. Durante ese segundo se llena un anillo verde alrededor de la letra de la cuerda.
- Elegir la cuerda: si se toca una letra junto al clavijero, la app salta a esa cuerda. Así también se puede volver a afinar una cuerda que ya tiene la marca verde.
- Un color, un significado: azul significa que la app espera un sonido. Rojo significa que la cuerda está muy desviada, naranja que está cerca y verde que está afinada. La desviación se mide en cents. Un cent es la centésima parte de un semitono, es decir, la centésima parte de la distancia entre dos trastes vecinos. Rojo indica más de 15 cents, naranja de 6 a 15 cents y verde como máximo 5 cents. La palabra grande, el indicador, la cuerda, la clavija, la letra y el punto de abajo del todo tienen siempre el mismo color. Como la palabra aparece siempre, la app también funciona para personas con daltonismo rojo verde.
- Sentido de giro: una flecha sobre la clavija muestra hacia dónde hay que girar: hacia arriba para tensar, hacia abajo para aflojar. La flecha vale para la construcción habitual. Si una guitarra tiene otro tipo de clavijas y se gira en el sentido equivocado, el indicador lo muestra al instante.
- Barra con indicador: debajo de la palabra hay una barra horizontal. El campo verde del centro es el objetivo. Debajo de la barra aparecen la desviación en cents y la frecuencia medida en hercios.
- Cuerda equivocada: si el sonido se desvía más de tres semitonos y medio, probablemente se ha pulsado la cuerda equivocada. Entonces la app pregunta: “Far off. Is it the right string?” (muy desviada, ¿es la cuerda correcta?).
- Terminado: cuando las seis cuerdas están afinadas, la app muestra “All strings in tune” (todas las cuerdas afinadas) y apaga el micrófono. Con “Again” (otra vez) vuelve a empezar por la cuerda E grave.
- La pantalla sigue encendida: mientras se afina, la pantalla no se apaga.
- Alemán e inglés: si no se elige otra cosa, la app aparece en alemán en un móvil en alemán y en inglés en todos los demás, también en uno en español. En los ajustes se puede cambiar.
- Claro y oscuro: la app se inicia en modo oscuro. En los ajustes se puede elegir claro o “Automatic” (automático).

Cómo reconoce la app las notas
Un afinador es tan bueno como su reconocimiento de notas. Por eso le he dedicado la mayor parte del trabajo.
Muchos afinadores para el móvil miden cuánto dura una vibración de la cuerda. Con una cuerda de acero, esto produce un error: una cuerda de acero es rígida, por eso sus armónicos vibran algo más alto de lo que deberían según el cálculo. Justo después de pulsar la cuerda suenan muchos armónicos, más tarde solo unos pocos. Por eso la indicación se desplaza, aunque la cuerda no cambie. En una simulación, este método mostró una cuerda perfectamente afinada 10 cents demasiado alta justo después de pulsarla, y a los 0,8 segundos todavía 1 cent demasiado alta. Un principiante afloja entonces la cuerda, y un segundo después está demasiado baja.
Guitar Tune procede en cinco pasos:
- Buscar solo alrededor de la cuerda: la app sabe qué cuerda toca. Por eso solo busca la nota hasta 7 semitonos por encima o por debajo. Así no puede equivocarse en una octava.
- Medir los armónicos uno a uno: la app descompone el sonido en sus frecuencias y mide por separado cada uno de los 8 primeros parciales. A partir de ellos calcula la nota fundamental con la fórmula para cuerdas rígidas. Esto funciona incluso cuando el micrófono del móvil apenas capta la fundamental grave de la cuerda E.
- Aprender la rigidez: durante el primer medio segundo, la app determina lo rígida que es la cuerda y después mantiene fijo ese valor. Así la indicación es más estable.
- Saltarse el ataque: al pulsarla, la cuerda se estira brevemente un poco más y por eso suena más alta. Por eso la app no evalúa los primeros 120 milisegundos después de pulsarla. Después combina siempre las 5 últimas mediciones.
- Mejor no mostrar nada que adivinar: si el sonido es demasiado débil o los parciales no encajan entre sí, la app descarta la medición.
La app mide unas 23 veces por segundo. El micrófono graba a 48 kHz. La supresión de ruido y el control automático de volumen del móvil están desactivados, porque ambos están hechos para la voz y alteran el sonido de una cuerda. En pruebas automáticas con sonidos de guitarra generados artificialmente, 95 de cada 100 mediciones se desvían como máximo 0,7 cents, incluso con mucho ruido de fondo. Una cuerda se considera afinada con una desviación de como máximo 5 cents.
En mi móvil he afinado con la app las seis cuerdas de mi guitarra.
La app no usa ninguna biblioteca externa para reconocer las notas. Las bibliotecas habituales miden cuánto dura una vibración, por ejemplo con los métodos YIN o McLeod. Por eso tienen el mismo problema con los armónicos demasiado altos de la cuerda de acero. En la simulación, 95 de cada 100 mediciones se desviaron hasta 8 cents con YIN, hasta 6 cents con McLeod y menos de 1 cent con el método de Guitar Tune. Además, YIN se equivocó a menudo en una octava entera. Por eso Guitar Tune calcula con un pequeño módulo propio escrito en Kotlin. Dentro de él, la app usa el método de McLeod solo para el primer paso, la búsqueda alrededor de la cuerda. Quien quiera conocer los detalles encontrará la investigación con mediciones y fuentes en el proyecto, en research/Recherche_Tonerkennung.md (en alemán).
Permisos y protección de datos
Guitar Tune necesita exactamente un permiso: el micrófono. En el primer inicio, la app explica para qué necesita el micrófono y solo después lo pide.

- Micrófono solo en primer plano: el micrófono solo funciona mientras la app está abierta y en primer plano. Si se cambia a otra app, se apaga la pantalla o todas las cuerdas están afinadas, la app deja de escuchar.
- El sonido no se guarda: la app analiza el sonido en la memoria de trabajo. No lo guarda ni lo envía.
- Sin internet: falta un permiso a propósito: el acceso a internet. Sin él, Android mismo impide cualquier conexión hacia fuera. Por eso, lo que graba el micrófono no puede salir del móvil a través de la app. La vibración y el almacenamiento también siguen bloqueados.
- Fuente del micrófono visible: en los ajustes aparece qué fuente de micrófono usa la app. Si el móvil ofrece una fuente sin procesar, la app la usa. Si no, usa la fuente para el reconocimiento de voz, en la que Android desactiva de entrada la supresión de ruido.
- Sin copia de seguridad en la nube de Google: la copia de seguridad automática de Android está desactivada. De todos modos, la app solo guarda dos ajustes: idioma y apariencia.
- Sin análisis: la app no contiene seguimiento ni componentes de terceros que recojan datos de uso.
- Los enlaces a aaron.de y GitHub de los ajustes abren el navegador del móvil. La app en sí no carga nada.
Además del micrófono, el archivo de instalación de la app (APK) contiene otra entrada, DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION. No es un permiso concedido a la app, sino una protección interna de Android: se encarga de que otras apps no puedan enviar mensajes a la app.
