reTONE
DescargarGratis · Android 4.0+

Por ahora, la aplicación reTONE está disponible en inglés y japonés. Está previsto añadir más idiomas.

Notas técnicas

Especificaciones, cómo funcionan la conversión y la salida, dispositivos probados y otros detalles. Es la continuación de Funciones.

Especificaciones principales

Android4.0 y posteriores
CPUARM (armeabi-v7a, arm64-v8a). También se incluyen compilaciones para Intel (x86, x86_64), aunque todavía no se han probado en un móvil Intel
PermisosAcceso al almacenamiento y otros. El acceso a internet solo se usa cuando “Network features” está activado
Formatos que lee el motor de reTONEWAV, AIFF/AIFC, DSF, DFF (sin comprimir), FLAC, ALAC, Opus (Opus solo en móviles ARM)
Pistas que procesa el motor de reTONEAndroid 4.x: todos los FLAC y WAV. Android 5 y posteriores: en las rutas que pasan por el mezclador de Android, los FLAC, WAV y ALAC cuya frecuencia difiere de la de salida o cuya profundidad de bits supera los 16 bit (se puede desactivar con el ajuste “Conversion by reTONE”)
Conversión de frecuencia de muestreoFiltro FIR con ventana de Kaiser (polifásico). Dentro de ±0.001 dB hasta 20 kHz (valor de diseño; para conversiones entre frecuencias de 44.1 kHz o superiores)
Formato que el motor entrega a AndroidComa flotante de 32 bit en Android 5 y posteriores, 16 bit en 4.x (con dither solo para los valores que 16 bit no pueden representar con exactitud). La profundidad de bits en la salida del móvil depende del móvil
DAC USBUSB Audio Class 2. También se admite Class 1 (con pruebas reales limitadas). Las pistas a frecuencias que admite el DAC y que el móvil puede transportar se envían sin remuestreo. Se prefieren los contenedores de 32 bit (de 24 o 16 bit si no hay otros). DSD nativo en determinadas condiciones
FirmaTodas las versiones distribuidas se firman con la misma clave

Formatos compatibles

Los formatos que el Android del móvil puede reproducir se reproducen con el decodificador y el procesamiento de sonido del móvil. DSD, AIFF y los FLAC y WAV de alta resolución que Android no puede leer los reproduce el motor de reTONE.

Los reproduce AndroidFLAC, AAC, MP3, Ogg Vorbis, WAV, Opus y más
Los reproduce el motor de reTONEDSD (DSF, DFF), AIFF, WAV de 32 bit, ALAC (cuando el móvil no puede reproducirlo). En Android 4.x, todos los FLAC y WAV, y Opus (en móviles ARM). Además, cuando Android no consigue reproducir FLAC, WAV, AIFF, ALAC u Opus, el motor de reTONE intenta reproducirlos (en ALAC y Opus, también cuando la reproducción se detiene sin ningún error)
No compatiblesDFF con compresión DST, APE, WMA Lossless

Detalles técnicos

Con pistas sin pérdida o sin comprimir, cualquier decodificador bien escrito restaura los mismos datos. Dejando aparte los efectos de sonido del móvil, el sonido cambia sobre todo en tres puntos: la conversión de frecuencia de muestreo, el truncamiento de la profundidad de bits, y el cálculo del volumen y el mezclador. reTONE se ocupa de ellos.

Contexto: qué afecta a la calidad de sonido

Las pistas sin pérdida como FLAC y las pistas sin comprimir como WAV se restauran exactamente a los datos originales con cualquier decodificador bien escrito, sea cual sea la aplicación que las reproduzca. Lo que puede cambiar el sonido es el procesamiento posterior a la decodificación (los tres pasos siguientes, además de los efectos de sonido del móvil).

Conversión de frecuencia de muestreo

Muchos móviles Android fijan su salida a una frecuencia como 48 kHz. Las pistas a otra frecuencia, como el audio de CD o el audio de alta resolución, se remuestrean cada vez que se reproducen. La calidad de esa conversión varía según el móvil.

Truncamiento de la profundidad de bits

En las versiones antiguas de Android, las pistas de 24 bit se truncan a 16 bit.

Cálculo del volumen y mezclador

El cálculo del volumen y la mezcla con el sonido de otras aplicaciones también se producen justo antes de la salida.

reTONE se encarga de esta parte. Donde hace falta conversión, la realiza el propio reTONE, y donde se puede evitar, no convierte. Con los DAC USB, el audio llega al DAC sin pasar por el procesamiento de audio de Android. Cuando se cumplen las condiciones con un DAC USB (consulte “Volumen del DAC USB” más abajo), la pantalla de la ruta de la señal, que se abre desde el reproductor, muestra BIT-PERFECT. Con el altavoz integrado o la toma de auriculares, no hay forma de comprobar cómo trata el móvil el audio después de Android, así que no podemos garantizar una salida bit-perfect.

La conversión de frecuencia de muestreo varía de un móvil a otro

Android lleva todo el audio a la frecuencia de salida del móvil antes de reproducirlo. Esa frecuencia difiere entre móviles: muchos funcionan a 48 kHz, pero algunos lo hacen a 44.1 kHz. Así que la misma pista puede convertirse en un móvil y quedar intacta en otro.

Frecuencia de muestreo de la pistaMóvil con salida a 44.1 kHzMóvil con salida a 48 kHz
44.1 kHz (CD, etc.)Sin conversiónSe convierte a 48 kHz
48 kHzSe convierte a 44.1 kHzSin conversión
88.2, 96, 192 kHzSe convierte a 44.1 kHzSe convierte a 48 kHz

Ejemplos que comprobamos: salida a 44.1 kHz en el Sony Xperia P y el Xperia go; salida a 48 kHz en el SHARP AQUOS CRYSTAL 305SH, el KYOCERA URBANO L03 (KYY23), el Raku-Raku Smartphone F-06F y el Samsung Galaxy S8. Algunos móviles admiten ambas frecuencias, pero cuál usan en realidad depende de cómo está construido el móvil.

La calidad de la conversión propia de Android también depende de los ajustes del móvil. Entre los móviles que comprobamos, el KYY23 y el 305SH con Android 4.4 estaban configurados con la máxima calidad, mientras que el Galaxy S8 con Android 9 no tenía ningún ajuste y usaba la calidad media estándar (que baja aún más con carga elevada). En las pistas que reproduce el propio motor de reTONE, cuando la conversión no se puede evitar, reTONE no la deja en manos de Android: convierte una sola vez, por sí mismo, y entrega el audio exactamente a la frecuencia de salida del móvil.

La conversión de Android se evita cuando la pista ya coincide con la frecuencia de salida del móvil, en móviles con Android 10 o posterior compatibles con la salida directa, y con un DAC USB. Algunos dispositivos, entre ellos ciertos DAP, también están construidos para no convertir en absoluto a nivel de firmware.

Si el chip de audio del móvil vuelve a convertir internamente después de la salida de Android no se puede ver desde una aplicación. La frecuencia de salida que muestra reTONE es el valor que comunica Android. Puede comprobar la frecuencia de salida de un móvil, y si se produce conversión, en la parte inferior de la pantalla Now Playing y en Device & audio.

La ruta del audio

