Homepage: https://github.com/andyetitmoves/libmpdee
Author: Ramkumar R. Aiyengar
Updated:
Client end library for mpd, a music playing daemon
This package is a client end library to the wonderful music playing daemon by
name mpd. Hence, an obvious prerequisite for this package is mpd itself,
which you can get at http://www.musicpd.org. For those who haven't heard of
mpd, all I can say is that it is definitely worth a try, and is surely
different from the rest. This package is aimed at developers, and though
there are some interactive functions, much of the power of the library lies
away from the user.
This package started off to implement libmpdclient.c, which came with mpd, in
elisp. But as it stands of now, this package is not an exact translation.
Notable amongst the deviations are -
- This package contains quite a bit of higher level functionality as
compared with the original. An action or a query needs only a single
call and the library user can choose to get either the raw response, the
formatted response, or hook on a callback for each logical token of the
response. However, dig deeper, and you will find the lower level
functionality available as well.
- The error throwing scheme consistent with what is expected of elisp
programs.
- Command list mode is transparent in most cases, as wherever
appropriate, functions taking arguments can accept either a single item
or a list of it for each argument.
- Apart from this, command list functionality is limited to actions
rather than queries, as it is anyway not that easy to parse out the
individual responses from command-list queries (it is firstly possible
only from 0.11, which allows for a list_OK to be added at the end of
response for each command in the list).
- command_list_ok_begin isn't implemented. It is still possible to
explicitly use "command_list_(ok)begin\n..\ncommand_list_end" for
`mpd-execute-command' and get the response tokens for queries. A better
interface may be available in the future.
- There is a small interactive interface as well, but this is
intentionally incomplete. The point is that this exists only to the
extent of adding an interactive part to the functions, without modifying
the functions per se.
Most of the functions below require a connection object as an argument, which
you can create by a call to `mpd-conn-new'. The recommended way to use
customization to choose parameters for mpd connections is to use the widget
`mpd-connection'.
As this package caters to developers, it should be helpful to browse the file
in order for atleast the functions and the documentation. The file is well
structured and documented, so go for it. The impatient could do a selective
display to 3 (C-u 3 C-x $) before proceeding.