できること

第14回「ラズベリーラジオ後編 – MPDとスマートフォンアプリで簡単操作なラジオに変身!」

raspberrypi14_main2
ラズベリーラジオ後編!
前編では、mplayerを使って音楽ファイルやインターネットラジオの再生を行いました。プログラムを書いて外部からの遠隔操作も実現できましたが、もう少し手軽で使いやすい方法を……ということで、今回はスマートフォンアプリを使ってラジオを操作します!

raspberrypi14_main3

今回はこのような流れで準備を整えて、Raspberry Piとスマートフォンを連携していきます。

こちらの記事を参考にさせていただきました!
mpdでネットラジオ(shoutcast)を聞いてみる
Raspberry Piで作るミュージック(MPD)サーバ

 

Raspberry Piの準備

メディアの再生に特化したOSを入れ直すという方法もありますが、現在のRaspbianをそのまま残しつつ導入したかったので、「MPD(Music Player Daemon)」というパッケージを使った方法を試してみることにしました。

Music Player Daemon 公式サイト

MPD(Music Player Daemon) – Wikipedia
Music Player Daemon(ミュージック・プレイヤー・デーモン)はLinuxや各種UNIX上で動作する、音楽再生やプレイリスト管理を行うためのデーモン。よくMPDと略される。ローカルホストだけではなくネットワーク上のディレクトリにある楽曲も再生可能。
MPD自体は単なるデーモンなので、通常はMPDクライアントと呼ばれるフロントエンド・アプリケーションと併用される。

MPDとMPDクライアント、2つのパッケージをインストールします!

apt-get install mpd
apt-get install mpc

MPCパッケージは、MPDのクライアントです。合わせてインストールしておきましょう。
インストールが終わったら、外部からのアクセスを可能にするために、mpdの設定ファイルを調整します。「vi」コマンドでコマンドラインから編集することもできますが、400行以上ある長めのファイルなので、直接編集の方が簡単でした。

/etc/mpd.conf (82行目付近)

# bind_to_address "localhost"

「bind_to_address “localhost”」の先頭に、「#」を付けてコメントアウトします。
また、必須ではありませんが、プレイリストの自動更新機能と音声調節機能も、同じくmpd.confファイルで設定できます。こちらは先ほどとは逆に、コメントアウトの「#」を外して設定を有効にします。

/etc/mpd.conf (121行目付近)

auto_update "yes"

/etc/mpd.conf (322行目付近)

mixer_type "software"

設定が終わったら、LX Terminalからmpdを再起動しましょう。

service mpd restart

ここまでで、mpdの準備が完了しました!
次はmpcの設定です。まず、コマンドのオプションを確認しておきましょう。

mpc help
raspberrypi14_img01

図1

raspberrypi14_img02

図2

コマンドがたくさん!
「repeat」や「volume」など、一般的な音楽プレイヤーで見かけるような項目も用意されています。前回、mplayerで苦労した停止処理……mpcでは「stop」コマンドが用意されているので、今度は簡単にできそうです!

 

ラジオの前に、mp3ファイルをテスト視聴!

「music_directory」で指定されています。デフォルトでは「 /var/lib/mpd/music/ 」でした。
このフォルダの中に、音楽ファイルを用意します。今回もこちらのサイトから著作権フリーのmp3ファイルをお借りしてきました。

raspberrypi14_img03

図3

 

Musicフォルダ( /var/lib/mpd/music/ )の中に「test1」というフォルダを作成し、mp3ファイルを3つ用意しました。LX Terminalから「update」コマンドを実行し、Musicフォルダの内容をプレイリストとして取得します。

mpc update

きちんと読み込まれているかどうか、ファイルの一覧を出力してみましょう。「ls」コマンドを実行します。

mpc ls
mpc ls test1
raspberrypi14_img04

図4

 

「test1」と出力されました!ディレクトリ名を指定して「ls」コマンドを実行したところ、こちらも3つのファイル名が表示されたので、きちんと読み込まれていることが確認できました。
次は、「add」コマンドでプレイリストに追加します。

mpc add test1

