Sobre el proyecto

rtrack es un rastreador de música escrito en Rust, que ofrece tanto una interfaz de terminal (ratatui) como una GUI de escritorio nativa (egui) que comparten la misma biblioteca central sin cabeza. Produce sonido de forma inmediata sin requerir un sintetizador externo, DAW o SoundFont. Capacidades clave incluyen: - Sintetizador incorporado con 30 parches (saw, square, FM bell, acid, chiptune, etc.) que incluye envolventes ADSR, filtros SVF, sub-osciladores, síntesis FM y efectos por canal (distorsión, filtro, coro, retraso, reverberación). - Motor de muestras que admite carga de WAV/AIFF, reproducción con cambio de tono, puntos de bucle, corte basado en transitorios y hasta 32 voces simultáneas con robo de voz sin clics. - E/S MIDI con puertos virtuales, enrutamiento de hardware, grabación paso a paso y punch-in, mapeo de aftertouch a filtro, aprendizaje MIDI para mapeo CC y entrada/salida de reloj. - Sincronización bidireccional de tempo y transporte Ableton Link. - Edición de patrones al estilo clásico del rastreador con entrada modal, diseño de teclado de piano, selección de bloques, interpolación, transposición, deshacer/rehacer y 12 comandos de efecto. - Estructura de canción con múltiples patrones, conteo de filas por patrón, listas de orden con repeticiones, salto de posición y efectos de ruptura de patrón. - Renderizado offline a WAV/FLAC sin dispositivo de audio, además de importación/exportación estándar de archivos MIDI. - Reproducción opcional de SoundFont (.sf2) para soporte General MIDI. El proyecto está estructurado como un workspace de Cargo con tres crates: rtrack-core (motor sin cabeza, audio, MIDI, modelo de datos), rtrack-tui (frontend de terminal) y rtrack-gui (frontend de escritorio). Las canciones se guardan como archivos JSON (.rtrk). Requiere Rust 1.89+ y CMake 3.14+.