MPDのインストール

Linuxのコマンドに詳しい方のために、Ubuntu、Raspberry Pi OSといったLinuxディストリビューションにMPDをインストールする方法を紹介します。このページは以下のコマンドを概ねマスターされている方を対象にしています。標準的なLinuxコマンドについては特に解説しません。

  • エディター:vim, nanoなど
  • 一般コマンド:cd, pwd, ls, cp, mv, mkdir, ln, df, find, grep, chmod, ssh, scp
  • システム管理系コマンド:systemctl, mount, fstab, shutdown, reboot
  • パッケージ管理コマンド:apt (Debian系),  yum (Red Hat系) など

Linuxのコマンドに慣れていない方は、Volumioのような、あらかじめMPDを組み込んだLinuxディストリビューションをお勧めします。

Volumioのインストール」をご覧ください。

1. Raspberry Pi os liteのインストール

MPDを動作させるのにお勧めのマシンはラズパイ (Raspberry Pi)です。安価(5000円程度)な上、MPDを動作させるには十分な性能を持ちながら、PCより消費電力が低い(2W〜3W程度)からです。常時起動しておいても電気代が気になる程ではありません。ラズパイの機種の選択については「ラズパイオーディオ入門」をご覧ください。ラズパイ用の標準OSであるRaspberry Pi OSは、Ubuntuと同じくDebian Linux系のOSです。Ubuntuに慣れた方なら戸惑うことは少ないと思いますが、インストールと初期設定がやや特殊ですので、最初に手順を説明します。ラズパイはディスプレイを接続せず、いわゆる「ヘッドレス」で常時起動することを想定しますので、GUIを含まない Raspberry Pi OS Lite をインストールします。

まずは、Raspberry Pi OSのサイトから、Raspberry Pi Imagerをダウンロードします。Windows用、macOS用、Ubuntu用があります。次いで、SDカードリーダーをPCまたはMacに接続してmicroSDカードをさして、Raspberry Pi Imagerを起動します。

 

Operating Systemには RASPBERRY PI OS LITE (32-BIT) を選択します。SD Cardで挿入したカードを選択して、WRITEボタンをクリックすると書き込みが開始されます。


ラズパイをヘッドレスで使うために、Windows PCやMacなど他のコンピューターからsshでログインできるようにします。Raspberry Pi Imagerで書き込んだmicroSDカードを、いったんカードリーダーから抜いて、刺しなおすと boot という名前の外部ストレージとして認識されます。そこにsshというファイルを作ります。

Windows(bootのドライブレターがD:)の場合:

 コマンドプロンプトを起動してください。

 C:¥Users¥myuid>d:

 D:¥>type nul > ssh

macOSの場合、

 ターミナルを起動してください。

 $ cd /Volumes/boot

 $ touch ssh

外部ストレージ(microSDカード)を取り出し、ラズパイに刺して、LANケーブルを接続して、給電します。

Raspberry Pi OSが起動するまで数分待ち、sshで接続して、次のアカウントでログインしてください。

 ホスト名:raspberrypi.local

 ユーザー名:pi

 パスワード:raspberry

 C:¥Users¥myuid>ssh -l pi raspberrypi.local

Windows 10 1803以降、および、macOSは標準でsshが使えるようになっています。

可能な限りWiFiではなく有線LANの使用を勧めますが、有線LANの環境が無い場合は、最初にWiFiの設定をします。

ラズパイにディスプレイ(HDMI経由)とキーボード(USB経由)を接続し、先程OSを書き込んだmicroSDを挿して、給電します。

 

起動したら、次のアカウントでログインしてください。

 ユーザー名:pi

 パスワード:raspberry

 

ログインしたら、raspi-config を起動します。

 $ sudo raspi-config


raspi-configはラズパイの主な設定を変更するためのツールです。


1. System Options
> S1 Wireless LAN でWiFiの設定ができます。国を選び、SSIDを入力し、パスワードを入力するとWiFiに接続します。(JをタイプするとJapanの近くのJerseyまでジャンプします)

 

