reTONE
下載免費 · Android 4.0 以上

reTONE App 目前提供英文與日文版本,未來也預計支援其他語言。

09.2026 • 起點

起點

 目錄

這裡是 reTONE 的起點,所以第一篇文章會稍微談談它是怎麼開始的,然後是最初出了哪些問題。

起點

有好一陣子,我都在把玩一台老的數位音樂播放器 AR-M20。我很喜歡它的設計,但裡面的 Android 實在太舊,一直不知道該拿它怎麼辦。沒有什麼具體的打算,只是覺得這樣的東西,值得再被用起來。

後來我走進一家二手電器行,看到舊智慧型手機幾乎是賤價出售,一時衝動就買了好幾支,每支大約 1,000 日圓(約 7 美元):Sharp AQUOS CRYSTAL 305SH、Kyocera URBANO、Nexus 6、iPhone 5s,還有一台 iPod nano。iPhone 和 iPod 是 reTONE 幫不上忙的,那是另一個故事了。馬上試用之後,發現那幾支 Android 手機幾乎只能當紙鎮。大多數 App 早已不支援這麼舊的 Android,除了拿來看看,什麼也做不了。可是錢已經付了。於是我開始為它們做點東西。老實說,這就是整個起點。

買完之後在車上拍的,立刻傳給其中一位志願測試者:"我買了。"
買完之後在車上拍的,立刻傳給其中一位志願測試者:「我買了。」
當天就試用 305SH。Play 商店:"Server error."
當天就試用 305SH。Play 商店:「Server error.」

reTONE 從第一天起就是和 AI 一起做的。一開始用的是 ChatGPT:我描述想要的東西,粗略的版本出乎意料地很快就成形了,有主畫面、音樂播放器和鎖定畫面。整體的架構就是在這個階段建立的。不過到了細節的部分,像是設計,或是「明天想讓這裡改成這樣」之類的要求,另一個 AI,也就是 Claude,就是比較擅長,所以我轉了過去。從那以後,大部分的工作都由 Claude 完成,ChatGPT 偶爾還是會幫點忙。

所以,把分工講清楚:大部分的程式碼是 AI 寫的。其餘的是我。決定 reTONE 該是什麼、該怎麼組成,以及在聲音上要堅持什麼:不在上面疊加 EQ 或音效、顯示手機實際回報的輸出取樣率、在 App 無法驗證時絕不宣稱 bit-perfect,並讓一切輕巧到 2012 年的手機也能跑。再來是反覆試錯,這才是工作的大半。每個建置版本都會裝到真正的舊手機上,我聽、我發現哪裡不對,然後來回修改到對為止。那些手機放在我的桌上,不在 AI 那裡。

同時存在兩個的播放器(0.24.1)

在一支 Android 4.4 的手機上,從 HOME 鍵開啟 reTONE 和從圖示開啟 reTONE,會得到兩個各自獨立的 reTONE。App 的設定本來應該不會發生這種事,但在這支手機上偏偏發生了。結果你可能在操作其中一個,實際在播放的卻是另一個。

現在 reTONE 會記住仍在運作的那一個,並由從 HOME 開啟的那一個接手播放。順帶一提,現在不論在哪個畫面按下 HOME,都會回到播放畫面。

以 1 dB 為單位調整音量(0.31–0.32)

Android 給音樂的音量只有 15 段,每一段的落差都很大。小聲聆聽時,常常找不到剛剛好的那一段。

reTONE 把兩個不需 root 就能調整的音量結合起來。Android 的 15 段負責粗調,App 自己的音量則填補段與段之間,算下來每按一下大約是 1 dB。調大時,reTONE 會先降低自己的音量,再調高 Android 的音量,所以音量不會突然跳大。0 一定是無聲。

不過有個問題。有些手機完全忽略 App 自己的音量,在這些手機上就又回到 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 新增了一種方法,讓 App 能詢問某種格式能否不經轉換輸出,而它的回答每一次都和我的實測一致。也就是說,reTONE 可以依據手機回報的內容來判斷,而不是依據是哪一支手機。

這就成了 reTONE 的直接輸出功能,適用於 Android 10 以上的手機。它顯示的 DIRECT 標示是根據 Android 的回報,因為 App 看不到聲音實際走的路徑。

其他變更

  • 耳機線控按鈕:按一下播放或暫停,按兩下跳到下一首,按三下回到上一首。
  • 進度條從觸碰的那一刻起就能拖曳,放開手指時才會跳轉。
  • 拔除耳機、Bluetooth 或 DAC 時,一定會暫停播放。
  • 重複播放與隨機播放。(在這之前,隨機播放按鈕其實什麼都沒做。)
  • 無縫播放。
  • 播放畫面的最下方會顯示輸出裝置和取樣率。
  • 支援 Android 4.1。
  • 音樂庫的排序與 A–Z 索引。
本月手機

AQUOS CRYSTAL 305SH

這是那次衝動購物買下的其中一支,其實也是我多年來一直想要的。AQUOS CRYSTAL 在 2014 年推出時讓我驚豔不已。螢幕非常漂亮,而且三邊幾乎延伸到邊緣,比窄邊框手機普及還早了好幾年。我非常想要,但當時有點超出能力範圍,終究沒有買。

沒想到多年後,它就擺在那裡,幾乎是賤價出售。所以我買了。從那以後它一直是我的主力測試機。

它內建 Harman 的音效,reTONE 的 Sound 按鈕可以直接開啟。它也有些怪癖。所有聲音都以 48 kHz 運作,而且無法當 USB 主機,所以不能用 USB DAC。一開始它會忽略 App 自己的音量,所以細微音量調整完全沒作用。等 reTONE 開始自己播放 FLAC 和 WAV 後,就能正常運作了。MP3 之類的格式音量段數還是可能不平均。不過作為一台好看、小巧、有耳機孔的音樂播放器,它絕對值得留著。

reTONE 的開發也有賴使用者的支持。支持開發 ›