GPIO接続の “JustBoom DAC Zero” というI2SサウンドカードをRaspberry Pi Zero WHに取り付けてこのマシンからスピーカーに音を出すようにする。OSはRaspberry Pi OSを使用する。
手元の環境ではこれらの組み合わせに合った専用ケース “JustBoom DAC Zero Case” も購入して組み立てて使用している。
Raspberry Piシリーズの製品は音を出すという用途においては音楽再生専用機として扱われることが多いのだが、手元の環境ではこれまでPCのオンボードサウンドから出力していた全ての音・具体的にはPC上のゲームの音やWebサイト上で鳴る音などもサウンドサーバを用いてRaspberry Pi Zero WHに付けたサウンドカードから出力するようにしている。
この組み合わせを選んだ理由としては
というのが大きい。
Zero系はPiシリーズの中でもハードウェア構成が特殊なため、PiシリーズやLinuxに詳しくない人に対してはおすすめしない。Raspberry Piの新しめのモデルでサウンドカードを付けた構成向けのケースが存在するもので外部クロックを搭載したもののほうが、そういった人には使いやすそう。
このサウンドカードにはアンプまたはスピーカー向けのアナログ出力端子の左にヘッドフォン端子もあるが、音質は悪い。
入力端子はないので、入力端子に依存した用途であればUSB接続のサウンドユニットなど別の選択肢を考える。
mpd
というソフトウェアをZero上で動かしてこれにPCなどから接続して “Cantata” などのクライアントソフトを動かすのが便利だが、他の動画再生やゲームなどの用途で音を出すのが困難g_audio
というカーネルモジュールを読み込ませることでUSBサウンドデバイス(オーディオガジェット)として手軽に扱えるようにすることは可能
alsaloop
)を別途自分で実行するようにする必要がある上、遅延と音飛びを同時に回避するのが難しい1g_audio
の代わりにg_ether
でUSBイーサネットを使用し、そこにJACK Audio Connection KitやPulseAudioを使って音データを渡すのがやりやすい音質の感じ方には個人差があるので、全ての人が以下のように感じるわけではない。また、音の感じ方はスピーカーやアンプのそれぞれによるところも非常に大きいため、サウンドカード/ユニットの部分の変化だけでは変わらない部分もある。
これまでにオンボード以外の単独のサウンドカード/ユニットは使用した経験がないが、過去に使用したマザーボードにおけるオンボードサウンドで使用したときの音3と比べると明らかに “高品質” な音が出ていると感じられる。
ただし、2019年11月に購入した安価なマザーボードのオンボードサウンドも音が良くなっていて差が縮まった印象もある。
PCのオンボードサウンドの音もLADSPAプラグイン(capsなど)でイコライザを設定すれば決して悪くはないのだが、それでもこちらの音と比べるとぼやけた感じで鮮明さや迫力が落ちる。microSDカードの故障でオンボードサウンドに戻して半月程度使用した後でmicroSDカードなしで動かせるようになってJustBoom DAC Zeroに戻ってから “やはりオンボードサウンドの音とは違う” と改めて実感した。
この音質でZero WH本体やケースなどを合計しても8-9千円程度4というのは割と費用対効果が高い。ケースが大きさの割にやや高価な気もするが、よく作られているし有用性は十分ある。
JustBoom DAC Zeroは単独のサウンドカードとしては安価なほうなので、他社製品を含めた中で音が一番良いというわけではなさそうな気もするが、満足度は高いので壊れない限りは使い続けるつもり。
2019年9月に専用ケース “JustBoom DAC Zero Case” を組み立てたときのメモ。
このサウンドカードとケースはZero本体にGPIOピンがあることを前提としているため、無印ZeroやZero Wの場合はGPIOヘッダの部品を別途用意して取り付ける必要がある。ハンマーで叩いて付けられる形のものが売られており、特別な電子工作用の工具は不要。
ケースに中身を入れた後でも質量が非常に軽く、ケーブル接続後もちょっとしたことで動きやすいため、設置や移動などの際には注意したほうがいいかもしれない。
Piシリーズ用のGPIO接続サウンドカードは無設定では使えず、使用するための設定の記述が別途必要となっている。
JustBoom DACシリーズの場合、Raspberry Pi OSのJessie,Stretch,Busterの時点では下の=
を含んだ2つの行が必要。
/boot/config.txt
# JustBoom DAC
dtparam=i2s=on
dtoverlay=justboom-dac
dtparam=audio=on
の行が既にある場合、ディスプレイとHDMI接続してHDMIオーディオの音を出すつもりがなければこれを消すかコメントアウトしてもよい。HDMIオーディオが有効の場合はALSA準拠のサウンドカードが複数存在することになり、どちらから音を出すかを文字列(このDACの場合はsndrpijustboomd
)か番号(0
と1
のどちらか)で指定することになる。
ALSA準拠のドライバで、alsamixer
やamixer
で操作できる。
音量に影響するのは以下の項目。
Analogue
: 0%か100%の2段階で出力レベルがある程度変わるDigital
: 1%か2%の刻みで細かく音量を制御する初期状態では最大音量(爆音設定)になっているため、初めて音を出すときはDigital
を大きくても20
-30
程度までにして音を出してみて、必要に応じて上げてみる。
以下にamixer
でRaspberry Pi OS Busterにおける初期状態の全項目を表示したものを貼り付ける。
Simple mixer control 'DSP Program',0
Capabilities: enum
Items: 'FIR interpolation with de-emphasis' 'Low latency IIR with de-emphasis' 'High attenuation with de-emphasis' 'Fixed process flow' 'Ringing-less low latency FIR'
Item0: 'FIR interpolation with de-emphasis'
Simple mixer control 'Analogue',0
Capabilities: pvolume
Playback channels: Front Left - Front Right
Limits: Playback 0 - 1
Mono:
Front Left: Playback 1 [100%] [0.00dB]
Front Right: Playback 1 [100%] [0.00dB]
Simple mixer control 'Analogue Playback Boost',0
Capabilities: volume
Playback channels: Front Left - Front Right
Capture channels: Front Left - Front Right
Limits: 0 - 1
Front Left: 0 [0%] [0.00dB]
Front Right: 0 [0%] [0.00dB]
Simple mixer control 'Auto Mute',0
Capabilities: pswitch
Playback channels: Front Left - Front Right
Mono:
Front Left: Playback [on]
Front Right: Playback [on]
Simple mixer control 'Auto Mute Mono',0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [on]
Simple mixer control 'Auto Mute Time Left',0
Capabilities: enum
Items: '21ms' '106ms' '213ms' '533ms' '1.07s' '2.13s' '5.33s' '10.66s'
Item0: '21ms'
Simple mixer control 'Auto Mute Time Right',0
Capabilities: enum
Items: '21ms' '106ms' '213ms' '533ms' '1.07s' '2.13s' '5.33s' '10.66s'
Item0: '21ms'
Simple mixer control 'Clock Missing Period',0
Capabilities: enum
Items: '1s' '2s' '3s' '4s' '5s' '6s' '7s' '8s'
Item0: '1s'
Simple mixer control 'Deemphasis',0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [on]
Simple mixer control 'Digital',0
Capabilities: pvolume pswitch
Playback channels: Front Left - Front Right
Limits: Playback 0 - 207
Mono:
Front Left: Playback 207 [100%] [0.00dB] [on]
Front Right: Playback 207 [100%] [0.00dB] [on]
Simple mixer control 'Max Overclock DAC',0
Capabilities: volume volume-joined
Playback channels: Mono
Capture channels: Mono
Limits: 0 - 40
Mono: 0 [0%]
Simple mixer control 'Max Overclock DSP',0
Capabilities: volume volume-joined
Playback channels: Mono
Capture channels: Mono
Limits: 0 - 40
Mono: 0 [0%]
Simple mixer control 'Max Overclock PLL',0
Capabilities: volume volume-joined
Playback channels: Mono
Capture channels: Mono
Limits: 0 - 20
Mono: 0 [0%]
Simple mixer control 'Volume Ramp Down Emergency Rate',0
Capabilities: enum
Items: '1 sample/update' '2 samples/update' '4 samples/update' 'Immediate'
Item0: '1 sample/update'
Simple mixer control 'Volume Ramp Down Emergency Step',0
Capabilities: enum
Items: '4dB/step' '2dB/step' '1dB/step' '0.5dB/step'
Item0: '4dB/step'
Simple mixer control 'Volume Ramp Down Rate',0
Capabilities: enum
Items: '1 sample/update' '2 samples/update' '4 samples/update' 'Immediate'
Item0: '1 sample/update'
Simple mixer control 'Volume Ramp Down Step',0
Capabilities: enum
Items: '4dB/step' '2dB/step' '1dB/step' '0.5dB/step'
Item0: '1dB/step'
Simple mixer control 'Volume Ramp Up Rate',0
Capabilities: enum
Items: '1 sample/update' '2 samples/update' '4 samples/update' 'Immediate'
Item0: '1 sample/update'
Simple mixer control 'Volume Ramp Up Step',0
Capabilities: enum
Items: '4dB/step' '2dB/step' '1dB/step' '0.5dB/step'
Item0: '1dB/step'