3. Interface Options > P2 SSH でSSHを有効にできます。以降は他のマシンからも次のように ssh でログインできるようになります。

 $ ssh -l pi raspberrypi.local


5. Localisation Options > L2 Timezone でタイムゾーンを設定してください。日本の場合は Asia > Tokyo です。

 

MPDを動作させるだけなら、5 Localisation Options > L1 Localeはデフォルトの en_GB.UTF-8 UTF-8(UTF-8のイギリス英語)のままでも結構です。

 

以降はsshでログインして作業できますが、引き続きディスプレイとキーボードを使って操作する場合は L3 Keyboardでお使いのキーボードの種類を指定してください。


2. alsaの設定

MPDは様々なオーディオ出力をサポートしていますが、ここでは最も一般的なALSA (Advanced Linux Sound Architecture)を使ったオーディオ出力を例に解説します。またDACは下記を使います。
 HiFiBerry DAC+ Pro (ラズパイ用 I2S DAC)

 TOPPING D50 (USB DAC)

現在のALSAの設定は、

 $ aplay -l
で確認できます。左はノートPCにインストールしたUbuntuの例です。デフォルトでイヤフォンジャックのアナログ出力とHDMIをサポートしています。USB DACは接続するだけでALSAが認識します。TOPPING D50 USB DACを接続して aplay -l を実行すると、

 Card 1: D50 [D50], device 0: USB Audio [USB Audio]
と表示されます。


ラズパイにインストールしたRaspberry-Pi OSで aplay -l を実行してみると、デフォルトではALSAがラズパイのヘッドフォンジャック (Headphones)を認識ていいます。

I2S DACの HiFiBerry DAC+ Proが接続されていますが、ALSAはHiFiBerry DAC+ Proを検出していません。I2S DACには設定が必要です。


I2S DACの接続方法は各製品の説明書を確認ください。HiFiBerryのLinuxでの設定方法は、英語ですがこちらに説明があります。まずラズパイのヘッドフォンジャックは使わないので、無効にします。/boot/config.txt ファイルの次の行を削除するかコメントアウトします。

 dtparam=audio=on
そして次の行を追加します。

 dtoverlay=hifiberry-dacplus
その結果、/boot/config.txt の該当部分は次のようになります。

 #dtparam=audio=on

  dtoverlay=hifiberry-dacplus

/boot/config.txtを編集してラズパイを再起動するとALSAがHiFiBerry DAC+ Proを検出します。

 card 0: sndrpihifiberry [snd_rpi_hifiberry_dacplus], device 0: HiFiBerry DAC+ Pro HiFi pcm512x-hifi-0 [HiFiBerry DAC+ Pro HiFi pcm512x-hifi-0]

 

左はさらにTOPPING D50も接続して play -l を実行した例です。

 card 1: D50 [D50], device 0: USB Audio [USB Audio]

 

cardの名称(sndrpihifiberryおよびD50)と、deviceの番号(0および1)を後ほどMPDの設定で使用します。


3. mpdのインストール

aptコマンドでMPDと、コマンドラインのクライアントmpcをインストールします。

 $ sudo apt update

 $ sudo apt install mpd mpc

 

4. mpd設定ファイルの編集

MPDの設定ファイルは /etc/mpd.conf です。このファイルを編集して設定をおこないます。

次の行を探します。

 bind_to_address         "localhost"

localhostをanyに変更してください。

 bind_to_address         "any"

さらにALSAの設定例を探します。

 # An example of an ALSA output:

 #

 audio_output {

         type            "alsa"

         name            "My ALSA Device"

 #       device          "hw:0,0"        # optional

 #       mixer_type      "hardware"      # optional

 #       mixer_device    "default"       # optional

 #       mixer_control   "PCM"           # optional

 #       mixer_index     "0"             # optional

 }

 

aplay -l の出力の card と device の値を device "hw:"の部分に記入します。

 device "hw:card,device"

