2008-05-04

GTK клиенты для MPD

В наши дни железо умнеет ударными темпами, программы учат людей, а люди — программы. В этом хаосе происходит постоянная интеграция всего и вся. После попытки скрещивания компьютера и стереосистемы родился MPD. Лаконичное определение из википедии:

Music Player Daemon (MPD) — музыкальный проигрыватель с клиент-серверной архитектурой, который читает музыку из указанного каталога, а при помощи клиента можно управлять воспроизведением, то есть MPD разрешает удаленный доступ к воспроизведению музыкальных файлов другому (удаленному) компьютеру и управлять сервером (демоном) можно с любой машины из сети, но слушать музыку можно и на своём компьютере, если программу клиент для MPD настроить на воспроизведение через свой локальный хост (localhost).


Для слабых машин mpd как бальзам на душу. Ресурсы расходует весьма экономно.
Устанавливать будем из репозитория:
sudo aptitude install mpd

Настройки MPD тянет сначала из ~/.mpd.conf, если неудачно, то из /etc/mpd.conf.
Мой конфиг выглядит примерно так:
music_directory "/media/MUSIC/music" 
playlist_directory  "/home/anton/.mpd/playlists" 
db_file   "/home/anton/.mpd/mpd.db" 
log_file   "/home/anton/.mpd/mpd.log" 
error_file   "/home/anton/.mpd/mpd.error" 
pid_file  "/home/anton/.mpd/pid"

user                            "anton"

bind_to_address "localhost" 
port  "6600"

audio_output { 
type                    "alsa" 
name                    "My ALSA Device" 
device                  "hw:0,0"     # optional 
format                  "44100:16:2" # optional 
}

mixer_type      "alsa"
mixer_device    "default"
mixer_control   "PCM" 

filesystem_charset              "UTF-8"
id3v1_encoding                  "UTF-8"

metadata_to_use                  "artist,album,title,track,name,genre,date,composer,performer,disc"

В этой заметке рассказывается про настройку выхода через Pulse Audio.
После сохранения не забудьте создать базу композиций:
mpd --create-db

Естественно, клиенты для этого музыкального демона существуют разные. Сегодня речь пойдёт о собратьях по разуму с GTK родословной. Вот список финалистов:
  1. Sonata
  2. Gimmix
  3. Ario
  4. Glurp
  5. Gmpc
  6. Pympd

Sonata
Место встречи: sonata.berlios.de
Страница загрузки

Sonata - GTK+ плеер, написанный на Python. Установка:
sudo aptitude install sonata

Позиционируется как элегантное решение для управления вашей музыкальной коллекции. Это действительно так. Интерфейс логичен, прост, понятен и симпатичный к тому же. Музыку скроблить на last.fm умеет, с тегами общается "на ты", обложки альбомам шукает, с консолью дружит. Чего еще требовать? Разве что скорости запуска. Для кого этот параметр критичен, обратите внимание на следующую персону.

Sonata

Gimmix
Место встречи: gimmix.berlios.de
Страница загрузки

Gimmix написан на C и использует GTK+. Очень простой и легкий в использовании клиент. Все настройки храняться в ~/.gimmixrc. Интерфейс чем-то напоминает Sonata, но опций, безусловно, меньше. Теги на русском коверкает — минус, зато шустренько запускается — плюс :)

Gimmix

Ario
Место встречи: ario-player.sourceforge.net
Страница загрузки

GTK2 клиент с интерфейсом а-ля Rhythmbox. Поддерживает разнообразные плагины (wikipedia, audioscrobbler, мультимедиа клавиши, web radio, работа с обложками). Кстати, если включена опция «Автоматическая загрузка обложек альбомов», плеер за номером версии 1.0, deb-пакет которого можно скачать на сайте, стабильно падает. Старая версия из репозитория Ubuntu держится увереннее:
sudo aptitude install ario


Ario player

Glurp
Место встречи: sourceforge.net/projects/glurp/

Клиент для GNOME. Не обновлялся с 2005 года. Может потому и смотрится аскетично. Опции glurp не балуют разнообразием да и каких-то особых фич не найдено. Самый скромный участник. Установка:
sudo aptitude install glurp


Glurp

Gmpc
Место встречи: sarine.nl/gmpc
Страница загрузки

Да, еще раз mpd frontend для GNOME. Можно подключать плагины, правда придется скомпилировать их :) В плане удобства использования практически нет нареканий. Установка:
sudo aptitude install gmpc


Gmpc

Pympd
Место встречи: pympd.sourceforge.net
Страница загрузки

Второй близнец для Rhythmbox. Как и Ario способен прокачивать амуницию с помощью модулей-дополнений. Работает быстро. Инсталляция:
sudo aptitude install pympd


pympd

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

27 комментариев: ответить

04.05.2008, 23:07   DimkaS комментирует...

