reTONE
開発中・近日公開無料 ・ Android 4.0 以降

2026 年 9 月

reTONE 開発記録

reTONE が始まったのが 9 月なので、最初の記録は、どう始まったかの話と、そのあと最初につまずいたいくつかのことです。

どう始まったか

しばらく前から、AR-M20 という古いデジタルオーディオプレーヤーを、どうにか使えないかといじっていました。デザインは好きなのに、中の Android が古くて、使いあぐねていました。具体的な目標があったわけではなく、こういうものはもう一度使われていいはずだ、という気持ちだけでした。

そんなとき、ハードオフで古いスマートフォンがほとんどタダみたいな値段で売られているのを見て、何台かまとめて衝動買いしました。1 台だいたい 1,000 円で、シャープの AQUOS CRYSTAL 305SH、京セラの URBANO、Nexus 6、それに iPhone 5s と iPod nano です。iPhone と iPod は reTONE ではどうにもならないので、それはまた別の話です。さっそく使ってみようとしたら、Android のほうはどれも、ほとんど使い道がありませんでした。古い Android に対応しているアプリはもうほとんどなく、眺める以外にやることがありません。でも、もう買ってしまっています。なので、これらの端末のために何か作り始めました。始まりは、正直これで全部です。

買ってすぐ、帰りの車の中で撮った 1 枚。「買っちゃった」と、この写真を有志に送りました
買ってすぐ、帰りの車の中で撮った 1 枚。「買っちゃった」と、この写真を有志に送りました
買ったその日、さっそく 305SH を使ってみようとしたら、Play ストアがサーバーエラー
買ったその日、さっそく 305SH を使ってみようとしたら、Play ストアがサーバーエラー

reTONE は、最初から AI と一緒に作っています。始めたときに使っていたのは ChatGPT で、やりたいことを伝えたら、ホーム画面、音楽プレーヤー、ロック画面という大まかな形が、思っていたよりすんなり組み上がりました。全体の仕組みは、このころに組まれたものです。ただ、細かいところ、つまりデザインや「明日ここをこうしたい」という頼みごとになると、Claude という別の AI のほうが明らかに上手だったので、そちらに移りました。それ以降は、主に Claude と作っています。ChatGPT にも、今でもときどき手伝ってもらっています。

役割をはっきりさせておくと、コードの多くを書いているのは AI です。それ以外は私がやっています。reTONE をどんなものにして、どう組み立てるか。音について、どこにこだわるか。上から EQ や効果をかけない、端末が実際に返す出力のレートを表示する、アプリから確かめられないのにビットパーフェクトとは言わない、2012 年の端末でも軽く動かす、といったことです。それから、作業のほとんどを占める試行錯誤です。新しいバージョンはすべて実際の古いスマートフォンに入れて、聴いて、おかしい所に気づいて、直るまで何度もやり取りします。その端末が並んでいるのは、AI の机ではなく、私の机です。

2 つあったプレーヤー(0.24.1)

Android 4.4 の端末で、HOME ボタンから開いた reTONE と、アイコンから開いた reTONE が、別々の 2 つの reTONE になっていました。そうならないように作ってあったのに、この端末ではなってしまいました。なので、片方を操作しているのに、鳴っているのはもう片方、ということが起こりえました。

今は、生きている reTONE を 1 つだけ覚えておき、HOME から開いたほうが再生を引き継ぎます。ついでに、どの画面からでも HOME を押せば再生画面に戻るようにしました。

1 dB 刻みの音量(0.31〜0.32)

Android の音楽の音量は 15 段階で、1 段の差が大きいです。小さな音で聴いていると、ちょうどいい段がないことがよくあります。

reTONE は、root なしで触れる 2 つの音量を組み合わせています。大まかな段は Android の 15 段階が受け持ち、その間をアプリ側の音量が埋めるので、1 回押すごとにおよそ 1 dB 変わります。上げるときは、reTONE の側を先に下げてから Android の段を上げるので、一瞬だけ大きくなることはありません。0 は必ず無音です。

ひとつ問題があります。アプリ側の音量をまったく無視する端末があり、そういう端末では 15 段階に戻ります。それから、ほかの画面が前にいるときにも細かい音量を効かせようとしたことがありました。Android が先に自分の段を動かして、自分の音量の表示まで出すので、音量がいったん下がってから戻るのがはっきり聞こえました。翌日、元に戻しました。

ダイレクト出力が生まれたところ(0.46.0)

月の終わりに、Android One X5 で、Android の標準の再生がどの曲を変換して出しているのかを調べました。48 kHz に変換されていたのは、16 bit で 48 kHz 以下の曲だけ。つまり、ちょうど CD の音源です。それより細かい曲は、もともと変換されずに出ていました。

そこで、16 bit の曲をデコードして、音そのものは変えずに 24 bit として Android に渡し直してみました。すると、44.1 kHz のまま、変換されずに出てきました。Android 10 には、ある形式を変換せずに出せるかをアプリが問い合わせる方法があり、その答えは、私が測った結果といつも一致していました。なので reTONE は、端末の機種ではなく、端末の答えで判断できます。

これが、reTONE の「ダイレクト出力」(Android 10 以降の端末で使える機能)になりました。表示される「DIRECT」は Android の答えにもとづくもので、音が実際に通った経路は、アプリからは見えません。

そのほかの変更

  • イヤホンのボタン:1 回で再生/一時停止、2 回で次へ、3 回で前へ。
  • シークバーは触れた瞬間からドラッグでき、指を離したときだけシークします。
  • イヤホン、Bluetooth、DAC が外れたら、必ず一時停止します。
  • リピートとシャッフル。(シャッフルのボタンは、それまで何もしていませんでした。)
  • 曲間なしの再生。
  • 再生画面のいちばん下に、出力先とそのサンプルレートを表示。
  • Android 4.1 に対応。
  • ライブラリの並べ替えと、A〜Z の索引。

今月の 1 台AQUOS CRYSTAL 305SH

衝動買いしたうちの 1 台で、実は当時の憧れの 1 台です。2014 年に AQUOS CRYSTAL が出たとき、画面がとにかくきれいで、しかも三方の縁ぎりぎりまで画面が広がっていました。縁のない画面が当たり前になる何年も前の話で、すさまじく衝撃を受けました。欲しかったのですが、当時の私には少し高嶺の花で、なかなか買えませんでした。

その憧れの 1 台が、何年も経って、ほとんど捨て値で並んでいました。買ってしまいました。それ以来ずっと、私のいちばん使う検証機です。

Harman の音響効果が入っていて、reTONE の「サウンド」を押すと、その画面が直接開きます。癖もあります。音はすべて 48 kHz で鳴らす作りで、USB 機器もつなげないので、USB DAC は使えません。最初はアプリ側の音量を無視していて、細かい音量調節が効きませんでした。その後、FLAC や WAV を reTONE 自身で鳴らすようになってからは、効くようになりました。MP3 などは、まだ刻みがそろわないことがあります。それでも、イヤホン端子のある、小さくて見た目のいい音楽プレーヤーとして、手放せない 1 台です。

← 開発記録の一覧へ