mmp

The mini music player, an alternative to MPD

git clone https://git.8pit.net/mmp.git

commits

2020-05-25 README.md: Add usage section Sören Tempel
2020-05-25 playback: Don't declare GstPlayer callback function using let Sören Tempel
2020-05-25 playback: remove obsolete TODO Sören Tempel
2020-05-24 protocol: use MPDBadIndexError Sören Tempel
2020-05-24 mpd: Add MPDBadIndexError Sören Tempel

Clone the repository to access all 137 commits.

# mmp

The mini music player, an alternative to MPD.

## Motivation

> All music player daemons suck. This one just sucks less.

I've been using [MPD][mpd homepage] as my primary music player for the
last decade or so. I like the idea of controlling my music player using
a network protocol but MPD itself tries to do too many things at once.
Since I am not interested in building my own music player clients, I
always intended to write an alternative implementation of the network
protocol used by MPD. My original attempt at doing so was
[mpvd][mpvd github] which provided an implementation of the
[MPD protocol][mpd protocol] for controlling the multimedia player
[mpv][mpv homepage]. Unfortunately, the protocol mapping turned out to
be more complicated than initially conceived and therefore the project
was later abandoned.

This project is a new attempt at replacing my [MPD][mpd homepage] setup
with a simpler software which handles playback and music database
management separately. Instead of mpv, it currently uses
[gstreamer][gstreamer homepage]. Additionally, it relies on the music
library manager [beets][beets homepage] for database management.

## Status

Proof of concept, buggy and totally incomplete at the moment.

## Dependencies

This software provides the required glue code for combining:

* [gstreamer][gstreamer homepage]
* [libmpdserver][libmpdserver github]
* [beets][beets homepage]

As such, this software has the following dependencies:

* The [hy][hy homepage] programming language
* The [gst-python][py3-gst homepage] module
* The [libmpdserver][libmpdserver github] parser library
* The [beets][beets homepage] music manager

## Setup

The library libmpdserver is still in early stages of development. As
such, I haven't tagged releases or provided install scripts yet. For
this reason, just build the library manually for now using:

	$ git clone --recursive https://github.com/nmeum/libmpdserver
	$ make -C libmpdserver libmpdserver.so

Afterwards, install and configure beets if you haven't already. For
further information consult the [beets documentation][beets quickstart].

## Usage

To use this software with an existing beets library, start it by
pointing it to your beets database. For example:

	$ hy mmp.hy -a 127.0.0.1 -p 6600 ~/.config/beets/library.db

## Tests

If [mpc][mpc homepage] is installed test can be invoked using:

	$ ./tests/run_tests.sh

## License

This program is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at
your option) any later version.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero
General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.

[libmpdserver github]: https://github.com/nmeum/libmpdserver
[beets homepage]: https://beets.io/
[beets quickstart]: https://beets.readthedocs.io/en/stable/guides/main.html
[hy homepage]: https://docs.hylang.org
[py3-gst homepage]: https://gstreamer.freedesktop.org/bindings/python.html
[gstreamer homepage]: https://gstreamer.freedesktop.org/
[mpd homepage]: https://musicpd.org/
[mpd protocol]: https://musicpd.org/doc/html/protocol.html
[mpvd github]: https://github.com/nmeum/mpvd
[mpv homepage]: https://mpv.io/
[mpv protocol]: https://mpv.io/manual/master/#json-ipc
[mpc homepage]: https://www.musicpd.org/clients/mpc/