オーディオサーバ

工房オーディオサーバを構築しました(1)

投稿日:

研究室や工房などの共有スペースで流す曲を、誰でも簡単に操作できたら、便利だと思いませんか?

誰でも簡単にと言えば、そう、Webです。

今週はMPDMPC及びRaspberry Piを用いたオーディオサーバと、Webクライアントを作っていました。

DSC_0067

MPDとはMusic Player Daemonのことで、Unix上で動作する音楽管理プログラムで、MPCはMPDを操作するためのCLIのソフトウェアです。
これをAPI上で操作することにより制御します。

主な仕様や特徴は以下の通りです。

  • サーバはRaspberry Pi & Raspbian で構築
  • 音楽プレイヤーはMPD, MPCを使用
  • データはMySQLで管理
  • APIはPHPで実装
  • WebクライアントはBootstrap3.0, Knockout.jsを使用
  • レスポンシブ、リアルタイム処理

今回は前準備として、簡単なMPCサーバの構築手順を紹介します。

Raspberry Piのセットアップ


まずはサーバを立てます。
必要な機材の準備とOSインストールまでは、前回の記事を参考に進めます。
なお、今回はオーディオサーバなので、これに加えスピーカーを準備する必要があります。

ネットワークの設定


次にネットワークの設定を行い、固定IPにします。
設定ファイルは /etc/network/interfaces にあります。

viやnanoを使って、iface eth0の行を下記のように編集します。

iface eth0 inet static    #固定IP割り当て
    address <割り当てるIPアドレス 例:192.168.1.80>
    netmask <サブネットマスク 例:255.255.255.0>
    gateway <デフォルトゲートウェイ 例:192.168.1.1>

設定をしたら、再起動します。

$ sudo reboot

プロキシの設定


必要であればプロキシの設定をします。
設定ファイルは ~/.bashrc にあるので、下記を加えます。

proxy_url=<設定するProxyURL:Port番号>
export http_proxy=$proxy_url
export https_proxy=$proxy_url
export ftp_proxy=$proxy_url

読み込みます。

$ sudo source ~/.bashrc

通常sudoを使用時にユーザの環境変数は読み込まれないので、その設定もします。
sudoの設定ファイルは visudo で編集します。

$ sudo visudo

下記を加えます。

Defaults env_keep="http_proxy"
Defaults env_keep+="https_proxy"
Defaults env_keep+="ftp_proxy"

パッケージインストール


必要なパッケージをインストールします。

$ sudo apt-get update
$ sudo apt-get -f install mpc mpd

MPDの設定を変更


このままだと再生できません。MPDの設定を弄る必要があります。
設定ファイルは /etc/mpd.conf にあります。
該当箇所を下記のように編集します。

audio_output {
        type            "alsa"
        name            "MPD"
        device          "hw:0,0"        # 出力デバイスの指定。アナログ端子を使う場合はhw:0, 0
        format          "44100:16:2"    # optional
        mixer_device    "default"       # optional
        mixer_control   "PCM"           # optional
        mixer_index     "0"             # optional
}

テストする


音楽ファイルを /var/lib/mpd/music に配置し、下記のコマンドで再生できます。

$ mpc update       # 音楽ファイルを読み込む
$ mpc ls | mpc add # musicディレクトリの曲をプレイリストに追加する
$ mpc play         # 再生する

他にも停止、次へ、ループ、リピート等たくさんのコマンドがあります。
ヘルプコマンドは(たぶん)ないので、man で確認しましょう。

最後に


Raspberry Piでオーディオサーバを構築するのであれば、今は RaspyFi というディストリビュージョンを使うと、
高性能なリモートクライアントも提供してくれて良いそうですが、自分で一から構築するのも面白いです。
Webクライアント開発に関しても、リアルタイム性やUIが重要であったりと、良い教材となりました。

システムの方は近日GitHubか何かで公開し、そちらの構築手順まで紹介しようと考えています。
が、まだ色々とマズイところが有ったりするので、次の記事は機能の紹介になるかと思います。

続きます

  • この記事を書いた人
  • 最新記事
アバター

snakazawa

好きなこと・分野: プロジェクト活動,ソフトウェア工学,アルゴリズム
OBです。

-オーディオサーバ
-, ,

Copyright© ソフトウェア工房 , 2019 All Rights Reserved Powered by AFFINGER5.