読者です 読者をやめる 読者になる 読者になる

アールテクニカ地下ガレージ

アールテクニカ株式会社の製品開発・研究開発・日々の活動です

Raspberry Pi 3でI2S接続のオーディオインタフェースを試す(1:基本+MM-5102編)

Author

コイデマサヒロ

今までRaspbberry Pi ではUSB接続のオーディオインタフェースを使っていました。ピュアオーディオファンの間では、USB接続のオーディオインタフェースは使わずI2S接続のオーディオカードの方が普通です。ハイレゾがスタンダードな世界ですので、I2Sの方が高音質が望めるということであろうというのは簡単に想像が付きます。他にもメリットはあるのでしょうか?音楽制作等でも利用できる可能性があるかもしれません。実際に試してみました。

 

I2S接続とは?

I2S接続とは、正式には Inter IC Soundと言い、その名の通りIC間のデジタル・オーディオデータの転送方法です。シングルボードマイコン系でよく出てくるI2C、SPIといったシリアル・インタフェースの兄弟分といえるものです。Wikipediaの説明がシンプルですがわかりやすいです。

https://ja.wikipedia.org/wiki/Inter-IC_Sound

USBオーディオ自体がI2Sを経由して、さらにUSBを経由しているということを考えると、I2Sの方がシステムへの負荷も低そうです。

Raspberry PiではUSBのオーディオインタフェースは、現状では16bit/48kHz までですが、I2Cではあれば、32bit/196kHz というのは普通にありますし、DSD対応のものもあります 。例えば楽器的に利用するのであれば、16bit/44.1kHzでも充分ですが高解像度のほうが可能性は広がります。

Raspberry用のサウンドカードにはI2Sではなく、SPIやI2Cで、あるいは組み合わせて動くものもあるようです。

 

I2S接続の基本設定

I2S接続のカードは、様々なものが公開されています。使うチップによっては自作も容易です。

しかし、Raspberry Pi上で動作させるには専用ドライバー(モジュール)が必要です。このため使えそうなチップがあったとしても、対応するドライバーがなければ使えません。

有名なチップは主要なカードメーカーに採用されているので、対応ドライバーにも合わせて開発し公開されている場合がほとんどです。他のメーカーや個人であっても既にドライバーがあるチップを使えば、そのドライバーが流用出来る可能性が高いです。ドライバー名は製品名が付くことが多いです。例えばTI社のPCM5102Aというチップは、採用例も多いのですが、ドライバー指定は、/boot/config.txt に

dtoverlay=hifiberry-dac

というドライバー指定の一行を入れてやれば大抵はそのまま動くはずです。これは元々は、https://www.hifiberry.com/ のカードが元になっているためです。

 

Jack Audioを使う場合の設定

I2C系のカードを使う場合、メーカー側が公開している設定方法だけだとALSAで使うことが前提になっているため、そのままだと Jack Audio から使えない場合が多いと思います。また、基本的に1つのアプリがオーディオデバイスを専有してしまうため、複数アプリでデバイスを共有できません。音楽制作用と考えると少し不便です。

このような場合は、/boot/config.txt に

dtoverlay=i2s-mmap

という記述を入れてやればOKです。

この設定は、Jackd2のみ対応です。Jackd1では利用できません。GUIインタフェースとなるqjackctlは単にJackのラッパーですので問題なく利用できます。

注意しないとならないのは、これは Experimental(実験的)な設定らしく、不具合が発生する可能性が高いです。実際に試したところ、カーネルをRT Preempt にしてJackから使うとフリーズが多発しました。ノーマルカーネルの方が安定的しているようです。

 

I2Sモジュール(MM-5102)を試す

I2Sカードにはいろいろありますが、とりあえず試してみたいという場合は、サンハヤトのMM-5201というモジュールがお薦めです。

https://goo.gl/lTCmLP

f:id:atkoide:20161102214333j:plain

これは先程もとりあげたTI社のPCM5102AというオーディオDACをモジュール化したものです。PCM5102A自体が外付け部品が少なくてすむように設計されているうえに、モジュール化されているのでさらに外付け部品を最小化するようになっています。ブレッドボードなどで試すのに最適です。

汎用的に使えるモジュールですが、Raspberry Piで使うことを意識しているようで、使いやすいです。説明書

http://www.sunhayato.co.jp/dcms_media/other/MM-5102_Manual_SG14012.pdf

をみると、Raspberry Piとの接続方法や設定方法も載っています。(PCM5102Aはオーディオ出力しかありません)

 

実際に試してみました。

説明書を参考にブレッドボード上に回路を組みました。写真だと見えませんが、ブレッドボードの奥にレギュレータを入れています。Raspberry Piの5Vから3.3Vを作成しています。説明書にもありますが、こちらをアナログ系等の電源としています。分けたほうがお薦めです。オーディオ出力からアンプなどに接続できるはずですが、そのままヘッドフォンも駆動できます。

 

またドライバーはボリューム等のコントロールを持たないようで、Raspbianからだとボリュームのコントロールができません。音をだすアプリ側で付いていれば良いのですが、標準状態で大きすぎる、あるいは不便という場合は、出力のところの470Ωの抵抗値を大きめにすれば良いです。可変抵抗にしても良いかもしれません。

 

説明書ではRaspberry PiのGPIOの複数のグランドのピンに接続するようになっており、上の写真でもそのように接続していますが、グランドはすべてRaspberry Pi内で全て接続されていますので、どれかに接続れば問題ないです。あえて言うなら、説明書のようにアナログ側、デジタル側と分けておけば安心です。

 

実際に音を出してみる

回路が組めましたので実際にいろいろな音を出して試してみました。いままでのUSBオーディオインタフェースより断然音が良いというのはハッキリわかります。それほど耳に自信があるわけではないですが、ちゃんとしているなという印象です。

さらにJack Audioも試してみました(ノーマルカーネル)。普通に使えるようでしたが、USBオーディオインタフェースを使うより、かなりレイテンシーが下げられます。アプリ側の負荷も影響しますが、実用的なレベルまで落とし込めそうです。
音が良いというのも重要ですが、レイテンシーを抑えることができるというは、音楽的にRaspberry Piを使うという部分ではかなり大きな意味を持ちます。

 

最後に

I2S接続のオーディオインタフェースは、音楽制作用にも使えそうです。Raspberry Piの可能性が見えてきました。ただI2S接続のオーディオインタフェースは、ほとんどがリスニング用途でオーディオ入力を持ちません。次回は、オーディオ入力付きのデバイスを試してみたいと思います。

>> 続編へ



Author

コイデマサヒロ

ディレクター、プロデューサー、ギタリスト。mimiCopyをはじめ弊社リリースの全てソフトウェア製品の企画を担当。ネイティブアプリ開発がメインでOS問わず対応可。dubバンドのギタリストとしても活動中。

スポンサーリンク