MPD

MPD (music player daemon)- музыкальный проигрыватель с клиент-серверной архитектурой, воспроизводящий музыку и заданного каталога. Принцип работы заключается в запуске собственно плеера (демона) на сервере и управлении им при помощи любого из богатого выбора клиентов.
Возможен запуск MPD на локальном компьютере и управлять им подключая клиент к localhost.
Преймущества данного плеера:

  • легковесность;
  • быстрота работы (приложение кэширует файлы и управление в клиентах осуществляется без задержек при добавлении файлов в плейлисты);
  • продолжение воспроизведения при прерывании с сохраненного места в треке;
  • автообновление базы данных при добавлении новых файлов;
  • управление с любого устройства в сети.

Установка

Пакет mpd находится в официальных репозиториях Ubuntu, поэтому для установки необходимо выполнить команду:

sudo apt-get install mpd

Настройка

Конфигурационный файл можно найти по пути

/etc/mpd.conf

он очень хорошо комментирован, поэтому если проблем с английским языком нет, с конфигурацией проблем не будет. Ниже приведено описание только тех пунктов, которые необходимо сконфигурировать для работы. Комментарии для удобства чтения удалены.
Замените «имя_пользователя» на имя своего пользователя.
Директория с музыкой.

# Files and directories ####################################################### 
music_directory     "/home/имя_пользователя/Музыка" 

Целесообразно создать в домашней папке директорию mpd, где будут храниться рабочие файлы приложения.
Следующие 6 строчек указывают место хранения рабочих файлов- создаваемых плейлистов, базы данных, лог файла, файла хранения PID и sticker_file.

playlist_directory      "/home/имя_пользователя/.mpd/playlists"
db_file          "/home/имя_пользователя/.mpd/db" 
log_file            "/home/имя_пользователя/.mpd/mpd.log" 
pid_file            "/home/имя_пользователя/.mpd/pid" 
state_file          "/home/имя_пользователя/.mpd/state" 
sticker_file                   "/home/имя_пользователя/.mpd/sticker.sql" 
# 
############################################################################### 

Далее следуют основные настройки приложения.
Необходимо указать пользователя, от имени которого будет запускаться демон.

 
 
# General music daemon options ################################################ 
user                "имя_пользователя"

При запуске демона на сервере, необходимо указать IP адреса, которые будут иметь доступ к управлению плеером, возможные варианты:
localhost- для работы на локальном компьютере;
any- для доступа любого клиента из сети;
определенные IP адреса- через запятую можно выборочно указать адреса, имеющие доступ.
И порт, по умолчанию 6600.

# For network 
bind_to_address     "any" 
port                "6600" 

Автообновление базы при добавлении файлов в папку с музыкой

auto_update    "yes" 
############################################################################### 

Доступ к функциям демона по умолчанию.

 
# Permissions ################################################################# 
default_permissions             "read,add,control,admin" 
# 
############################################################################### 

Конфигурация аудио выхода. На современных дистрибутивах Ubuntu по умолчанию установлен музыкальный сервер PulseAudio, который целесообразно указать в настройках mpd, в результате этого вы получите нормализованный звук в различных приложениях и mpd. Достаточно указать только тип и имя, остальные параметры mpd определит автоматически.

 
# Audio Output ################################################################ 
audio_output { 
    type        "pulse" 
    name        "My Pulse Output" 
   server      "localhost"
#   sink        "remote_server_sink"    # optional 
} 
################################################################ 

Одновременно с этим нужно настроить pulseaudio на прием звукового потока по TCP, для этого в файле /etc/pulse/default.pa необходимо раскомментировать и подредактировать строчку

load-module module-native-protocol-tcp auth-anonymous=1

Перезапускаем pulseaudio

killall pulseaudio

Указываем кодировку имен файлов и id3-тэгов.

 
# Character Encoding ##########################################################
filesystem_charset      "UTF-8"
id3v1_encoding          "UTF-8"
###############################################################################
После изменения конфигурационного файла необходимо перезапустить демон плеера
sudo service mpd restart
MPD может не работать через PulseAudio после перезагрузки, так как PulseAudio плодит процессы не только от пользователя, но и от lightgm. Следует запретить пульсу плодить процессы путем редактирования конфига
/etc/pulse/client.conf

и выставлением параметра

autospawn = no

Теперь пульс не будет самостоятельно запускаться. Но нам-то он нужен! Создаем файл с именем pulseaudio.desktop в каталоге ~/.config/autostart

