Metodología
Principio
Nada de lo que muestra este sitio se ha transcrito a mano. Un programa lee el libro
selectorconve.xls original y produce los ficheros de datos que usan las calculadoras; las
mismas herramientas comprueban que el motor de cálculo del sitio da los resultados del
original. El fichero y su código no se publican: se publican los datos, las reglas y la
evidencia.
Extracción
- Catálogo. La hoja
diam_monocontiene las series de cuerdas lisas (calibre en %mm y referencia) y las cinco familias de entorchadas (peso lineal y referencia). Se leen las columnas tal cual, incluidas sus rarezas: un mismo peso lineal con dos referencias (BFA482 y BFA484) o series que terminan en «NO». - Fórmulas. Las fórmulas del libro están guardadas como nombres definidos en el formato binario de Excel (tokens en notación polaca inversa). Un decodificador propio las evalúa directamente sobre esos bytes, sin transcribirlas; así se recuperan los coeficientes (150, 156,9767, 162,6506, 170, 155), los umbrales de tramo (100 y 150) y la constante 24500 del PUL.
- Afinaciones y reglas de instrumento. Las 31 hojas de instrumento aportan notas, posiciones y frecuencias; las afinaciones base a La 415 del laúd, la vihuela, las violas y la guitarra barroca estaban incrustadas como listas en las macros y se extraen de ahí. Qué cuerdas se calculan como lisas y cuáles como entorchadas en cada instrumento es una regla fija del programa, transcrita como dato y marcada como tal en el informe.
- Rutinas. Parte del cálculo no estaba en fórmulas sino en macros de Visual Basic. Esas rutinas se han re-expresado respetando su semántica: variables de 32 bits en nailon y tripa, tensión leída como texto con dos decimales, coeficiente KF fijo en las hojas de instrumento. Cada rareza está anotada en el informe de extracción que se muestra abajo.
Familias y valores de partida
La agrupación por familias (guitarra, laúd, viola, arco, histórico, arpa) que ordena el <select>
de instrumento es una agrupación de presentación nuestra: el .xls son 31 hojas de instrumento
sueltas, en el orden del libro, sin ningún campo que las agrupe. La guitarra barroca vivió en
«histórico» hasta el 2026-09-08; ese día, al ver la calculadora, el propietario pidió moverla a
«laúd» —la guitarra romántica se queda donde estaba, solo se pidió mover la barroca—.
El original tampoco traía una longitud vibrante ni una tensión de partida, aunque las dos columnas no están vacías en la misma medida. La de tensión lo está del todo: de las 31 hojas de instrumento, 30 no traen ni un valor —cuatro ni siquiera tienen esa columna— y la única que trae algo es LUTREN. En la de longitud son 28 las hojas que no traen nada —cinco de ellas, sin la columna—, más PETIHARP33, cuyas 26 celdas están a cero: huecos que nadie rellenó, no medidas de cero centímetros. Quedan dos hojas con longitudes de verdad, y son las dos excepciones que se cuentan a continuación. Los 60 cm y 3 kg con los que arranca cada cuerda de cada instrumento son una decisión nuestra, no un dato del fichero.
La primera excepción es LUTREN (el laúd renacentista), y por una razón concreta: es la única hoja
que alguien rellenó y dejó guardada —longitud «60,5» en texto con coma, tensión 3,0, iguales en sus
diecinueve cuerdas—. No es un valor que Savarez publicara: es el residuo de la sesión de quien usó
esa hoja para calcular, la misma sesión cuyos diecinueve calibres resueltos Excel dejó también
guardados y que este sitio usa como verdad de campo (véase Verificación, más abajo —
golden.json/excelObserved). Mismo archivo, misma hoja, mismo gesto: alguien tecleó una longitud
y una tensión, pulsó calcular, y las dos cosas —lo que tecleó y lo que Excel devolvió— quedaron
guardadas desde entonces.
La segunda es PETIHARP36: es la única hoja de arpa que documenta una longitud por cuerda en vez de una sola para todo el instrumento —29 valores distintos, de 10,2 a 91,0 cm—. Esas 29 medidas se usan tal cual, cuerda a cuerda, en vez de los 60 cm de partida.
Verificación
El motor JavaScript de las calculadoras se compara con dos cosas. Primero, con un modelo de referencia en Python que evalúa las fórmulas originales sobre una rejilla de frecuencias, longitudes y tensiones. Segundo —y esto es lo que prueba la fidelidad— con celdas que el propio Excel calculó en su día y dejó guardadas en la hoja del laúd renacentista: diecinueve valores de calibre y de PUL que se reproducen bit a bit. Todo ello forma parte de una batería de pruebas automáticas que se ejecuta antes de cada publicación, junto con la auditoría de accesibilidad y el presupuesto de peso de cada página.
Milímetros en la interfaz, %mm en los datos
El original guarda y calcula los calibres en %mm (centésimas de milímetro): así están la hoja
diam_mono, las 31 hojas de instrumento y los nombres de las referencias del catálogo —KF60 son
60 %mm, BFA642 son 642 de PUL—. El sitio sigue calculando y guardando en esa misma unidad: el motor
de cálculo y los datos extraídos no cambian. Lo que cambia es la pantalla: desde el 2026-09-08, por
decisión del propietario, los calibres se muestran en milímetros (60,6 %mm se lee «0,606»), dividiendo
entre cien y con tres decimales —dos ya no bastan para distinguir calibres del catálogo que en %mm sí
se distinguían—. Es una conversión de presentación, no del cálculo ni del catálogo.
Dónde se aplica, exactamente: la tabla de resultados de la calculadora, las tablas de arpa, el Catálogo y el texto que exporta la calculadora al portapapeles. Son los cuatro sitios donde el sitio enseña un diámetro como resultado, y en los cuatro se lee en milímetros, para que la misma cifra no se lea de dos formas distintas según dónde se mire.
Hay un quinto sitio que no convierte, y no es un olvido: el ejemplo resuelto de Cómo funciona. Ahí lo que se enseña es la fórmula del original, y esa fórmula produce %mm; cambiar su resultado de unidad la dejaría de ser la fórmula del original, que es justo lo que esa página documenta. Así que el ejemplo conserva la unidad del original y da el equivalente en milímetros al lado, en la misma línea: «106,7 %mm (1,067 mm)». Es la misma cifra que la tabla muestra como 1,067.
Los nombres de las referencias del catálogo no se tocan: siguen codificando %mm, porque son del catálogo de Savarez. La unidad %mm en sí —qué es una centésima de milímetro— sigue explicada donde se documenta el original, aquí y en Conceptos: ahí es fidelidad, no interfaz.
El Catálogo: indexado por valor
Hasta el 2026-09-08, la página Catálogo mostraba ocho tablas plegables, una por serie —tripa, nailon y KF en cuerda lisa; las cinco familias de entorchada—, cada una con su propia referencia como fila. Ver en qué materiales existía un mismo calibre exigía abrir tres desplegables y comparar las filas a mano. Ahora son dos tablas indexadas por valor: la de cuerda lisa tiene una fila por diámetro (82) con columnas Tripa · Nailon · KF; la de entorchada tiene una fila por PUL (78) con las cinco familias en columna. Cada celda lleva la referencia de ese material en ese valor, o «—» si el catálogo no la tiene.
Los huecos son un hecho del catálogo, no una carencia de esta tabla. Las 118 referencias de cuerda lisa (38 de tripa, 43 de KF, 37 de nailon) caen en solo 82 diámetros distintos: solo 5 existen en los tres materiales a la vez, y 51 en uno solo, así que apenas el 48 % de las 246 celdas posibles (82 diámetros × 3 materiales) quedan llenas. En entorchada pasa algo parecido: 144 referencias en solo 78 valores de PUL, y solo 3 —170, 210 y 300— se dan en las cinco familias a la vez.
Hay además una colisión real, que es lo contrario de un hueco: en la familia de tripa plateada
(GUT_AG, boyau filé argent), dos referencias comparten el PUL 480 —BFA482 y BFA484—, y
esa celda lleva las dos. Es la única colisión de las ocho series originales.
De los 312 códigos que el catálogo asigna a sus 118 referencias de cuerda lisa, la tabla imprime
118 —el propio de cada una— y deja fuera 194: el 62 %, dos de cada tres. No se pierden por
eso: se explican en un párrafo encima de la tabla y el buscador los encuentra todos. La regla que
los deriva no tiene excepciones en las 118: el de arpa antepone HP y quita la segunda letra
(KF30 → HPK30, NN40 → HPN40, BRH38 → HPBH38); el de tripa cambia además esa letra por
V (BRH38 → BRV38, con su propio arpa HPBV38). Una referencia de KF o de nailon lleva por
tanto dos códigos —el suyo y el de arpa— y una de tripa cuatro; la proporción de tres de cada
cuatro sin imprimir, que este párrafo dio durante un tiempo para todo el catálogo, solo se cumple
en esas 38 de tripa. La suma son 118 propios + 118 de arpa + 38 alternativos + 38 de arpa
alternativos —solo la tripa tiene variante—, y los 312 se encuentran en el buscador del catálogo
aunque solo 118 estén impresos. Compactar la tabla no recortó el catálogo: si algún código
hubiera dejado de encontrarse, sí lo habría hecho.
Reorganizar las ocho tablas en dos rompió el buscador entero —seguía apuntando a las tablas
plegables que ya no existían, y anunciaba «0 referencias» al cargar— y ningún test lo detectó:
las pruebas comprobaban sus funciones puras (qué fila coincide con qué búsqueda) en aislado,
nunca que ese código estuviera enchufado al DOM real de la página. El repositorio no tiene
entorno DOM en sus pruebas —vitest corre en Node, sin jsdom—, así que lo único capaz de cubrir
ese cableado son los flujos de navegador de scripts/a11y.mjs. El catálogo tiene ahora siete:
uno carga la página y comprueba que anuncia las 262 referencias reales, otro busca un código
derivado (hpbv38) y espera a que aparezca su fila, y otro vigila la única cifra con más de un
resultado —buscar «kf» anuncia 43—, que es donde la cuenta se había torcido: la región de estado
sumaba todas las referencias de las filas visibles, no las que coinciden, y decía 70.
Divergencias deliberadas
El criterio que gobierna las calculadoras es preservar los cálculos y los conceptos de Savarez, no las limitaciones de un fichero de 1998. Hay tres puntos en los que el sitio se aparta a propósito del original, y en los tres se marca el criterio como propio, no como parte de la réplica.
El coeficiente KF por tramos
El original se contradice a sí mismo: la hoja de monofilamento aplica el coeficiente KF por tramos según el calibre resultante (150 si d < 100 %mm; 156,9767 si 100 ≤ d < 150; 162,6506 si d ≥ 150), pero las 31 hojas de instrumento usan siempre 150, sin tramos. Esta calculadora aplica los tramos en toda la página, para que la columna KF signifique lo mismo se mire donde se mire.
No es una diferencia solo entre dos fórmulas: es una diferencia frente a un número que el propio
Excel dejó calculado y guardado. De los calibres KF que la hoja del laúd renacentista (LUTREN)
conservaba ya resueltos, uno cae justo al otro lado del umbral del segundo tramo: la cuerda de la
fila 30, que Excel guardó como 103,711 %mm con el coeficiente fijo, da 108,5 %mm aplicando
los tramos. Esa cifra de Excel no se toca ni se actualiza para que cuadre con la interfaz — es la
prueba de que el fichero, en efecto, calculaba distinto según la hoja. El camino fiel al original se
conserva aparte, en el motor, como la función instrumentGaugeAsOriginal(), y las pruebas
automáticas la siguen comprobando contra los 103,711 %mm exactos del fichero: la evidencia no se
toca.
El reparto liso/entorchada derivado
Trece instrumentos (cinco de arco, cinco arpas, el ukelele, la guitarra de diez cuerdas y la guitarra barroca) no tenían una rutina de cálculo cableada en el Visual Basic del original: la hoja se limitaba a mostrar «—». Esta calculadora los calcula igual que a los demás, con la misma fórmula, pero necesita saber qué cuerdas son lisas y cuáles entorchadas, y esa información no está en el fichero para estos trece instrumentos.
Cuando el original no fija el reparto, lo derivamos del catálogo con un solo límite, el de arriba: una cuerda se trata como lisa mientras su diámetro teórico en tripa no pase del calibre más grueso de la serie de tripa (225 %mm); en cuanto lo supera, se trata como entorchada. Por abajo no hay límite, y es deliberado: una cuerda muy fina sigue saliendo como lisa aunque su calibre quede por debajo del más fino de la serie de tripa (38 %mm, que es el mínimo de esa serie y no del catálogo entero: la de KF baja hasta 30 %mm), y entonces cada columna de calibre contesta por su cuenta, y la que no llega tan abajo dice «Sin referencia exacta en el catálogo». Ocurre en las cinco arpas con los valores de partida de la interfaz: en el arpa de concierto, 22 de sus 35 filas quedan por debajo de esos 38 %mm, y 20 de ellas se quedan sin referencia en las tres columnas; las otras dos —32,2 y 36,1 %mm en tripa— todavía encuentran una en KF, KF30 y KF33. No es un fallo de la regla ni algo que se arregle tratándolas como entorchadas —el peso lineal de una cuerda así tampoco está en el catálogo—: significa que el catálogo de Savarez de 1998–2000 no llegaba hasta ahí, y decirlo es más honesto que recomendar la referencia más cercana como si sirviera. Es un criterio nuestro, no de Savarez, y la calculadora lo dice: al elegir uno de esos trece instrumentos aparece bajo la tabla un aviso que lo explica. Se congela al elegir el instrumento (o la afinación) y no se recalcula mientras el usuario teclea, porque depende de la tensión y de la longitud: recalcularlo en cada tecleo haría que una cuerda cambiara de naturaleza a mitad de escritura. La interfaz aplica el reparto y lo muestra vaciando, fila a fila, las columnas de material que no corresponden a cada cuerda —una lisa no lleva referencias de entorchada, ni una entorchada calibre en tripa, nailon o KF—; ya no hay ningún control para corregirlo a mano.
El instrumento personalizado aplica la misma regla derivada, pero al revés que esos trece: no la congela. Cada vez que el usuario cambia la frecuencia, la longitud o la tensión de una cuerda, su reparto se recalcula con el catálogo para esa cuerda —tiene sentido, porque el personalizado se construye cuerda a cuerda y el salto de lisa a entorchada es información, no una sorpresa a media escritura—. Hasta el 2026-09-08 el personalizado heredaba un tipo fijo del ejemplo de partida (la guitarra clásica de seis cuerdas) sin ninguna regla que lo ajustara, así que cambiar el número de cuerdas o la longitud no cambiaba qué filas eran lisas y cuáles entorchadas; con la regla derivada aplicada también aquí, deja de ser una limitación.
NFP fuera de los resultados
La familia NYL_PLAS (NFP, nailon entorchado sobre plástico) sigue en el catálogo histórico y en la
página de Catálogo —la extracción es fiel al fichero completo—, pero ya no aparece entre las
referencias que la calculadora ofrece para una cuerda entorchada de núcleo sintético: decisión del
propietario, 2026-09-08, tomada porque NFP no está explicada en ningún documento de Savarez que se
haya encontrado (véase Conceptos) y no se quiso ofrecerla como recomendación de compra sin esa
certeza.
Extensiones modernas
Estas funciones no existían en el selectorconve.xls original. Ya no llevan ningún distintivo visual
en la interfaz junto al control que las ofrece (se retiró, 2026-09-08): se declaran aquí, en esta
lista, que las enumera todas:
- Tensión editable cuerda por cuerda, con un ajuste de tensión en bloque que las sube o las baja todas a la vez sin perder sus diferencias (véase más abajo).
- Tensión total del juego: la suma de las tensiones de las cuerdas con frecuencia. Las que el original dejó sin frecuencia (el 7.º orden del contrabajo, por ejemplo) no se calculan y tampoco suman.
- Exportar el juego calculado como texto, para copiarlo y pegarlo.
- Diapasón propio de cada instrumento: al elegirlo, el campo de diapasón pasa al que documenta su hoja del original —415 Hz en nueve de los treinta y uno: la vihuela, las cuatro violas da gamba, la guitarra barroca y los tres instrumentos de arco barroco— en vez de arrancar siempre en 440. El dato es del original; automatizar el salto, no. Un enlace compartido manda sobre el instrumento: si trae diapasón, se respeta. Junto al campo hay cuatro pastillas de atajo (415, 430, 440 y 442 Hz) que lo rellenan con un clic; no es el combo que el propietario retiró el 2026-09-08 —aquel competía con el campo—, sino un atajo más junto a él, y el campo libre (380–480 Hz) sigue aceptando cualquier valor.
- El cálculo en los trece instrumentos sin rutina propia (véase arriba), con su regla de reparto derivada —congelada al elegir instrumento en esos trece, pero recalculada en cada pintada en el instrumento personalizado, que aplica la misma regla sin congelarla nunca (véase arriba).
El campo de tensión única para todas las cuerdas se retiró: cada fila arranca con la misma base por
defecto (3 kg — el .xls de Savarez no traía una columna de tensión por cuerda, véase «Familias y
valores de partida») y el usuario la cambia fila a fila. En su lugar hay un ajuste de tensión en
bloque: un campo que guarda un desplazamiento, no una tensión, con paso 0,5 kg y rango ±10 kg, y
dos botones − / + que lo mueven. La
tensión de cada cuerda es su base más ese desplazamiento, sin acumularse: pulsar «+» dos veces da
base + 1 kg, no un compuesto sobre lo ya aplicado. Esta página había dado el control por descartado
«por compacidad»; el propietario revirtió esa decisión el 2026-09-08, después de verlo en la
calculadora que ya publica en cuerdaspulsadas.com/calculator/. También existió un transporte del
juego completo en semitonos (± sobre todas las cuerdas a la vez) y ese sí se retiró: los botones ±
de semitono de la columna Nota, que se conservan, ya permiten subir o bajar cada cuerda por separado.
Lo que no se replica
- El modo en pulgadas y libras del original. Existía, con conversiones propias (2,541 cm por pulgada; 2,20458 libras por kilogramo) y un error en una de sus fórmulas; se documenta, pero las calculadoras de este sitio trabajan solo en unidades métricas.
- La interfaz de 1998 (cuadros de diálogo del Excel 5). Se sustituye por formularios web accesibles; las hojas se muestran reconstruidas en la galería «modo museo».
- El código de Visual Basic de Savarez. No se publica ni se transcribe.
Reproducibilidad
El repositorio del proyecto incluye el extractor, las pruebas y un make check que
regenera los datos y comprueba que no cambian. Cualquiera con una copia del fichero original
puede rehacer la extracción y verificar que obtiene exactamente los mismos JSON (la huella
SHA-256 del fichero se muestra abajo).
Evidencia de fidelidad
- 19celdas de Excel reproducidas exactamente
- 293casos de rejilla verificados
- 23casos de instrumento verificados
- 19 celdas calculadas por el propio Excel en la hoja del laúd renacentista, reproducidas con error relativo < 10⁻¹²
- Tolerancia entre el motor JavaScript y el modelo de referencia: 10⁻⁹ relativa
- Valores reproducidos bit a bit: 34.61706216083882 (calibre KF) y 117.12066107226997 (PUL)
Apéndice técnico huella del fichero, recuentos, rarezas, anomalías y nombres rotos
Fuente
- SHA-256
cb761067d4aa2c920494acdaf9c39273e766d2264a6dc1b0339d45d45b724601- bytes
- 2717696
- hojas · nombres definidos
- 50 · 430
Recuentos de la extracción
| Conjunto de datos | Recuento |
|---|---|
| mono | GUT: 38 · KF: 43 · NYLON: 37 |
| wound | GUT_AG: 41 · GUT_CU: 35 · NYL_AG: 23 · NYL_CU: 24 · NYL_PLAS: 21 |
| instruments | 31 |
| strings | 344 |
| golden | excelObserved: 19 · instrumentFromTension: 17 · instrumentTension: 6 · monoDiameters: 79 · monoTension: 56 · transpose: 19 · woundPul: 79 · woundTension: 79 |
Rarezas del original (se reproducen tal cual)
- El diámetro de nailon/tripa usa la tensión leída como texto con formato 0.00 y aritmética Single (VBA).
- Las hojas de instrumento usan KF con coeficiente fijo 150 (sin tramos) y son solo métricas.
- Las hipótesis son LOOKUP tipo suelo (mayor valor <= x), no 'más próximo'; offsets +2/+3/+4/+5 %mm y +15..+60 PUL.
- BOYFILAG contiene el PUL 480 dos veces (BFA482 y BFA484); la búsqueda exacta devuelve la primera.
- COEF_KF y DIAMETRE_KF (y DOn_440/REn_440...) son nombres #REF! rotos en el original.
- recdipulviolb (violas) y recdipulviuhl (vihuela) escriben calibre mono Y PUL en filas solapadas (14-15 / 20-23).
- Modo imperial (no replicado): 2.541 cm/inch (no 2.54), 2.20458 lb/kg (no 2.20462); DIAMETRE_KFI3 divide por L/2.541 (x6.4567); dmonoinch = diam_mono/2541 y al nailon le faltan NN42, NN52, NN72, NN112.
Anomalías detectadas
- CONCHARP · KF · FORTE · #23: 126 — calibre ausente del catálogo KF
Procedencia de los datos
- constants.coefficients.COEF_STEEL, RECDIPUL_CONSTANT y hypothesisOffsets son literales del código VBA declarados en extract_constants.py.
- tunings.instruments[].rules (showMonoBelowPosition, fromTension.plainRows/woundRows, byTuning) son reglas derivadas de la lectura del VBA (rutinas *acc y recdipul*), no datos parseados; GUITERZ lleva assumed=true.
- brokenNames incluye los nombres #REF! directos (source.nameKinds['ref-error']) más los transitivos que los referencian (p. ej. DIAMETRE_KF), de ahí la diferencia de recuento.
Nombres definidos rotos en el original
COEF_KF, DIAMETRE_KF, DO0_415, DO2_440, DO3_440, DO4_440, DO5_440, DO6_440, DO7_440, FA2_440, FA3_440, FA4_440, FA5_440, FA6_440, FA7_440, INF2, INT1, INT2, LA1_440, LA2_440, LA3_440, LA4_440, LA5_440, LA6_440, LA7_440, MI2_440, MI3_440, MI4_440, MI5_440, MI6_440, MI7_440, NOTE1, PIN1, PIN2, RE2_440, RE3_440, RE4_440, RE5_440, RE6_440, RE7_440, SI1_440, SI2_440, SI3_440, SI4_440, SI5_440, SI6_440, SI7_440, SOL1_440, SOL2_440, SOL3_440, SOL4_440, SOL5_440, SOL6_440, SOL7_440