Cuando la frecuencia de salida del móvil está fija en 48 kHz o similar, no se puede cambiar sin root, de modo que las pistas a otra frecuencia (audio de CD a 44.1 kHz, o audio de alta resolución a 88.2, 96 o 192 kHz) no se pueden reproducir sin conversión. En Android 4.x, y en las rutas que pasan por el mezclador en Android 5 y posteriores, reTONE remuestrea con alta calidad las pistas que reproduce su motor antes de entregárselas a Android, de modo que la conversión de Android no se ejecuta (sobre la calidad de la conversión, consulte “Filtro de remuestreo” más abajo). Con los DAC USB no se hace ninguna conversión a las frecuencias que admite el DAC y que el móvil puede transportar; cuando se usa la salida directa, Android no hace ninguna conversión (sobre lo que ocurre después, consulte “Qué se salta la salida directa” más abajo).

Android 4.xFLAC, WAV, DSD, AIFF
Archivo de la pista Motor de reTONERemuestrea en lugar de Android (solo cuando hace falta) AndroidRecibe 16 bit, sin conversión Altavoz / auriculares
Android 5 y posterioresRutas que pasan por el mezclador. DSD, AIFF y FLAC/WAV/ALAC que necesitan conversión
Archivo de la pista Motor de reTONERemuestrea en lugar de Android AndroidRecibe coma flotante, sin conversión de frecuencia (en móviles con salida de 16 bit, aquí se reduce a 16 bit) Altavoz / auriculares
Android 10 y posterioresMóviles compatibles con la salida directa
Archivo de la pista reTONEReempaqueta el audio sin pérdida de 16 bit como 24 bit AndroidSalida directa Altavoz / auricularesLo que ocurre después depende del móvil
DAC USBConectado por OTG (todas las pistas)
Archivo de la pista reTONELas frecuencias que admite el DAC se envían tal cual; las demás se remuestreanEvita Android DAC USB

Lo gestiona reTONELo gestiona Android

Las pistas cuya frecuencia de muestreo coincide con la salida del móvil no necesitan conversión, así que no se produce ninguna ni siquiera con la reproducción estándar de Android. Los formatos que no pasan por el motor de reTONE, como MP3 y AAC, usan la reproducción estándar de Android, y Android los remuestrea si su frecuencia difiere de la salida del móvil (al reproducir a través de un DAC USB, reTONE también envía estos). DSD y AIFF los reproduce el motor de reTONE incluso en Android 10 y posteriores.

En detalle

reTONE se encarga de más o de menos según el formato de la pista, la versión de Android y la salida. En las pistas PCM, la conversión de frecuencia de muestreo se realiza como máximo una vez en las rutas que gestiona reTONE (internamente, una conversión puede usar varias etapas de filtro) (en DSD, como máximo una vez después de la etapa de DSD a PCM). Con Bluetooth, el móvil y el códec Bluetooth procesan el audio todavía más después de esto. La reproducción se apoya en MediaPlayer y AudioTrack de Android, y el motor de reTONE (escrito en C) se ocupa de la decodificación y la conversión antes de ellos.

Android 4.x: Muchos móviles con Android 4.x abren el hilo de salida de música a una frecuencia fija, como 48 kHz, y las pistas a otra frecuencia, como 44.1 kHz o 96 kHz, se remuestrean dentro del mezclador de Android antes de reproducirse. Las aplicaciones no tienen forma de impedir esta conversión. Además, el decodificador estándar de 4.x puede reducir a 16 bit los FLAC de 24 bit, o no llegar a abrir los FLAC de 192 kHz. Por eso, en 4.x el motor de reTONE lee todos los FLAC y WAV, así como los DSF, DFF y AIFF, los convierte una sola vez a la frecuencia de salida del móvil (el valor de AudioTrack.getNativeOutputSampleRate) y los entrega en 16 bit. El mezclador de Android acepta tal cual el audio de 16 bit a la misma frecuencia, así que en el lado de Android no se produce ninguna conversión de frecuencia de muestreo. Al reducir a 16 bit, los valores que 16 bit pueden representar con exactitud (como el audio de CD que pasa sin conversión) se entregan sin cambios; en los demás casos, reTONE aplica dither TPDF y, cuando la salida es de 44.1 kHz o 48 kHz, usa modelado de ruido con realimentación del error (el filtro de 5 coeficientes con ponderación E de Lipshitz, Vanderkooy y Wannamaker) para llevar el ruido de cuantización a frecuencias menos audibles. Si se produce recorte, el error realimentado se limita a ±4 LSB para evitar oscilaciones. Los coeficientes se diseñaron para 44.1 kHz y también se usan a 48 kHz. La cantidad total de ruido aumenta, pero se desplaza a frecuencias altas, donde el oído es menos sensible. Sin embargo, si ajusta el volumen de Android por debajo del máximo, el mezclador de Android vuelve a redondear a 16 bit después de aplicar el volumen, lo que reduce el beneficio del modelado de ruido. Esto no ocurre en los móviles que ajustan el volumen por hardware. En cualquier caso, no se produce ninguna conversión de frecuencia de muestreo. MP3, AAC y formatos similares se reproducen por la ruta estándar de Android incluso en 4.x.

Android 5 y posteriores (rutas que pasan por el mezclador): En Android 10 y posteriores, las rutas que no usan la salida directa también entran aquí. El mezclador de Android de esta generación acepta coma flotante, así que el motor de reTONE pasa audio en coma flotante a AudioTrack sin dither. En móviles con salida de 16 bit, Android lo redondea después a 16 bit (Android no aplica dither en este punto). Las pistas FLAC, WAV y ALAC cuya frecuencia de muestreo difiere de la frecuencia de salida del móvil serían remuestreadas por el mezclador de Android si se pasaran tal cual, y las pistas de más de 16 bit se truncarían a 16 bit. El remuestreador predeterminado de AOSP usa calidad dinámica media (DYN_MED) cuando el ajuste de calidad (af.resampler.quality) no está definido, y baja a una calidad aún menor cuando la carga estimada de los remuestreadores en uso a la vez supera un límite. En el móvil que comprobamos, este ajuste no estaba definido. El motor de reTONE remuestrea solo las pistas que cumplen estas condiciones, y puede desactivarlo con el ajuste “Conversion by reTONE”. Las pistas de 16 bit a la frecuencia de salida del móvil (como el audio de CD en un móvil de 44.1 kHz) no necesitan conversión, así que se reproducen por la ruta estándar de Android.

