branch: elpa/mpv commit b026ae5bb6139b8bbbc572d24974dcd295c1465c Merge: 2d24187f7b 27b98410e5 Author: Johann Klähn <joh...@jklaehn.de> Commit: GitHub <nore...@github.com>
Merge pull request #19 from c1-g/volume Add volume control commands --- README.md | 1 + mpv.el | 33 +++++++++++++++++++++++++++++---- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e9f581df94..cecebce604 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ Among others, mpv.el provides - `mpv-kill` - `mpv-seek-forward` / `mpv-seek-backward` - `mpv-speed-increase` / `mpv-speed-decrease` +- `mpv-volume-increase` / `mpv-speed-volume` - `mpv-insert-playback-position` - `mpv-seek-to-position-at-point` diff --git a/mpv.el b/mpv.el index 5348c92c83..5b9847538e 100644 --- a/mpv.el +++ b/mpv.el @@ -63,6 +63,11 @@ :type 'number :group 'mpv) +(defcustom mpv-volume-step 1.50 + "Scale factor used when adjusting volume." + :type 'number + :group 'mpv) + (defcustom mpv-seek-step 5 "Step size in seconds used when seeking." :type 'number @@ -311,10 +316,9 @@ This can be used with the `org-open-at-point-functions' hook." (defun mpv-speed-increase (steps) "Increase playback speed by STEPS factors of `mpv-speed-step'." (interactive "p") - (let ((factor (* (abs steps) - (if (> steps 0) - mpv-speed-step - (/ 1 mpv-speed-step))))) + (let ((factor (if (>= steps 0) + (* steps mpv-speed-step) + (/ 1 (* (- steps) mpv-speed-step))))) (mpv--enqueue `("multiply" "speed" ,factor) #'ignore))) ;;;###autoload @@ -323,6 +327,27 @@ This can be used with the `org-open-at-point-functions' hook." (interactive "p") (mpv-speed-increase (- steps))) +;;;###autoload +(defun mpv-volume-set (factor) + "Set playback volume to FACTOR." + (interactive "nFactor: ") + (mpv--enqueue `("set" "volume" ,(abs factor)) #'ignore)) + +;;;###autoload +(defun mpv-volume-increase (steps) + "Increase playback volume by STEPS factors of `mpv-volume-step'." + (interactive "p") + (let ((factor (if (>= steps 0) + (* steps mpv-volume-step) + (/ 1 (* (- steps) mpv-volume-step))))) + (mpv--enqueue `("multiply" "volume" ,factor) #'ignore))) + +;;;###autoload +(defun mpv-volume-decrease (steps) + "Decrease playback volume by STEPS factors of `mpv-volume-step'." + (interactive "p") + (mpv-volume-increase (- steps))) + (defun mpv--raw-prefix-to-seconds (arg) "Convert raw prefix argument ARG to seconds using `mpv-seek-step'. Numeric arguments will be treated as seconds, repeated use