Advanced Timegrapher
Analizador acústico y cronocomparador de alta precisión para relojes mecánicos y de cuarzo. Mide en tiempo real la marcha (Rate en s/d), el error de batimiento (Beat Error en ms) y la amplitud (°) mediante procesamiento digital de señales (DSP) desacoplado, con calibración dinámica de la deriva del reloj de la tarjeta de sonido.
Ingeniería Horológica de Máxima Fidelidad
Diseñado desde cero con separación estricta de responsabilidades: captura sin bloqueos, motor DSP en Python puro y trazabilidad matemática total sin cajas negras.
Motor Acústico DSP NumPy Puro
Procesamiento digital de señales 100% en Python/NumPy sin dependencias de SciPy ni extensiones C++ en tiempo de ejecución. Buffer circular lock-free SPSC (Single-Producer Single-Consumer) con indexación absoluta referenciada al reloj del convertidor ADC.
index_abs = total_samples + write_head
residuos = t_host - (n / f_s)
- Captura desacoplada en proceso hijo dedicado (PortAudio nativo).
- La interfaz GUI jamás bloquea ni retrasa la ingesta de audio.
- Detección de sobrescritura de muestras (`SamplesOverwritten`).
Análisis Tri-Pulsante del Escape
Identificación de los tres sub-eventos acústicos generados en cada alternancia por el volante, el áncora y la rueda de escape. Resolución temporal sub-muestra con discriminación automática de ruido.
A = LA / (2 · sin(π · f · t_lift))
- P1 (Desbloqueo): La elipse entra en la horquilla.
- P2 (Impulso): El diente empuja la paleta de alzado.
- P3 (Caída): El diente choca en la bocallave y tope.
Métricas con Regresión Ponderada
Cálculo de marcha y error de batimiento mediante regresión lineal robusta ponderada por paridad tic/tac con recorte a 5σ (MAD), eliminando los valores atípicos causados por ruidos mecánicos externos.
Rate = (P_nom / P - 1) · 86400 [s/d]
Beat Error = 2·|c| [medido en P1]
- Error de batimiento medido en P1 para fidelidad horológica absoluta.
- Estimación de amplitud media, amplitud tic y amplitud tac independientes.
- Ventana deslizante configurable de 10 s a 60 s con refresco a 4 Hz.
Calibración de Deriva del ADC
Los cristales de las tarjetas de sonido USB tienen tolerancias de ±30 a ±100 ppm (1 ppm = 0.0864 s/d). Advanced Timegrapher mide y compensa esta desviación respecto al reloj del sistema o referencias externas.
+35 ppm sin corregir = error de +3.02 s/d
Calibración Theil-Sen con niveles 0 a 3
- Soporte de pulsos de sincronización PPS por GPS (NEO-6M a 4 kHz).
- Calibración automática o manual por dispositivo de audio.
- Cero distorsión sistemática en la marcha calculada.
Cinta de Papel Virtual Continua
Representación fiel de los cronocomparadores de laboratorio clásicos: un punto por cada batimiento separado por paridad (tic / tac). La pendiente visual revela inmediatamente el atraso o adelanto en ms.
Líneas de 1 px sin antialiasing · 30 FPS
0 congelamientos de GUI (latencia < 33 ms)
- Osciloscopio dinámico centrado en las ventanas P1 / P2 / P3.
- Historial de cinta con autoescala y selector de zoom temporal.
- Indicador de salud de captura y detección de saturación (clipping).
Modo Cuarzo & Base de Calibres
Modo especializado para movimientos de cuarzo paso a paso (1 a 16 pulsos/segundo). Base de datos horológica integrada (`watch_db.csv`) con parámetros de calibres legendarios.
Miyota 9015: LA 51° · 28.8k · Seiko 4R36: LA 53°
Seagull ST1901: LA 47° (Verificado Weishi 1900)
- Exportación e importación de grabaciones en FLAC de 24 bits.
- Metadatos Vorbis / ICMT completos para trazabilidad técnica.
- Soporte para micrófonos piezoeléctricos USB (CM18) y estándar.
Los Tres Impulsos Acústicos (P1, P2, P3)
En cada semioscilación, el conjunto oscilador produce tres transitorios acústicos sucesivos. Identificar con precisión micrométrica la ventana temporal entre P1 y P3 es el requisito físico esencial para deducir la amplitud de giro del volante sin recurrir a sensores ópticos o desensambles invasivos.
La elipse del platillo del volante impacta en la muesca del áncora y la desplaza para desbloquear el diente de la rueda de escape. Es el único sonido producido directamente por la inercia del volante. Por esta razón física, el error de batimiento se mide con rigor estricto en P1.
El diente de la rueda de escape resbala sobre el plano de impulso de la paleta del áncora. El áncora empuja la elipse del platillo, transmitiendo energía al volante para compensar la fricción. Es un sonido acústicamente difuso e irregular que la instrumentación Witschi omite en el cálculo de alzado.
El diente de escape cae sobre la paleta opuesta (Drop) y el brazo del áncora choca con violencia contra el pasador de tope limitador (Banking pin). Es acústicamente el evento de mayor amplitud y energía, utilizado como ancla temporal en el detector acústico.
Instalación Rápida
Instaladores nativos listos para producción o despliegue en entorno Python puro.
Instalador `.dmg`
Paquete universal empaquetado con PyInstaller, PortAudio nativo y soporte para pantalla Retina.
Instalador `.exe` / Inno Setup
Instalador profesional guiado o binario portable en `.zip` con soporte para PortAudio WASAPI / MME.
Pip o RPM Package
Instalación estándar en cualquier distribución Linux (Debian, Ubuntu, Fedora, Arch) con Python ≥ 3.12.
Seguridad Proactiva y Protección de Buffer
Advanced Timegrapher implementa medidas de endurecimiento continuo para prevenir desbordamientos de buffer, bloqueos de memoria y ataques a la cadena de suministro en el ecosistema de dependencias.
Tope explícito `MAX_IN_MEMORY_BYTES = 8 GiB` para evitar agotamiento de RAM o ataques DoS por buffers descontrolados.
Escaneo automatizado en cada pull request y despliegue para detectar deserializaciones inseguras o accesos a archivos no autorizados.
Supervisión proactiva de vulnerabilidades y CVEs en el ecosistema de paquetes (PyQt6, NumPy, SoundFile, sounddevice).
Mitigaciones SEC-01 a SEC-11: protección contra inyección en CSV (`sanitize_csv_cell`), anonimización de logs y sanitización de rutas (`safe_filename_base`).