Salida directa (Android 10 y posteriores; la disponibilidad depende del móvil): La disponibilidad de la “salida directa”, que envía el audio a la frecuencia de la pista sin pasar por el mezclador, y del “offload”, que decodifica el audio comprimido en el chip, depende del móvil y de la salida. En Android 10 y posteriores, una aplicación puede preguntar al móvil con AudioTrack.isDirectPlaybackSupported si un formato, una frecuencia y una profundidad de bits determinados se pueden enviar directamente a la salida actual. reTONE usa esta ruta solo cuando el móvil responde que sí y la política de audio del móvil encamina realmente el PCM a la salida directa; en caso contrario, reproduce por la ruta estándar de Android. La respuesta cambia según la salida, así que reTONE vuelve a preguntar cada vez que se conectan o desconectan auriculares o USB. En los móviles cuya política de audio encamina el PCM a la salida directa, los principales formatos que no se podían enviar directamente eran el PCM de 16 bit a 44.1, 48 y 88.2 kHz (el audio de CD entra en este grupo). El de 24 bit y el de coma flotante se podían enviar directamente a la frecuencia de la pista, y el MP3 y el AAC (pistas de 60 segundos o más) iban a offload. Por eso reTONE decodifica el audio sin pérdida de 16 bit (FLAC, ALAC, WAV) a PCM (ALAC con el decodificador propio de reTONE si el móvil no tiene uno) y lo pasa a MediaPlayer mediante MediaDataSource como un WAV de 24 bit con los 8 bit inferiores rellenos de ceros. Los 16 bit superiores no cambian. Antes de cambiar, decodifica realmente el primer bloque para confirmar que sale PCM de 16 bit auténtico, y vuelve a la ruta estándar si no puede confirmarlo. El audio sin pérdida de 24 bit o de frecuencia alta, y el MP3 y el AAC, ya van a la salida directa o al offload, así que se pasan tal cual. Las aplicaciones no tienen forma de leer qué salida usó realmente el móvil, por lo que “DIRECT” en la pantalla del reproductor es una expectativa. reTONE se basaba antes solo en la respuesta del móvil, pero el Android estándar puede seguir enviando PCM al mezclador incluso cuando responde que sí, y algunos móviles mostraban DIRECT cuando el audio no era realmente directo. Desde la 0.92.48, reTONE comprueba además la política de audio del móvil. Desde la 0.90.1, “DIRECT” se muestra solo en las pistas sin pérdida, y nunca por Bluetooth. Con el offload, tampoco podemos comprobar si la frecuencia de muestreo cambia dentro del chip. En esta ruta no se aplican los efectos de sonido del lado de Android (en algunos móviles, los efectos se ejecutan dentro del chip), mientras que los ajustes de hardware del DAC (como los filtros) siguen aplicándose. Se puede activar o desactivar en los ajustes.

Salida directa a DAC USB: Al conectar un DAC USB a un móvil con función de host USB (OTG), reTONE envía los datos directamente al DAC sin pasar por la ruta de audio de Android. En el móvil que comprobamos, la ruta estándar de Android convertía el audio a 16 bit/48 kHz para el DAC USB (también había abierta una salida de 32 bit/192 kHz, pero no se usaba para la música). La salida directa de reTONE funciona así.

  • Mediante la API de host USB del móvil, reTONE encuentra el DAC, obtiene su permiso y lee los descriptores USB (en USB Audio Class 2.0: el ID del reloj, las configuraciones alternativas de la interfaz de reproducción, el endpoint de salida y el endpoint de realimentación; en Class 1.0: las frecuencias de muestreo y el tamaño de paquete de cada configuración alternativa).
  • Toma el control del DAC quitándoselo al controlador de Android (claimInterface) y prefiere un ajuste alternativo PCM, de 2 canales y 32 bit (24 o 16 bit si no está disponible).
  • Lee las frecuencias de muestreo admitidas con GET RANGE de la fuente de reloj. Si la frecuencia de la pista está dentro del rango, la fija con SET CUR y la confirma con GET CUR. Solo las pistas a frecuencias no admitidas, o a frecuencias que el USB del móvil se niega a transportar (desde la 0.92.68), las remuestrea reTONE, una sola vez, a una frecuencia que acepte el DAC. Las pistas a frecuencias que admite el DAC no reciben conversión de frecuencia de muestreo ni dither. Las pistas de hasta 24 bit se envían con los datos originales colocados sin cambios en los bits superiores de una palabra de 32 bit (al usar el volumen del DAC o al ajustar el volumen en el propio DAC). Las pistas de 32 bit enteras siguen además una ruta que las mantiene como enteros (desde la 0.92.65). Solo se redondean los valores que la profundidad de bits del DAC no puede representar con exactitud, con dither TPDF cuando el DAC es de 24 bit o menos.
  • Las transferencias se gestionan en el lado de C con transferencias isócronas de usbdevfs. En los DAC High Speed que reciben audio cada 0.125 ms (la mayoría), 1 ms de audio (8 microtramas) se agrupa en una transferencia, y se mantienen 64 de ellas en cola por adelantado. En los DAC con un intervalo más largo, cada transferencia contiene 32 paquetes y se ponen menos en cola, manteniendo unos 64 ms de adelanto. Los DAC asíncronos comunican el número de tramas por microtrama desde el endpoint de realimentación, y reTONE ajusta cuánto envía en consecuencia. El formato de ese valor varía según el DAC, así que reTONE lo detecta a partir de lo que llega. Cuando reTONE aplica el volumen, lo hace justo antes de enviar, por lo que los cambios surten efecto de inmediato (cada cambio se suaviza durante unos 5 ms para evitar saltos bruscos).
  • Durante este tiempo, el MP3, el AAC y formatos similares también se decodifican a PCM con el decodificador del móvil (MediaCodec) antes de enviarlos, de modo que reTONE reproduce todas las pistas. Al desconectar el DAC, la reproducción se pausa. Cuando otra aplicación empieza a reproducir, reTONE se pausa y devuelve el DAC a Android, y lo recupera cuando vuelve a reproducir en reTONE. Si el DAC no se devuelve a Android, por ejemplo tras un cierre forzado, reTONE lo devuelve justo después de una actualización y cuando abre reTONE con “USB DAC direct output” desactivado.

Muchos móviles de la generación de Android 4.1 no pueden usar un DAC USB como salida de audio, pero la salida directa de reTONE usa solo la función de host USB, así que aun así puede enviar audio. Con nuestro móvil de pruebas de 2012 (Android 4.1) y un DAC con batería, el audio de 24 bit/192 kHz se reprodujo sin conversión. Hemos probado nosotros mismos DAC USB Audio Class 2.0. Los DAC Class 1.0 también se admiten, pero hasta ahora las pruebas reales proceden solo de informes de usuarios. Los móviles antiguos solo pueden suministrar una corriente pequeña por USB, por lo que es posible que los DAC alimentados por el bus no se reconozcan. También hemos visto un caso en el que la interferencia de las ondas de Wi-Fi llegó al DAC a través del cable USB y provocó ruido intermitente. La reproducción no necesita conexión, por lo que recomendamos activar el modo avión al escuchar con un DAC USB.

En qué se diferencia cada salida

“Dedicated music player” y “Music app” usan la misma ruta de audio. Las únicas diferencias son si HOME abre reTONE, el valor predeterminado del Silent DAP mode y la pantalla de bloqueo de reTONE. La salida directa (Android 10 y posteriores) y la salida directa a DAC USB funcionan en cualquiera de los dos modos.

SalidaMezclador de AndroidFrecuencia de muestreoDIRECT en el reproductorVolume
Altavoz integrado y toma de auricularesSí (salvo cuando se usa la salida directa)Ajustada a la frecuencia de salida del móvil (como en el diagrama de arriba)Pistas sin pérdida con probabilidad de usar la salida directa, en Android 10 y posterioresVolumen de Android más los pasos finos de volumen de reTONE
DAC USB (salida directa activada, la opción predeterminada)NoSin cambios si el DAC la admiteCuando una pista sin pérdida se envía sin conversión de frecuenciaEn el DAC, o con las teclas de volumen (ajusta el DAC o reTONE)
DAC USB (salida directa desactivada)SíDepende de los ajustes USB del móvil (algunos convierten a 16 bit / 48 kHz)No se muestraVolumen de Android
BluetoothSíEl móvil recodifica al códec BluetoothNo se muestraVolumen de Android (vinculado al dispositivo en algunos móviles)

