できること

第12回「Raspberry Piで音遊び!」

raspberry12_main
スピーカーの付いていないディスプレイを使用していたので、実は今まで無音の状態で遊んでいたのです……自宅で眠っていた小さいスピーカーを発見したので早速接続!いよいよ念願の音遊びに挑戦します!
音声出力に関することは何も触れていないはずなので、デフォルト状態からのスタートです。まずは、何か音を鳴らしてみるところから始めたいと思います!

 

用意したもの

raspberry12_photo01

写真1

今回の主役、スピーカーです!

手のひらサイズの充電式のものなので、サイズも使い勝手もRaspberry Piにぴったり!途中で電池切れになってしまわないように、遊ぶ前にしっかり充電して準備しておきました。
もうひとつは、iPhone5に付属していたイヤホンです。(ちなみにコードリールはどらやき型です。分かるかな?) もう少し早く気づくとよかったのですが……オーディオ端子に接続できれば良いので、3.5mmの一般的なイヤホンなどでも代用が可能でした。静かにテストしたいときにはイヤホンの方がオススメです。

 

音を鳴らすには?

スピーカーの準備が整ったら、早速実際に音を鳴らしてみましょう!
音といえば、以前遊んだ学習用のプログラミングソフト「Scratch」に、「音」に関する項目があったので、まずはScratchで試してみたいと思います。

raspberry12_img01

図1

このように組み立てました!
ネコのアイコン(スプライト1)をクリックすると「ニャー」という鳴き声の音声が流れるという、最低限のシンプルな処理です。早速ネコちゃんをクリックすると、「ニャー」と……あれ?鳴らない!?

もしかして音量がゼロなのかも!と思って調べてみると、コマンドラインから設定する方法を発見しました。

alsamixer
raspberry12_img02

図2

上下キーで音量を調節することができるので、適当な値に設定しておきましょう。設定が完了したら、[Escape]キーを押すことで元の画面に戻ります。

それではScratchを再実行!……まだ鳴ってくれません!
さらに調べてみると、Raspberry Piでは、HDMIを使用している場合、音声の出力先もHDMIが選択され、音が鳴らない場合があるようです。HDMIとオーディオ端子、どちらを音声出力として使用するかを指定する必要があります。先程の「alsamixer」と似ていますが、今度は「amixer」というコマンドを使って、音声出力をアナログ出力に設定します。

amixer cset numid=3 1

気を取り直してScratchを再実行!
今度はネコちゃんが「ニャー」と答えてくれました!!

先程のスクリプトだと、実行後、スピーカーのノイズが鳴り止まなくなってしまったので、「すべての音を止める」の命令も追加してあげた方が良さそうです。音声が中断されてしまわないように、1~2秒のスリープ処理も入れてあげましょう。図3のようにするときれいに動きました。

raspberry12_img03

図3

音が鳴るようになったので、次は音楽を聴けるようにしたいと思います!

 

mp3の再生!まずはツールを使って挑戦

音楽再生に関するプリインストールソフトがないのか探してみたところ、スタートメニューの「サウンドとビデオ」の中に「VLCメディアプレイヤー」というツールを発見!まずはこちらを使って音楽を再生してみたいと思います!


VLCメディアプレイヤー公式サイト

Windows版・Mac版もあり、公式サイトからダウンロードできます。

raspberry12_img04

図4

初期画面がこちらです(図4)。
ちなみにこのVLCメディアプレイヤー、なぜかpiユーザーでないと起動できませんでした。(そういえば「ScratchGPIO5」を使ったときも、同じ現象が起こりましたね)

raspberry12_img05

図5

音楽ファイルを再生するには、まず、上部のメニューの「メディア」のなかから、再生方法を選択します。ローカルファイル以外に、ディスクドライブやインターネット上のファイルを直接指定することもできます。「ディレクトリを開く」を選択すると、指定したディレクトリ内のファイルが連続で自動再生されていきます。

Raspberry Piの中には、パッケージで使用されている音楽ファイルがいくつかあるので、こちらのファイルを使ってテスト再生してみましょう!

/usr/share/sounds/
/usr/share/scratch/Media/Sounds/
/usr/share/pyshared/pygame/examples/data/

 