「2. ALSAの設定」の HiFiBerry DAC+ Proを例に取ると、

 device    "hw:0,0"

でも良いですし、

 device   "hw:sndrpihifiberry,0"

でも良いです。しかし前者のようにcardを数字で指定すると、起動時の検出順で変わる可能性がありますから、後者がおすすめです。

下記がHiFiBerry DAC+ Proの audio_output設定の例です。

 audio_output {

         type            "alsa"

         name          "HiFiBerry DAC+ Pro"

        device          "hw:sndrpihifiberry,0"

 }

下記はTOPPING D50 USB DACの例です。

 audio_output {

         type            "alsa"

         name          "D50 USB DAC"

        device          "hw:D50,0"

 }

最低限変更が必要な設定は以上です。

 

/etc/mpd.conf を変更した場合は、ラズパイを再起動するか、MPDを再起動して変更を反映させてください。

 $ sudo systemctl restart mpd

5.mpd.socketの無効化

yaMPCはBonjourを使ってMPDを検出する機能があります。しかしsystemd socket activation (mpd.socket)という機能を使っていると検出されません。mpd.socketは最初にMPDクライアントからの接続要求があったときに初めてmpdを起動しますが、この機能を無効にしてラズパイ起動時にMPDが起動するようします。以下の手順でmpd.socketを無効にしてください。 

$ sudo systemctl stop mpd.service

$ sudo systemctl stop mpd.socket

$ sudo systemctl disable mpd.socket

$ sudo systemctl start mpd.service

6. 音楽ファイルの配置

FLACやAACなどの音楽ファイルはデフォルトでは /var/lib/mpd/music/ 以下に配置します。ここに直接音楽ファイルを置いても良いですし、NASやUSBメモリのマウントポイントからシンボリックリンクを貼っても良いです。

例:

pi@raspberrypi:~ $ sudo ln -s /mnt/NAS /var/lib/mpd/music/

pi@raspberrypi:~ $ ls -l /var/lib/mpd/music/

total 0

lrwxrwxrwx 1 root root 8 Dec 29 14:42 NAS -> /mnt/NAS

pi@raspberrypi:~ $ 

 

 

7. MPDデータベースの更新

次に音楽ファイルをスキャンしてMPDデータベースを更新します。データベースの更新指示は、mpdではなくmpcを使います。--waitオプションを付けるとmpcは更新が終わるまで待ちますので、確実に更新が完了したことがわかります。

pi@raspberrypi:~ $ mpc update --wait

volume: n/a   repeat: off   random: off   single: off   consume: off

pi@raspberrypi:~ $ 

更新が終わったら mpc statsで検出したアーティスト数、アルバム数、曲数を表示して、正しくスキャンされたかを確認します。

pi@raspberrypi:~ $ mpc stats

Artists:    131

Albums:     126

Songs:     1713

 

Play Time:    0 days, 0:00:00

Uptime:       0 days, 0:55:22

DB Updated:   Tue Dec 29 14:45:14 2020

DB Play Time: 5 days, 20:15:29

pi@raspberrypi:~ $ 

8. yampcからの接続確認

以上でMPDが動作しましたので、yaMPCから接続できるか確認しましょう。yaMPCを最初に起動するとPlayer Settings画面が表示されます。この画面で Scanボタンをタップすると、iPhoneまたはiPadが接続しているWiFiと同じネットワークにMPDがあれば検出します。

 

ただし検出するためには「5. MPD.SOCKETの無効化」で説明した通り、mpd.socketを無効にしておく必要があります。

 


raspberrypi.localが検出されたら、ラズパイに固定IPアドレスを設定済の場合はIPアドレス(この場合は192.168.0.17)を、そうでない場合はホスト名(この場合はraspberrypi.local)をタップします。すると自動的にServer欄に入力されます。

 

万一MPDを検出できない場合は、Server欄に raspberrypi.local またはラズパイの IPアドレスを入力してください。

 

