ラズベリーパイのI2S接続で音を出してみよう

shapeimage_1-40

Raspberry pi3でミュージックプレーヤー1

実は以前から密かにDACの更改を狙っていながら、ここのところどっぷりとアナログ回帰していて手つかずでしたが、最近気になる動きが目につくようになってきました。

キーワードは「ラズパイ」

Raspberry pi(ラズベリーパイ)というシングルボードコンピュータの略称(愛称?)です。
一部の先進層が、このラズパイ(をはじめとした、いろいろなボードコンピュータ)とDACを組み合わせてデジタルミュージックプレーヤーに仕立てるということをされています。

コンピュータで音楽再生するだけなら、PCとUSBやFireWireまたはS/PDIFで接続したDACの組み合わせで音楽再生する、「いわゆるPCオーディオ」とさしたる違いはないのですが、ラズパイの面白いところはデジタル音声データをUSBやHDMI(S/PDIF)だけでなく、I2Sで出力できるところにあります。

I2S(Inter-IC Sound)というのは、音声データをIC間でやり取りする為の規格で、通常の再生機器で最終的にDACチップに入力する信号プロトコルの一種類です。
(I2Sのほか、Left-justified、Right-justifiedというのもありますが、今回は扱いません)

一般的なPCオーディオ(USB接続)をするには、
1.PCでファイルから音声データを取り出しPCMデータ列にする
2.PCはPCMデータをUSB Audioのプロトコルに載せてUSB DDCに送る
3.DDCはUSB Audioで受け取った音声データをS/PDIFに変換してDAC装置に送る
4.DAC装置内部ではレシーバー(DAI)でS/PDIFをI2Sに変換してDACチップに送る
5.DACチップがI2S信号からアナログ音声信号に変換する
という手順になります。

対してラズパイは途中の処理をすっ飛ばして、
1.コンピュータでファイルから音声データを取り出しPCMデータ列にする
2.PCMデータ列をI2Sにして出力する
3.DACチップがI2Sからアナログ音声信号に変換する
となります。

途中の処理をすっ飛ばせるということは、すっ飛ばした装置や機能ブロック分の「余計なコストがかからない」ということにもなります。
しかもこのラズパイ、最新型のRaspberry pi 3 MODEL B(64bit/1.2GHz/4コア/1GBメモリー)でも¥6,200-と格安で、OS、ソフトウエアも原則無料で利用可能です。

単体DACとして考えるとS/PDIFもUSBもFireWireも受けられませんが、マシンの値段がUSB、S/PDIFレシーバーと変わらないか、かえって安いので、単体DACを組むつもりでDAC込みのオーディオプレーヤーが出来ちゃいます。
これはお父さんのお小遣いオーディオにはもってこいの素材です。(笑)
くわえて、途中の処理(特にUSB、S/PDIF)を省くということは、信号変換の処理や伝送にまつわる影響を排除することにほかならず、「鮮度が高い」という極めてオーヲタ好みな(デジタルドメインな方々からは特に嫌悪される)表現が可能になります。(苦笑)

なお、ラズパイのI2S出力はLRCK、BCK、DATAの3つでMCK(マスタークロック/システムクロック)がなく、MCKが必要なDACチップはそのままでは使えません。
そのため、TIのPCM5122、PCM5102、ESSのES9018(派生モデル含む)、ES9023あたりが選択肢になります。
PCM51xxとES9023で大きく異なるのが、クロックの取り扱いです。
PCM51xxはMCKがなくてもBCK、LRCKからMCKを内部で生成して動作します。
ES9018、9023にはMCKが必要ですが、内部にASRC(非同期型サンプリングレートコンバータ)を持っているため、BCK、LRCKとは関係ない周波数で動作します。
(このため強力なジッタークリーニングも可能になっているようです。)
「ラズパイI2S動作可」となっているDACボードの多くがPCM51xx、ES9023なのはこのためですね。

ということで、まずは弄ってみるべと(現時点最新の)Raspberry Pi3 Model B(element14製)とES9023(50MHzクロックつき)DACボードを仕入れて実験です。

img_4280

ラズベリー パイ 3にしたのは、最新かつ一番パワーがあるし、パイ 2と大して値段変わらないから、これからやるならこれだべ。
という安直な理由です。
DACをES9023にしたのは、送料込みで2,000円チョイという値段につられただけです。

ラズパイで音楽を再生するためには、ラズパイで動かすOSと、MPD(Music Player Daemon)とよばれる楽曲の管理と再生を担当するソフトウエアと、MPC(クライアントソフトウエア)が必要です。
OSは、LinuxのほかWindows10-IoTなんていうのが動くみたいですが、RaspbianというDebian系のLinuxを使う方が圧倒的に多く、PCオーディオならぬラズパイオーディオということで言えばOSとMPDが一緒にパッケージされたディストリビューションが人気のようです。

その中でも有名どころのVolumioを試してみます。