Спасибо за обзор. Недавно мою любимый Exaile начал дико поганить звук. Причины я пока не выяснил, но это единственный плеер в системе, у которого проблемы с воспроизведением.
Решил попробовать mpd. В качестве клиента выбрал сонату, про которую где-то что-то слышал. Но функционала не хватает. Поставил программы, упомянутые в обзоре и разочаровался...
Ни одна программа не позволяет сортировать текущий плейлист по какому-либо критерию, хотя просматривая библиотеку список можно сортировать как угодно. Вот только добавится он не в этом порядке, а что-то поменять - фиг. И только gmpc может добавить в плейлист весь альбом одним кликом. Грустно.
В общем, музыку я теперь редко за компом слушаю, ибо exaile звучит ужасно, некогда любимый listen жутко глючит, а перекапывать коллекцию в наутилусе и добавлять песни в тотем вручную мне лень.
А обзор хороший, мне понравился :)

05.05.2008, 10:47   Yurij комментирует...

Обзор и правда хорош. Из всех перечисленных клиентов юзаю только сонату.

05.05.2008, 13:20   Dr.AKULAvich комментирует...

Спасибо за высокую оценку опуса. Надеюсь, не последний подобного рода пост.
2DimkaS
А что именно со звучанием в exaile? Сам часто пользуюсь и люблю это плеер. Последняя версия 0.2.13 из репозитория для Hardy работает благозвучно.

05.05.2008, 14:44   akira комментирует...

У Сонаты заметил глюк, при закрытие не убивает mpd демон.
Клиент закрыт, а звук идет.

05.05.2008, 20:06   Dr.AKULAvich комментирует...

2akira
Это не глюк. Все клиенты так делают. В настройках Sonata можно указать "Останавливать воспроизведение при выходе".

06.05.2008, 23:27   DimkaS комментирует...

2Dr.AKULAvich
Трудно описать... Примерно так: звук слегка хрипит в соло и тихих композициях. В громких и шумных искажений не замечал. ReplayGain (или как его там?) отключал - не помогло. Exaile почему-то отказывается играть mp3 без gstreamer ugly или bad. Хотя все остальные проигрыватели без них обходятся. Возможно, дело именно в этих кодеках. Версия у меня Exaile 0.2.11 (Debian lenny). Возможно, стоит попробовать более новую.

07.05.2008, 7:20   Dr.AKULAvich комментирует...

Exaile использует Gstreamer. Без него никак.
Есть один баг в стримере, который решается запуском плеера без эквалайзера:
exaile --no-equalizer

08.05.2008, 19:56   DimkaS комментирует...

Я имел в виду gstreamer0.10-plugins-ugly. Без него exaile не играет mp3, хотя остальные плееры, использующие gstreamer, проблем не испытывают. А за ключик спасибо, попробую.

10.05.2008, 15:51   Meg@DED комментирует...

Во времена наличии на работе обычных десктопных компов юзал второй с конца. MusicPD оказался для нас очень хорошим решением, т.к. звуковая карта и колонки имелись только у одного компьютера.

21.05.2008, 20:24   Pento комментирует...

Sonata - объективно наиболее удобный клиент для MPD сейчас. Разве что ncmpc может поконкурировать с ней, но этой уже консоль.

04.07.2008, 14:36   fuss комментирует...

Спасибо очень полезная инфа. Пользовался audacious, решил попробывать что-то новенькое - mpd+sonata - пока что доволен :)

26.07.2008, 22:31   Serious Serg комментирует...

Кто подскажет, как настроить конфиг так, чтобы звук не захватывался mpd и возможно было одновременно использовать другие приложения, типа mplayer и проч.?

27.07.2008, 10:22   serious_serg комментирует...

разобрался, всего лишь:

audio_output {
type "alsa"
name "Sound Card"
options "dev=dmixer"
device "plug:dmix"
}

04.08.2008, 17:32   DYm00n комментирует...

А в чем косяк может быть - пытаюсь создать базу, возникает косяк - cannot setgid for user "mpd" at line 36: Operation not permitted

16.08.2008, 9:23   dDaYb комментирует...

DYm00n, запусти с соответствующими правами

А скажите, возможно ли чтобы соната сохраняла обложки к альбомам? А то в сонате обложка есть, а, например, на другом компьютере с minion'ом -- нету.

16.08.2008, 17:39   Dr.AKULAvich комментирует...

Второй клиент управляет mpd по сети? Мне кажется, не получится.

10.10.2008, 15:28   Roman Lagunov комментирует...

А еще более лаконичный вердикт висит в самом верху страницы в Википедии:

Стиль этой статьи неэнциклопедичен или нарушает нормы русского языка.

Есть планы это дело исправить - заняться статьёй вплотную. В том числе удалить многочисленные ссылки на блоги, которые стоят там, ибо Википедия - это не каталог ссылок.

Возващаясь непосредственно к данному обзору хочу сказать, что лично мне, как пользователю связки mpd-sonata со стажем в пару лет этот обзор понравился :)

10.10.2008, 22:55   Dr.AKULAvich комментирует...

