Raspberry PiとUSB-DACを組み合わせて格安で便利なAVアンプを作った
なにこれ?
Raspberry PiにUSB-DACを接続して、持っていたアンプで鳴らしてみたら思った以上にいい音が出た。 AirPlayサーバー化すると、iPhoneに入っている曲やYoutubeやニコ動の作業用BGMを飛ばして聴ける。 VLCをインストールすると、ネットラジオを聴いたりNASにあるファイルを再生したりブラウザから曲選択や音量調整が出来るようになる。 ベットでごろ寝しながらすべてを操作できるの、非常に便利。 しかもRaspberry Piと既存のアンプやコンポがあれば低コストで実現できるので、 ノウハウを公開します!
はじめに
AirPlay対応のAVアンプって便利ですよね。 寝転がりながらiPhoneを使ってYoutubeやニコニコ動画の作業用BGMを気分で選べばそれを高音質で再生してくれるし、 ネットラジオなどのインターネット経由のストリーミング再生もこなしてくれます。 ものによってはネットワークストレージに保存されている音楽ファイルを再生することも出来ます。 けどお値段はそれなりにしますよね…
(参考:ONKYO TX-NR626)
4万円もするならそのお金で〇〇でも買う!なんて買い渋っている人も多いんじゃないでしょうか。 そこで、あなたの押入れに眠っている未開封のRaspberry Piと久しく鳴らしていないアンプを使って、 低コストで便利なAVアンプを作成しましょう!
必要なもの
Raspberry Pi
RSオンラインなどから通販で購入することが出来ます。
以下の3つも用意する必要があります。
- Wifiドングル (無ければLANケーブルで接続)
- SDHCカード (自分はclass10などの高速なものを購入しました)
- USBキーボード (USBマウス) (Raspberry PiにOSをインストールする際に必要になります)
USB-DAC
DAC = Digital Analog Convertor
デジタルオーディオデータを入力すると、アナログ音源に変換して出力します。
USB-DACの場合、PCM音源をUSBで転送するとアナログに変換して出力してくれるので、 それを既存のアナログアンプなどのオーディオリソースにつなげて再生することが出来ます。
僕は安く済ませるため大須(1)で発見した組み立てキットAKI-DAC-U2704を1800円で購入しました。 このキットに搭載されているPCM2704は音質に定評があるらしいです。 電子工作素人だったのでハンダ付けに少し苦戦しました。コテ先が細いハンダごてを利用するといいと思います。
音質にこだわらないのであれば、Raspberry Piのステレオミニ出力を直接アンプに流すでもいいでしょう。 ただ、アンプ側のインピーダンスと合わない場合ちっとも大きな音が出ないため、 その場合はUSB-DACを利用するとかオペアンプを使うとかしないといけないです。
もっと音質にこだわりたいなら、ヘッドホン向けに売られている高級DACを利用するのもいいかもしれません。
アンプ(コンポ)
親父から譲り受けた、いにしえのアンプを使いました。 なんと1977年頃の代物だそうです。 SANSUIは定評のあるメーカーだったそうで、 音が鳴らなくなっていたのをメンテしてもらったら、 (父曰く)元通りのいい音を出してくれるようになりました。
レコードやカセットなどの古きよきアナログ時代の頃のアンプや、 インターネットの波に取り残されて押入れに眠っているCD・MDコンポなどを利用するといいと思います。
費用
かかった費用は僕の場合はRaspberry PiとアンプとSDHCカードは既に持っていたので、
のみ購入で3000円程度です。安い!
手順
Raspberry Piのセットアップ
http://lifehacker.com/5976912/a-beginners-guide-to-diying-with-the-raspberry-pi を参考にしました。 以下、MacOSXでの操作を想定しています。
まず、Raspberry Pi向けのLinuxディストリビューションであるRaspbianのディスクイメージをSDHCカードに書き込みます。
SDHCカードを挿入したのち、ディスクユーティリティを利用して自動でマウントされたパーティションをアンマウントします。
$ wget http://downloads.raspberrypi.org/raspbian_latest -O raspbian.zip $ unzip -x raspbian.zip $ mount # SDHCカードのディスク番号の確認 /dev/disk0s2 on / (hfs, local, journaled) devfs on /dev (devfs, local, nobrowse) map -hosts on /net (autofs, nosuid, automounted, nobrowse) map auto_home on /home (autofs, automounted, nobrowse) /dev/disk2s1 on /Volumes/SDCard (exfat, local, nodev, nosuid, noowners) # SDHCカードのディスク番号が2であることがわかった $ sudo dd if=20YY-MM-DD-<name>-raspbian.img of=/dev/rdiskN bs=1m # N=先程調べたディスク番号
SDHCカード・Wifiドングル・USBキーボード・HDMIケーブルを接続し起動させます。 (電源を挿すと自動的に起動します。)
起動が完了すると設定画面になるので、次のことを行いましょう。
- パーティション容量の拡張
SDHCに書きこまれたディスクイメージは???MBのパーディションしか持っていないため、 SDHCカードの全領域を利用出来るようにパーティション容量を拡張します。
- sshdの設定
sshdの設定を行うことで、以後の設定をリモートで行うことが出来るようにします。
- GUIを無効化
CPUリソースを消費しそうな不要な機能は切っておきます。
USB-DACの接続
僕が利用したAKI-DAC-U2704は、接続しただけで認識してくれました。 ものによってはドライバのインストールが必要になるかもしれません。
USB-DACが正しく認識されたかどうかを確認するためには、以下のようにします。
pi@raspberrypi ~ $ cat /proc/asound/cards 0 [ALSA ]: BRCM bcm2835 ALSbcm2835 ALSA - bcm2835 ALSA bcm2835 ALSA 1 [DAC ]: USB-Audio - USB Audio DAC Burr-Brown from TI USB Audio DAC at usb-bcm2708_usb-1.2, full speed
0番目はRaspberry Piのオンボードサウンドカードです。 1番目に接続したDACが表示されていれば正しく認識されています。
オーディオデバイスの一覧を表示するためには、次のようにします。 オーディオデバイス名は、のちのAirPlayサーバーやVLCの利用の際に必要になります。
pi@raspberrypi ~ $ aplay -L null Discard all samples (playback) or generate zero samples (capture) default:CARD=ALSA bcm2835 ALSA, bcm2835 ALSA Default Audio Device sysdefault:CARD=ALSA bcm2835 ALSA, bcm2835 ALSA Default Audio Device default:CARD=DAC # これがUSB-DACのオーディオデバイス名 USB Audio DAC, USB Audio Default Audio Device ...
また、ncurseベースのalsamixerコマンドで音量を調整することが出来ます。
pi@raspberrypi ~ $ alsamixer -c 1
AirPlayサーバー化する
オープンソースのAirTunesエミュレータshairportを利用します。
インストールの手順は、 http://audioplastic.org/blog/2013/01/10/AP1/ を参考にしました。
大まかな手順としては、
pi@raspberrypi ~ $ apt-get install git libao-dev libssl-dev libcrypt-openssl-rsa-perl libio-socket-inet6-perl libwww-perl avahi-utils pi@raspberrypi ~ $ sudo cpan install Net::SDP pi@raspberrypi ~ $ git clone https://github.com/albertz/shairport.git shairport pi@raspberrypi ~ $ cd shairport pi@raspberrypi ~ $ make pi@raspberrypi ~ $ ./shairport.pl -a AirPi --ao_devicename <オーディオデバイス名>
この状態で、iPhoneを確認すると、AirPiが選択できるようになってます。
やったね!
Raspberry Piの起動時に自動的にデーモンとして起動させるには、次のようにします。
pi@raspberrypi ~ $ make install pi@raspberrypi ~ $ sudo cp shairport.init.sample /etc/init.d/shairport pi@raspberrypi ~ $ cd /etc/init.d pi@raspberrypi ~ $ sudo chmod a+x shairport pi@raspberrypi ~ $ sudo update-rc.d shairport defaults
けど、僕はtmux上で起動してssh接続を終了するときはデタッチするようにして使っています。
VLCを利用する
VLCは、主にLinuxで用いられているフリーの音楽/動画再生ソフトです。 GUIのみならずCUIやWebブラウザからの操作にも対応しています。 多機能なためRaspberry Piと組み合わせると非常に便利です。
VLCのインストール
pi@raspberrypi ~ $ sudo apt-get install vlc
SDHCカードに保存した曲を再生する
mp3ファイルの再生
pi@raspberrypi ~ $ vlc --aout alsa --alsa-audio-device <オーディオデバイス名> ~/Desktop/Perfume.mp3
ネットラジオを再生する
例として、http://www.listenlive.eu/jazz.html のClassic Jazzを再生します。
pi@raspberrypi ~ $ vlc --aout alsa --alsa-audio-device <オーディオデバイス名> http://broadcast.infomaniak.ch/jazz-wr01-128.mp3.m3u
ネットワークストレージに保存している曲を再生する
Webブラウザから操作する
https://wiki.videolan.org/Control_VLC_via_a_browser/ を参考にしました。
事前に/usr/share/vlc/lua/http/.hosts
を編集して、自分(=Raspberry Pi)以外からのアクセスを許可しておく。
--extraintf=http --http-port
フラグをセットしてvlcを起動。
デフォルトでは8080ポートを使いますが、--http-port
フラグで変更可能です。
このように、曲の再生・一時停止・音量調整や、 プレイリストや曲の選択などがブラウザからできるようになります。 iPhoneからだと、スマホ対応ページが表示されます。
オフィスフロアやシェアハウスのオーディオの場合、 このように操作インターフェースを公開して、みんなが自由に流したい曲を登録できるようにすると楽しそうです。
おわりに
もともと、親父が昔から大切にしていたアンプを譲り受けて、 それをどう活用しようか悩んでいたところに @kikuchy のやりたいこと・作りたいものリストが目に止まって、 これだ!と思ってRaspbery Piと組み合わせてみたのが作成するきっかけでした。
現状の問題点としては、iPhoneで動画再生すると映像に対して音が少し遅れてしまいます。 Wifiでデータを飛ばしていたりRaspberry Piの処理速度のせいだとは思いますが、 違和感がない程度までディレイを減らせるようにチューニングするのが課題です。
思いつきと少しの労力で素晴らしいオーディオ環境を手に入れることができました。 みんなもオーディオライフをHACKしよう!