1つ1つファイルを指定して追加することもできますが、ディレクトリ名を指定すれば下層にあるファイルも全て追加できました。
これで準備が整ったので、「play」コマンドで再生してみましょう!

mpc play
raspberrypi14_img05

図5

無事に再生されたでしょうか?
コンソールに表示されている「volume」「repeat」「random」「single」「consume」は、再生中にコマンド入力で設定できるオプションです。その他のコマンドも、再生を止めることなく実行できます。

mpc save test1_list

現在のプレイリストを保存しておくには「save」コマンドを使用します。上記のコマンドを実行すると、プレイリストの保存フォルダに次のようなファイルが作成されます。

/var/lib/mpd/playlists/test1_list.m3u

test1/Beethoven-SymNo7-1-Piano.mp3
test1/Holst-Planets-Jupiter.mp3
test1/Rhapsodyinblue-2Piano.mp3

「save」を実行すると、プレイリストはクリアされます。同じプレイリストを使用したいときは、「load」コマンドでもう一度読み込みなおしましょう。

mpc load test1_list

 

インターネットラジオ受信!

パッケージの準備とテストを終えたので、次はインターネットラジオを受信します!
mplayerの場合はプレイリストファイルのURLを引数として使用しましたが、mpcではプレイリストファイルをダウンロードして使用します。(正確には、プレイリストに記載されているURLを使用します)
「SHOUTcast」の場合は、番組一覧にダウンロードボタンが用意されています。

raspberrypi14_img06

図6

図6のように「Winamp」「M3U」「XSPF」の3種類が表示されるので、「M3U」形式を選択、ダウンロードしましょう。「tunein-station.m3u」というファイル名でダウンロードされ、テキストエディタで開くと、中身は、このようになっていました。(※記事作成(2015年2月13日現在)時点での内容です)

tunein-station.m3u

#EXTM3U
#EXTINF:-1,(#1 - 212/5000) SmoothJazz.com Global Radio - The World's First 24/7 Since 2000 - KJAZ.DB
http://173.244.199.249:80
#EXTINF:-1,(#2 - 563/5000) SmoothJazz.com Global Radio - The World's First 24/7 Since 2000 - KJAZ.DB
http://50.115.122.54:80
#EXTINF:-1,(#3 - 5/6) SmoothJazz.com Global Radio - The World's First 24/7 Since 2000 - KJAZ.DB
http://75.126.221.202:8000

このプレイリストファイルを、Raspberry Piの「 /var/lib/mpd/playlists 」ディレクトリに格納します。これだけでOK!「ls」コマンドで確認してみると……

mpc ls
raspberrypi14_img07

図7

先ほど作成した「test1」と一緒に「tunein-station」が表示されました!
続いて「load」コマンドを使って、プレイリストを読み込みます。

mpc load tunein-station

コンソールに「loading: tunein-station」と表示されれば読み込み成功!更新されたプレイリストを確認してみると……

mpc playlist
raspberrypi14_img08

図8

「tunein-station.m3u」の内容が反映されました!「test1_list」を読み込んだままの状態だったので、追加される形で表示されます。「playlist」コマンドの実行結果は、ヘルプにあるように「current playlist」を指しているので、「今読み込まれているプレイリスト」という意味合いで覚えておくとよさそうです。保存するファイルもプレイリストと呼ぶので、少しややこしいですね……(これが分かるまでかなり苦労しました)。
プレイリストの読み込みを解除して、新たに始めたいときは「clear」コマンドを実行しましょう。

 

スマートフォンから操作!

MPoD

※現在こちらのアプリは公開されていません。代替のアプリとしてはyaMPC等があります(2019年7月現在)。

インターネットラジオをiPhone5を使用するため、こちらのMPoDというアプリをダウンロードしました。iOSに対応したアプリは余りないようですね……Androidではいろいろなアプリがあるので、「MPD」をキーワードに検索して、好きなものを選択してくださいね。
https://play.google.com/store/search?q=mpd&c=apps&hl=ja

スマートフォンの準備は、アプリをダウンロードするだけ。
早速アプリを起動してみると……

raspberrypi14_img09

図9

