Un reproductor de audio multiplataforma para Android, Android Automotive, iOS y macOS. Un solo núcleo en Rust maneja la reproducción en todas partes; Flutter construye la interfaz sobre él, para que la app se sienta nativa en cada plataforma sin necesidad de cuatro bases de código separadas compitiendo entre sí.
Buscar en una pista en streaming implica obtener el rango de bytes correcto antes de poder decodificar nada — fallar en eso, y un avance se siente roto. El núcleo coordina las solicitudes de rango, un caché disperso de los bytes ya obtenidos y el estado de decodificación para que la búsqueda siga siendo responsiva incluso durante la transmisión.
La reproducción en segundo plano se entrecortaba específicamente en Android Automotive — no en teléfonos, no de forma consistente, y sin una razón obvia en el propio pipeline de audio.
Se rastreó hasta el programador cgroup de Android, que degradaba silenciosamente la prioridad del hilo de decodificación cuando la app pasaba a segundo plano — privando de recursos al mismo hilo que necesitaba seguir funcionando sin problemas.
Este es el tipo de falla que nunca aparece en una demo y solo surge después de condiciones reales de conducción — la diferencia entre una app que funciona y una que realmente aguanta.
El widget NowPlayingTab fue rediseñado para reducir la complejidad de las animaciones y corregir el centrado en modo retrato — pequeños detalles que determinan si la pantalla se siente sólida o ligeramente fuera de lugar.
Un widget personalizado ProgressSlider/BufferedSlider maneja tanto streaming en vivo como DVR, mostrando el rango almacenado en búfer por separado de la posición de reproducción.
Un editor de letras en Flutter con una línea de tiempo de waveform permite sincronizar las letras directamente con el audio, en lugar de adivinarlas con marcas de tiempo.
La pantalla SongIdScreen fue rediseñada con estados de grabación animados, proporcionando retroalimentación clara mientras la app escucha en busca de una coincidencia.
Los metadatos no se ingresan a mano. Un pipeline ETL de MusicBrainz construido sobre Prefect y Python se encarga del matching, junto con la coincidencia de videos de YouTube y la resolución de carátulas — con un visualizador de espectro en Flutter como pieza inicial de la experiencia de reproducción.
Contáctanos para licenciar el núcleo, obtener una versión personalizada o llevarlo a una nueva plataforma.