28

I have a bunch of music (.mp3) files on my disk, and I would like to play them from within Emacs. I tried EMMS, but it seems rather bloated. I'm curious about other possibilities, with comparison of features. In particular, I am interested in these:

  • Simple - Whether the given player is simple enough to start using it within a few minutes, including installation and learning the basics.

  • dired integration - So that I can e.g. mark some music files in dired and have them played/added to the playlist.

  • Editing capabilities - I would like the ability to edit id3 tags.

7
  • 4
    A lot of options are listed on EmacsWiki: Music Players.
    – Dan
    Commented Nov 18, 2014 at 0:21
  • 3
    And here a few options that work: wikemacs.org/index.php/Media_player
    – Ehvince
    Commented Nov 18, 2014 at 10:46
  • 1
    @Malabarba Why the bongo tag? Is this question likely to be relevant to someone looking for help with bongo? It seems to me that tags should be describing the question, not its answers... emacs.stackexchange.com/help/tagging
    – T. Verron
    Commented Nov 19, 2014 at 21:45
  • 1
    @T.Verron for the same reason it's tagged as emms. It's unlikely to be useful for someone looking for help with these packages, but tags also serve the purpose of calling the attention of experts in the topic, and this question can indeed benefit from an expert in any of these.
    – Malabarba
    Commented Nov 20, 2014 at 0:08
  • 1
    @Malabarba At least emms was mentioned in the question. :) I understand that today there are only 2 packages to read music, so their names + the general purpose fit in the 5 allowed tags. If two more packages ever appear and are mentioned here, will you also add a tag for them? Experts can find the answer from tags that they know are connected to their specialty: I'd expect an expert in bongo to also follow emms and music-player, because there may be questions tagged with any in which they may still have useful knowledge to bring on the table.
    – T. Verron
    Commented Nov 20, 2014 at 6:13

4 Answers 4

28

The Emacs Multimedia System (EMMS)

Your initial rant suggests that you did not really give EMMS a try... Maybe you should?

  • With the recent release of version 4, Yoni Rabkin, the maintainer, put a lot of effort into the manual. It's very good these days.
  • It is simple since it mostly uses default Emacs bindings. Want to remove a song from the playlist? C-a C-k (in git version just C-k).
  • It is flexible because you can display and play back your music how you want. Want to use mplayer? Or vlc? Note, EMMS is pretty good at picking up sensible playback options out of the box, see emms-default-players.
  • It's very modular so you can get it as "bloated" as you want. AFAIK, YR does not use the ID3-browser, but I want as much "bloat" as possible.
  • If you like dired keybindings there's emms-mark-mode.
  • From within EMMS, you can jump to the track under point in dired with d.
  • You can play marked files in dired with emms-play-dired.
  • (Rudimentary) tag editing: Just hit E on a track.
  • The ID3-browser is pretty out of the box, (you may have to produce covers in the right sizes, see emms-browser-covers and below).

Screenshot of EMMS

Quick setup of the EMMS-browser

