2

EMMS seems to be completely unaware of any tag / metadata in my music files. I tried configuring it with mp3info (I no longer want this anyway), and now with libtag, checking that they work in command line, and I have deleted and recreated the cache at "~/.emacs.d/emms/cache" to no avail. The emms-browser categorises everything as misc and seems to know nothing more than the file names.

I'll detail my configuration.

My init.el has

;;emms configuration
(require 'emms)
(require 'emms-setup)
(emms-all)
(emms-default-players)
(setq emms-source-file-default-directory "/Volumes/Seabeam HD/Music/")
(require 'emms-info-libtag)
(setq emms-info-functions '(emms-info-libtag))
(autoload 'emms-smart-browse "emms-browser.el" "Browse with EMMS" t)
(global-set-key [(f7)] 'emms-smart-browse)

and I installed emms from elpa. I also cloned the emms git repo and did

make emms-print-metadata

and put the binary in my path and tested it (I also did sudo make install from here, and hopefully did not mess things up now that I'm running off the elpa version). It prints id3 tags and other metadata as expected. In installed mp3info from macports and tested that too. Reads id3v1 tags, as expected.

Now, I'm using GUI Emacs.app, so I have exec-path-from-shell to ensure that emacs finds commands it needs.

EMMS makes a directory, "~/.emacs.d/emms/" where it stores history, cache, etc. I deleted this after setting things up for libtag and have also restarted emacs.

I've read the manual and this other emacs.SE on it...

1 Answers1

2

I fixed this by removing ~/.emacs.d/elpa/emms-* and ~/.emacs.d/elpa/emms and installing from the git repo instead of elpa. I don't know why the method in my original question didn't work but here is a tutorial for how I got the metadata to work. It basically follows instructions from the Manual's Quickstart Guide.

With the same contents of init.el I did git clone git://git.sv.gnu.org/emms.git in ~/.emacs.d/lisp/ and ran make and sudo make install. Previously I had compiled and put the binary for emms-print-metadata in my executable path variable, and ensured that emacs knows about the same path variable. I also installed mplayer to play files.

Since this is not an elpa package I had to tell emacs where to find it by adding (add-to-list 'load-path "~/.emacs.d/lisp/emms/lisp/") to my init file. I'll repeat the other part of the configuration with comments to help the next person:

;;emms configuration ;;; elisp comment ;)
(require 'emms)      ;;; load emms from "~/.emacs.d/lisp/emms/lisp/"
                     ;;; i.e., the core functionality
(require 'emms-setup);;; load some functions that will set some preferences
                     ;;; it's worth looking at this file
(emms-all)           ;;; load all stable features of emms, defined in emms-setup
(emms-default-players);; load a list of default players (like mplayer) installed defined in emms-setup
(setq emms-source-file-default-directory "/Volumes/Seabeam HD/Music/")
(require 'emms-info-libtag) ;;; load functions that will talk to emms-print-metadata which in turn talks to libtag and gets metadata
(setq emms-info-functions '(emms-info-libtag)) ;;; make sure libtag is the only thing delivering metadata
;;; below is a nice key command for toggling the music browser
(autoload 'emms-smart-browse "emms-browser.el" "Browse with EMMS" t)
(global-set-key [(f7)] 'emms-smart-browse) 

I then reloaded init.el / restarted emacs and did M-x emms-add-directory-tree RET RET (I didn't need to change the default because of emms-source-file-default-directory). I waited a while and emms playlist buffer started updating tracks as it found the metadata. Finally I opened emms-browser (f7) and could browse by artist, album, title, etc, and my metadata was all there.

I hope this helps someone!

  • 1
    This answer did help me with a related problem! But could you fix the quote mark `'` in the `~/.emacs.d/lisp/'` line in the answer, so that the formatting is applied properly? I'd do it myself but I can't make a change of fewer than 6 characters. – nonreligious Nov 25 '22 at 15:16
  • I was facing the same issue. My hypothesis is that the `emms-print-metadata` binary has to exist at the time emms is installed for it to work. So the active ingredient in your solution, I suspect, is that the binary was present when you installed emms for the second time, not that you installed it from the git repository. At least in my case, I reinstalled following the same installation method and the problem was also fixed. (I mention this in case it helps others also facing this issue.) – Pablo Apr 27 '23 at 10:24