reTONE
下載免費 · Android 4.0 以上

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

10.01 → 10.17 • 0.88

USB DAC 與 NAS

 目錄

10 月主要做了兩件事:讓 reTONE 把音訊直接送往 USB DAC,以及播放 NAS 或另一支手機上的音樂。過程中也加入了 Bluetooth 遙控與 Android 4.0 支援。想看所有變更,請參閱「下載」頁面的版本紀錄。

在 Potafes Osaka 試水溫(10 月 3 日)

10 月 3 日,我在攜帶型音響展 Potafes Osaka 上展出了 reTONE,主要是當作一次實驗。它擺在我們攤位的一角,老實說,我以為不會有人過來。不過音響展上幾乎全是硬體,所以桌上一排莫名老舊的智慧型手機反而引人注目。很多人停下來問這是什麼。我說明自己正在試一個點子,有幾位說他們很想要。有些人純粹是喜歡老東西,也有人說自己家裡還放著舊手機。反應之熱烈讓我很意外。

每次做東西,我都希望它是任何人都能輕鬆使用的。只有一個人能用、或只存在一台的作品,從來不太吸引我。所以以某種形式發布,一直都在計畫之中。我不知道的是,究竟有沒有人真的想要這種東西。現場的反應給了我答案,而且是好的答案,就在那時,我決定把它好好準備到能正式發布。

Potafes Osaka 的 reTONE 展示角
Potafes Osaka 的 reTONE 展示角

USB DAC,一路跌跌撞撞(0.64–0.88)

把 USB DAC 插到舊的 Android 手機上,大多數時候什麼都不會發生。Android 直到 5.0 才把 USB DAC 當作標準的音訊輸出(在那之前由製造商自行決定),所以大部分舊手機根本不知道該拿它怎麼辦。較新的 Android 也不一定比較好:我測試的一支手機,在聲音送到 DAC 之前就默默把一切轉成 48 kHz/16-bit。

所以現在 reTONE 會略過 Android 的音訊系統,直接和 DAC 溝通。結果就是,執行 Android 4.1 的手機也能以曲目原本的取樣率把音樂送到 USB DAC。要我說的話,這是 reTONE 做到的最重要的事。

這一路可真是精彩。

第一次發出的聲音快了八倍。我按下播放,聽到的是花栗鼠在播報新聞。原來是每次傳輸塞進了錯誤的音訊量;修正之後就正常播放了。不過我還是笑了。

本月我最喜歡的 bug:一支舊手機以 0.941 倍的速度播放每一首曲目。這個數字剛好是 16/17。那支手機的 USB 硬體每傳 16 次就會多插進一個空格,所以 DAC 永遠只拿到所需音訊的 16/17。我加上了修正。接著另一支完全不同的手機,因為那個修正,開始以 1.14 倍的速度播放。沒錯,我得修正那個修正。

那支"完全不同的手機"就是這支 SH-02E。又是一支買完就在車上拍照、傳給同一位志願者的手機,對方回覆:"你到底為什麼一直買這些?"
那支「完全不同的手機」就是這支 SH-02E。又是一支買完就在車上拍照、傳給同一位志願者的手機,對方回覆:「你到底為什麼一直買這些?」

接著是一個怎麼也消不掉的爆音。我改了 reTONE,還在。我改了設定,還在。結果原來是手機本身的 Wi-Fi。Wi-Fi 關掉:安靜。Wi-Fi 打開:爆音。從頭到尾都是 Wi-Fi。如果用 USB DAC 時聽到爆音,請先試試飛航模式。

還有一天晚上,2012 年的測試機在播放途中重新開機。我怪電池,錯了。是 reTONE 當掉、自己重新啟動、又重新抓住 DAC,結果手機自己的系統撐不住倒下了。手機的系統,App 無能為力,但 reTONE 可以從一開始就不當掉,所以修好的是這個部分。

目前的狀況:所有能運作的手機與 DAC 組合,都能以正確的速度播放、不會斷音,2012 年的測試機也能順利把 24-bit/192 kHz 的檔案不經轉換送到有電池的 DAC。仍有一些尚未解決的問題。有些手機宣稱支援 USB 裝置,實際上卻不行;而從手機取電的 DAC,在較舊的硬體上有時無法被辨識。

重新檢查取樣率轉換器(0.60–0.68)

當手機無法以原本的取樣率播放曲目時,reTONE 會進行轉換。在較舊的 Android 上,現在所有 FLAC 和 WAV 都會經過轉換,所以轉換的部分被好好檢查了一遍。最初的版本會削掉一點最頂端的高音,而 DSD 轉換器則讓部分超音波成分折返到可聽範圍內。兩者都重新做過了。

接著有點尷尬的一刻。為這個網站製作頻率響應圖時,我們發現重做的濾波器沒有達到它們自己的目標。差得不多,但目標就是目標,所以又修了一次。沒想到抓到問題的,會是一張網站用的圖表。