touch ~/.config/autostart/pulseaudio.desktop

Открываем текстовым редактором, например

gedit ~/.config/autostart/pulseaudio.desktop

И вписываем туда

[Desktop Entry]
Type=Application
Exec=pulseaudio
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[ru]=pulseaudio
Name=pulseaudio
Comment[ru]=
Comment=

Использование

Сервер установлен, настроен и запущен, теперь можно подключаться к нему любым из доступных клиентов и наслаждаться вашей любимой музыкой.

Интеграция с Unity

Для интегрирования меню управления MPD из индикатора управления громкостью в Unity необходимо добавить в систему репозиторий, установить пакет mpd-sound-menu.

sudo apt-add-repository ppa:torkvemada/torkvemada
sudo apt-get update && sudo apt-get install mpd-sound-menu
mpd-sound-menu &

Данный пакет обеспечивает возможность переключать треки вперед, назад, ставить на паузу, а также быстро переключаться между созданными ранее списками воспроизведения.
После установки необходимо настроить приложение, для чего нажать на индикатор звука Unity и выбрать MPD Sound Menu, в появившемся окне в строке Library Path необходимо указать путь к папке с музыкой (это нужно для того чтобы при экспорте путей к файлу в MPRIS можно было формировать валидные URI), а также, если MPD запущен не на локальном компьютере, а на сервере, ввести адрес MPD-хоста. При желании, можно выставить автоматический запуск при старте системы.
Выглядит это следующим образом: Как видно, в меню не отображается обложка диска воспроизводимого трека и содержимое MPD-sound-menu не корректно отображается на светлых темах GTK-кнопки становятся просто черными (ошибки интерфейса не являются mpd-sound-menu-специфичными и все давно зарепорчены в Ubuntu-пакет indicator-sound1)).
В настоящее время разработка проекта фактически заморожена, так как автор больше не использует MPD. Наработки для новой версии (включая асинхронную библиотеку libmpd-qt для работы с сервером MPD) автор готов передать любому энтузиасту, желающему развивать проект дальше.

Консольные клиенты

MPC

Полный функционал управления плеером предоставляет консольный клиент mpc. Для установки необходимо выполнить

sudo apt-get install mpc

MPD+cron+mpc=будильник

Создаем и сохраняем плейлист в mpd c приятными уху записями.

echo "http://media-ice.musicradio.com/ClassicFMMP3" > ~/.mpd/playlists/ClassicFM.m3u

Создаем скрипт2):

alarm.sh
#!/bin/bash
/usr/bin/mpc clear
/usr/bin/mpc load ClassicFM
/usr/bin/mpc volume 0
/usr/bin/mpc play
for ((x=0; x<40; x++)); do
    /usr/bin/mpc volume $x
    sleep 3
done
sleep 2700
vol=`/usr/bin/mpc volume | /usr/bin/awk '{print($2)}' | /bin/sed s/%//g`
for ((x=$vol; x>10; x=$x-2)); do
    /usr/bin/mpc volume -2
    sleep 1
done
/usr/bin/mpc stop
exit 0

Делаем его исполняемым

sudo chmod +x ~/bin/alarm.sh

Добавляем запись в cron пользователя

crontab -e

Добавляем строку

0 7 * * * /home/имя_пользователя/bin/alarm.sh &>/dev/null

Клиенты GTK+

GMPC

Пакет gmpc находится в официальных репозиториях, для установки необходимо выполнить:

sudo apt-get install gmpc

При первом запуске появится помощник настройки подключения. Указываем параметры подключения, нажимаем кнопку «Подключить» и «Готово». Основное окно выглядит следующим образом.

Клиенты Android

MPDroid

Удобный клиент MPD предоставляющий полный функционал управления демоном. После установки необходимо выбрать беспроводную сеть, при подключении к которой будет осуществляться управление MPD
После чего необходимо указать IP aдрес сервера и порт для подключения
Окно управления выглядит так:

Клиенты iOS

MPoD

Довольно неплохой клиент на iOS MPoD предоставляет полное управление серверной частью плеера. Клиент самостоятельно сканирует сеть на наличие MPD, но так же адрес и порт сервера можно указать вручную.
И к тому же в настройках можно выбирать любой источник воспроизведения, указанный в конфиге MPD

Ссылки

2)
звук плавно нарастает, плейлист воспроизводится 45 минут и воспроизведение останавливается