aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--emms-browser.el69
-rw-r--r--emms-info-ogg.el2
-rw-r--r--emms-info.el2
-rw-r--r--emms-player-mpd.el2
-rw-r--r--emms-playlist-limit.el4
-rw-r--r--emms-playlist-sort.el10
-rw-r--r--emms-tag-editor.el10
7 files changed, 87 insertions, 12 deletions
diff --git a/emms-browser.el b/emms-browser.el
index 48df21c..171eaaa 100644
--- a/emms-browser.el
+++ b/emms-browser.el
@@ -46,8 +46,8 @@
;; c) the extra window closed, and both buffers buried
;; If you just want access to the browser, try M-x
-;; emms-browse-by-TYPE, where TYPE is one of artist, album, genre or
-;; year. These commands can also be used while smart browsing to
+;; emms-browse-by-TYPE, where TYPE is one of artist, album, composer,
+;; genre or year. These commands can also be used while smart browsing to
;; change the browsing category.
;; If you don't want to activate the code with (emms-devel), you can
@@ -82,13 +82,17 @@
;; s A emms-browser-search-by-album
;; s a emms-browser-search-by-artist
+;; s c emms-browser-search-by-composer
;; s s emms-browser-search-by-names
;; s t emms-browser-search-by-title
+;; s p emms-browser-search-by-performer
;; b 1 emms-browse-by-artist
;; b 2 emms-browse-by-album
;; b 3 emms-browse-by-genre
;; b 4 emms-browse-by-year
+;; b 5 emms-browse-by-composer
+;; b 6 emms-browse-by-performer
;; W a p emms-browser-lookup-album-on-pitchfork
;; W a w emms-browser-lookup-album-on-wikipedia
@@ -96,6 +100,12 @@
;; W A p emms-browser-lookup-artist-on-pitchfork
;; W A w emms-browser-lookup-artist-on-wikipedia
+;; W C p emms-browser-lookup-composer-on-pitchfork
+;; W C w emms-browser-lookup-composer-on-wikipedia
+
+;; W P p emms-browser-lookup-performer-on-pitchfork
+;; W P w emms-browser-lookup-performer-on-wikipedia
+
;; Displaying covers
;; -------------------------------------------------------------------
@@ -221,6 +231,8 @@
;; %y the album year
;; %A the album name
;; %a the artist name of the track
+;; %C the composer name of the track
+;; %p the performer name of the track
;; %t the title of the track
;; %T the track number
;; %cS a small album cover
@@ -235,9 +247,10 @@
;; The faces used to display the various fields are also customizable.
;; They are in the format emms-browser-<type>-face, where type is one
-;; of "year/genre", "artist", "album" or "track". Note that faces lack
-;; the initial "info-" part. For example, to change the artist face,
-;; type M-x customize-face emms-browser-artist-face.
+;; of "year/genre", "artist", "composer", "performer", "album" or
+;; "track". Note that faces lack the initial "info-" part. For example,
+;; to change the artist face, type
+;; M-x customize-face emms-browser-artist-face.
;; Deleting files
;; -------------------------------------------------------------------
@@ -437,12 +450,20 @@ Called once for each directory."
(define-key map (kbd "b 2") 'emms-browse-by-album)
(define-key map (kbd "b 3") 'emms-browse-by-genre)
(define-key map (kbd "b 4") 'emms-browse-by-year)
+ (define-key map (kbd "b 5") 'emms-browse-by-composer)
+ (define-key map (kbd "b 6") 'emms-browse-by-performer)
(define-key map (kbd "s a") 'emms-browser-search-by-artist)
+ (define-key map (kbd "s c") 'emms-browser-search-by-composer)
+ (define-key map (kbd "s p") 'emms-browser-search-by-performer)
(define-key map (kbd "s A") 'emms-browser-search-by-album)
(define-key map (kbd "s t") 'emms-browser-search-by-title)
(define-key map (kbd "s s") 'emms-browser-search-by-names)
(define-key map (kbd "W A w") 'emms-browser-lookup-artist-on-wikipedia)
(define-key map (kbd "W A p") 'emms-browser-lookup-artist-on-pitchfork)
+ (define-key map (kbd "W C w") 'emms-browser-lookup-composer-on-wikipedia)
+ (define-key map (kbd "W C p") 'emms-browser-lookup-composer-on-pitchfork)
+ (define-key map (kbd "W P w") 'emms-browser-lookup-performer-on-wikipedia)
+ (define-key map (kbd "W P p") 'emms-browser-lookup-performer-on-pitchfork)
(define-key map (kbd "W a w") 'emms-browser-lookup-album-on-wikipedia)
(define-key map (kbd "W a p") 'emms-browser-lookup-album-on-pitchfork)
(define-key map (kbd ">") 'emms-browser-next-filter)
@@ -590,6 +611,8 @@ example function is `emms-browse-by-artist'."
(goto-char (point-min))))
(emms-browser-add-category "artist" 'info-artist)
+(emms-browser-add-category "composer" 'info-composer)
+(emms-browser-add-category "performer" 'info-performer)
(emms-browser-add-category "album" 'info-album)
(emms-browser-add-category "genre" 'info-genre)
(emms-browser-add-category "year" 'info-year)
@@ -693,6 +716,8 @@ browser, and hit 'b 1' to refresh.")))
Eg. if CURRENT-MAPPING is currently 'info-artist, return 'info-album."
(cond
((eq current-mapping 'info-artist) 'info-album)
+ ((eq current-mapping 'info-composer) 'info-album)
+ ((eq current-mapping 'info-performer) 'info-album)
((eq current-mapping 'info-album) 'info-title)
((eq current-mapping 'info-genre) 'info-artist)
((eq current-mapping 'info-year) 'info-artist)))
@@ -882,6 +907,8 @@ Uses `emms-browser-alpha-sort-function'."
(cond
((or
(eq type 'info-artist)
+ (eq type 'info-composer)
+ (eq type 'info-performer)
(eq type 'info-year)
(eq type 'info-genre))
'emms-browser-sort-by-name)
@@ -1312,6 +1339,14 @@ Disabled by default."
(interactive)
(emms-browser-lookup-wikipedia 'info-artist))
+(defun emms-browser-lookup-composer-on-wikipedia ()
+ (interactive)
+ (emms-browser-lookup-wikipedia 'info-composer))
+
+(defun emms-browser-lookup-performer-on-wikipedia ()
+ (interactive)
+ (emms-browser-lookup-wikipedia 'info-performer))
+
(defun emms-browser-lookup-album-on-wikipedia ()
(interactive)
(emms-browser-lookup-wikipedia 'info-album))
@@ -1320,6 +1355,14 @@ Disabled by default."
(interactive)
(emms-browser-lookup-pitchfork 'info-artist))
+(defun emms-browser-lookup-composer-on-pitchfork ()
+ (interactive)
+ (emms-browser-lookup-pitchfork 'info-composer))
+
+(defun emms-browser-lookup-composer-on-pitchfork ()
+ (interactive)
+ (emms-browser-lookup-pitchfork 'info-composer))
+
(defun emms-browser-lookup-album-on-pitchfork ()
(interactive)
(emms-browser-lookup-pitchfork 'info-album))
@@ -1506,6 +1549,14 @@ included."
(interactive)
(emms-browser-search '(info-artist)))
+(defun emms-browser-search-by-composer ()
+ (interactive)
+ (emms-browser-search '(info-composer)))
+
+(defun emms-browser-search-by-performer ()
+ (interactive)
+ (emms-browser-search '(info-performer)))
+
(defun emms-browser-search-by-title ()
(interactive)
(emms-browser-search '(info-title)))
@@ -1516,7 +1567,7 @@ included."
(defun emms-browser-search-by-names ()
(interactive)
- (emms-browser-search '(info-artist info-title info-album)))
+ (emms-browser-search '(info-artist info-composer info-performer info-title info-album)))
;; --------------------------------------------------
;; Album covers
@@ -1618,6 +1669,8 @@ If > album level, most of the track data will not make sense."
("y" . ,(emms-track-get track 'info-year))
("A" . ,(emms-track-get track 'info-album))
("a" . ,(emms-track-get track 'info-artist))
+ ("C" . ,(emms-track-get track 'info-composer))
+ ("p" . ,(emms-track-get track 'info-performer))
("t" . ,(emms-track-get track 'info-title))
("T" . ,(emms-browser-track-number track))
("cS" . ,(emms-browser-get-cover-str path 'small))
@@ -1668,6 +1721,8 @@ If > album level, most of the track data will not make sense."
((or (eq type 'info-year)
(eq type 'info-genre)) "year/genre")
((eq type 'info-artist) "artist")
+ ((eq type 'info-composer) "composer")
+ ((eq type 'info-performer) "performer")
((eq type 'info-album) "album")
((eq type 'info-title) "track"))))
(intern
@@ -1797,6 +1852,8 @@ the text that it generates."
(emms-browser-make-face "year/genre" "#aaaaff" "#444477" 1.5)
(emms-browser-make-face "artist" "#aaaaff" "#444477" 1.3)
+(emms-browser-make-face "composer" "#aaaaff" "#444477" 1.3)
+(emms-browser-make-face "performer" "#aaaaff" "#444477" 1.3)
(emms-browser-make-face "album" "#aaaaff" "#444477" 1.1)
(emms-browser-make-face "track" "#aaaaff" "#444477" 1.0)
diff --git a/emms-info-ogg.el b/emms-info-ogg.el
index f8db9d4..035a8c6 100644
--- a/emms-info-ogg.el
+++ b/emms-info-ogg.el
@@ -77,6 +77,8 @@ ogg-comments.el"
(emms-track-set track 'info-title (emms-info-ogg-get-comment "title" info))
(emms-track-set track 'info-artist (emms-info-ogg-get-comment "artist" info))
+ (emms-track-set track 'info-composer (emms-info-ogg-get-comment "composer" info))
+ (emms-track-set track 'info-performer (emms-info-ogg-get-comment "performer" info))
(emms-track-set track 'info-album (emms-info-ogg-get-comment "album" info))
(emms-track-set track 'info-note (emms-info-ogg-get-comment "comment" info))
(emms-track-set track 'info-year (emms-info-ogg-get-comment "date" info))
diff --git a/emms-info.el b/emms-info.el
index 57c66d1..d60edb9 100644
--- a/emms-info.el
+++ b/emms-info.el
@@ -30,6 +30,8 @@
;; are defined:
;; info-artist - string naming the artist
+;; info-composer - string naming the composer
+;; info-performer - string naming the performer
;; info-title - string naming the title of the song
;; info-album - string naming the album
;; info-tracknumber - string(?) naming the track number
diff --git a/emms-player-mpd.el b/emms-player-mpd.el
index b80f76d..b1a0d04 100644
--- a/emms-player-mpd.el
+++ b/emms-player-mpd.el
@@ -1064,6 +1064,8 @@ rather than EMMS."
(let ((name (car data))
(value (cdr data)))
(setq name (cond ((string= name "artist") 'info-artist)
+ ((string= name "composer") 'info-composer)
+ ((string= name "performer") 'info-performer)
((string= name "title") 'info-title)
((string= name "album") 'info-album)
((string= name "track") 'info-tracknumber)
diff --git a/emms-playlist-limit.el b/emms-playlist-limit.el
index f532ca2..6b67986 100644
--- a/emms-playlist-limit.el
+++ b/emms-playlist-limit.el
@@ -85,6 +85,8 @@
(emms-playlist-limit-do (quote ,attribute) regexp)))
(define-emms-playlist-limit info-artist)
+(define-emms-playlist-limit info-composer)
+(define-emms-playlist-limit info-performer)
(define-emms-playlist-limit info-title)
(define-emms-playlist-limit info-album)
(define-emms-playlist-limit info-year)
@@ -98,6 +100,8 @@
(define-key emms-playlist-mode-map (kbd "/ n") 'emms-playlist-limit-to-name)
(define-key emms-playlist-mode-map (kbd "/ a") 'emms-playlist-limit-to-info-artist)
+(define-key emms-playlist-mode-map (kbd "/ c") 'emms-playlist-limit-to-info-composer)
+(define-key emms-playlist-mode-map (kbd "/ p") 'emms-playlist-limit-to-info-performer)
(define-key emms-playlist-mode-map (kbd "/ t") 'emms-playlist-limit-to-info-title)
(define-key emms-playlist-mode-map (kbd "/ b") 'emms-playlist-limit-to-info-album)
(define-key emms-playlist-mode-map (kbd "/ y") 'emms-playlist-limit-to-info-year)
diff --git a/emms-playlist-sort.el b/emms-playlist-sort.el
index 00398da..0977eb5 100644
--- a/emms-playlist-sort.el
+++ b/emms-playlist-sort.el
@@ -36,8 +36,8 @@
(defcustom emms-playlist-sort-list '(info-artist info-album)
"Sorting list used by `emms-playlist-sort-by-list'.
Currently it understands the following fields: name info-artist
-info-title info-album info-genre info-playing-time
-info-tracknumber."
+imfo-composer info-performer info-title info-album info-genre
+info-playing-time info-tracknumber."
:type 'symbol
:group 'emms-playlist-sort)
@@ -56,6 +56,8 @@ info-tracknumber."
(define-emms-playlist-sort name)
(define-emms-playlist-sort info-artist)
+(define-emms-playlist-sort info-composer)
+(define-emms-playlist-sort info-performer)
(define-emms-playlist-sort info-title)
(define-emms-playlist-sort info-album)
(define-emms-playlist-sort info-year)
@@ -86,6 +88,8 @@ increasingly."
'(progn
(define-key emms-playlist-mode-map (kbd "S n") 'emms-playlist-sort-by-name)
(define-key emms-playlist-mode-map (kbd "S a") 'emms-playlist-sort-by-info-artist)
+ (define-key emms-playlist-mode-map (kbd "S c") 'emms-playlist-sort-by-info-composer)
+ (define-key emms-playlist-mode-map (kbd "S p") 'emms-playlist-sort-by-info-performer)
(define-key emms-playlist-mode-map (kbd "S t") 'emms-playlist-sort-by-info-title)
(define-key emms-playlist-mode-map (kbd "S b") 'emms-playlist-sort-by-info-album)
(define-key emms-playlist-mode-map (kbd "S y") 'emms-playlist-sort-by-info-year)
@@ -140,7 +144,7 @@ ie. by album name and then by track number."
(catch 'return
(dolist (info emms-playlist-sort-list)
(case info
- ((name info-artist info-title info-album info-genre)
+ ((name info-artist info-composer info-performer info-title info-album info-genre)
(when (emms-string< (emms-track-get a info)
(emms-track-get b info))
(throw 'return t)))
diff --git a/emms-tag-editor.el b/emms-tag-editor.el
index 1f7cbbb..ae79faa 100644
--- a/emms-tag-editor.el
+++ b/emms-tag-editor.el
@@ -37,13 +37,15 @@
(defvar emms-tag-editor-tags
'((info-artist . "a")
+ (info-composer . "c")
+ (info-performer . "p")
(info-title . "t")
(info-album . "l")
(info-tracknumber . "n")
(info-year . "y")
(info-genre . "g")
(info-date . "d")
- (info-note . "c"))
+ (info-note . ";"))
"An alist to determine the format of various info tags.")
(defvar emms-tag-editor-edit-buffer "*EMMS-TAGS*"
@@ -79,12 +81,14 @@ is the format template. The format specification is like:
m -- Track description
f -- Track name
a -- Track info-artist
+ c -- Track info-composer
+ p -- Track info-performer
t -- Track info-title
l -- Track info-album
n -- Track info-tracknumber
y -- Track info-year
g -- Track info-genre
- c -- Track info-note
+ ; -- Track info-note
You can add new specifications in `emms-tag-editor-tags', and use
`emms-tag-editor-make-format' to create a new format string.
@@ -134,7 +138,7 @@ See also `emms-tag-editor-tag-file' and `emms-tag-editor-tag-ogg'.")
(let ((info-tag (intern (concat "info-" tag))))
(when (> (length (setq val (emms-track-get track info-tag))) 0)
(setq args (append (list "-t" (concat (upcase tag) "=" val)) args)))))
- '("artist" "title" "album" "tracknumber" "date" "genre" "note"))
+ '("artist" "composer" "performer" "title" "album" "tracknumber" "date" "genre" "note"))
(when args
(apply #'call-process "vorbiscomment" nil
(get-buffer-create emms-tag-editor-log-buffer)