HOME | Raspberry Pi | ビジネス書籍紹介 | 2026-01-04 (Sun) Today's Access : 282 Total : 1260980. Since 10 Sep. 2019

I2S通信によるハイレゾ音源再生
2020.01.09 / 2022.07.26更新

YouTube 動画でポイントを説明しています。 画像をクリックすると再生できます。

今回は、ラズベリーパイからI2S接続により、デジタルオーディオ変換モジュール(DAC)と通信し、ハイレゾ音源を再生します。
I2S(Inter-IC Sound、アイ・スクウェアード・エス)は、3本(あるいは4本)のデジタル信号線でステレオ音声をシリアル伝送する規格です。

■PCM5101A I2S DAC

I2S [IIS] 入力DAC PCM5101A搭載32bit 384kHz DAC完成基板
再生に使用するDACは、NFJ製 PCM5101A I2S、Texas-Instruments製のBurrBrown(バーブラウン) PCM5101A DAC ICを搭載しています。
設定に関しては、このPCM5101Aを例に説明します。

■構成図


■配線
Raspberry Pi と DAC を結線します。

LRCLK LR Clock。2チャンネルステレオにおいて、音声信号のLチャネルとRチャネルを区別するための信号。
BCLK Bit Clock。SDATAの信号のタイミングに合わせてラッチする。
SDATA Serial Data。デジタル化された音声データのビット列。
MCLK Master Clock。デジタル信号の動作基準となるクロック信号。ICによっては、上記3信号と同期するようにしてMCLKの供給が必要になることがある。
Ref.Wikipedia:Inter-IC Sound

今回使用したディストリビューションは、Raspbian Stretch ですが、ここで紹介しているメディアプレイヤーの mplayer は CUI版ですので、Stretch Lite でも問題ありません。

■ドライバー設定

初期設定では、音声はHDMIから出力されるよう設定されているので、DACボードから音を出すには、ドライバーを指定します。
PCM510xA系DACのドライバ名には、hifiberryの名称が使われています。
$ ls /boot/overlays | grep hifiberry
hifiberry-amp.dtbo
hifiberry-dac.dtbo
hifiberry-dacplus.dtbo
hifiberry-dacplusadc.dtbo
hifiberry-dacplusadcpro.dtbo
hifiberry-digi-pro.dtbo
hifiberry-digi.dtbo

$ sudo vi /boot/config.txt
# Uncomment some or all of these to enable the optional hardware interfaces
#dtparam=i2c_arm=on
dtparam=i2s=on ← コメントを外す
#dtparam=spi=on
※Raspberry Pi OS (64bit/Bullseye)の場合(2022.02.07)
初期設定でOK
dtparam=i2c_arm=on
#dtparam=i2s=on

# Enable audio (loads snd_bcm2835)
# dtparam=audio=on ← コメントにする
dtoverlay=hifiberry-dac ←この行を追加

$ sudo reboot

再生デバイスのリストを表示して、デバイスが反映されているか確認します。

$ aplay -l
**** ハードウェアデバイス PLAYBACK のリスト ****
カード 0: sndrpihifiberry [snd_rpi_hifiberry_dac], デバイス 0: HifiBerry DAC HiFi pcm5102a-hifi-0 [HifiBerry DAC HiFi pcm5102a-hifi-0]
サブデバイス: 1/1
サブデバイス #0: subdevice #0

PCM5101A DAC (hifiberry dac)はサウンドカード番号:0。デバイス番号:0になっていることがわかります。
コマンドラインからオーディオデバイスを指定(plughw:カード番号,デバイス番号)して音を鳴らして確認してみます。
再生確認には、aplay コマンドを使用します。aplay はWAVファイルのみ再生できます。

$ aplay -D hw:0,0 /usr/share/sounds/alsa/Front_Left.wav
再生中 WAVE '/usr/share/sounds/alsa/Front_Left.wav' : Signed 16 bit Little Endian, レート 48000 Hz, モノラル
aplay: set_params:1305: チャネル数が使用不可能

