Skip to content
zcoder edited this page Sep 14, 2012 · 1 revision

Мне нравится слушать музыку в огромных количествах и хорошем качестве, поэтому я предпочитаю форматы 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 на момент написания статьи, в моей системе работает без нареканий.

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, и еще раз рестартим. Должно получится примерно так (скриншот кликабельный):

И напоследок несколько хоткеев, которые я использую регулярно: 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.

Clone this wiki locally