2015年3月8日日曜日

RPiラヂオ- Raspberry Pi でインターネットラジオ

 今日のガラクタは Raspberry Pi です。先日、RPi2 を入手して、今まで開発機として活躍していたRPiB+が1台うきました。そこで、今回は このういたRaspberry Pi を音楽再生サーバにしてみようと思います。実はこの手の内容のことは、既にたくさんの方がやられているので、詳細については、Google先生に「Raspberry Pi」「MPD」等のキーワードの組み合わせでお尋ねしていただけると、色々情報が出てきます。実際、今回行ったのも、上記のキーワードで見つけた情報を真似たものです。ちなみに「MPD」は Music Player Daemon で、Linux PCを音楽再生サーバにするときの定番のようです。

 まずは、こちらを参考にさせて頂いて、MPDとMPCをインストールしました。前述サイトの丸写しですが、一応・・・。

   sudo apt-get install mpd mpc

ここで、mpd は先程の Music Player Daemon で、mpc がそれに対するクライアントソフトです。
 次に alsa-util をインストールしますが、自分の環境では最新版が入っていて、特に更新もされませんでした。

   sudo apt-get install alsa-utils

 一旦、再起動。

   sudo reboot

 mpd の設定ファイルを編集します。

   sudo vi /etc/mpd.conf

以下をコメントアウト。

   → #bind_to_address   localhost

audio_output { ~ の記述部分のformat,mixer_xxxをコメントアウト。

   audio_output {
      type "alsa"
      name "My ALSA Device"
      device "hw:0,0" # optional
    → # format "44100:16:2" # optional
    → # mixer_device "default" # optional
    → # mixer_control "PCM" # optional
    → # mixer_index "0" # optional

   }

サービスを再起動。

   sudo /etc/init.d/mpd restart

 次に音楽ファイルを用意して、 /var/lib/mpd/music フォルダ下に格納します。他のところに置きたい場合はシンボリックリンクでも大丈夫なようです。音楽ファイルを用意して聞く方法は、こちら等を参考にして試しましたが、今回はインターネットラジオを構成したいと思い調べてみました。結果としては playlist にネットラジオのURL(放送チャネルが通常ポート番号で振り分けられているので、URL:ポートNo まで)を記述すれば、通常の音楽ファイルと同様に聞くことができることがわかりました。
 例えば、プレイリストを/var/lib/mpd/playlists フォルダに radio.m3u のファイル名でテキストエディタで作成して、

   70s-90s J-pop Stream
   http://198.178.123.14:7002
   Retro 70s 80s 90s
   http://192.81.248.91:8300
   Golden 50/70s Hits
   http://listen.radionomy.com/golden-50-70s-hits
   Hits80
   http://listen.radionomy.com/Hits80
   STAR FM Rock Classics
   http://91.250.82.237:8008
   ABC Jazz
   http://listen.radionomy.com/ABC-Jazz
   kreyolmixradio
   http://174.36.232.227:8132
   8bitx Radio Network
   http://198.178.123.2:7492

のように記述しておいて、

   mpc clear
   mpc load radio.m3u
   mpc play

として、プレイリストを再生するとリストのトップのネットラジオチャネルが再生されます。あとは、

   mpc next
   mpc prev

なんかで、リスト内のチャネルを切り替えることができます。自分は、/var/lib/mpd/下のmusicとplaylistsフォルダは削除してしまい、/home/pi/ 下に同名のフォルダを作成して、シンボリックリンクでそれらを見に行くようにしました。そのほうが、piユーザで音楽ファイルのコピーやプレイリストの編集ができるので。

 ちなみに、Raspberry Piで音声を再生するには、アナログ端子へ出力、HDMIへ出力、USBにDACをつないで出力等のいくつかの方法がありますが、今回は一番シンプルなアナログ端子を使いました。とりあえずは、ヘッドフォンをアナログ端子につないで動作を確認しました。

 とりあえず、ソフトウェア的にはインターネットラジオを構成できたわけですが、これだけだと、おもしろくありません。がらくた部屋としては、どちらかというと、ここからが本題・・・。

 せっかくのB+でGPIOがいっぱいあるので、チャネルの選択と音量の調節をGPIOに接続したロータリエンコーダで行えるようにしてみたいと思います。ただし、ロータリーエンコーダに関しても、すでに先人がいらっしゃいますので、それを使わせてもらうことにします。

 GPIOから端子を引き出すのと一部LED用の抵抗を入れるための回路をハンダ付け。そういえば、ハンダ付けするの久しぶり。ハンダ付けって楽しいですよね。♫それっハンダ!それっハンダ~♫




 一応、こんな感じで、


 ソフトの方は、こんな感じ

 動かしてみたところ。


 エンコーダでプレイリストの切り替えとボリュームの変更を行えるようにしました。これをケースに入れようと思ったんですが、手頃な入れ物が見つからなかったで、


レゴで作って、エンコーダなんかはホットボンドで仮止め。


 今回は、手っ取り早く作りたかったので、USB DACも使わずにアナログ出力で、アンプ、スピーカもモノラルのチープなものを使ったんですが、逆にAMラジオな雰囲気のノイジーな音で、50's~70'sのオールディーズチャネルなんか聞くと、すごくいい感じ。