active development

Tunes4R — un núcleo de reproducción,
todas tus pantallas.

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í.

Core in Rust UI in Flutter
// alcance

Cuatro plataformas, un mismo motor

Android

Android Automotive

iOS

macOS

// el núcleo

Reproducción que sobrevive a una mala conexión

Symphonia decoder HTTP Range requests SparseByteCache FetchEngine SeekMode

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.

// confiabilidad

El error que solo apareció en el coche

Síntoma

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.

Causa raíz

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.

Por qué importa

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.

// interfaz

Construida en Flutter, ajustada a mano

Now Playing

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.

Streaming UI

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.

Editor de letras

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.

Song ID

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.

// de dónde vienen los datos

Un pipeline detrás del reproductor

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.

// conectar

¿Quieres Tunes4R en una plataforma para la que estás desarrollando?

Contáctanos para licenciar el núcleo, obtener una versión personalizada o llevarlo a una nueva plataforma.