$ aplay -D plughw:0,0 /usr/share/sounds/alsa/Front_Left.wav
この問題を解決するのには、plugを付けて明示的にモノラル音声をステレオに変換して再生することを指示します。
これを指定しないと、モノラル(1ch)からステレオ(2ch)には、変更されません。

■サウンドカード設定

hw:[カード番号], [デバイス番号]を指定します。
$ vi ~/.asoundrc
pcm.!default {
	#type hw
	#card 0
	type plug
	slave.pcm "hw:0,0"
}
ctl.!default {
	type hw
	card 0
}
pcm.!defaultがデフォルトの出力先デバイス、ctl.!defaultがデフォルトのミキサーデバイスを設定できます。

これでデバイスオプション指定なしで再生することができます。
$ aplay /usr/share/sounds/alsa/Front_Left.wav

補足:ALSA PCM デバイスファイル
ALSA とは Advanced Linux Sound Architecture の略で、Linux 2.6 から採用された Linux のサウンドシステムです。
ALSA デバイスファイルの一覧を表示してみます。
$ ls -la /dev/snd
合計 0
drwxr-xr-x   3 root root      220  1月  7 15:41 .
drwxr-xr-x  15 root root     3560  1月  7 15:41 ..
drwxr-xr-x   2 root root       80  1月  7 15:41 by-path
crw-rw----+  1 root audio 116,  0  1月  7 15:41 controlC0
crw-rw----+  1 root audio 116, 32  1月  7 15:41 controlC1
crw-rw----+  1 root audio 116, 16  1月  7 15:41 pcmC0D0p
crw-rw----+  1 root audio 116, 17  1月  7 15:41 pcmC0D1p
crw-rw----+  1 root audio 116, 18  1月  7 15:41 pcmC0D2p
crw-rw----+  1 root audio 116, 48  1月  7 15:41 pcmC1D0p
crw-rw----+  1 root audio 116,  1  1月  7 15:41 seq
crw-rw----+  1 root audio 116, 33  1月  7 15:41 timer
PCM 再生、録音のデバイスファイル名は 4つの部分に分かれていて、それぞれ命名にルールがあります。
たとえば pcmC0D0p を例にとって分解してみましょう。
pcm:PCM のデバイスであることを意味します。どのデバイスファイルでも pcm です。
C0:サウンドカード番号 0 を意味します。カード 1 なら C1 となります。
D0:デバイス番号 0 を意味します。デバイス 2 なら D2 となります。
p:PCM の再生能力があることを意味します。録音能力の場合は c となります。

■mplayer インストール
MPlayer(エムプレーヤー)は、オープンソースのメディアプレーヤーです。 様々なフォーマットに対応しており、またコマンドラインで使用する際、動画の映像を捨て、音声のみ再生することが可能ですので、とても便利です。

$ apt-cache search mplayer | grep mplayer
....
mplayer - movie player for Unix-like systems
....

$ apt-cache show mplayer | more
Package: mplayer
Version: 2:1.3.0-6
Architecture: armhf
......

$ sudo apt-get install mplayer

※Raspberry Pi OS (64bit/bullseye)で、インストールできない場合
$ sudo apt --fix-broken install
$ sudo apt-get install mplayer

$ mplayer -vo null -ao alsa:device=plughw=0.0 sample.mp4
-vo :ビデオ(動画)の出力先
-ao :オーディオ(音声)の出力先

動画 sample.mp4 の音声部分のみを取出し再生しています。
$ mkdir ~/.mplayer
$ vi /home/pi/.mplayer/config
ao=alsa:device=plughw=0.0
vo=null

これでファイルパスを指定するだけで再生することができます。
$ mplayer sample.mp4



それでは、mplayer を使ってみましょう。
最初に、音楽データを保存する際のディレクトリーのレイアウトを検討します。
私の場合、ジャンル→アーティスト→アルバム名の下に楽曲を配置しています。
アルバム内の楽曲が収録順に演奏されるように、曲名の前にインデックスを付けています。
<music>
  +--<classic>
  |     +--<LiseDeLaSalle>
  |     |     +--<Bach>
  |     |     |     +-- 01_BWV903_Fantasie.mp3
  |     |     |     +-- 02_BWV903_Fuge.mp3
  |     |     |     +-- 03_BWV659.mp3
  |     |     |     +--....
  |     |     +--<Rachmaninov&Ravel>
  |     |     +--....
  |     +--<Rubinstein>
  |     +--....
  +--<jazz>
  +--<tango>
  +--....
  +--<favorite>