読み込まれているプレイリストがある場合は自動でローディングがはじまり、画面に表示してくれます。画像は、上の3つがmp3ファイル、4つ目以降がSHOUTcastのプレイリストファイルの内容です。(ダウンロードしたm3uファイルをそのまま使用したので、同じ番組が複数表示されています)

ラジオの番組名をタップすれば、Raspberry Piのスピーカーを通して再生がはじまります。
一般的な音楽アプリと同じように、再生・停止・音量調整なども用意されています。Raspberry Piをリモコン操作しているような感覚で使えますね!

プレイリストの切り替えも、アプリ側から可能です。画面右上の「Menu」をタップすると、左側にメニュー一覧が表示されます。

raspberrypi14_img10

図10

「Saved playlist」を選択すると、Raspberry Piのプレイリストフォルダ( /var/lib/mpd/playlists/ )に保存されているプレイリストの一覧が表示されます。

raspberrypi14_img11

図11

プレイリスト名をタップすると、プレイリストが読み込まれます。「load」コマンドを同じ操作です。
メニューから「playlist」画面に戻ると、プレイリストが追加されています。今まで読み込まれていた状態に追加されるので、同じプレイリストを選択すると、重複して表示されます。読み込むたびにどんどん追加されてしまうので、そんなときは「playlist」画面の右上の「Edit」から「Clear playlist」を実行しましょう。

raspberrypi14_img12

図12

 

プレイリストについて

プレイリストは、テキストエディタで簡単に編集できます。お気に入りの番組をリストアップして、オリジナルのプレイリストを作成しておくと、ラジオがもっと使いやすいものになります!もちろん、SHOUTcast以外のラジオも再生できるので、いろいろなラジオで試してみましょう!

/var/lib/mpd/playlists/myradio.m3u

#SHOUTcast-SmoothJazz.com Global Radio
http://173.244.199.249:80
#SHOUTcast-Jazzradio
http://216.230.231.164:9938
#simulradio-sankakuyama
mms://wm2.hvc.co.jp/sankakuyama
#netoradi-24hour-indies-music
http://std1.ladio.net:8010/koreiina

先ほどのSHOUTcastに加え、サイマルラジオとねとらじの番組を追加したリストを作成しました。サイマルラジオはSHOUTcastと同様に、プレイリストをダウンロードして、中に記載されているURLを使用しています。ねとらじは、視聴URLをそのまま使用できます。
m3uファイルでは、先頭に「#」を付けるとコメント扱いになるので、番組名をメモしておきました。

raspberrypi14_img13

図13

MPoDから読み込むとこのように表示されます!
番組によっては、受信を開始すると、番組名や曲名が表示されるものもあります。番組名を自分で設定できるともっと使いやすいのになぁと思っていろいろ試した結果、

http://173.244.199.249:80/#SHOUTcast-SmoothJazz.com Global Radio

URLの末尾を「/」で閉じて、「#」を挟んでタイトルを記載。SHOUTcastとサイマルラジオについては、この記述でタイトルを表示させることができました。ねとらじは受信できなくなってしまったので、局によってはできない場合がありますが……局によって使い分けながら試してみてくださいね。

 

まとめ

ラズベリーラジオのリニューアル完了!
アプリを使用することで、手軽さだけでなく、ユーザビリティが格段にアップさせることができました。音楽プレイヤーのように感覚的に操作が分かりやすいので、アプリをダウンロードするだけですぐに使ってもらえそうです!今後も社内BGMとして重宝しそうです(社内用と言わず、一家に一台欲しいくらいです!)

さてさて次回は……

raspberrypi14_photo01_2

写真1

出社してみるとデスクの上に見覚えのある箱が!
うわさの最新機種「Raspberry Pi2 Model B」をいただきました!(こちらは記念に撮影した実際の様子です。笑)
「Raspberry Pi2」といえば、Windows10が無償提供されるということで話題になっていますね!「2」ということで、今までのモデルと比べてどれくらいのレベルアップを遂げたのでしょうか? 期待に胸を膨らませつつ、次回はこの「Raspberry Pi2」で遊びます!

アバター画像

プロフィール:プログラミング暦通算4年、最近IT業界に舞い戻ってきたプログラマーです。女子です。

高専ロボコン2019出場ロボット解剖計画