El DSD se convierte a PCM, salvo cuando se envía por salida directa a un DAC con compatibilidad nativa con DSD. Mientras reTONE usa el DAC, los sonidos de otras aplicaciones, como las notificaciones, se reproducen por el altavoz integrado. Cuando otra aplicación empieza a reproducir, reTONE devuelve el DAC a Android. Muchos móviles con Android 4.x no pueden usar por sí solos un DAC USB como salida de audio, así que el DAC funciona solo mediante la salida directa. Al tocar la última línea de la pantalla del reproductor se abre la pantalla de la ruta de la señal. Para cada etapa (archivo, decodificación, frecuencia de muestreo, volumen, salida), muestra si el audio pasa sin cambios o se modifica, según el procesamiento propio de reTONE y lo que informa Android. El procesamiento dentro del DSP del móvil o del DAC no se puede mostrar.

Qué se salta la salida directa

Cuando se usa la salida directa, lo que se salta es la mezcla y la conversión de frecuencia de muestreo dentro de Android. Lo que ocurre con el audio después depende del móvil y de la salida.

El audio que entrega una aplicación recorre Android en este orden.

1. El centro de audio de Android (AudioFlinger)
En una salida normal, el mezclador combina aquí el sonido de varias aplicaciones, lo convierte a la frecuencia de salida del móvil (normalmente 48 kHz) y aplica el volumen. La salida directa se salta principalmente esta etapa: sin mezcla y sin conversión. El volumen se deja al hardware de audio del móvil si tiene control de volumen; si no, puede aplicarse a las muestras en esta etapa (con el volumen al máximo, los valores no cambian).

2. Los componentes de audio del fabricante → el procesador de audio (DSP) dentro del chip
En la mayoría de los móviles, el audio no va directamente al DAC; pasa por un DSP dentro del chip, que tiene sus propias etapas.

  • Procesamiento por flujo (conversión de formato, volumen)
  • Procesamiento por salida (protección del altavoz, efectos de sonido del fabricante, limitadores)
  • La etapa final de salida. Cada salida tiene su propia frecuencia y, si la de la pista difiere, el DSP la convierte
  • El “offload” de MP3 y AAC lo decodifica este DSP

3. El DAC (integrado en el chip o un chip DAC independiente)
Aquí es donde el audio pasa por primera vez a analógico. El filtro digital interno del DAC (sobremuestreo) se atraviesa igualmente con un DAC USB, así que no se tiene en cuenta al plantear si los datos se han modificado.

Lo que se puede afirmar

  • Lo seguro cuando se usa la salida directa: se salta la mezcla y la conversión de frecuencia de muestreo dentro de Android
  • Si el móvil ajusta la frecuencia de salida del DSP a la de la pista, como en las rutas de auriculares pensadas para la música, el DSP solo da formato a los datos y los transmite, así que probablemente lleguen al DAC muy parecidos al original
  • En los móviles cuya frecuencia de salida está fija en 48 kHz, el DSP convierte el audio aunque se salte la conversión de Android
  • Los altavoces casi siempre reciben protección o corrección. Algunos móviles muestran DIRECT también para el altavoz, pero hay que suponer que los datos han cambiado
  • En algunos móviles, los efectos de sonido del fabricante se ejecutan dentro del DSP
  • Una aplicación no puede comprobar nada de esto. Desde Android 9, las aplicaciones normales no tienen forma de leer los ajustes del DSP ni qué ruta se usó. El indicador DIRECT de reTONE es una expectativa basada en la respuesta de Android y en la política de audio del móvil (solo se muestra en pistas sin pérdida, y nunca por Bluetooth)

En qué se diferencia de un DAC USB
Con un DAC USB, reTONE se salta la ruta de audio de Android y se comunica directamente con el DAC por USB. reTONE gestiona los datos hasta el DAC; lo que ocurre dentro del DAC no se puede comprobar. Cuando la pista se envía a su propia frecuencia de muestreo y el volumen se ajusta en el DAC, reTONE no altera los valores.

Filtro de remuestreo

0-20-40-60-80-100-120-1400102030 Frequency (kHz) dB Flat to 20 kHz Stopbandfrom 24.1 kHz
Respuesta del filtro usado para la conversión de 44.1 kHz → 48 kHz (calculada con las mismas fórmulas que la aplicación).Móviles con salida en coma flotante (objetivo 120 dB) Móviles con salida de 16 bit (objetivo 100 dB)
  • Plana hasta 20 kHzLa desviación hasta 20 kHz es inferior a 0.001 dB (calculada). No atenúa ningún sonido audible.
  • Atenuación en la banda de rechazo de al menos 120 dB / 100 dBValores calculados para móviles con salida en coma flotante y móviles con salida de 16 bit (unos −122 dB / unos −102 dB para 44.1 kHz → 48 kHz). El aliasing medido con una señal de entrada de 30 kHz (la cantidad que aparece en 0–20 kHz, antes de redondear a 16 bit) quedó al menos 104.6 dB por debajo de la señal original.
  • −1 dB solo al remuestrearEsto deja margen para los picos entre muestras por encima de 0 dBFS (el máximo que medimos en grabaciones comerciales fue +0.59 dB). Las pistas remuestreadas suenan 1 dB más bajas que las que no se remuestrean.
En detalle

La conversión de frecuencia de muestreo recalcula la forma de onda entre las muestras originales, así que la calidad del filtro se refleja directamente en el sonido. El filtro de reTONE es un filtro FIR creado aplicando una ventana de Kaiser a una función sinc. Usa una estructura polifásica, que divide los coeficientes en grupos según la relación de conversión y calcula solo lo necesario. El diseño se basa en dos criterios: no atenuar el sonido audible y mantener bien suprimido el aliasing que causa la conversión.

  • Banda de paso: plana hasta 20 kHz (dentro de ±0.001 dB por diseño; para conversiones entre frecuencias de 44.1 kHz o superiores).
  • Banda de rechazo: empieza en "la frecuencia menor − 20 kHz". Entre 44.1 kHz y 48 kHz, eso es 24.1 kHz. El aliasing que cae en este rango aparece por encima de 20 kHz y queda fuera de la banda audible (hasta 20 kHz).
  • Atenuación (objetivo de diseño): 120 dB para móviles con salida en coma flotante (Android 5 y posteriores), 100 dB para móviles con salida de 16 bit (Android 4.x). La longitud del filtro y la ventana se diseñan con un margen de 2 dB sobre el objetivo, para que el valor calculado supere el objetivo en todas las conversiones (para 44.1 → 48 kHz, los valores calculados son de unos 122 dB y unos 102 dB). El aliasing residual a −100 dB queda muy por debajo del suelo de ruido de 16 bit (alrededor de −93 dBFS en toda la banda, dither incluido), así que 100 dB de atenuación no se distinguen de oído de 120 dB.
  • Coeficientes (taps): se determinan a partir de la atenuación y la banda de transición con la fórmula de la ventana de Kaiser (86 coeficientes para 44.1 ↔ 48 kHz a 120 dB).
  • Etapas 2:1: las etapas que reducen la frecuencia exactamente a la mitad, como 96 → 48 kHz, usan un filtro de media banda (half-band), en el que la mitad de los coeficientes son cero y el resto son simétricos, lo que reduce las multiplicaciones a una cuarta parte aproximadamente de las de un filtro normal. 192 → 48 kHz usa dos etapas de media banda, y las relaciones restantes, como 88.2 → 48 kHz, las gestiona un filtro polifásico.

En las mediciones, señales de 1 kHz, 19 kHz y 19.9 kHz salieron con el mismo nivel con una diferencia inferior a 0.01 dB. Con una entrada de 30 kHz, el aliasing que aparece en 0–20 kHz quedó al menos 104.6 dB por debajo de la señal original con salida de 44.1 kHz y 48 kHz, y al menos 116 dB por debajo en la conversión desde 192 kHz (medido antes de redondear a 16 bit). Son valores a una sola frecuencia. Por diseño, toda la banda de rechazo se suprime al menos hasta los objetivos de atenuación indicados arriba.

