【 第20回 】I2S接続のDACなら100均スピーカーでもハイレゾ?

0
2057

【 第18回 】では、ノイズまみれの疑似アナログ(PWM)出力をバンドパスフィルターを通すことで、なんとか聞けるものにすることができましたが、Raspberry Piには、デジタル音声データをGPIOから直接、出力するI2Sという転送規格もサポートされています。このデジタル出力をDACに入力することで、ノイズのないクリアーなサウンドが実現できる上にCDより情報量の大きいハイレゾ音声データも扱えるようになります。

今回使った部品

  • Raspberry Pi 3 Model B × 1
  • 40Pinフラットリボンケーブル
  • 40Pin T型GPIO拡張ボード
  • ブレットボード × 1
  • UDA1334A搭載 I2S ステレオDACモジュール × 1(ピンヘッダー込)
  • 3.5mmイヤホンジャックアダプター × 2
  • マルチメディアスピーカー(セリア) × 2
  • ジャンプワイヤー(オス/オス) × 11
UDA1334A搭載 I2S ステレオDACモジュール
スイッチサイエンス
売り上げランキング: 10,610

実体配線図

I2SステレオDACモジュールはピンヘッダーをハンダ付けしてブレッドボードに挿します。

DACモジュールには3.5mmの音声出力端子がありますが、100均スピーカーはモノラルなので、3.5mmイヤホンジャックアダプターを介してブレッドボードに接続します。

SoCのデータシートを見ると、Raspberry Piからのデジタル音声出力は、GPIO18が”PCM clock”、GPIO19が”PCM Frame Sync”で、GPIO21が”PCM data out”となっています。(デジタル音声入力のGPIO20は今回使いません)
これとDACモジュールの仕様を突き合わせると、

・GPIO18 ( PCM clock )     → BCLK ( Bit Clock )
・GPIO19 ( PCM Frame Sync ) →WSEL ( Word Select or Left/Right Clock )
・GPIO21 ( PCM data out )   → DIN ( Data In )

のように接続するのではないかと推察できます。

DACモジュールのドライバーのインストール

curl -sS https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/i2samp.sh | bash

LXTerminalを起動し、上記のコマンドでDACモジュールのドライバーをインストールします。

途中で「続けますか?」と聞かれるので、”y”で返します。

y

更に「有効化する為に再起動を要求していますがよろしいですか?」と聞かれるので、”y”で返し、再起動します。

y

再起動したら、もう一度、先程のコマンドを実行します。

curl -sS https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/i2samp.sh | bash

再び、途中で「続けますか?」と聞かれるので、”y”で返します。

y

今度は、「今、テストを実行することを望んでいるか?」と聞かれるので、”y”で返します。

y

女性の声で「Front Left」、「Front Right」と言ってくるので、左右が合っていることを確認します。

プロンプトが返ってきたら、念の為、もう一度、再起動しておきます。

reboot

GPIOの設定を確認する

LXTerminalを起動し、次のコマンドでGPIOの設定を確認します。

gpio readall

GPIO18,19,20,21の設定モードが全て”ALT0″に変更されていて、先程のデータシートからPCM(I2S)の各機能に割り当てられていることが分かりました。

Scratch 2の音ライブラリーの音源を再生する

Scratch 2を起動し、ブロックパレット上のタブ「音」のスピーカーアイコンをクリックして開く「音ライブラリー」からカテゴリー「音楽のループ」の”techno2″を選択し「OK」ボタンをクリックします。

選択した”techno2″がスクリプトエリアの波形欄に表示されているので、「▶」ボタンをクリックして音声を出力します。左右の100均スピーカーから音が出ましたが、64kbpsの疑似ステレオ音声なので、【第19回】のときのPWM出力との違いはよく分かりません。

ハイレゾ音源を再生する

ハイレゾ音源のサンプルファイルはいろいろな所からダウンロードできますが、テスト用に最もお手軽な「SONY – ハイレゾとは?」からダウンロードしてみました。

ページ中程の「サンプル音源」の「ハイレゾ音源」をクリックすると、ダウンロードが始まります。

ダウンロードが終わったら、ファイル名”Sample_Be…zip右の「▽」をクリックして「フォルダを開く」を選択します。

ファイルマネージャが起動して”/home/pi/Downloads”が開くので、”Sample_Be…zip”を右クリックして出てくるメニューから「ここでファイルを展開」を選択します。

展開してできたファイル”Sample_Be…flac”を右クリックして出てくるメニューから【第19回】でインストールした「Audacity」を選択します。

「警告」画面が現れるので、「非圧縮のオーディオファイルから直接読み込みます(高速)」のラジオボタンを選択して「OK」ボタンをクリックします。

Audacityが起動し、画面上に24bit/96kHzのハイレゾ音源”Sample_Be…flac”の波形が表示されるので、「▶」ボタンをクリックすると再生が始まります。

100均スピーカーからは低音がまったく出ませんが、ノイズのないクリアーなサウンドが聞こえてきました。但し、100均スピーカーは能率が低く小さな音しか出ないので、【第18回】で使ったD級アンプを出力側に噛ませる ( ← バンドパスフィルターは不要、5VとGNDはRaspberry Piと分ける ) か、DACモジュールの3.5mmの音声出力端子にヘッドフォンを接続すれば、よりハイレゾのメリットが感じられるはずです。