mmp

The mini music player, an alternative to MPD

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

 1# mmp
 2
 3The mini music player, an alternative to MPD.
 4
 5## Motivation
 6
 7> All music player daemons suck. This one just sucks less.
 8
 9I've been using [MPD][mpd homepage] as my primary music player for the
10last decade or so. I like the idea of controlling my music player using
11a network protocol but MPD itself tries to do too many things at once.
12Since I am not interested in building my own music player clients, I
13always intended to write an alternative implementation of the network
14protocol used by MPD. My original attempt at doing so was
15[mpvd][mpvd github] which provided an implementation of the
16[MPD protocol][mpd protocol] for controlling the multimedia player
17[mpv][mpv homepage]. Unfortunately, the protocol mapping turned out to
18be more complicated than initially conceived and therefore the project
19was later abandoned.
20
21This project is a new attempt at replacing my [MPD][mpd homepage] setup
22with a simpler software which handles playback and music database
23management separately. Instead of mpv, it currently uses
24[gstreamer][gstreamer homepage]. Additionally, it relies on the music
25library manager [beets][beets homepage] for database management.
26
27## Status
28
29Proof of concept, buggy and totally incomplete at the moment.
30
31## Dependencies
32
33This software provides the required glue code for combining:
34
35* [gstreamer][gstreamer homepage]
36* [libmpdserver][libmpdserver github]
37* [beets][beets homepage]
38
39As such, this software has the following dependencies:
40
41* The [hy][hy homepage] programming language
42* The [gst-python][py3-gst homepage] module
43* The [libmpdserver][libmpdserver github] parser library
44* The [beets][beets homepage] music manager
45
46## Setup
47
48The library libmpdserver is still in early stages of development. As
49such, I haven't tagged releases or provided install scripts yet. For
50this reason, just build the library manually for now using:
51
52	$ git clone --recursive https://github.com/nmeum/libmpdserver
53	$ make -C libmpdserver libmpdserver.so
54
55Afterwards, install and configure beets if you haven't already. For
56further information consult the [beets documentation][beets quickstart].
57
58## Usage
59
60To use this software with an existing beets library, start it by
61pointing it to your beets database. For example:
62
63	$ hy mmp.hy -a 127.0.0.1 -p 6600 ~/.config/beets/library.db
64
65## Tests
66
67If [mpc][mpc homepage] is installed test can be invoked using:
68
69	$ ./tests/run_tests.sh
70
71## License
72
73This program is free software: you can redistribute it and/or modify it
74under the terms of the GNU Affero General Public License as published by
75the Free Software Foundation, either version 3 of the License, or (at
76your option) any later version.
77
78This program is distributed in the hope that it will be useful, but
79WITHOUT ANY WARRANTY; without even the implied warranty of
80MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero
81General Public License for more details.
82
83You should have received a copy of the GNU Affero General Public License
84along with this program. If not, see <https://www.gnu.org/licenses/>.
85
86[libmpdserver github]: https://github.com/nmeum/libmpdserver
87[beets homepage]: https://beets.io/
88[beets quickstart]: https://beets.readthedocs.io/en/stable/guides/main.html
89[hy homepage]: https://docs.hylang.org
90[py3-gst homepage]: https://gstreamer.freedesktop.org/bindings/python.html
91[gstreamer homepage]: https://gstreamer.freedesktop.org/
92[mpd homepage]: https://musicpd.org/
93[mpd protocol]: https://musicpd.org/doc/html/protocol.html
94[mpvd github]: https://github.com/nmeum/mpvd
95[mpv homepage]: https://mpv.io/
96[mpv protocol]: https://mpv.io/manual/master/#json-ipc
97[mpc homepage]: https://www.musicpd.org/clients/mpc/