AirPlay音楽再生を行う。
AirPlayとは、iPod / AirMacExpress の頃からある、iOSのリモートスピーカー機能。
WiFi経由で音楽を再生できる。とても便利である。Radikoと相性がよく愛用している。
Bluetoothより通信が安定しているし、2.4GHz電子レンジ加熱でノイズになることもない。ネットワークなのでIP通信(ブロードキャスト)が届く範囲であれば、どこでも使える。便利である。
Bluetoothでいいと思うかもしれないが、ペアリング設定は不要だし、Raspberry Pi 同士で音楽を再生できるので、スマホから独立するのも嬉しい。
インストール
shairpot-sync を apt で入れるだけで使える。
apt install shairpot-sync
ただし、いくつかのDebianではバグがあり、init.d -> systemd のマッピングが誤作動する。
設定
general = { interpolation = "soxr"; output_backend = "alsa"; name = 'test' // <= ここがバグになる } alsa = { output_device = "plughw:1,0"; }
name = がバグ
スピーカーの名前を選択肢にだすときに使う設定項目 name が、debian でバグになる。
これは、init.d -> upstart -> systemd に切り替わるときのバグであり、systemdが悪い。*1
対策 : name をコマンドオプションで入れる。
shairport-sync.conf でname を指定できない。shairport-sync.conf の項目は、なぜかSystemd/upstart がinit.dを上書きするときに読み込まれているらしく、おそらく読み込みに失敗し変数展開に失敗しエラーになるようです。
shairport-syncには、コマンドのオプションに --name
があるんでそれを代わりに使います。
sudo systemctl edit --full shairport-sync.service
コマンドオプションで name を入れて、スピーカー名称を入れる。
ExecStart=/usr/bin/shairport-sync --name 'MyShair Speaker' --daemon $DAEMON_ARGS
再起動
sudo systemctl restart shairport-sync.service
設定項目
interpolation を SOXRにすると音質が良くなるらしい。(実感がないが、、、)
/etc/shairport-sync.conf
general = { interpolation = "soxr"; output_backend = "alsa";
イヤホンジャックからの出力
そのままでは、Raspi3のデフォルト設定から音声(サウンド)が出力されます。
オーディオ出力(イヤホン端子)からの出力を強制するために、ALSA設定を書きました。
/etc/shairport-sync.conf
ALSA 項目で output_device
を指定する。
alsa = { output_device = "plughw:1,0";
aplay -l aplay -L
Raspi3での例
takuya@raspi3:~$ aplay -l **** ハードウェアデバイス PLAYBACK のリスト **** カード 0: b1 [bcm2835 HDMI 1], デバイス 0: bcm2835 HDMI 1 [bcm2835 HDMI 1] サブデバイス: 4/4 サブデバイス #0: subdevice #0 サブデバイス #1: subdevice #1 サブデバイス #2: subdevice #2 サブデバイス #3: subdevice #3 カード 1: Headphones [bcm2835 Headphones], デバイス 0: bcm2835 Headphones [bcm2835 Headphones] サブデバイス: 2/4 サブデバイス #0: subdevice #0 サブデバイス #1: subdevice #1 サブデバイス #2: subdevice #2 サブデバイス #3: subdevice #3
https://takuya-1st.hatenablog.jp/entry/2016/04/18/011246
raspi つけっぱなし
まぁRaspiは電源入れっぱなしになるんですけどね。
どうせ、NASにしてたり、SSH踏み台にするRaspi3なのでこういう活用法もありだと思う
raspi 特有の問題
オーディオジャック(イヤホンジャック)の接続は、端子の接続状態(接点の汚れ)などでホワイト・ノイズが出やすい。
しっかりと接点をきれいにして、接続する必要がある。
発展形
Shaircast で、複数スピーカーを同時に鳴らせるらしい。
掃除洗濯など、家事をしながら2Fと1Fを行き来するとき、ラジオをかけっぱなしにできそう。
企業や自治会など、建物なら館内放送に使えそうじゃん。面白そう。