Русский
Русский
English
Статистика
Реклама

Go, локдаун и новый MPD-клиент встречайте Ymuse

Уже лет десять моим основным медиаплеером на компьютере является MPD, Music Player Daemon фоновый сервис, воспроизводящий музыку.


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


Предлагаю вашему вниманию краткий обзор (сравнительно) нового MPD-клиента для Linux/GTK под названием Ymuse, версию 0.16 которого я недавно выпустил.


Go Gopher поднимает бокал за здравие Ymuse


Music Player Daemon


Сначала немного о том, что же такое Music Player Daemon, для тех, кто с ним незнаком.


Он представляет собой сервис (на айтишном жаргоне демон), который работает в фоновом режиме в недрах компьютера и способен воспроизводить музыку или стриминговое Интернет-аудио (Интернет-радио).


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


Когда я впервые познакомился с такой концепцией разделения компонентов на невизуальный (воспроизводящий аудио) и визуальный, то был немного озадачен, однако довольно быстро осознал её удобство.


Как работает Music Player Daemon


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


Нередко используется конфигурация, когда MPD крутится на микрокомпьютере типа Raspberry Pi, подключенном к колонкам, а управляют им с компьютера или через мобильное приложение.


Также MPD поддерживает плейлисты (списки воспроизведения) и стандартное стриминговое аудио, благодаря чему становятся доступны тысячи Интернет-радиостанций.


Кстати, в Линуксе есть смысл вместе с MPD сразу поставить пакет mpdris2, который свяжет его со стандартным интерфейсом медиаплеера MPRIS. Тогда демоном можно будет управлять стандартными медиа-клавишами (перемотка, пауза, стоп и т.д.).


Ymuse


Теперь о том, зачем, собственно, понадобился ещё один MPD-клиент.


В своё время я перепробовал несколько существующих клиентов и в итоге остановился на минималистичном Sonata, который практически полностью меня устраивал, за исключением пары моментов:


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

Последний пункт был следствием того, что Sonata написана на Python, который, как известно, не славится особой производительностью.


В общем, терпел я, терпел, и в конце концов не выдержал и написал свой клиент, который получил название Ymuse и иконку в виде бокала для мартини, напоминающего букву Y:



Внешне Ymuse также ожидаемо минималистичен:



При этом его функционал, по моему скромному мнению, достаточно богат:


  • Подключение к локальному или сетевому серверу MPD по TCP или Unix-сокету, автоматическое восстановление подключения.
  • Отображение очереди воспроизведения, сортировка по любому свойству, перемешивание, удаление треков из очереди.
  • Фильтрация очереди по подстроке.
  • Сохранение очереди в виде плейлиста (существующего или нового).
  • Просмотр и поиск по библиотеке MPD, переход к исполнителю или альбому из очереди воспроизведения.
  • Просмотр списка плейлистов, удаление и переименование плейлиста.
  • Собственный список потоков (Интернет-радиостанций) с возможностью добавления, удаления и редактирования элементов.
  • Настройка отображаемых столбцов в списке воспроизведения.
  • Настройка отображаемого текста в плеере (используется синтаксис Go template).
  • Переключение режимов MPD (random, repeat и consume).
  • Регулировка громкости.
  • Перемотка трека в произвольное место.
  • Отображение обложки текущего альбома в плеере.
  • Поддержка локализации. Доступные языки:
    • английский
    • русский
    • нидерландский
    • японский

Работает Ymuse по моим наблюдениям достаточно стабильно у меня он вкалывает почти непрерывно.


Ещё скриншоты

Библиотека:
Библиотека Ymuse


Потоки (Интернет-радиостанции):
Потоки Ymuse


Настройки:



Go Go Go


Для реализации Ymuse я выбрал молодой, но многообещающий язык Go, разрабатываемый Google.


Go язык со строгой типизацией, который нативно компилируется под огромное количество платформ и архитектур, от Linux до Android и от SPARC до ARM. Это делает его весьма перспективной заменой морально устаревшему и довольно неуклюжему C++. Go очень дружественен к программисту, синтаксисом напоминая Python, а также предоставляет поддержку многопоточности из коробки.


Ну и самое, пожалуй, главное для того, чтобы язык не зачах где-нибудь на обочине истории, это мощная стандартная библиотека функций, а также тысячи опенсорсных библиотек, любую из которых можно подключить к проекту одной командой go get .


Именно наличие двух готовых библиотек gompd для коммуникации с MPD-демоном и gotk3, позволяющей работать с графическим интерфейсом GTK сделало возможным создание практически полной функциональной копии Sonata за пару недель (!) работы по вечерам. В обе библиотеки, кстати, пришлось слать пулл-реквесты, чтобы что-нибудь исправить или добавить.


И вот результат: с моим плейлистом на 12K+ треков Ymuse работает визуально раза в два-три быстрее Сонаты. (Замечу в сторону, что скорость работы приложения теперь ограничивается производительностью GTK, что особенно заметно на больших списках.)


Исходный код и установка


Исходный код Ymuse доступен на GitHub, а установить его можно из .deb, .rpm или snap-пакета:


snap install ymuse

Подробнее об установке можно прочитать на странице приложения (версия на английском).


Жалобы и предложения пишите в трекер на Гитхабе (желательно на английском).

Источник: habr.com
К списку статей
Опубликовано: 09.02.2021 20:10:35
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Open source

Go

Разработка под linux

Звук

Mpd

Linux

Ymuse

Музыка

Ubuntu

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru