Free Net

Linux → Установка и настройка MOC — music on console

Posted in Linux by vprokofyev on 14.08.2009

Мне нравится слушать музыку в огромных количествах и хорошем качестве, поэтому я предпочитаю форматы lossless. Но за качество приходится платить: некоторые люди, делающие рипы с оригинальных дисков, любят совать всё в один файл и выкладывать CUE sheet с метаданными о том, где какой трек начинается и заканчивается. Это удобно, но не в Audacious, который я использовал раньше — плеер просто зависал или валился с сегфолтом, загоняя в бесконечный цикл процедуру добавления списка треков. За тот год, что я использовал Audacious этот баг так и не был исправлен, к сожалению.

Совершенно случайно я узнал о существовании консольного плеера MOC. Он стал настоящей находкой: активно развивающийся проект с удобным интерфейсом, немного похожим на Midnight Commander, наличие клиент-серверной модели, поддержкой всех популярных форматов OGG Vorbis, FLAC, WAV, WMA, MP3, FLAC, Musepack, Speex, WAVE, AIFF, AU, а также CUE sheet после наложения соответствующего патча на исходники. Кроме того, поддерживаются списки воспроизведения и эквалайзер с возможностью максимально просто использовать пресеты от Winamp. К сожалению, пока нет нативного скробблера Lastfm, хотя это не мешает использовать сторонний скрипт на Python, который работает без нареканий.

Установка и настройка MOC — процесс не сложный. Начнем с того, что для сборки из исходников придется установить все зависимости для пакета moc с помощью apt-get и опции build-dep. После этого нужно убедиться, что в системе присутствуют subversion, gcc, make, binutils, ncurses, patch, automake и autoconf. Забираем последнюю ревизию из SVN:

# cd /opt/ && svn co svn://daper.net/moc/trunk



Теперь, если нужна поддержка CUE sheet, патчим исходники — cue_sheet_support-svn-v3.diff. Обращу внимание, что патч находится в стадии тестирования, поэтому стабильностью не отличается. Впрочем, с текущей ревизией mocp на момент написания статьи, в моей системе работает без нареканий.

# cd /opt/trunk && wget http://sound4hill.cz/cue_sheet_support-svn-v3.diff
# patch < cue_sheet_support-svn-v3.diff



Если ранее уже была установлена другая версия moc, сразу делаем бэкап:

# cp /usr/bin/mocp /usr/bin/mocp.bak
# rm -f /usr/bin/mocp



Запускаем скрипт autogen.sh, который проверит всё ли на месте для сборки и создаст исполняемый файл configure. Теоретически, при отработке make ошибок быть не должно (хотя с первой версией патча у меня были некоторые проблемы, впрочем, баг быстро пофиксили). Собственно, компиляция. Я решил разделить каталоги версии установленной из репозитория и тестинговую, поэтому не указывал –prefix и установил по умолчанию в /usr/local:

# ./configure && make && make install



Делаем символическую ссылку, чтобы запускать mocp из /usr/bin:

# ln -s /usr/local/bin/mocp /usr/bin/mocp



Настройка также достаточно тривиальна: нужно скопировать пример файла конфигурации из /usr/share/doc/moc/examples в $HOME/.moc и добавить следующие опции:

...
# Assume this encoding for ID3 version 1/1.1 tags (mp3 files). Unlike ID3v2
# UTF-8 is not used here and MOC can't guess how tags are encoded. Another
# solution is using librcc (see the next option). This option is ignored
# if UseRCC is set to yes.
ID3v1TagsEncoding              = WINDOWS-1251

# lastfmsubmitd
OnSongChange = "/home/posix/.moc/moc_submit_lastfm --artist %a --title %t --length %d --album %r"
...


В последней строке указано каким образом MOC будет реагировать на смену трека в плейлисте — запускать скрипт moc_submit_lastfm и передавать информацию демону lastfmsubmitd. Соответственно, нужно сделать его исполняемым и присвоить права на исполнение пользователю, от которого запущен плеер. Ставим lastfmsubmitd, добавляем через adduser своего пользователя в группу lastfm и пишем в конфиг /etc/lastfmsubmitd.conf свой логин и пароль к аккаунту Lastfm. Проверяем, работает ли демон:

$ top -b -n 1 | egrep "lastfm|PID"
PID   USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
15891 lastfm    20   0  9688 4388 1756 S    0  0.2   0:11.26 lastfmsubmitd



Нужно полностью рестартнуть сервер MOC, чтобы изменения вступили в силу. Запускаем трек на воспроизведение и смотрим в консоли вывод ps:

$ ps -eo user,pid,cmd | grep lastfm
lastfm    15891 /usr/bin/python /usr/bin/lastfmsubmitd
posix     30198 python /home/posix/.moc/moc_submit_lastfm
                --artist Radiohead --title Paranoid Android --length 06:24 --album OK Computer



Осталось прикрутить эквалайзер: скачиваем eqsets.tar.gz и распаковываем каталог eqsets в $HOME/.moc, и еще раз рестартим. Должно получится примерно так (скриншот кликабельный):

2009-08-14-191346_1280x800_scrot


И напоследок несколько хоткеев, которые я использую регулярно:
g — поиск
a — добавить файл или каталог в плейлист
Shift+A — добавить каталог рекурсивно
Shift+C — очистить плейлист

Shift+E — включает/выключает эквалайзер
Shift+K — включить предыдущий пресет
k — включить предыдущий пресет

