Foi aqui que o reTONE começou, então este primeiro post fala um pouco de como tudo surgiu e depois das primeiras coisas que deram errado.
Como tudo começou
Fazia um tempo que eu vinha mexendo no AR-M20, um player de áudio digital antigo. Adoro o design, mas o Android dentro dele é tão antigo que eu nunca soube direito o que fazer com ele. Nada específico em mente, só a sensação de que coisas assim mereciam ser usadas de novo.
Então entrei em uma loja de eletrônicos usados, vi smartphones antigos sendo vendidos por quase nada e comprei um punhado por impulso, a uns 1.000 ienes (cerca de sete dólares) cada: um Sharp AQUOS CRYSTAL 305SH, um Kyocera URBANO, um Nexus 6, um iPhone 5s e um iPod nano. O reTONE não pode fazer nada pelo iPhone nem pelo iPod, mas isso é outra história. Quando testei logo em seguida, os Android não passavam de peso de papel. A maioria dos apps não oferece mais suporte a um Android tão antigo, então não havia nada a fazer com eles além de olhar. Mas eu já tinha pago. Então comecei a criar algo para eles. Sinceramente, essa é toda a história de origem.


Desenvolvo o reTONE com IA desde o primeiro dia. Comecei com o ChatGPT: eu descrevia o que queria, e a versão bruta ficou pronta surpreendentemente rápido: uma tela inicial, um player de música, uma tela de bloqueio. A estrutura geral foi construída nessa fase. Quando chegou a hora dos detalhes finos, porém — o design, os pedidos do tipo "amanhã quero que esta parte funcione assim" —, outra IA, o Claude, simplesmente se saía melhor, então mudei. Desde então, o Claude faz a maior parte do trabalho, com o ChatGPT ainda dando uma mão de vez em quando.
Então, para deixar claro quem faz o quê: a IA escreve a maior parte do código. O resto sou eu. Decidir o que o reTONE deve ser e como deve ser montado, e onde ser teimoso com o som: nada de EQ ou efeitos por cima, mostrar a taxa de saída que o celular realmente informa, nunca afirmar bit-perfect quando um app não consegue verificar e manter tudo leve o bastante para um celular de 2012. Depois vem a tentativa e erro, que é a maior parte do trabalho. Cada build vai para celulares antigos de verdade, eu escuto, percebo quando algo está errado, e vamos e voltamos até ficar certo. Esses celulares estão na minha mesa, não na da IA.
O player que existia duas vezes (0.24.1)
Em um celular com Android 4.4, abrir o reTONE pelo botão HOME e abri-lo pelo ícone gerava duas cópias separadas do reTONE. O app estava configurado para que isso não acontecesse e, nesse celular, aconteceu mesmo assim. Então você podia acabar controlando uma cópia enquanto a outra era a que estava tocando de fato.
Agora o reTONE acompanha qual é a cópia que está ativa, e a que é aberta pelo HOME assume a reprodução. Aproveitando, apertar HOME agora leva você de volta à tela de reprodução de qualquer lugar.
Volume em passos de 1 dB (0.31–0.32)
O Android oferece 15 níveis de volume para música, e cada nível é um salto grande. Quando você ouve baixinho, muitas vezes nenhum nível fica bom.
O reTONE combina os dois controles de volume que ele pode mexer sem root. Os 15 níveis do Android fazem a parte grossa, e o volume próprio do app preenche os intervalos, o que dá aproximadamente 1 dB por toque. Ao aumentar, o reTONE primeiro abaixa o próprio volume e depois sobe o do Android, para que nunca haja um pico momentâneo de volume. Zero sempre significa silêncio.
Há um porém. Alguns celulares ignoram completamente o volume próprio do app e, neles, você volta aos 15 níveis. Além disso, em certo momento tentei aplicar esse ajuste fino mesmo com outras telas na frente. O Android mexeu primeiro no próprio nível e mostrou seu próprio controle deslizante, então o volume caía de forma audível e depois se corrigia. Tirei isso no dia seguinte.
De onde veio a saída direta (0.46.0)
Perto do fim do mês, no Android One X5, verifiquei quais faixas a reprodução padrão do Android converte na saída. Só as faixas de 16 bits a 48 kHz ou menos eram convertidas para 48 kHz, ou seja, exatamente o áudio de CD. Os arquivos de resolução mais alta já saíam intactos.
Então tentamos decodificar as faixas de 16 bits e devolvê-las ao Android como 24 bits, com o áudio em si inalterado. Elas saíram a 44.1 kHz, sem conversão. O Android 10 trouxe uma forma de os apps perguntarem se um formato pode sair sem conversão, e as respostas bateram com o que medi todas as vezes. Isso significava que o reTONE podia decidir com base no que o celular informa, e não em qual é o celular.
Isso virou o recurso de saída direta do reTONE, para celulares com Android 10 ou posterior. O selo DIRECT que ele mostra se baseia no que o Android informa, já que um app não consegue ver o caminho real que o áudio percorre.
Outras mudanças
- Botões do fone: um toque para tocar ou pausar, dois para avançar, três para voltar.
- A barra de progresso pode ser arrastada desde o momento em que você a toca, e só busca a posição quando você solta.
- A reprodução sempre pausa quando fones, Bluetooth ou um DAC são desconectados.
- Repetir e ordem aleatória. (Até então, o botão de ordem aleatória não fazia nada.)
- Reprodução sem intervalos (gapless).
- A parte de baixo da tela de reprodução mostra a saída e sua taxa de amostragem.
- Suporte ao Android 4.1.
- Ordenação e um índice de A a Z na biblioteca.