老實說:差異非常小,我不敢保證你聽得出來。我能告訴你的是,數字現在都到了該在的位置。在可聽範圍內是平坦的,轉換所增加的任何東西都小到聽不見。

把 NAS 或另一支手機當成音樂庫(0.80–0.88)

現在 reTONE 可以播放家中 NAS 上的音樂,或是另一支執行 reTONE 的手機上的音樂。曲目會一邊播放一邊複製到舊手機上,所以曲目載入完成後,就與網路無關了。

第一個版本得等整個檔案下載完,一首大型高解析曲目大約要等 23 秒。改成一邊下載一邊播放後,大部分問題都解決了,只剩一個大型 WAV 檔仍要 19 秒才開始播放。這 19 秒裡,有 15 秒是舊手機在放入真正的音訊之前,先寫出一個填滿 0 的空檔案。省掉這個步驟後,降到了 2 秒。從 19 秒變 2 秒,只是因為不寫 0。

還有幾個意外:一首封面圖片超大的曲目完全無法播放,因為檔案開頭全是圖片,沒有音樂。另外,兩支手機之間的分享曾經失敗過一次,原因是其中一支的時鐘整整差了一天。

從自己的手機分享,刻意設計得很嚴格。只有配對過的 reTONE 裝置才能聆聽,兩支手機會顯示同樣的 6 位數代碼來確認,而且超過一小時沒有使用,分享就會自動關閉。目前我只用電腦上的小型伺服器和 reTONE 本身測試過,還沒有用市售的 NAS 測試。

Bluetooth 遙控(0.71–0.72)

為什麼要遙控?主要是因為方便。舊手機可以一直接在擴大機上,或一直放在包包裡,而你用手上已經拿著的手機選歌。也有電池方面的理由:在舊手機上,螢幕通常是最耗電的部分。讓它保持關閉,電池就能撐得久很多。

現在可以透過 Bluetooth 做到這件事。連線期間,日常手機上的 reTONE 會鏡像顯示舊手機的內容。

在第一個版本中,除了音量以外一切正常。音量的指令是 "+1",而 Android 4.1 無法解析前面帶加號的數字。就一個字元。這只能在 Android 手機之間使用,而且第一次連線時,傳送音樂庫需要一點時間。

回到 Android 4.0(0.84–0.86)

有人想在 Android 4.0 的音樂播放器上執行 reTONE(那個人就是我),所以支援範圍從 4.1 往回延伸到了 4.0。麻煩的地方是:在 4.0 上,呼叫系統沒有的功能時,失敗的方式是一般的錯誤處理抓不到的。每一個這樣的地方都得一個一個手動找出來。

新的 App 內更新檢查也碰到同樣的牆。它要檢查的伺服器只接受較新類型的安全連線,而 Android 4.x 根本沒有,所以在這些手機上,reTONE 會告訴你它無法安全地檢查。Android 4.0 到 4.0.2 仍未在實機上測試過。

其他變更

  • 修正 DSD 曲目開頭的輕微喀噠聲。
  • 修正關閉「Silent DAP mode」後,通知音有時仍維持靜音的問題。
  • 新增 Apple Lossless(ALAC)播放。
  • 修正在較新的 Android 上專輯封面不見的問題。
  • 新增平板橫向持握和摺疊手機的版面配置。
  • 新增從通知、鎖定畫面以及 Bluetooth 裝置操作播放的功能。
  • 新增「Network features」,預設為關閉。
本月手機

Android One X5

一支 2018 年底的 LG 手機,在日本以 Android One 機種的名義販售。Android One 應該是簡單、不加料、接近原生的 Android,但這支卻搭載了 LG 的 Hi-Fi Quad DAC(ESS ES9218),直接來自該公司的高階手機。我就愛這種東西。

9 月那篇提到的直接輸出功能,也是在這支手機上發現的。

最精彩的部分在 10 月。在耳機孔接上擴大機的線路輸入而不是耳機時,這支手機真的會告訴 App 這是 "AUX" 連接。我試過的其他手機,不管插的是什麼,都只會認為是 "headphones"。正因如此,reTONE 才能顯示「3.5mm AUX」並提供固定音量,讓你改用擴大機調整音量。由於猜錯可能會讓人耳朵受到非常大聲的驚嚇,reTONE 每次插入時都會詢問。

它還有幾個特點:Sound 按鈕可以直接開啟 Quad DAC 的設定(包括數位濾波器等等),Device & audio 會把 DAC 辨識為 ES9218,USB DAC 也能以 96 kHz 播放而不斷音。要誠實說明一點:DIRECT 標示是根據 Android 的回報。App 看不到聲音實際走的是哪條路徑,所以開發期間我是從電腦上確認的。

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