Como la conversión crea puntos nuevos entre las muestras originales, las pistas con mucho nivel pueden acabar con puntos por encima de 0 dBFS. Al convertir a 48 kHz varias grabaciones comerciales que teníamos, los puntos por encima de 0 dBFS representaron entre el 0.0001 % y el 0.001 % del total, con máximos de +0.38 a +0.59 dB. Estos se recortan en la salida de 16 bit o en el mezclador del móvil, así que, al remuestrear, y solo entonces, reTONE baja el nivel 1 dB, dejando margen por encima del máximo medido. Las pistas que no se remuestrean se dejan sin cambios, de modo que, en el mismo móvil, las pistas remuestreadas suenan 1 dB más bajas. Al pasar sin pausas a la pista siguiente, el estado del remuestreador se mantiene, así que el principio y el final de las pistas no se recortan por el procesamiento (desde la 0.92.57).

El volumen no se aplica dentro del motor de reTONE. Se aplica en el mezclador de Android (el volumen de AudioTrack). Aplicarlo dentro del motor retrasaría los cambios hasta que terminaran de sonar los unos 500 ms de audio almacenados en el búfer de AudioTrack, y las teclas de volumen responderían con lentitud. En móviles con salida de 16 bit, bajar el volumen hace que Android vuelva a redondear a 16 bit (Android no aplica dither en este punto).

Los cálculos están escritos en C y usan instrucciones ARM NEON para procesar a la vez los canales izquierdo y derecho. El bucle interno del filtro lee los coeficientes como vectores y usa cuatro acumuladores para ocultar la latencia. El dither, incluidos los números aleatorios, el redondeo, el recorte y la realimentación del error, también se realiza por completo en NEON, evitando las transferencias entre NEON y los registros de propósito general, que son lentas en núcleos antiguos (Cortex-A9). Las compilaciones para Intel (x86) usan una ruta en C simple, sin NEON. Las cifras de carga que figuran a continuación proceden de los móviles ARM que probamos.

¿Sabía que…?Los fabricantes de móviles eligen la calidad de remuestreo de Android

La parte de Android que convierte las frecuencias de muestreo ofrece varios niveles de calidad, desde cálculos sencillos hasta otros más pesados que usan más cómputo para lograr mayor precisión. Cuál se usa lo determina un ajuste del móvil, y ese ajuste lo decide el fabricante.

En los móviles con Android 5 o posterior en los que el fabricante no lo ha definido, se usa el nivel medio, DYN_MED (en Android 4.4, el nivel más sencillo, LOW). Además, cuando la carga estimada de los remuestreadores en uso simultáneo supera un límite, los que exceden el límite bajan al siguiente nivel inferior (no se mide la carga real de la CPU). Entre los móviles que comprobamos, dos con Android 4.4 tenían el valor 4 (VERY_HIGH), y uno con Android 9 no tenía ningún ajuste, así que usaba DYN_MED. Esto significa que la misma pista recibe una calidad de remuestreo distinta según el móvil.

Valor del ajusteNivelCómo convierte (Android de serie)Atenuación en la banda de rechazo (diseño)
1LOWInterpolación lineal entre las dos muestras vecinas; el método más ligero. Se usa en Android 4.4 cuando no está definidoSin filtro específico
2MEDInterpolación cúbica sobre varias muestras vecinasSin filtro específico
3HIGHUsa un filtro sincNo se indica en el código fuente
4VERY_HIGHUsa un filtro más largo que HIGH. Los coeficientes se cargan desde un componente del móvil (libaudio-resampler.so); sin él, igual que HIGHNo se indica en el código fuente
5DYN_LOWConstruye un filtro sobre la marcha según la relación de conversión80 dB
6DYN_MEDIgual que el anterior, con un filtro más largo que DYN_LOW84 dB
7DYN_HIGHIgual que el anterior, con el filtro más largo98 dB
Sin definir—DYN_MED en Android 5 y posteriores (LOW en Android 4.4). Baja al siguiente nivel inferior cuando hay muchos en uso a la vez84 dB
reTONE—Diseñado con independencia del ajuste del móvil. Plano hasta 20 kHz (el objetivo de atenuación depende del formato de salida)100 dB (salida de 16 bit)
120 dB (salida en coma flotante)

El ajuste se llama af.resampler.quality. La tabla se basa en el código fuente de Android de serie para Android 13 (las entradas de Android 4.4 se basan en el código fuente de Android 4.4), y puede no ser válida si el fabricante lo ha modificado. Todas las cifras de "Atenuación en la banda de rechazo (diseño)" son objetivos de diseño del filtro. reTONE está diseñado para que el valor calculado supere el objetivo en todas las conversiones.

Cuando la conversión la hace reTONE, se usa el remuestreo de reTONE con independencia de este ajuste.

Volumen del DAC USB

Hay tres puntos en los que se puede bajar el volumen. Cuál se usa depende de cómo está construido el DAC y de lo que elija al conectarlo por primera vez.

Dentro de reTONEDigitalVolumen digital del DACControlado por USBEl propio DACRueda o botones
DAC con control de volumen por USBSe envía al máximoSe mueve con las teclas de volumen—
Cuando se elige “reTONE adjusts”Se mueve con las teclas de volumenMáximo—
DAC sin élSe mueve con las teclas de volumen——
Si se elige “On the DAC”Se envía al máximoMáximoSe ajusta en el DAC
En detalle

Hay tres puntos en los que bajar el volumen: ① dentro de reTONE, aplicado a los datos (digital), ② el volumen digital interno del DAC, controlado por USB, y ③ la rueda o los botones del propio DAC. Cuál se usa depende del método de ajuste que elija al conectar el DAC por primera vez y de si el DAC admite el control de volumen por USB.

② Volumen por USB: USB Audio Class tiene un mecanismo de volumen llamado Feature Unit, y GET RANGE lee su mínimo, su máximo y el tamaño del paso (en unidades de 1/256 dB). reTONE convierte su volumen (una única ganancia que combina los pasos de Android y el volumen fino) a dB. Si queda dentro de este rango, reTONE lo envía al DAC y mantiene su propia salida al máximo. Solo cuando el volumen baja por debajo del rango se aplica la diferencia al PCM con ①. 0 es silencio.

① Dentro de reTONE: En los DAC sin volumen de Feature Unit, y en los DAC configurados en “reTONE adjusts”, reTONE aplica el volumen a los datos antes de enviarlos, suavizando cada cambio durante unos 5 ms. Se aplica justo antes de enviar, así que las teclas de volumen responden de inmediato.

③ El propio DAC: Por USB no se puede saber si el DAC tiene su propio control de volumen. Por eso, la primera vez que conecta un DAC, reTONE le pregunta una vez cómo debe ajustarse el volumen del DAC, con tres opciones: “On the DAC itself”, “Volume keys (DAC adjusts)” y “Volume keys (reTONE adjusts)”. Algunos DAC indican que aceptaron una orden de volumen sin cambiar realmente el volumen; en esos casos, elegir “reTONE adjusts” fija el volumen del DAC al máximo y lo baja con ①. Si elige “On the DAC”, tanto ② como ① se fijan al máximo y, al pulsar las teclas de volumen, no cambia nada (un mensaje se lo indica). En los DAC con control de volumen analógico, evitar la atenuación digital permite sacar el máximo partido al DAC. La elección se recuerda para cada modelo de DAC (ID de fabricante e ID de producto USB) y se puede cambiar con el ajuste “DAC volume”.

