最終更新日:2021年11月21日
Linuxのコマンドに詳しい方のために、Ubuntu、Raspberry Pi OSといったLinuxディストリビューションにMPDをインストールする方法を紹介します。このページは以下のコマンドを概ねマスターされている方を対象にしています。標準的なLinuxコマンドについては特に解説しません。
Linuxのコマンドに慣れていない方は、[mute] MPDダッシュボードでMPDをインストールされることをお勧めします。
「[mute] MPDダッシュボード」をご覧ください。
あるいは、Volumioのような、あらかじめMPDを組み込んだLinuxディストリビューションをお勧めします。
「Volumioのインストール」をご覧ください。
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を起動します。
Raspberry Pi Imager 1.6以降では Control + Shift + X をタイプすると Advanced Optionsが表示されます。ここでラズパイのhostname、 piユーザーのパスワード、SSH、TimeZone を設定できます。
可能な限りWiFiではなく有線LANの使用を勧めますが、WiFiの設定もAdvanced Optionsでできます。Macの場合は "Would you like to prefill the wifi password from the system keychain?"と表示され YES を選択してMacの管理者ユーザー名とパスワードを入力するとWiFiの設定は自動的に行われます。手動でSSIDとパスワードを入力することもできます。
Advanced OptionsでSAVEボタンを押した後、Operating Systemには RASPBERRY PI OS LITE (32-BIT) を選択します。SD Cardで挿入したカードを選択して、WRITEボタンをクリックすると書き込みが開始されます。
可能な限りラズパイに有線LANを接続してください。また最初の起動はディスプレイ(HDMI経由)とキーボード(USB経由)を接続した方がSSHでログインできない場合の切り分けと回復が容易になります。
先程Raspberry Pi OSを書き込んだmicroSDを挿して給電します。
Raspberry Pi OSが起動するまで数分待ち、sshで接続して、次のアカウントでログインしてください。
ホスト名:Raspberry Pi ImagerのAdvanced Optionsで指定したhostname。デフォルトは raspberrypi.local
ユーザー名:pi
パスワード:Raspberry Pi ImagerのAdvanced Optionsで指定した password for 'pi' user.
SSH接続例 (Windows):
C:¥Users¥myuid>ssh -l pi raspberrypi.local
Windows 10 1803以降、および、macOSは標準でsshが使えるようになっています。
なおRaspberry Pi ImagerのAdvanced Optionsで設定したTimezone等は raspi-config でも設定・変更できます。
$ sudo raspi-config
以降はSSHでログインして作業できますが、引き続きディスプレイとキーボードを使って操作する場合はraspi-configの L3 Keyboard でお使いのキーボードの種類を指定してください。
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の設定で使用します。
Raspberry Pi OSは apt install でmpdをインストールできます。しかしUbuntuなど他のDebian系Linuxと同様に、古いバージョンのmpdがインストールされます。現時点のRaspberry Pi OS 32bit (Released: 2021-10-30)の apt install でインストールされる mpd はMPD 0.22.6 になります。このバージョンでもyaMPCでコントロール可能ですが、最新のMPDはMPD 0.23.xになります。ここでは2種類のインストール方法を紹介します。
3.1 aptコマンドでMPDと、コマンドラインのクライアントmpcをインストールする方法(古いバージョン)
$ sudo apt update
$ sudo apt install mpd mpc
3.2 MPDの公式サイトから最新のMPDをインストールする方法
Unofficial Debian packages(英語サイト)
https://www.musicpd.org/download-unoff-debian/
以下に簡単に日本語でRaspberry-pi OSへのインストール手順を説明します。
まず、お使いのRaspberry-pi OSがベースとしているDebianのバージョンを確認します。
$ lsb_release -sc
bullseye
bullseyeは現時点の最新で、busterはそのひとつ前のバージョンです。
次いで、apt keyringの署名キーを入手します。
$ sudo wget -O /usr/share/keyrings/deb.kaliko.me.gpg https://media.kaliko.me/kaliko.gpg
そして vi か nano で次のファイルを編集します。
$ sudo nano /etc/apt/sources.list.d/deb.kaliko.me.list
bullseyeの場合は次の行を挿入してください。
deb [signed-by=/usr/share/keyrings/deb.kaliko.me.gpg] https://deb.kaliko.me/raspios-backports/ bullseye-backports main
busterの場合は次の行を挿入してください。
deb [signed-by=/usr/share/keyrings/deb.kaliko.me.gpg] https://deb.kaliko.me/raspios-backports/ buster-backports main
これでMPDをインストールできます。
$ sudo apt update
bullseyeの場合
$ sudo apt install mpd/bullseye-backports
busterの場合
$ sudo apt install mpd/buster-backports
mpcを入手し、MPDのバージョンを確認してください。
$ sudo apt install mpc
$ mpc version
mpd version: 0.23.4
正確には上記はMPD Protocolのバージョンになります。mpd --versionでMPDのビルドバージョンがわかります。(この例では Protocolバージョンと同じ0.23.4です)
$ mpd --version
Music Player Daemon 0.23.4 (0.23.4)
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
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
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:~ $
次に音楽ファイルをスキャンして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:~ $
以上で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.
と表示されれば接続成功です。
カバーアートを表示するには、カバーアートの画像ファイルが必要です。アルバムの曲が入っているフォルダにJPEGの画像ファイルを入れておきます。ファイル名は Folder.jpg にしておいてください。カバーアートの設定方法詳細はこちらをご覧ください。
MPD 0.21以降は、MPDの機能としてカバーアートの画像ファイルをダウンロードする albumart というコマンドがあり、yaMPC 1.6以降でもサポートしています。
しかし以下の理由でMPDではなく、HTTPでの取得をお勧めします。
以降は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チュートリアル、詳細はオンラインマニュアルをご覧ください。
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の外部ストレージのマウント方法に関しては、英文ですが下記が参考になります。
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