1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-30 20:32:00 -08:00

Add ability to crossfade between songs in 'mpc'

* lisp/mpc.el (mpc-cmd-crossfade):
(mpc-toggle-crossfade): New function.
(mpc-crossfade-time): New option.
(mpc-mode-menu): Add menu item to toggle crossfade.  (Bug#73891)
This commit is contained in:
john muhl 2024-09-28 19:11:03 -05:00 committed by Stefan Monnier
parent de0800c511
commit 08f3bc1b8e
2 changed files with 23 additions and 0 deletions

View file

@ -582,6 +582,11 @@ a desktop notification when the song changes, using
customized using the new user options 'mpc-notifications-title' and
'mpc-notifications-body'.
*** New user option 'mpc-crossfade-time'.
When non-nil, MPC will crossfade between songs for the specified number
of seconds. Crossfading can be toggled using the command
'mpc-toggle-crossfade' or from the MPC menu.
* New Modes and Packages in Emacs 31.1

View file

@ -883,6 +883,11 @@ If PLAYLIST is t or nil or missing, use the main playlist."
(defun mpc-cmd-tagtypes ()
(mapcar #'cdr (mpc-proc-cmd-to-alist "tagtypes")))
(defun mpc-cmd-crossfade (&optional arg)
"Set duration of crossfade to `mpc-crossfade-time' or ARG seconds."
(mpc-proc-cmd (list "crossfade" (or arg mpc-crossfade-time))
#'mpc-status-refresh))
;; This was never integrated into MPD.
;; (defun mpc-cmd-download (file)
;; (with-current-buffer (generate-new-buffer " *mpc download*")
@ -918,6 +923,11 @@ If PLAYLIST is t or nil or missing, use the main playlist."
"Directory where MPC.el stores auxiliary data."
:type 'directory)
(defcustom mpc-crossfade-time 3
"Number of seconds to crossfade between songs."
:version "31.1"
:type 'natnum)
(defun mpc-data-directory ()
(unless (file-directory-p mpc-data-directory)
(make-directory mpc-data-directory))
@ -1188,6 +1198,8 @@ string POST."
:selected (member '(single . "1") mpc-status)]
["Consume Mode" mpc-toggle-consume :style toggle
:selected (member '(consume . "1") mpc-status)]
["Crossfade Songs" mpc-toggle-crossfade :style toggle
:selected (alist-get 'xfade mpc-status)]
"--"
["Add new browser" mpc-tagbrowser]
["Update DB" mpc-update]
@ -2428,6 +2440,12 @@ This is used so that they can be compared with `eq', which is needed for
(mpc-cmd-random
(if (string= "0" (cdr (assq 'random (mpc-cmd-status)))) "1" "0")))
(defun mpc-toggle-crossfade ()
"Toggle crossfading between songs."
(interactive)
(mpc-cmd-crossfade
(if (alist-get 'xfade mpc-status) "0" mpc-crossfade-time)))
(defun mpc-stop ()
"Stop playing the current queue of songs."
(interactive)