特定の曲を聴く
$ mplayer ~/music/classic/LiseDeLaSalle/Bach/01_BWV903_Fantasie.mp3

アルバム全曲を聴く
$ mplayer ~/music/classic/LiseDeLaSalle/Bach&Liszt/*

特定アーティストの曲を聴く
$ mplayer ~/music/classic/LiseDeLaSalle/*/*

また、好みの曲は、favorite にも配置しています。

シャッフル
$ mplayer -shuffle ~/music/classic/*/*/*

ループ再生
$ mplayer -loop 0 ~/music/classic/LiseDeLaSalle/Bach&Liszt/*

キー操作で一時停止、ミュート、音量調整なども行えます。
keyboard control
 left or right    seek backward/forward 10 seconds
 down or up       seek backward/forward  1 minute
 pgdown or pgup   seek backward/forward 10 minutes
 < or >           step backward/forward in playlist
 p or SPACE       pause movie (press any key to continue)
 ENTER            go forward in the playlist, even over the end.
 q or ESC         stop playing and quit program
 / and *          Decrease/increase volume.
 9 and 0          Decrease/increase volume.
 m                Mute sound.

■ファイル共有設定

リモートサーバー内のメディアファイルを、mplayer で再生する設定です。

$ sudo apt-get -y install sshfs

$ mkdir ~/Music
$ sshfs ubuntu@server:/home/ubuntu ~/Music
※server には、ホスト名あるいはIPアドレスを指定してください。

$ mplayer ~/Music/*

アンマウント
$ fusermount -u ~/Music

■PCM5101A搭載I2S DAC基板 (North Flat Japan Co., Ltd)

【DIPスイッチ:H=ON L=OFF】
スイッチ1:フィルター設定 ON:IIR(無限インパルス応答) / OFF:FIR(有限インパルス応)
スイッチ2:オーディオフォーマット設定 ON:Left-Justified / OFF:I2S
※必ず電源OFFの状態でDIPスイッチ設定を行ってください。動作モードはIC起動時に読み込まれるため、電源を切らない限りリセットされません。

【製品仕様】
DAC IC:Burr-Brown PCM5101A [SN比]106dB / [ダイナミックレンジ]106dB / [THD]-92dB
動作電圧:DC4.2V?12V
デジタル入力:I2S (IIS) / Left Justified(3線入力/4線入力両対応)
入力端子:[ピンヘッダー]LRCK/BICK(BCLK)/DATA(SDATA)/MCLK/GND
※MCLK出力がない機器の場合はMCLKをGNDに落とせば内部クロックで動作しますが、落とさない場合でもICの仕様により自動的に内部クロックで動作します。
アナログ出力:ステレオRCA端子/3.5mmステレオミニジャック (排他利用)
対応フォーマット:[サンプリングレート]
44.1kHz/48kHz/88.2kHz/96kHz/176.4kHz/
192kHz/352.8kHz/384kHz
[ビットレート]16bit/24bit/32bit
機能:[DACデジタルフィルター演算方式変更機能]
 FIR有限インパルス応答(Normal)/IIR無限インパルス応答(Low)
[入力フォーマット切替機能]I2S & Left-Justified
[MUTE機能]
対応OS:Windows 10/ 8(8.1)&7/ Vista / XP / 2000/ MacOS X / 9.1以降
サイズ:高さ14mm×幅63mm×奥行き49mm
重量:14g

■pimoroni pHAT DAC 2020.05.23追記


購入して放置状態になっていた、pimoroni pHAT DAC を取り付けてみました。
Raspberry Pi Zeroと同サイズの、安価ながら高品質なDAC機能を追加するpHATボードです。 2×20のGPIOピンヘッダで、Raspberry PiのI2Sインタフェースから192 kHz、24ビットのオーディオを出力します。
※現時点で、すでにpimoroni社の製品は Pirate Audio シリーズに移行しており、入手がかなり困難になっています。

DACは、上述のPCM510Xシリーズ製品ですので、Raspberry Pi Zero WH に被せるだけで動作しました。

PCM510xシリーズには、PCM5100、PCM5101、PCM5102の3種類があります。 違いは、SNR(S/N)のスペックです。100、106、112dB で各6dB差があります

新規に組み込む場合は、チュートリアルが示す手順になると思いますが、 マニュアル・セットアップの内容をみると、サウンドカードがカード番号0に指定されてしまいます。
LINE OUTから出力されない場合は、最初に説明しているPCM5101の設定をしてみてください。

チュートリアル(Setting up pHAT DAC)
http://learn.pimoroni.com/tutorial/phat/raspberry-pi-phat-dac-install

Automated Set Up
$ curl -sS https://get.pimoroni.com/phatdac | bash

Manual Set Up

/etc/modprobe.d/raspi-blacklist.conf
This file prevents certain modules from loading at startup. With the file open, comment out the lines corresponding to the modules we want to load by changing:
$ sudo nano /etc/modprobe.d/raspi-blacklist.conf
blacklist i2c-bcm2708
blacklist snd-soc-pcm512x
blacklist snd-soc-wm8804

#blacklist i2c-bcm2708
#blacklist snd-soc-pcm512x
#blacklist snd-soc-wm8804

raspi-blacklist.confは初期状態では空でしたので、コメントアウトの必要もありません。

/etc/modules
This file, in contast to the blacklist, lists modules which we do want to load. We're going to remove the default sound driver with a comment, so change the line:

$ sudo nano /etc/modules
snd_bcm2835

#snd_bcm2835

初期状態で、snd_bcm2835の記載はありませんでした。

Sound Config
Finally, create a new asound.conf
$ sudo nano /etc/asound.conf
pcm.!default  {
 type hw card 0
}
ctl.!default {
 type hw card 0
}
LINE OUTから出力されない場合は、最初に説明しているPCM5101の設定をしてみてください。

Device Tree

$ sudo nano /boot/config.txt
dtoverlay=hifiberry-dac
#dtparam=audio=on

$ sudo reboot

pHAT DAC は、ピンホールに自分でピンソケットをハンダ付けする必要があります。
製品に添付されてくるピンソケットは足の短いものですが、足の長いピンソケットを使うことで、pHAT DAC で使用していないピンを 有効に活用することができます。

Raspberry Pi(ラズベリー パイ)は、ARMプロセッサを搭載したシングルボードコンピュータ。イギリスのラズベリーパイ財団によって開発されている。
2020.01.05 第1回 abcjs 楽譜作成・演奏スクリプト
2020.01.09 I2S通信によるハイレゾ音源再生
2020.01.18 MIDI再生:FM音源YMF825+Arduino編
2020.01.24 FM音源YMF825+micro:bit編
2020.02.13 Piano Hat & Rosegarden
2020.03.18 テキスト読み上げ gTTS
2020.05.19 テキスト読み上げ AquesTalk pico LSI
2020.06.22 波形処理 第1回 音の波と三角関数
2020.07.22 波形処理 第2回 平均律と純正律
2020.08.26 波形処理 第3回 黒鍵と白鍵
2020.11.21 深層学習 第1回環境整備
2020.12.19 深層学習 第2回マルコフ連鎖・自動歌詞生成
2021.01.02 深層学習 第3回コード進行解析
2021.01.16 波形処理 第4回 コード演奏
2021.08.07 MIDI制御/Adafruit Music Maker
2021.08.23 MIDIフォーマット解析
2021.10.10 音声ファイルの切貼り
2022.09.16 USB-MIDI
2023.01.16 MAX98537 & PCM5102
2023.03.15 音源サンプリング
2023.06.16 ヤマハ音源IC YMZ294
2024.01.07 内蔵DACによるWAV再生
2024.03.23 Piano Hat for MIDI
2024.08.08 シンプルな16bit DAC
2024.09.09 ESP32-S3 USB MIDI
2024.11.10 音声変換・参照音声編集
2024.11.24 音声変換 Seed-VC
2024.12.11 音源IC SN76489
2025.01.10 ttymidi + SAM2695
2025.02.08 YMF825 + ESP32
2025.05.08 Small World 4MH711
YAMAHA YMU251-D
2025.05.23 Small World 4MH711
NJM2073
2025.06.08 Small World 4MH711
オリジナル・クロック
2025.06.23 Bluetooth Emitter
2025.11.20 NANO ESP32 統合環境
2025.11.24 MIDIキーボード→VS1053再生
2025.12.08 MP3 Player Shield

たいていのことは100日あれば、うまくいく。長田英知著
「時間がなくて、なかなか自分のやりたいことができない」 「一念発起して何かを始めても、いつも三日坊主で終わってしまう」 「色んなことを先延ばしにしたまま、時間だけが過ぎていく」 そこで本書では、そんな著者が独自に開発した、 まったく新しい目標達成メソッド「100日デザイン」について、 その知識と技術を、余すところなくご紹介します。

まんがで納得ナポレオン・ヒル 思考は現実化する
OLとして雑務をこなす日々に飽き足らず、科学者だった父が残した薬品を商品化すべく、起業を決意した内山麻由(27)。彼女はセミナーで知り合った謎の女性からサポートを得ながら、彼女と二人三脚でナポレオン・ヒルの成功哲学を実践し、さまざまな問題を乗り越えていく。 ヒル博士の<ゴールデンルール>に従い、仕事に、恋に全力疾走する彼女の、成功への物語。

今日は人生最悪で最高の日 1秒で世界を変えるたったひとつの方法 ひすいこたろう著
偉人の伝記を読むと、最悪な日は、不幸な日ではなく、新しい自分が始まる日であることがわかります。最悪な出来事は、自分の人生が、想像を超えて面白くなる兆しなのです。偉人伝を読むことで、このときの不幸があったおかげで、未来にこういう幸せがくるのかと、人生を俯瞰する視線が立ち上がるのです。

ご飯は私を裏切らない heisoku著
辛い現実から目を背けて食べるご飯は、いつも美味しく幸せを届けてくれる。 29歳、中卒、恋人いない歴イコール年齢。バイト以外の職歴もなく、短期バイトを転々とする日々。ぐるぐると思索に耽るけど、ご飯を食べると幸せになれる。奇才の新鋭・heisokuが贈るリアル労働グルメ物語!

【最新版Gemini 3に対応!】できるGemini (できるシリーズ)
Geminiを「最強の知的生産パートナー」として使いこなすための、実践的なノウハウを凝縮した一冊です。 基本的な操作方法から、具体的なビジネスシーンでの活用、日々の業務を自動化するGoogle Workspaceとの連携、さらには自分だけのオリジナルAIを作成する方法まで余すところなく解説します。

Rustプログラミング完全ガイド 他言語との比較で違いが分かる!
Rustの各手法や考え方を幅広く解説! 500以上のサンプルを掲載。実行結果も確認。 全24章の包括的なチュートリアル。

ポチらせる文章術
販売サイト・ネット広告・メルマガ・ブログ・ホームページ・SNS… 全WEB媒体で効果バツグン! カリスマコピーライターが教える「見てもらう」「買ってもらう」「共感してもらう」すべてに効くネット文章術

小型で便利な Type-C アダプター USB C オス - USB3.1 オスアダプター
Type-C端子のマイコンボードをこのアダプタを介して直接Raspberry Piに挿すことができます。ケーブルなしで便利なツールです。

Divoom Ditoo Pro ワイヤレススピーカー
15W高音質重低音/青軸キーボード/Bluetooth5.3/ピクセルアート 専用アプリ/USB接続/microSDカード

電源供給USBケーブル スリム 【5本セット】
USB電源ケーブル 5V DC電源供給ケーブル スリム 【5本セット】 電源供給 バッテリー 修理 自作 DIY 電子工作 (100cm)

Copyright © 2011-2027 Sarako Tsukiyono All rights reserved®.