File: mpc.el.html
This is an Emacs front end to the Music Player Daemon.
It mostly provides a browser inspired from Rhythmbox for your music collection and also allows you to play the music you select. The basic interface is somewhat unusual in that it does not focus on the playlist as much as on the browser. I play albums rather than songs and thus don't have much need for playlists, and it shows. Playlist support exists, but is still limited.
Bugs:
- when reaching end/start of song while ffwd/rewind, it may get wedged,
signal an error, ... or when mpc-next/prev is called while ffwd/rewind.
- MPD errors are not reported to the user.
Todo:
- add bindings/buttons/menuentries for the various commands.
- mpc-undo
- visual feedback for drag'n'drop
- display/set repeat and random state (and maybe also crossfade).
- allow multiple *mpc* sessions in the same Emacs to control different mpds.
- fetch album covers and lyrics from the web?
- improve MPC-Status: better volume control, add a way to show/hide the
rest, plus add the buttons currently in the toolbar.
- improve mpc-songs-mode's header-line column-headings so they can be
dragged to resize.
- allow selecting several entries by drag-mouse.
- poll less often
- use the idle command
- do the time-ticking locally (and sync every once in a while)
- look at the end of play time to make sure we notice the end
as soon as possible
- better volume widget.
- add synthesized tags.
e.g. pseudo-artist = artist + composer + performer.
e.g. pseudo-performer = performer or artist
e.g. rewrite artist "Foo bar & baz" to "Foo bar".
e.g. filename regexp -> compilation flag
- window/buffer management.
- menubar, tooltips, ...
- add mpc-describe-song, mpc-describe-album, ...
- add import/export commands (especially export to an MP3 player).
- add a real notion of album (as opposed to just album-name):
if all songs with same album-name have same artist -> it's an album
else it's either several albums or a compilation album (or both),
in which case we could use heuristics or user provided info:
- if the user followed the 1-album = 1-dir idea, then we can group songs
by their directory to create albums.
- if a compilation flag is available, and if <=1 of the songs have it
set, then we can group songs by their artist to create albums.
- if two songs have the same track-nb and disk-nb, they're not in the
same album. So from the set of songs with identical album names, we
can get a lower bound on the number of albums involved, and then see
which of those may be non-compilations, etc...
- use a special directory name for compilations.
- ask the web ;-)
Defined variables (32)
mpc-browser-tags | Tags for which a browser buffer should be created by default. |
mpc-cover-image-re | If non-nil, it is a regexp that should match a valid cover image. |
mpc-data-directory | Directory where MPC.el stores auxiliary data. |
mpc-frame-alist | Alist of frame parameters for the MPC frame. |
mpc-host | Host (and port) where the Music Player Daemon is running. |
mpc-mode-abbrev-table | Abbrev table for ‘mpc-mode’. |
mpc-mode-hook | Hook run after entering ‘mpc-mode’. |
mpc-mode-map | Keymap for ‘mpc-mode’. |
mpc-mode-menu | Menu for MPC mode. |
mpc-mode-syntax-table | Syntax table for ‘mpc-mode’. |
mpc-mpd-music-directory | Location of MPD’s music directory. |
mpc-songs-format | Format used to display each song in the list of songs. |
mpc-songs-hashcons | Make song file name objects unique via hash consing. |
mpc-songs-mode-abbrev-table | Abbrev table for ‘mpc-songs-mode’. |
mpc-songs-mode-hook | Hook run after entering ‘mpc-songs-mode’. |
mpc-songs-mode-map | Keymap for ‘mpc-songs-mode’. |
mpc-songs-mode-syntax-table | Syntax table for ‘mpc-songs-mode’. |
mpc-songs-playlist | Name of the currently selected playlist, if any. |
mpc-status-callbacks | Alist associating properties to the functions that care about them. |
mpc-status-mode-abbrev-table | Abbrev table for ‘mpc-status-mode’. |
mpc-status-mode-hook | Hook run after entering ‘mpc-status-mode’. |
mpc-status-mode-map | Keymap for ‘mpc-status-mode’. |
mpc-status-mode-syntax-table | Syntax table for ‘mpc-status-mode’. |
mpc-tagbrowser-dir-mode-abbrev-table | Abbrev table for ‘mpc-tagbrowser-dir-mode’. |
mpc-tagbrowser-dir-mode-hook | Hook run after entering ‘mpc-tagbrowser-dir-mode’. |
mpc-tagbrowser-dir-mode-map | Keymap for ‘mpc-tagbrowser-dir-mode’. |
mpc-tagbrowser-dir-mode-syntax-table | Syntax table for ‘mpc-tagbrowser-dir-mode’. |
mpc-tagbrowser-mode-abbrev-table | Abbrev table for ‘mpc-tagbrowser-mode’. |
mpc-tagbrowser-mode-hook | Hook run after entering ‘mpc-tagbrowser-mode’. |
mpc-tagbrowser-mode-map | Keymap for ‘mpc-tagbrowser-mode’. |
mpc-tagbrowser-mode-syntax-table | Syntax table for ‘mpc-tagbrowser-mode’. |
mpc-volume-step | Change volume in increments of this integer. |