Name欄にはMPDサーバーを区別するための任意の名前を入力してください。左の例では Raspberry Pi MPDと入力しました。

 

次に Testボタンをタップして、左画面のように
 Test Result

 Succeeded.
と表示されれば接続成功です。


9.カバーアートの設定

カバーアートを表示するには、カバーアートの画像ファイルが必要です。アルバムの曲が入っているフォルダにJPEGの画像ファイルを入れておきます。ファイル名は Folder.jpg にしておいてください。カバーアートの設定方法詳細はこちらをご覧ください。

 

MPD 0.21以降は、MPDの機能としてカバーアートの画像ファイルをダウンロードする albumart というコマンドがあり、yaMPC 1.6以降でもサポートしています。

 

しかし以下の理由でMPDではなく、HTTPでの取得をお勧めします。

  1. NginxをはじめとするHTTP Serverは同時複数のファイル転送に対応しており、大量のカバーアートを取得する場合はMPDのalbumartコマンドより速い。
  2. HTTP Serverを使えば、音楽再生を司るMPDへの負荷を軽減できる。

以降はNginxを使ってカバーアートを取得する方法を説明します。


まずNginxをラズパイにインストールします。

 $ sudo apt install nginx

Safariで http://raspberrypi.local にアクセスし、

 Welcome to nginx!

と表示されれば正しくインストールされています。

 

次いでNginxがカバーアートにアクセスできるように、musicフォルダをNginxのドキュメントフォルダにシンボリックを貼ります。

pi@raspberrypi:~ $ sudo ln -s /var/lib/mpd/music /var/www/html/

pi@raspberrypi:~ $ ls -l /var/www/html/

total 4

-rw-r--r-- 1 root root 612 Dec 30 17:15 index.nginx-debian.html

lrwxrwxrwx 1 root root  18 Dec 30 17:25 music -> /var/lib/mpd/music

pi@raspberrypi:~ $ 

これで、yaMPCからもHTTPでアクセスできるようになりました。


「7.YAMPCからの接続確認」でName欄とServer欄に入力しましたが、ここでは MPD/URLをタップして、表示されるメニューから

 Other (manual setting)

を選択してください。

 

次いでMPD/URL欄に /music を追記してください。

例:

 http://192.168.0.17/music

 http://raspberrypi.local/music


その後、Test をタップしてカバーアートが表示されればOKです。

 

右上の Saveボタンをタップして設定を保存してください。

 

これで Ubuntu または Raspberry Pi OSへのMPDのインストールは完了です。

 

yaMPCの基本的な使い方に関しては、yaMPCチュートリアル、詳細はオンラインマニュアルをご覧ください。



APPENDICES

a1.mountの注意点

1) 文字コード

 

音楽ファイル内のタグは漢字やドイツ語のウムラウトがあっても差し支えありませんが、コマンドラインで操作しやすいのでフォルダ名とファイル名は英数字を使うのがお勧めです。フォルダ名やファイル名に英語のアルファベット・数字以外の、漢字、ひらがな、ハングル、ヨーロッパ文字などを含む場合は、NASやUSBメモリの文字コードに注意してください。MPDのデフォルトではファイルシステムの文字コードはUTF-8に設定されています。必ずUTF-8で正しく読めるようにNASやUSBメモリをマウントしてください。下記はフォルダ名が英数字以外の文字コードを含む場合の例です。正しく文字コードを指定しないと、MPDとyaMPCによるファイルアクセスに支障があります。

pi@raspberrypi:~ $ sudo mount /dev/sda1 /mnt/usb

pi@raspberrypi:~ $ ls /mnt/usb/i18n/

'???'  '?????'  '????????'  'Anne Queffe?lec'

pi@raspberrypi:~ $ sudo umount /mnt/usb

pi@raspberrypi:~ $ sudo mount -o iocharset=utf8 /dev/sda1 /mnt/usb

pi@raspberrypi:~ $ ls /mnt/usb/i18n/

 정경화  'Anne Queffélec'   松任谷由実   约定(周蕙歌曲)

