Hier hat reTONE angefangen. Dieser erste Beitrag erzählt deshalb ein wenig davon, wie alles begann, und dann von den ersten Dingen, die schiefgingen.
Wie alles begann
Eine Zeit lang hatte ich an dem AR-M20 herumgebastelt, einem alten digitalen Audioplayer. Ich liebe sein Design, aber das Android darin ist so alt, dass ich nie so recht wusste, was ich damit anfangen sollte. Nichts Bestimmtes im Sinn, nur das Gefühl, dass solche Geräte es verdient hätten, wieder benutzt zu werden.
Dann kam ich in einen Laden für gebrauchte Elektronik, sah alte Smartphones für fast nichts und kaufte spontan eine Handvoll, je etwa 1.000 Yen (rund sieben Dollar): ein Sharp AQUOS CRYSTAL 305SH, ein Kyocera URBANO, ein Nexus 6, ein iPhone 5s und einen iPod nano. Für das iPhone und den iPod kann reTONE nichts tun, aber das ist eine andere Geschichte. Als ich sie gleich ausprobierte, stellten sich die Android-Geräte als kaum mehr als Briefbeschwerer heraus. Die meisten Apps unterstützen so altes Android nicht mehr, also konnte man sie nur anschauen. Bezahlt hatte ich sie aber schon. Also fing ich an, etwas für sie zu bauen. Das ist ehrlich gesagt die ganze Entstehungsgeschichte.


Ich baue reTONE vom ersten Tag an mit KI. Angefangen habe ich mit ChatGPT: Ich beschrieb, was ich wollte, und die Rohfassung stand überraschend schnell: ein Startbildschirm, ein Musikplayer, ein Sperrbildschirm. Das Gesamtsystem entstand in dieser Phase. Als es dann um die Feinheiten ging – das Design, Wünsche wie „morgen soll dieser Teil so funktionieren“ –, war eine andere KI, Claude, darin einfach besser, also bin ich gewechselt. Seitdem erledigt Claude den Großteil der Arbeit, und ChatGPT hilft ab und zu noch aus.
Um also klarzustellen, wer was macht: Die KI schreibt den größten Teil des Codes. Der Rest bin ich. Festlegen, was reTONE sein soll und wie es aufgebaut wird, und wo beim Klang Beharrlichkeit gefragt ist: kein EQ und keine Effekte obendrauf, die Ausgaberate anzeigen, die das Telefon tatsächlich meldet, nie „bit-perfekt“ behaupten, wenn eine App das nicht prüfen kann, und alles so leicht halten, dass es auf einem Telefon von 2012 läuft. Dazu kommt das Ausprobieren, und das ist der größte Teil der Arbeit. Jeder Build kommt auf echte alte Telefone, ich höre zu, merke, wenn etwas nicht stimmt, und wir gehen hin und her, bis es passt. Diese Telefone stehen auf meinem Schreibtisch, nicht auf dem der KI.
Der Player, den es zweimal gab (0.24.1)
Auf einem Telefon mit Android 4.4 ergab das Öffnen von reTONE über die HOME-Taste und das Öffnen über das Symbol zwei getrennte Kopien von reTONE. Die App war so eingerichtet, dass das nicht passieren sollte, und auf diesem Telefon passierte es trotzdem. So konnte es sein, dass man die eine Kopie bediente, während tatsächlich die andere spielte.
reTONE merkt sich jetzt die eine Kopie, die läuft, und die über HOME geöffnete übernimmt die Wiedergabe. Bei der Gelegenheit führt die HOME-Taste jetzt von überall zurück zum Wiedergabebildschirm.
Lautstärke in 1-dB-Schritten (0.31–0.32)
Android bietet für Musik 15 Lautstärkestufen, und jede Stufe ist ein großer Sprung. Wer leise hört, findet oft keine Stufe, die genau passt.
reTONE kombiniert die beiden Lautstärkeregler, die es ohne root verändern darf. Die 15 Stufen von Android übernehmen den groben Teil, und die eigene Lautstärke der App füllt die Lücken dazwischen, was etwa 1 dB pro Tastendruck ergibt. Beim Lauterstellen senkt reTONE zuerst die eigene Lautstärke und erhöht dann die von Android, damit es nie kurz lauter wird. Null bedeutet immer Stille.
Einen Haken gibt es. Manche Telefone ignorieren die eigene Lautstärke der App vollständig, und dort bleibt es bei 15 Stufen. Außerdem habe ich einmal versucht, diese Feinregelung auch dann anzuwenden, wenn andere Bildschirme im Vordergrund waren. Android verstellte zuerst seine eigene Stufe und zeigte seinen eigenen Regler, sodass die Lautstärke hörbar absackte und sich dann korrigierte. Am nächsten Tag habe ich das wieder herausgenommen.
Woher die Direktausgabe kam (0.46.0)
Gegen Ende des Monats prüfte ich auf dem Android One X5, welche Titel die Standardwiedergabe von Android auf dem Weg nach draußen umwandelt. Nur 16-Bit-Titel mit 48 kHz oder weniger wurden auf 48 kHz umgerechnet, also genau CD-Audio. Dateien mit höherer Auflösung gingen bereits unverändert hinaus.
Also versuchten wir, 16-Bit-Titel zu dekodieren und als 24 Bit an Android zurückzugeben, ohne den Ton selbst zu verändern. Sie kamen mit 44.1 kHz heraus, ohne Umwandlung. Android 10 hat eine Möglichkeit eingeführt, mit der Apps fragen können, ob ein bestimmtes Format ohne Umwandlung ausgegeben werden kann, und die Antworten stimmten jedes Mal mit meinen Messungen überein. Damit konnte reTONE anhand dessen entscheiden, was das Telefon meldet, statt danach, um welches Telefon es sich handelt.
Daraus wurde die Direktausgabe von reTONE für Telefone mit Android 10 und neuer. Die angezeigte Kennzeichnung DIRECT beruht auf den Angaben von Android, da eine App den tatsächlichen Weg des Tons nicht sehen kann.
Weitere Änderungen
- Headset-Tasten: einmal drücken für Wiedergabe oder Pause, zweimal zum Vorspringen, dreimal zum Zurückspringen.
- Die Suchleiste lässt sich ab der ersten Berührung ziehen und springt erst beim Loslassen.
- Die Wiedergabe pausiert immer, wenn Kopfhörer, Bluetooth oder ein DAC getrennt werden.
- Wiederholen und Zufallswiedergabe. (Die Zufallstaste hatte bis dahin nichts getan.)
- Lückenlose Wiedergabe.
- Unten im Wiedergabebildschirm stehen die Ausgabe und ihre Abtastrate.
- Unterstützung für Android 4.1.
- Sortierung und ein A–Z-Index in der Bibliothek.