Cuando se elige “On the DAC”, o cuando se usa el volumen del DAC (dentro del rango de volumen del DAC), las pistas a frecuencias que admite el DAC se envían sin cambiar los datos. Solo cuando ajusta el volumen por debajo del rango del DAC, reTONE aplica el resto. En ese caso, si la pista es sin pérdida (incluido el DSD nativo) y su profundidad de bits cabe en la del DAC, la pantalla de la ruta de la señal muestra BIT-PERFECT (las pistas de 32 bit enteras, solo cuando siguen la ruta de enteros). Lo que ocurre dentro del DAC no se puede comprobar.

DSD nativo

Pistas DSF/DFF
El DAC admite DSD nativo
y su volumen se puede controlar por USB
y el volumen no está en “reTONE adjusts”
y “Sending DSD” está en “Send as DSD”
SíSe envía como DSDp. ej., DSD64 → USB AUDIO • DSD64 DIRECT
NoSe convierte a PCMPCM a 88.2 kHz para DSD64

reTONE no puede cambiar el volumen del propio DSD, así que el DAC debe permitir el control de volumen. Si las pistas DSD se cortan, elija “Convert to PCM” en el ajuste “Sending DSD”. DoP no es compatible.

En detalle

Las pistas DSF y DFF se envían como DSD, sin conversión a PCM, solo cuando el DAC admite DSD nativo y su volumen se puede controlar por USB (y el DAC no está en “reTONE adjusts”). reTONE no puede cambiar el volumen del propio DSD, por lo que se necesita el control de volumen en el lado del DAC. La pantalla del reproductor muestra algo como “DSD64 → USB AUDIO • DSD64 DIRECT”.

Se envía de la siguiente manera.

  • El DSD nativo funciona con los DAC cuyos descriptores USB incluyen un ajuste alternativo para datos sin procesar (TYPE I RAW DATA).
  • Los bits DSD se empaquetan de 4 bytes en 4 bytes en una palabra de 32 bit por canal, con el bit más antiguo arriba. DSF almacena los bits con el LSB primero, por lo que el orden de bits de cada byte se invierte antes de empaquetar. Las palabras se envían en big-endian (la misma suposición que DSD_U32_BE de Linux). Este reempaquetado se hace en C, y el búfer circular de transferencia contiene unos 500 ms.
  • El reloj del DAC se fija en “frecuencia DSD ÷ 32” (88.2 kHz para DSD64, 176.4 kHz para DSD128).
  • Los silencios, las pausas y los finales de pista se rellenan con el patrón de silencio DSD 0x69.

Este orden de bytes y de bits se verificó con una reproducción correcta en el DAC que probamos. Todavía no se ha comprobado con otros DAC, y DoP (DSD over PCM) no es compatible. Tampoco se pueden leer los DFF con compresión DST.

Sending DSD (ajuste): “Sending DSD” aparece en “Sound” en los ajustes solo mientras hay conectado un DAC que puede usar DSD nativo. El valor predeterminado es “Send as DSD” (el DAC reproduce DSD directamente), y puede cambiar a “Convert to PCM” (reTONE lo convierte a PCM). Si las pistas DSD se cortan, o si prefiere la reproducción en PCM, elija convertir a PCM. La elección se recuerda para cada modelo de DAC, y al cambiarla se vuelve a abrir la pista actual en la misma posición. Encontramos un DAC que se cortaba brevemente con grabaciones DSD cuya modulación superaba el nivel de referencia del 50%. La transferencia era normal, así que parece deberse al diseño del DAC. Convertir a PCM evita los cortes también en ese caso.

Conversión de DSD → PCM: cuando no se usa DSD nativo (con DAC que no cumplen las condiciones, cuando se elige “Convert to PCM”, y para la salida a Bluetooth, auriculares o el altavoz), reTONE convierte DSD a PCM en dos etapas.

  • Etapa 1: el flujo de bits DSD se diezma por un factor de 32, 64, etc., a PCM de unos 88.2 kHz o más (DSD64 por 32 a 88.2 kHz, DSD128 por 64 a 88.2 kHz). El filtro es un FIR con ventana de Kaiser. La banda de paso llega hasta el mayor valor entre 20 kHz y una cuarta parte de la frecuencia de salida, la banda de rechazo empieza en “frecuencia de salida − banda de paso”, y la atenuación es de 100 dB para la salida de 16 bit y de 110 dB para coma flotante y USB. El número de coeficientes se determina con la fórmula de la ventana de Kaiser. El cálculo usa consultas a tablas de 16 bit, y las tablas se construyen una vez por configuración y se reutilizan. En las mediciones, la respuesta a 20 kHz fue de 0.000 dB, y el aliasing por debajo de 20 kHz fue de −101 dB (diseño de 100 dB) / −110 a −117 dB (diseño de 110 dB).
  • Etapa 2: si es necesario, el mismo remuestreador descrito en la sección del filtro convierte una vez a la frecuencia de salida del móvil (como 44.1 kHz o 48 kHz en la salida integrada).
  • Nivel: se convierte de modo que 0 dB de SACD (modulación del 50%) pase a ser −6 dBFS (una convención habitual; desde 0.69.0. Las versiones anteriores usaban −12 dBFS y sonaban 6 dB más bajas).

Al enviar PCM a un DAC USB, reTONE envía tal cual PCM a “frecuencia DSD ÷ 32” (88.2 kHz para DSD64, 176.4 kHz para DSD128, 352.8 kHz para DSD256), sin la conversión de la etapa 2, si el DAC lo admite. Como DSD se convierte a PCM, en este caso no se muestra DIRECT.

Carga

Uso de CPU de reTONE respecto a un núcleo en nuestro móvil de pruebas de 2012 (Android 4.1, 2 núcleos).

Redibujado de la pantalla del reproductor (durante la reproducción real)Aprox. 2%
Salida del audio de CD tal cual (a frecuencia de reloj máxima)Aprox. 2%
Conversión de 24 bit/192 kHz a 44.1 kHz (a frecuencia de reloj máxima)Aprox. 10%
0%50%100%

“Redibujado de la pantalla del reproductor” se midió durante la reproducción real y no incluye la decodificación. Los otros dos proceden de ejecutar los mismos cálculos que el motor de reTONE a frecuencia de reloj máxima, convertidos a un porcentaje del tiempo real. Durante la reproducción real el móvil baja su frecuencia de reloj, así que las cifras que muestra el móvil parecen entre 2 y 3 veces más altas.

En detalle

reTONE se propone “no hacer nada cuando está detenido” y “no dibujar nada mientras reproduce con la pantalla apagada”. El trabajo periódico solo se ejecuta durante la reproducción: cada segundo con la pantalla encendida y cada 5 segundos con ella apagada, y la barra de progreso de la pantalla del reproductor solo se redibuja a sí misma cada 250 ms. El reloj y la batería se actualizan mediante notificaciones del sistema, sin sondeo.