Volumioのホームページからパッケージをダウンロードしてターミナルコマンドを使ってMicroSDカードに展開。
出来たSDカードをPi3に刺していざ起動!

しません。。。>爆<

調べたらVolumio 1.55のNOOBSが古くてラズパイ3に対応していないとか。

Volumio 1.55はRaspberry Pi3で動きませんか。
そうですか。

慌てず騒がず開発版のVolumio2 RC1(NOOBS v1.9)にて無事起動に成功。
自宅サーバーにユーザーを追加、サーバーのiTunesライブラリを同ユーザに公開、Volumio2にI2S接続のDAC設定(ちょっと癖あり)、NASの設定を入れたところ音出しまで成功しました。

ここでひとつ問題を発見。
Volumio2はAdvanced設定にてNASのアカウント情報を入れSAVEしても再起動するとユーザー名とパスワード忘れちゃうようです。
しかも、iPhoneだとWebUIの表示が崩れてうまく設定できないので、再起動の度にMacから設定する必要があります。
通常使う部分の出来がいいだけにちょっと残念。
あれこれ弄ってるうちにRC2 Hotfixまで出ていていろいろアップデートされていましたが、相変わらずNASのアカウントは覚えてくれないみたいです。
正式版では直るといいな。。

MPDをもうひとつ、日本の方が開発されているLightMPDを試してみます。

LightMPDは機能を絞って実装されていて、その名の通りとても「軽く」出来ています。
そのため、
・MicroSDに保存されるデータは50MBもない。
 (我が家にたくさん眠っている128MBのMicroSDの出番が来た!)
・MicroSDはFAT16かFAT32でよく、システムデータの書き込みはMac/Winから普通のファイルコピーでよい。(システム入替、設定変更が早くて楽にできる。)
・MPDに特化していて、別途PCやスマホ/TABにMPC(クライアントアプリ)が必要。
・ローカルドライブにはデータを置かず、データベースなどMPDが作成するデータはNAS上に保存するため、NASがないと動作しない。
・OS、アプリ、一時作業ディレクトリはメモリー上に作成され、MicroSDは読み出しだけで起動後にアンマウントされる。(起動したらMicroSDを抜いても動作する)
・ローカルのドライブはUSBストレージさえマウントされない。
という特徴があります。

イメージとしては、マウントしたネットワークドライブ上の楽曲をデータベース化してMPCに提供、MPCから指定された楽曲ファイルを展開してデータをデバイスに出力する。といった「基本」を追及されている感じです。
併せて作者さんがとても精力的に開発されていて
・対応プラットフォームが多い(最初はラズパイ用ではなかったそうです)
・その時最新のカーネル、ドライバーを積極採用
・話題の出力デバイスにも積極的に対応
・掲示板でのサポートが丁寧
という先端感と心強さがあります。

難点は、
・設定内容がほぼスタティック(決め打ち)なのと、設定方法がテキストエディタによるConfigファイルの直接書換えなので、TCP/IP、Linuxのファイルシステムやコマンドなどにそれなり慣れていないと、とっつきにくい。
・NASの実装によって設定に癖(相性)があり、最悪つながらないなんていうことがある模様。
 我が家のOSX(Lion)ServerではWindowsファイル共有(SAMBA/Cifs)では上手くいかず、NFSで設定したらOKになりました。
・設定がスタティックで有線ネットワークが必須なので、固定された環境が必要で、ほぼ持ち出しての利用が不可能。
といったあたりでしょうか。

ここまでの実験では、モバイルバッテリーを電源にしてラズパイを駆動し、ラズパイからDACボードに5Vを供給、DACボードのLVDシリーズレギュレータで3.3Vに落としてDACチップに供給しています。
そのサウンドですが、Volumio2、LightMPD共通した第一印象は「クリアでスッキリさわやか」「ふわっとしたきれいな雰囲気もある」といった感じで、分離と空間感の表現がとても面白く感じました。
その一方、若干落ち着かない感じもあり、楽曲によって好き嫌いが出る感じがあります。
Volumio2とLightMPDでの比較をすると、濃いめのVolumio2に対し、LightMDPはきっちりかっちり無駄のない感じ。
この状態ではVolumio2の方が聞きやすいかな。
今までにない面白い感じの音ではありますが、このまま常用するかっていうと微妙な感じです。

とりあえず、ラズパイに5VのACアダプター直結できるようにコネクターを付けてデカップリングコンデンサーを追加、DAC側の3.3V系のデカップリングコンデンサーを交換したところ、ぐっと落着きが出てきましたので、この状態でしばらく実験を続けましょう。
まあ、ここまでは動作チェックレベルですので、やっとこスタートラインに立ったと言えばそれまでですね。

shapeimage_2-19

この先は、デジタルデータ処理部分、DA変換処理部分、アナログ信号処理部分で詰めていきます。

中国製とイギリス製がある、Raspberry Pi3。
買ったのは(もちろん)安い方です。(笑)