pi@raspberrypi:~ $

 

2) ACL(アクセス権)

 

mpdはUID=mpd(109)で動作し音楽ファイルにアクセスします。NginxはUID=www-data(33)で動作しカバーアートの画像ファイルをアクセスします。したがって、これらのユーザーがアクセスできるようにファイルには r の権限を、フォルダには r および x の権限を他のグループと他のユーザーにも付与する必要があります。

pi@raspberrypi:~ $ ls -l /mnt

total 20

drwxr-xr-x 2 root root  4096 Aug 20 16:20 samba

drwxr-xr-x 6 root root 16384 Dec 30 22:19 usb

pi@raspberrypi:~ $ ls -l /mnt/usb

total 48

drwxr-xr-x 12 root root 16384 Dec  6 16:29 AAC

drwxr-xr-x 53 root root 16384 Oct 27  2019 FLAC

drwxr-xr-x  6 root root 16384 Dec 30 22:08 i18n

pi@raspberrypi:~ $ 

 

3) macOS特有のファイル

 

macOSでUSBメモリをマウントしてファイルをコピーすると、"._"で始まるファイル、および、.DS_Storeというファイルが作られます。これらはmacOSでは隠しファイルですが、Linuxからは見えます。またMPDが音楽ファイルと誤認してブラウズ時にyaMPCが不具合を起こす場合があります。yaMPCではBrowse画面でFolderをブライズする際にこのようなファイルを見つけると警告を出します。USBメモリにこれらのファイルがある場合は、削除しておいてください。

$ sudo find . -name ".DS_Store" -exec rm -r {} \;

$ sudo find . -name "._*" -exec rm -r {} \;

 

なお Raspberry-Pi OSの外部ストレージのマウント方法に関しては、英文ですが下記が参考になります。

External storage configuration

A2. spotify connect

Amazon MusicやApple Musicなど様々な音楽配信サービスがありますが、私はSpotify Connectの使い勝手が良いので、Spotify Premiumプランをサブスクライブしています。友人の紹介や雑誌の記事で知った曲をSpotifyで聞き、何度も聞くほど気に入れば、CDかハイレゾ音源を買ってyaMPCとMPDで聴くという楽しみ方です。


Linuxで動作するSpotify Connect Clientは下記の2つが有名どころのようです。

 Spotifyd - An open source Spotify client running as a UNIX daemon. 

 Raspotify - Spotify Connect client for the Raspberry Pi that Just Works™.

注意点は、spotifyd、raspotifyどちらもMPDと同じくASLAを使いますので、MPDで再生中は同じマシン上でSpotify Connectを使えないことです。逆にSpotify Connectで再生中はMPDを使えません。

 

以下は、Raspotifyのインストール・設定方法です。

 

次のようにラズパイにRaspotifyをインストールします。

curl -sL https://dtcooper.github.io/raspotify/install.sh | sh

 

/etc/default/raspotify を編集します。

 

デフォルトのビットレートは標準音質の160kbpsになっています。Spotify Premiumを契約している場合は、最高音質の320kbpsに変更することもできます。下記の行を探します。

 #BITRATE="160"

コメント(#)を外し、ビットレートを320します。

 BITRATE="320"

 

次に下記の行を探します。

 #OPTIONS="--username <USERNAME> --password <PASSWORD>"

コメント(#)を外し<USERNAME>と<PASSWORD>にSpotifyのユーザー名とパスワードを記入します。また --device の後に mpd.conf と同じ要領でASLAデバイス名を記入します。以下はユーザー名を myuid、パスワードをmypwd、そしてHiFiBerry DAC+ Proに出力する場合の例です。

 OPTIONS="--username myuid --password mypwd --device hw:sndrpihifiberry,0"

/etc/default/raspotifyの修正は以上です。

systemctlを使ってraspotifyを再起動すれば、Spotifyアプリからraspotifyを検出してSpotify Connectで接続できます。

 

 $ sudo systemctl restart raspotify