Add something like this to your init.el (after installing EMMS):

 ;;** EMMS
 ;; Autoload the id3-browser and bind it to F7.
 ;; You can change this to your favorite EMMS interface.
 (autoload 'emms-smart-browse "emms-browser.el" "Browse with EMMS" t)
 (global-set-key [(f7)] 'emms-smart-browse)

 (with-eval-after-load 'emms
   (emms-standard) ;; or (emms-devel) if you want all features
   (setq emms-source-file-default-directory "~/music"
         emms-info-asynchronously t
         emms-show-format "♪ %s")

   ;; Might want to check `emms-info-functions',
   ;; `emms-info-libtag-program-name',
   ;; `emms-source-file-directory-tree-function'
   ;; as well.

   ;; Determine which player to use.
   ;; If you don't have strong preferences or don't have
   ;; exotic files from the past (wma) `emms-default-players`
   ;; is probably all you need.
   (if (executable-find "mplayer")
       (setq emms-player-list '(emms-player-mplayer))
     (emms-default-players))

   ;; For libre.fm see `emms-librefm-scrobbler-username' and
   ;; `emms-librefm-scrobbler-password'.
   ;; Future versions will use .authoinfo.gpg.
   )

Click F7 to see initialization instructions. To add music do M-x emms-add-directory-tree. This will add all music to *EMMS Playlist* (available through F7 F7) and eventually to your library. Feel free to opt out of the library and use the playlist only. Just adjust what F7 calls.

Pretty cover art

Getting pretty cover art in EMMS is decently simple. First, read the manual (click the "pretty"-link above). The gist is that for each ~/music/artist/album you need the set: cover_small.jpg of 100px × 100px, as used on the left above, and a cover_med.jpg of 200px × 200px, as used on the right above (adjust the sizes to your liking). The no-cover (Selmasongs above) is set via emms-browser-default-covers. beet can fetch covers for you. Then use find and convert (of imagemagick) to resize and rename covers. It's a bit "manual" at the moment. . . I use the following script, which is probably copied or inspired by the interwebs. I'm not proficient with shell so do let me know if you know a better way.

#!/bin/sh
MUSICDIR="/home/rasmus/music/"
# fetch new art
beet fetchart

# resize covers
find "$MUSICDIR" -iname "cover.jpg" |
find . -type f -iname 'cover.jpg' -exec bash -c '
  for file do
    EXTENSION="${file##*.}"
    FILENAME="${file%.*}"
    NEW_MED_NAME="${FILENAME}_med.${EXTENSION}"
    NEW_SMALL_NAME="${FILENAME}_small.${EXTENSION}"
    if [ ! -f "${NEW_MED_NAME}" ]; then
        convert "${file}" -adaptive-resize 200x200 "${NEW_MED_NAME}"
    fi
    if [ ! -f "${NEW_SMALL_NAME}" ]; then
       convert "${file}" -adaptive-resize 100x100 "${NEW_SMALL_NAME}"
    fi
  done
' bash {} +
3
11

You may be looking for Bongohttp://wikemacs.org/index.php/Media_player#Bongo

  • it is simple (and much simpler than Emms !!) because when you start it, you have all the commands listed in the buffer. You can get it from MELPA.
  • is has got the Dired integration. I never used it but we can either read it here or ask another user
  • not sure about id3tags, but you can edit custom tags (on link above).

My favourite though is mpg123. Very simple and many commands available. I didn't integrate it to Dired but I quickly add files or folders to the playlist thanks to Ido.

4

Bookmark+. Search for "music" (and "navigation list") on that page.

  • You can bookmark individual sound files. "Jumping" to such a bookmark plays it.

  • You can display only your sound-file bookmarks in the *Bookmark List* display, and navigate among them, as a playlist. Use C-x p B and then C-x p next to cycle the playlist.

  • Use P B in *Bookmark List*, to show only your sound-file bookmarks, then use C-x r m there to bookmark that state of the bookmark-list. "Jumping" to that bookmark-list bookmark presents you with that same display (playlist).

  • Use bookmark tags to tag sound bookmarks any way you like, to organize them into arbitrary sets, which can overlap.

  • You can also have a separate bookmark file for a given set of bookmarks. That is another way to organize them.

However, note that currently Emacs itself supports only *.au and *.wav sound files - see the Elisp manual, node Sound Output. Bookmark+ thus recognizes only these files automatically as sound files, and gives them a file-handler property of play-sound-file.

If you use MS Windows, however, then you can take advantage of file associations for bookmarks to any files. So if, for example, you have associated a Windows program Foobar with, say, files that have extension .mp3, then you can use Bookmark+ to play them. This is no different from taking advantage of any other Windows file association.

0

You can simply invoke mpv from vterm (or whatever terminal you use.)

Not the answer you're looking for? Browse other questions tagged or ask your own question.