This post offers a partial solution to your problem. Note that it does not do a sort by
AlbumArtist (hence the "partial"), but it does deal with compilation albums in the browser in a sane way.
You will want to modify
emms-browser-get-track-field-function, whose doctstring reads:
*A function to get an element from a track.
Change this to customize the way data is organized in the
browser. For example,
emms-browser-get-track-field-use-directory-name uses the
directory name to determine the artist. This means that
soundtracks, compilations and so on don't populate the artist
view with lots of 1-track elements.
emms-browser-get-track-field-use-directory-name itself is undocumented (a lot of
emms is like this, unfortunately). You can either try to use the built-in function as suggested by:
I found the built-in function unsatisfactory for reasons I can't recall (it's been a while since I looked at the source code). Instead, I rolled my own, which you're free to use/modify as you see fit:
(defun dan-emms-get-artist-from-path (track)
"Identify artist name from directory name directly below
(let* ((path (emms-track-get track 'name))
(base (expand-file-name emms-source-file-default-directory))
(trunc (substring path (length base))))
(car (split-string trunc "/"))))
(defun dan-emms-get-track-field (track type)
"Sort artists by directory name in EMMS browser (avoids the
compilation albums propagating orphans in the list)."
(if (eq type 'info-artist)
(emms-track-get track type "misc")))
;; make compilations follow from the directory name (no orphans)