これは ドリコム Advent Calendar 2018 の16日目です。
15日目は Junki Hiroi さんによる、 これからもツールを使って・作っていきたいポエム です。

はじめに

enza事業本部でフロントエンドエンジニアをやっている廣田です。

突然ですが皆さん、DACと聞いたら何を思い浮かべますか?
僕はDigital to Analog Converterのことを思い浮かべます。
社内チャットで最近よく”DAC”と言う文字列を見かけるようになったので、ニッチな会話してるやつもおるなぁと思って見てみたら、Drecom Advent Calendarの略でした。
と言うわけで、今年のDACはDACの話をしたいと思います(これが言いたかっただけ)。

DACとは、すごく平たく言うと音楽を再生するときに音質をよくしてくれるヤツです。
仕組みについては音声の波形の話になるのですが、実は去年のアドベントカレンダーでも波形の話をさせていただきました。
なので今回はDACの仕組みというよりも、僕の趣味であるDIYと絡めてDACを自分で作ってみようという話をしたいと思います。

DACについて

DAC(Digital to Analog Converter)は、デジタル-アナログ変換回路と訳されます。
文字通りデジタル信号をアナログ信号へ変換する回路です。

音声は現実では、連続した波形の信号です。
しかし、PCやスマホなどのデジタル機器では連続した波形を再現することはできないので、波形をできるだけ近似した信号になります。
PCスピーカーやスマホから音楽を聴く際には、このデジタルの波形をアナログの波形に戻して再生するのですが、一度デジタルに変換した波形は完全には元のアナログ波形に戻すことはできません。

このデジタル信号をできるだけ聴きやすいアナログ波形に戻す役割を担うのがDACです。
PCスピーカーやスマホの中にもDACと同等の機能は内蔵されているのですが、この部分だけ取り出した機器を今回は自作していきます。
自作といっても、さすがに回路を一から作ったりするのではなく、市販されているDACボードという基盤をプラモデルのように組み立てて、音楽再生用のOSをインストールするだけです。

技術選定

Divoom TimeBox Mini(スピーカー)

家でBluetoothのポータブルスピーカーを使っているので、そのまま使います。
モノラルで出力も5Wですが、そのまま使います。
DACより先にスピーカー買うなり作るなり(世の中には自作スピーカー界隈というのもあります)した方がいいんじゃ・・・と思われるかもしれませんが、そこは一旦無視します。
今回はDACの話がしたかったので。

Volumio 2(OS)

音楽は基本的にApple Musicで聞くので、手持ちの楽曲ファイルはありません。
つまり、PCや外部ストレージにDACとスピーカーを繋いで音楽を再生するという選択肢はなくなります。
また、既存のBluetoothを使ったワイヤレスな環境も壊したくないので、iPhoneを直接繋ぐという選択肢も無しです。

このわがままな要件を満たすにはAirPlayサーバーを立ててiPhoneからサーバーに楽曲を転送し、サーバー -> DAC -> スピーカーと繋げば良いと考えました。
家にデスクトップPCはあるのでその上でAirPlayサーバーを立てることも可能ですが、音楽を聴くためにデスクトップを立ち上げるのも煩わしく、だからと言ってそのためだけにPCを電源をつけっぱなしにしておくのも無駄が多いので専用のOSを選択しています。

音楽再生に特化していてAirPlayも使える、なおかつハードに親和性の高いOSとなると、私の知る限りではVolumio 2一択になります。
この辺りはのちの設定編で改めて解説します。

Raspberry Pi 3 model B

Volumio 2が対応しているハードは他にもありますが、DACボードやケース等の周辺機器、ネット上の情報量の多さから定番を選びました。
何よりDACに飽きたらまた他の遊び方を考えられるのが大きいです。
過去に2 model Bも持っていましたが、エンジニアにとってちょうどいいおもちゃだと思います。
先日のアドベントカレンダーの記事にも遊び方が紹介されていましたね!

Allo Boss DAC

DAC自作は初めてなので正直音の違いはわかりません。
技術選定でもなんでもないんですがケースの見た目で選びました。
DACの話でもなんでもないんですが自作PCはケースに一番悩む時間をかけるタイプの人間です。



そんな感じで、全体の構成は以上のようになります。
今回はスピーカーが一般的なイヤホンジャックを接続するタイプなので、DACのRCA端子(赤と白の端子)をイヤホンジャック(ミニプラグ)に変換するケーブルでつないでいます。

組み立て編

組み立てについて難しいことは本当に何もないので、雰囲気をお楽しみください。

注意点としては、Allo BOSS DACに組み立て用のネジが入っているのですが、これは使わずケースに付属のネジを使うことでした。

最後の画像はDACの上にさらにAMPを乗せたものですが、セットで買ってみただけで今回は使いません。
いずれこいつも有効活用したいですね。

設定編

OSの焼き方や、Raspberry Piの起動の仕方については昨年のアドベントカレンダーにある山平さんの記事「初めてのラズパイ」に詳しく載っています。
ここではVolumio 2の設定に特化したことを書きます。
とはいえ、設定は全てスマホで済んでしまい非常に拍子抜けでした。
シンプルなのはいいことなのですが、サーバーを起動というと黒い画面でインストールするボリュームを選び、モニタの電源を切って別の端末からSSHしてからが本番・・・などと思ってしまうので。

iPhoneのWi-Fiから「volumio」のSSIDを選択すると設定画面が表示されます。

この設定画面内で言語やデバイス名の設定をするのですが、特に便利だと感じたのが出力に使うDACやAMPを設定画面内で選べる点です。
ここで自分が購入したDAC(今回はAllo BOSS DACですね)を選びましょう。

そうすればVolumio 2が勝手に音声を出力するボードに転送してくれます。

設定を最後まで済ませると自動で再起動がかかります。
このとき先にスピーカーをつないでおくと再起動音が聞こえるので、そのあとiPhoneから設定したAirPlayサーバーが見つかれば完成です!
ここで音が聞こえなかったり、サーバーが見つからなかったりするのがお約束だと思っていたのですが、Volumio 2は親切すぎてそういったことは起こりませんでした。
記事に書くネタがなくなってしまいましたね・・・

感想

正直音の違いとかがよくわかる人間ではないので、作ってみたけど違いはわかりませんでしたてへぺろ! みたいなオチを最後に書くつもりで考えていました。
ところが実際に聞いてみると、スピーカー単体とははっきりと違いがわかりました。
スピーカー単体では低音が強く響くように音が作られているのですが、DACは広い音域で鮮明に聞こえます。
特にEDM系の楽曲に出てくるスウィープ音は低音域から高音域まで滑らかに聞こえますし、女性ボーカルやシンバルなどの高い音ははっきりと聞こえました。

モノラルでこれだけ違いが感じられるならステレオならもっとよくなるのでは・・・
写真に載せた通りAMPも買っているので、次はステレオスピーカー自作沼に身を投じてみるのもいいかもしれません。
その話はまた別の機会に。

明日はイシカワシンヤさんによる「古くて新しいモバイルグラフィックスの世界 – ディファードレンダリングとそのモバイル向けの最適化について –」です。