>В том числе удалить многочисленные ссылки на блоги, которые стоят там, ибо Википедия - это не каталог ссылок.
Тут я заподозрил недвусмысленный намек. Отправился смотреть страницу, посвященную mpd, и увидел ссылку на свой обзор. Спешу вас разуверить: я не делал никаких правок. Считаю, что википедия должна ссылаться в основном на внутренние статьи.
>Возващаясь непосредственно к данному обзору хочу сказать, что лично мне, как пользователю связки mpd-sonata со стажем в пару лет этот обзор понравился :)
Рад, что не зря писал его.

11.10.2008, 7:18   Roman Lagunov комментирует...

@dr.akulavich:

Вообщем, я ни на что, и ни на кого не намекал. Кто, что и когда добавил в статью в Википедию записывается средствами движка, и я знаю что вы ничего не добавляли.

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

И что еще хочется отметить, что редактировать статьи в Википедии может любой, и регистрация для этого не нужна.

Так что приглашаю принять участие в создании русской Википедии.

20.08.2009, 16:54   maksymov.vlad комментирует...

а у меня такая ситуация:
есть сервак, на котором вся музыка. к нему подключена аудиосистема. управляю я со своего ноута при помощи сонаты. теперь вопрос:
можно как-то сделать так, чтоб при старте, сервак не создавал каждый раз db, а использовал созданный ранее?
пока у меня 10 гиг музыки - это терпимо, но когда их станет 60 - будет совсем тоскливо. а вырубать его приходится на ночь по определённым причинам
:)жду ответа с нетерпением :)

20.08.2009, 17:08   Roman Lagunov комментирует...

Я базу создал один раз, запустив mpd с ключом --create-db.

Проверь скрипт, который запускает mpd, может там это выставлено, вот он и создаёт каждый раз.

А может, не создаёт, а обновляет? У сонаты кажется тоже есть опции создать/обновить, проверь сонату тоже.

Так, навскидку мысли.

20.08.2009, 17:30   Dr.AKULAvich комментирует...

@maksymov.vlad
Как уже подсказали выше, скорее всего проблема с ключом запуска. База создаётся единожды, поэтому постоянная регенерация абсолютно излишняя.

20.08.2009, 17:40   maksymov.vlad комментирует...

а вот ещё у меня соната не играет музыку. вот вывод с терминала:
maksymov@maksymov-ubuntu:~$ sonata
/usr/lib/python2.6/dist-packages/sonata/main.py:78: DeprecationWarning: the md5 module is deprecated; use hashlib instead
import gtk, pango, threading, time, ui, img, tray, md5
/var/lib/python-support/python2.6/ZSI/resolvers.py:6: DeprecationWarning: the multifile module has been deprecated since Python 2.5
import multifile, mimetools, urllib
Exception in thread Thread-4:
Traceback (most recent call last):
File "/usr/lib/python2.6/threading.py", line 525, in __bootstrap_inner
self.run()
File "/usr/lib/python2.6/threading.py", line 477, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/lib/python2.6/dist-packages/sonata/main.py", line 4055, in _artwork_update
imgfound = self.artwork_check_for_remote(artist, album, filename)
File "/usr/lib/python2.6/dist-packages/sonata/main.py", line 4126, in artwork_check_for_remote
self.artwork_download_img_to_file(artist, album, filename)
File "/usr/lib/python2.6/dist-packages/sonata/main.py", line 4270, in artwork_download_img_to_file
f = opener.open(request).read()
File "/usr/lib/python2.6/urllib2.py", line 389, in open
response = meth(req, response)
File "/usr/lib/python2.6/urllib2.py", line 502, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib/python2.6/urllib2.py", line 427, in error
return self._call_chain(*args)
File "/usr/lib/python2.6/urllib2.py", line 361, in _call_chain
result = func(*args)
File "/usr/lib/python2.6/urllib2.py", line 510, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 400: Bad Request

/var/lib/python-support/python2.6/ZSI/wstools/XMLSchema.py:3072: DeprecationWarning: object.__init__() takes no parameters
tuple.__init__(self, args)

можно это починить как-то ?

20.08.2009, 17:48   maksymov.vlad комментирует...

т.е. я вижу файлы, добавляю их в очередь воспроизведения, а при нажатии play выводит играть не начинает

08.04.2010, 16:15   Анонимный комментирует...

А что насчет ape файлов? Может как-то можно научить играть lossless файлы? Пока что-то не нашел никакой инфы по этому поводу.

08.04.2010, 18:20   Roman Lagunov комментирует...

По поводу ape.

Это оно?

13.04.2010, 15:04   Анонимный комментирует...

Никак не пойму как работать со связкой mpd+sonata по сети.
В параметрах подключения сонаты указываю узел (IP-адрес, на котором собственно работает mpd-сервер). Но подключения не происходит. ЧЯДНТ?
(p.s. сервер работает на Arch, клиент на debian lenny)

Отправить комментарий