Uso de CPU de reTONE respecto a un núcleo en nuestro móvil de pruebas de 2012 (Android 4.1, Cortex-A9 de 2 núcleos).

  • Detenido: 0%.
  • Reproduciendo con la pantalla apagada: el dibujado se detiene. Las pistas que se reproducen con la reproducción estándar de Android usan casi un 0%, mientras que las que reproduce el motor de reTONE (FLAC, WAV y otros en Android 4.x) añaden la carga de decodificación y conversión que se indica a continuación.
  • Reproduciendo con la pantalla del reproductor visible: aprox. 2% (medido durante la reproducción real; sobre todo el redibujado de la barra de progreso, sin incluir la decodificación).
  • El motor de reTONE emitiendo audio de CD (16 bit/44.1 kHz) tal cual a 44.1 kHz: aprox. 2%. Convirtiéndolo a 48 kHz para la salida: aprox. 4%.
  • Conversión de 24 bit/96 kHz a 48 kHz: aprox. 5%. A 44.1 kHz: aprox. 7%.
  • Conversión de 24 bit/192 kHz a 44.1 kHz: de aprox. 10% (solo el cálculo) a aprox. 15% (estimación aproximada de la carga total de reproducción, escalada a la frecuencia de reloj máxima).
  • Envío de 24 bit/192 kHz a un DAC USB sin conversión: aprox. 20% (medido durante la reproducción real, con la pantalla encendida, incluido el hilo de transferencia).

Las cifras del motor desde “audio de CD” hasta “24 bit/192 kHz” proceden de ejecutar los mismos cálculos a toda velocidad a frecuencia de reloj máxima y convertirlos a un porcentaje del tiempo real. Durante la reproducción real el móvil baja su frecuencia de reloj a entre 200 MHz y 1 GHz, así que las cifras que muestra el móvil parecen entre 2 y 3 veces más altas (20–29% para 24 bit/192 kHz). La forma de escribir el código también marca una gran diferencia: la implementación actual en C y NEON tenía entre un tercio y un quinto de la carga de un prototipo anterior escrito en Java.

En la conversión de DSD a PCM, con ese móvil de 2012 y un DAC con batería, convertir DSD64 a PCM de 88.2 kHz y enviarlo por USB supuso aprox. un 11.8% para la conversión y aprox. un 5.8% para la transferencia USB (a aprox. 1 GHz). Cuando DSD64 se reprodujo por la salida integrada (48 kHz) en un móvil con Android 4.4, el hilo de decodificación usó un 23.8%, pero el móvil mantuvo su reloj en el mínimo de 300 MHz, así que escalar simplemente por la relación de frecuencias da aprox. un 3% a frecuencia de reloj máxima.

En los móviles que probamos, la carga con la pantalla encendida dependía más de la resolución de la pantalla que de la velocidad de la CPU (Android 4.x parece redibujar toda la pantalla incluso en actualizaciones pequeñas). Un móvil de 1080 × 1920 usó aprox. un 4% en la pantalla del reproductor, y uno de 1440 × 3120 con Android 11 usó aprox. un 8.5% (respecto a uno de sus 8 núcleos; aprox. un 1% del móvil entero). Los móviles antiguos tienen pantallas pequeñas y los de alta resolución tienen más potencia de proceso, así que por ahora la frecuencia de redibujado es la misma en todos los móviles.

Dispositivos probados

MóvilAndroidComprobado
WalkmanSony serie NW-Z10004.0.4Arranque, pantallas
PRADA phone by LGLG L-02D4.0.4Arranque, biblioteca, reproducción de FLAC de 24 bit/96 kHz
MEDIAS XNEC N-07D4.0.4Arranque
MEDIAS ESNEC N-05D4.0.4Arranque
Xperia PSony LT22i4.1.2Funciones principales, uso práctico
Xperia goSony ST27i4.1.2Funciones principales (pantalla de 320×480), reproducción DSD, DAC USB (DAC con batería)
AQUOS PHONE ZETASHARP SH-02E4.1.2Funciones principales, uso práctico
Xperia VLSony SOL214.1.2Inicio, biblioteca, reproducción (ALAC, de-énfasis, ajuste fino del volumen)
Acoustic Research AR-M204.3Arranque, reproducción de FLAC de 24 bit/96 kHz
AQUOS CRYSTALSHARP 305SH4.4.2Funciones principales, uso práctico
URBANO L03KYOCERA KYY234.4.2Funciones principales, uso práctico
Raku-Raku SmartphoneFUJITSU F-06F4.4.2Arranque, biblioteca, reproducción de FLAC de 24 bit/96 kHz (reTONE no se puede establecer como pantalla de inicio)
KYOCERA KCP01K4.4.4Arranque
Xperia Z4 TabletSony SOT315.0.2Funciones principales, uso práctico
VAIO Phone AVAIO VPA0516.0.1Arranque, reproducción
Nexus 6Motorola Nexus 67.1.1Arranque
Xperia XA1 PlusSony G32268.0Inicio, biblioteca, reproducción de FLAC de 24 bits/192 kHz, Sound settings (abre los ajustes de sonido de Sony)
Galaxy S7 edgeSamsung SC-02H8.0Arranque, biblioteca, reproducción
Galaxy S8Samsung SC-02J9Funciones principales, uso práctico
Xperia XZ1Sony G83419Funciones principales, uso práctico
Android One X5LG X5-LG11Funciones principales, uso práctico
Galaxy A41Samsung SC-41A12Arranque, biblioteca, reproducción
Pixel 3 XLGoogle Pixel 3 XL12Arranque, biblioteca, reproducción, controles en las notificaciones, control remoto
Xperia 5 IVSony A204SO14Instalación desde Google Play, reproducción, indicación de salida directa
Xiaomi 12S UltraXiaomi 2203121C15Funciones principales, uso práctico
Galaxy Z Fold5 Prueba de campoSamsung Galaxy Z Fold516Arranque, diseño para plegables
Pixel 10a Prueba de campoGoogle Pixel 10a17Arranque
Pixel 11 Pro Fold Prueba de campoGoogle Pixel 11 Pro Fold17Arranque, diseño para plegables

Prueba de campo Resultados de voluntarios que prueban reTONE en sus propios móviles.

Salida directa a DAC USB: combinaciones probadas

MóvilDAC USBResultado
Galaxy S8Android 9Hidizs S9 Proalimentado por busFunciona. PCM (el DAC indica 44.1–768 kHz; probado con pistas de 44.1–192 kHz), DSD nativo, volumen del DAC
Galaxy S8Android 9OPPO HA-2con bateríaFunciona
AQUOS PHONE ZETA SH-02EAndroid 4.1OPPO HA-2con bateríaFunciona. 24 bit/96 kHz reproducido sin remuestreo
AQUOS PHONE ZETA SH-02EAndroid 4.1Hidizs S9 Proalimentado por busFunciona. Sin desviaciones de velocidad ni cortes
Android One X5Android 11Hidizs S9 Proalimentado por busFunciona
Xperia PAndroid 4.1OPPO HA-2con bateríaFunciona. 24 bit/192 kHz y 96 kHz reproducidos sin remuestreo
Xperia PAndroid 4.1Hidizs S9 Proalimentado por busNo se reconoce. El móvil no puede suministrar suficiente energía
URBANO L03Android 4.4OPPO HA-2con bateríaNo funciona. Android indica compatibilidad con host USB, pero el móvil no actúa como host por OTG
AQUOS CRYSTAL 305SHAndroid 4.4—No funciona. Sin compatibilidad con host USB
Xperia goAndroid 4.1OPPO HA-2con bateríaFunciona
Xperia goAndroid 4.1Hidizs S9 Proalimentado por busNo se reconoce. El móvil no puede suministrar suficiente energía
Galaxy A41Android 12Hidizs S9 Proalimentado por busFunciona. Sin cortes, incluso al cambiar entre 24 bit/192 kHz y 44.1 kHz
Xperia XA1 PlusAndroid 8.0Hidizs S9 Proalimentado por busFunciona

