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 the10last decade or so. I like the idea of controlling my music player using11a 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, I13always intended to write an alternative implementation of the network14protocol used by MPD. My original attempt at doing so was15[mpvd][mpvd github] which provided an implementation of the16[MPD protocol][mpd protocol] for controlling the multimedia player17[mpv][mpv homepage]. Unfortunately, the protocol mapping turned out to18be more complicated than initially conceived and therefore the project19was later abandoned.2021This project is a new attempt at replacing my [MPD][mpd homepage] setup22with a simpler software which handles playback and music database23management separately. Instead of mpv, it currently uses24[gstreamer][gstreamer homepage]. Additionally, it relies on the music25library manager [beets][beets homepage] for database management.2627## Status2829Proof of concept, buggy and totally incomplete at the moment.3031## Dependencies3233This software provides the required glue code for combining:3435* [gstreamer][gstreamer homepage]36* [libmpdserver][libmpdserver github]37* [beets][beets homepage]3839As such, this software has the following dependencies:4041* The [hy][hy homepage] programming language42* The [gst-python][py3-gst homepage] module43* The [libmpdserver][libmpdserver github] parser library44* The [beets][beets homepage] music manager4546## Setup4748The library libmpdserver is still in early stages of development. As49such, I haven't tagged releases or provided install scripts yet. For50this reason, just build the library manually for now using:5152 $ git clone --recursive https://github.com/nmeum/libmpdserver53 $ make -C libmpdserver libmpdserver.so5455Afterwards, install and configure beets if you haven't already. For56further information consult the [beets documentation][beets quickstart].5758## Usage5960To use this software with an existing beets library, start it by61pointing it to your beets database. For example:6263 $ hy mmp.hy -a 127.0.0.1 -p 6600 ~/.config/beets/library.db6465## Tests6667If [mpc][mpc homepage] is installed test can be invoked using:6869 $ ./tests/run_tests.sh7071## License7273This program is free software: you can redistribute it and/or modify it74under the terms of the GNU Affero General Public License as published by75the Free Software Foundation, either version 3 of the License, or (at76your option) any later version.7778This program is distributed in the hope that it will be useful, but79WITHOUT ANY WARRANTY; without even the implied warranty of80MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero81General Public License for more details.8283You should have received a copy of the GNU Affero General Public License84along with this program. If not, see <https://www.gnu.org/licenses/>.8586[libmpdserver github]: https://github.com/nmeum/libmpdserver87[beets homepage]: https://beets.io/88[beets quickstart]: https://beets.readthedocs.io/en/stable/guides/main.html89[hy homepage]: https://docs.hylang.org90[py3-gst homepage]: https://gstreamer.freedesktop.org/bindings/python.html91[gstreamer homepage]: https://gstreamer.freedesktop.org/92[mpd homepage]: https://musicpd.org/93[mpd protocol]: https://musicpd.org/doc/html/protocol.html94[mpvd github]: https://github.com/nmeum/mpvd95[mpv homepage]: https://mpv.io/96[mpv protocol]: https://mpv.io/manual/master/#json-ipc97[mpc homepage]: https://www.musicpd.org/clients/mpc/