次はコマンドからmp3再生!

先に間違った例をご紹介。
wavファイルをテスト再生したときと同じように、mp3も「aplay」コマンドで再生できると思って実行したコマンドがこちら。

aplay /usr/share/pyshared/pygame/examples/data/house_lo.mp3

実行した途端に、ひどい雑音が!
調べてみると、mp3の再生には「aplay」コマンドは使えず、別途パッケージが必要だそうです。
再生を止めるときは、キーボードから[CTRL]+[C]を入力!操作ミスをしたときや、誤って無限ループに入ってしまったときなどにも使える強制終了コマンドなので、覚えておくと便利です。(Windowsで言うところの[Ctrl]+[Alt]+[Delete]ですね!)

気を取り直してパッケージをインストールします!
今回は、コマンドラインを使ったmp3プレイヤーである「mpg321」というパッケージを使用しました。

apt-get install mpg321

インストール後は、コマンドラインからすぐに使用することができました。
再生するコマンドは、「mpg321」の後にmp3ファイルを指定するだけでOK!

mpg321 /usr/share/pyshared/pygame/examples/data/house_lo.mp3
raspberry12_img06

図6

無事に再生されました!
タイトルなどのファイル情報や再生時間をコンソールに表示してくれるのですが、「-q」オプションを付けると何も表示させずに再生だけをおこなうこともできます。
その他のオプション値は、「–help」オプションを付け実行すると一覧が表示されます。ちなみに、オプション値を打ち間違えた場合も、メッセージとともにこの一覧を表示してくれます。

mpg321 --help
raspberry12_img07

図7

mp3を再生した際の実際の様子を動画で撮影してみました!

曲が流れているのが聴こえるでしょうか?
再生中にキーボード入力で音量調節ができるようになる「-K」オプションを付けて実行しました。音量は最大(100%)の状態からスタートします。オプションがなしのデフォルト状態でも同じ音量です。図8にも記載されていますが、音量を下げる場合は「/」キーを、上げる場合は「*」キーを押すと、パーセンテージが3ずつ変化するのがコンソール上で確認できます。

mp3は、こちらのサイトからライセンスフリー音源をお借りしました!

 

動画再生!

せっかくなので動画の再生にも挑戦してみました!
Raspberry Piの中にはテストに使えそうな動画ファイルが見当たらなかったので、先程撮影した動画を使いました。iPhoneで撮影したのでファイル形式はMOV形式(.mov)です。ファイル名は「test.mov」として、Raspberry Piの適当なフォルダに置いておきましょう。

動画を再生するためのパッケージには、Raspbianにプリインストールされている「omxplayer」というものがあります。ファイル名を指定するだけで、動画を再生してくれます。

omxplayer test.mov

実行すると、ディスプレイ幅いっぱいに動画が表示されます。図8のようなイメージです!

raspberry12_img08

図8

もし音が出なかった場合は、「-o」オプションを使って音声の出力先を指定してあげましょう。オーディオ端子の場合は「local」を、ディスプレイから出力する場合は「hdmi」を指定します。

omxplayer -o local test.mov

その他のオプション値を確認するには、「-h」オプションを付けてコマンドを実行しましょう。

omxplayer -h
raspberry12_img09

図9

omxplayerは、再生中にキーボード入力からの制御が可能です。キー入力については「-keys」で確認することができます。

omxplayer -keys
raspberry12_img10

図10

まとめ

音楽と動画の再生に成功!
最初は音がなかなか出せずに苦戦してしまいましたが、なんとか目標を達成することができました(文章だと伝わりにくいですが、実はかなりの時間を費やしてしまいました……!)。
「mpg321」も「omxplayer」も、オプション値がたくさん用意されているので、いろいろ変えて試しながら遊んでみるのも面白そうですね。今後は、BGM付きでRaspberry Pi遊びができるので楽しみです!

次回(第13回)はいよいよ念願のインターネットラジオの受信!

Raspberry Pi ・ View topic – インターネットラジオの受信

Raspberry Pi公式サイトのフォーラムにインターネットラジオ受信についての記事があったので、こちらのページを参考に挑戦してみたいと思います!

アバター画像

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

Arduinoでスマートウォッチを作ろう