DAC USB y móviles: por qué varían los resultados

Cómo se comporta la salida directa a DAC USB depende del móvil y del DAC. La parte del móvil que actúa como host USB (el controlador de host) varía según la época y el fabricante, y esas diferencias se notan sobre todo en las transferencias isócronas, en las que el audio tiene que fluir a un ritmo constante y sin huecos. Los DAC también difieren: cada cuánto reciben audio, cómo comunican la frecuencia que quieren y de dónde obtienen la energía. reTONE no se ramifica según el modelo de móvil. Mide lo que ocurre realmente al conectar y se adapta. En la tabla siguiente, musb, EHCI y xHCI se probaron en móviles reales; los demás se basan en documentación publicada.

Familia de controladorProblemas habitualesQué hace reTONE
musbAlgunos móviles de 2010–2013, aproximadamente (TI, ST-Ericsson, MediaTek antiguos)Los huecos entre transferencias dejan al DAC ligeramente corto de datos (chasquidos, cortes)Mide el intervalo real de retorno y empaqueta más datos para compensar el déficit
EHCIQualcomm antiguos, Tegra, algunos ExynosLas finalizaciones vuelven por lotes; si se retrasa, se omiten algunos datosJuzga según una media a largo plazo
DWC2Rockchip antiguos, algunas tabletas Kirin y AmlogicLos datos no alineados a 4 bytes pueden causar ruidoPrefiere formatos de 32 bit (4 bytes)
xHCICasi todos los móviles con USB-C (desde 2015, aproximadamente)Las finalizaciones vuelven por lotes; los retrasos provocan datos omitidosJuzga según una media a largo plazo y mantiene suficientes datos en cola por adelantado
MediaTek xHCIMóviles MediaTek recientesUna asignación estricta del ancho de banda puede rechazar frecuencias de muestreo altasLas frecuencias que se rechazan las convierte reTONE a la siguiente frecuencia inferior que acepta el DAC (desde la 0.92.68; todavía no hemos visto un rechazo en un móvil real)
  • Intervalo de servicio: la mayoría de los DAC reciben audio cada 0.125 ms; algunos cada 0.25 ms o 1 ms. reTONE dimensiona cada paquete en consecuencia.
  • Realimentación de frecuencia: la mayoría de los DAC indican al móvil a qué velocidad enviar (modo asíncrono), y el formato de ese informe varía según el dispositivo. reTONE detecta y se adapta automáticamente a la mayoría de estos formatos (0.88.0 y posteriores). Algunos no tienen realimentación y siguen la frecuencia del móvil (modo adaptativo). Todavía no se admiten algunos DAC asíncronos que indican la frecuencia mediante el flujo de grabación (realimentación implícita).
  • Alimentación: algunos DAC tienen su propia batería o fuente de alimentación; los DAC alimentados por bus funcionan solo con la energía del móvil y es posible que no se detecten en móviles antiguos que no pueden suministrar suficiente. Incluso un DAC con batería puede cargarse desde el móvil y agotarlo antes.
  • DSD: la mayoría de los DAC que aceptan DSD nativo usan la misma disposición (32 bit, big-endian), pero hay excepciones.

Ajustes de sonido del fabricante

“Sound” en el menú inferior abre la pantalla de ajustes de sonido del fabricante si el móvil tiene una, o los ajustes de sonido de Android si no. Puede elegir qué pantalla abre con el ajuste “Sound settings”.

MóvilPantalla que se abre
SHARP AQUOS CRYSTAL 305SHHarman Clari-Fi/LiveStage
KYOCERA URBANO L03 (KYY23)Dolby
Sony Xperia PEfectos de sonido (Equalizer, ClearBass, VPT, xLOUD y otros)
LG Android One X5Calidad de sonido y efectos (Hi-Fi Quad DAC, filtro digital, DTS:X y otros)
Samsung Galaxy S8SoundAlive
Sony Xperia XA1 PlusAjustes de sonido de Sony

Si los ajustes del fabricante se aplican a la reproducción de reTONE depende del móvil.

Lo que no hace

  • No hay ecualizador, fundido cruzado ni visualización de la forma de onda. reTONE da prioridad a la ligereza y no aplica efectos al sonido. Sí está disponible ReplayGain (igualar el volumen con valores guardados en las etiquetas): viene desactivado de forma predeterminada, no reescribe sus archivos y solo baja el volumen de reproducción.
  • reTONE no reproduce streaming por sí mismo. Su papel termina al abrir la aplicación de streaming, y la reproducción y su calidad de sonido dependen de esa aplicación y del móvil.
  • De forma predeterminada, reTONE no usa la red en absoluto. Solo se conecta si activa “Network features” en los ajustes, y aun así solo cuando usted se lo pide o para las comprobaciones que haya elegido. Mientras el uso compartido está activado, también acepta conexiones de los móviles que haya autorizado. No recopila ningún dato sobre usted.
  • No se admiten los controles desde Android Auto ni Wear OS. (Los controles de reproducción en las notificaciones, en la pantalla de bloqueo de Android y desde dispositivos Bluetooth se admiten desde 0.87.0.)
  • El motor de reTONE no puede reproducir DFF con compresión DST, APE ni WMA Lossless, y no hay planes de admitirlos. Conviértalos a FLAC o a un formato similar.
  • No funciona en Android 3.x ni en versiones anteriores.
  • En los móviles sin función de host USB (OTG), la salida directa a DAC USB no está disponible. El ajuste “USB DAC direct output” aparece atenuado, con el mensaje “This device does not support USB devices.”
  • Las combinaciones de móvil y DAC probadas con la salida directa a DAC USB son limitadas. No hemos comprobado si funcionan otros móviles o DAC. Algunos móviles indican a Android que son compatibles con host USB, pero no pueden actuar como host por OTG. Las combinaciones probadas figuran en “Salida directa a DAC USB: combinaciones probadas”.
  • DoP no es compatible. El DSD nativo requiere un DAC compatible con DSD nativo que permita el control de volumen por USB. Con otros DAC, DSD se convierte a PCM antes de enviarse.
  • Mientras se usa la salida directa a DAC USB, el sonido de otras aplicaciones no sale por el DAC USB. Sale por el altavoz del móvil.
  • Con el altavoz integrado o la toma de auriculares, no podemos garantizar una salida bit-perfect, porque las aplicaciones no tienen forma de comprobar cómo emite realmente el audio el móvil. Con un DAC USB, BIT-PERFECT solo se muestra cuando se cumplen las condiciones.
  • reTONE no cambia la ruta de audio hacia el DAC integrado del móvil (por ejemplo, evitar la conversión de frecuencia de muestreo o forzar la reproducción con offload), porque eso requiere root o la firma del fabricante del móvil.
  • Con la pantalla apagada, no se admite mantener pulsada una tecla de volumen para un cambio continuo ni usar las teclas de volumen para saltar pistas, porque Android no pasa las teclas a las aplicaciones.
  • No se admite editar etiquetas ni eliminar o mover archivos.
  • En Android 10 y posteriores, los FLAC, MP3 y otras pistas de una memoria USB no aparecen en la biblioteca, porque Android no las lista.
  • No se admiten algunos DAC USB asíncronos que indican la frecuencia mediante el flujo de grabación (realimentación implícita). El audio puede cortarse cada pocas decenas de segundos o cada pocos minutos.
  • En Android 4.0 hay una breve pausa entre las pistas de formatos que reproduce Android, como MP3 y AAC (los formatos que reproduce el motor de reTONE no tienen pausa ni siquiera en 4.0).