b — воспроизвести предыдущий трек в плейлисте
n — воспроизвести следующий трек
u — поднять трек в плейлисте на одну позицию вверх
j — опустить трек в плейлисте на одну позицию вниз

Ctrl+r — обновить список файлов
h — help

q — закрыть текущее соединение клиента с сервером
Shift+Q — остановить сервер

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

UPD: сегодня в 9 вечера по мск автор патча cue_sheet_support-svn внёс небольшие изменения в парсер, который разбирает cue-файлы, линк в статье заменён. Пока что есть базовый функционал, будем ждать когда патч будет передан основным девелоперам проекта, которые допилят его и включат в SVN.

Комментариев: 14

Подписаться на комментарии по RSS.

  1. Warl0ck said, on 14.08.2009 at 15:20

    Спасибо, нашел много нового:) Сам им пользуюсь и немного писал про MOC, а вот скрипты и эквалайзер не прикручивал.
    Я бы еще посоветовал в список хоткеев обязательно добавить h (можно q и Q, все-таки это одни из самых главных хоткеев:)
    И еще, ты не знаешь, как настроить автозапуск?

    • vprokofyev said, on 14.08.2009 at 15:47

      Пожалуйста :)
      Эквалайзер давно появился также в виде патча, но в SVN только недавно добавили. Да, насчет этих хоткеев я как-то забыл ) Сейчас добавлю, спасибо за хинт.
      Насчет автозапуска: можно написать скрипт на примере любого демона, сделать симлинк в /etc/rc6.d и будет стартовать на 6ом ранлевеле вместе с другими демонами (если deb-based дистрибутив). В других дистрибах в сторону rc.d нужно смотреть, соответственно.

      • Warl0ck said, on 14.08.2009 at 15:55

        О, а вот и ответ на вопрос про эквалайзер… можешь удалить второй комент:)
        Спасибо за подсказку:)

  2. Warl0ck said, on 14.08.2009 at 15:50

    И еще, эквалайзер только в 2.5 появился, или ты забыл добавить, как добавить хоткеи? Я сам пользуюсь стабильным 2.4.4 из репозитория, и у меня пишется “Bad command”, когда пытаюсь включить эквалайзер.

    • vprokofyev said, on 14.08.2009 at 16:02

      В 2.4.4 эквалайзера нет. Я пробовал пропатчить 2.5.0-alpha3, но make вылетал с ошибкой. В этом треде http://moc.daper.net/node/501 умные люди мне посоветовали не усложнять себе жизнь и собрать сорсы из SVN, в которых эквалайзер добавили по дефолту. Собственно, это в посте и описано.

  3. polachok said, on 14.08.2009 at 23:37

    Пейтоновый lastfmsubmitd мне не нравится, я свой написал, на шелле http://www.rootshell.be/~polachok/code/lastfmpost

    • vprokofyev said, on 15.08.2009 at 00:01

      Спасибо, попробую поюзать.

  4. vprokofyev said, on 15.08.2009 at 02:28

    Обновил пост, добавив уточнение насчет того, что из сорсов moc по дефолту ставится в c префиксом /usr/local, если не передать свой –prefix скрипту configure в качестве параметра. Подробности можно узнать, если ввести ./configure -h.

    p.s. Определенно нужно развивать умение не забывать про важные моменты в постах )

  5. Shade said, on 10.09.2009 at 01:04

    А возможно сделать, чтобы он запоминал, что играет и при последующем запуске начинал с того же трека воспроизведение?

    • vprokofyev said, on 10.09.2009 at 01:08

      Такой функционал мне не требовался, потому точно сказать по этому поводу не смогу. Попробуй спросить на их форуме http://moc.daper.net/forum/5 — может быть там кто-нибудь знает.

  6. Андрей said, on 04.11.2009 at 00:29

    Скажите пожалуйста, а как сделать что бы он запускался при загрузке и сразу играл плэйлист?

  7. Oleg said, on 31.07.2010 at 13:17

    плагин ластфма: сделал все по инструкции, вывод ps и top правильный, но почему то на странице аккаунта ластфм.ру при воспроизведении трека не пишется, что трек проигрывается. подозреваю, что не скробблится вообще. вывод ps и top:
    stop@stp-pc:~$ ps -eo user,pid,cmd | grep lastfm
    lastfm 13769 /usr/bin/python /usr/bin/lastfmsubmitd
    stop 13918 python /home/stop/.moc/moc_submit_lastfm –artist Alihan Samedow –title Gozelim Sensin (Azerbaycan halk mahnisi) –length 05:30 –album Balaban – Land Of Fire Music From Azerbajian
    stop 13959 grep –color=auto lastfm
    stop@stp-pc:~$ top -b -n 1 | egrep “lastfm|PID”
    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    13769 lastfm 20 0 36048 6240 1832 S 0 0.2 0:00.01 lastfmsubmitd

    в чем может быть проблема? заранее спасибо

  8. seoblogo said, on 18.04.2011 at 19:17

    Грамотный пост

  9. Вoт этo пoст! Сильнo. Спасибo.


Добавить комментарий

Fill in your details below or click an icon to log in:

Логотип WordPress.com

You are commenting using your WordPress.com account. Log Out / Изменить )

Фотография Twitter

You are commenting using your Twitter account. Log Out / Изменить )

Фотография Facebook

You are commenting using your Facebook account. Log Out / Изменить )

Connecting to %s

Follow

Get every new post delivered to your Inbox.