From 1ef1dbed58aef8e7ea99ea829f4ba003fbfd7a57 Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Thu, 7 Apr 2022 12:02:19 -0500 Subject: [PATCH] music --- README.org | 92 ++++++++++++++++++++++++++++++++++++++++++++---------- init.el | 90 ++++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 145 insertions(+), 37 deletions(-) diff --git a/README.org b/README.org index a89f4547..c677c900 100644 --- a/README.org +++ b/README.org @@ -37,6 +37,7 @@ - [[#eaf-emacs-application-framework][EAF (Emacs Application Framework)]] - [[#elfeed][Elfeed]] - [[#bongo][Bongo]] + - [[#emms][EMMS]] - [[#transmission][Transmission]] - [[#pass][Pass]] - [[#matrixement][Matrix/Ement]] @@ -396,6 +397,7 @@ This evil-collection package includes a lot of other evil based things. "of" '(:ignore t :which-key "elfeed") "h" '(:ignore t :which-key "help") "n" '(:ignore t :which-key "notes") + "m" '(:ignore t :which-key "music") "l" '(:ignore t :which-key "lsp") "sp" '(:ignore t :which-key "passwords") "bs" '(consult-buffer :which-key "buffer search") @@ -2575,22 +2577,43 @@ interfere with the default `bongo-playlist-buffer'." (use-package bongo :commands (bongo bongo-playlist-buffer) :config - (define-bongo-backend mpv - :constructor 'bongo-start-mpv-player - :program-name 'mpv - :extra-program-arguments '("--profile=fast --input-ipc-server=/tmp/mpvsocket") - :matcher '((local-file "file:" "http:" "ftp:" "lbry:") - "mka" "wav" "wma" "ogm" "opus" - "ogg" "flac" "mp3" "mka" "wav" - "mpg" "mpeg" "vob" "avi" "ogm" "mp4" - "mkv" "mov" "asf" "wmv" "rm" "rmvb" "ts") - :matcher '(("mms:" "mmst:" "rtp:" "rtsp:" "udp:" "unsv:" - "dvd:" "vcd:" "tv:" "dvb:" "mf:" "cdda:" "cddb:" - "cue:" "sdp:" "mpst:" "tivo:") . t) - :matcher '(("http:" "https:" "lbry:") . t)) + (setq bongo-default-directory "~/Music" + bongo-prefer-library-buffers nil + bongo-insert-whole-directory-trees t + bongo-logo nil + bongo-display-playback-mode-indicator t + bongo-display-inline-playback-progress t + bongo-field-separator (propertize " · " 'face 'shadow)) - (setq bongo-enabled-backends '(mpv) - bongo-mpv-extra-arguments '("--profile=fast") + (define-bongo-backend mpv + :constructor 'bongo-start-mpv-player + :program-name 'mpv + :extra-program-arguments '("--profile=fast --input-ipc-server=/tmp/mpvsocket") + :matcher '((local-file "file:" "http:" "ftp:" "lbry:") + "mpg" "mpeg" "vob" "avi" "ogm" "mp4" + "mkv" "mov" "asf" "wmv" "rm" "rmvb" "ts") + :matcher '(("mms:" "mmst:" "rtp:" "rtsp:" "udp:" "unsv:" + "dvd:" "vcd:" "tv:" "dvb:" "mf:" "cdda:" "cddb:" + "cue:" "sdp:" "mpst:" "tivo:") . t) + :matcher '(("http:" "https:" "lbry:") . t)) + + (define-bongo-backend mpv-music + :constructor 'bongo-start-mpv-player + :program-name-variable 'mpv + :extra-program-arguments '("--profile=slow --input-ipc-server=/tmp/mpvsocket") + :matcher '((local-file "file:" "http:" "ftp:" "lbry:") + "mka" "wav" "wma" "ogm" "opus" + "ogg" "flac" "mp3" "mka" "wav") + :matcher '(("http:" "https:" "lbry:") . t)) + + (setq bongo-custom-backend-matchers '((mpv-music local-file + "mka" "wav" "wma" "ogm" "opus" + "ogg" "flac" "mp3" "mka" "wav") + (mpv local-file + "mpg" "mpeg" "vob" "avi" "ogm" "mp4" + "mkv" "mov" "asf" "wmv" "rm" "rmvb" "ts"))) + + (setq bongo-enabled-backends '(mpv mpv-music) bongo-track-mark-icon-file-name "track-mark-icon.png") (defun chris/bongo-mark-line-forward () @@ -2613,9 +2636,10 @@ interfere with the default `bongo-playlist-buffer'." :general (chris/leader-keys - :states 'normal "ob" 'bongo - "oB" 'chris/bongo-open-elfeed-queue-buffer) + "oB" 'chris/bongo-open-elfeed-queue-buffer + "mi" 'bongo-insert-enqueue + "mp" 'bongo-pause/resume) (general-def 'normal bongo-playlist-mode-map "RET" 'bongo-dwim "d" 'bongo-kill-line @@ -2636,6 +2660,40 @@ interfere with the default `bongo-playlist-buffer'." "q" 'bury-buffer)) #+end_src +** EMMS +Since Bongo seems kinda difficult I shall give EMMS another try. +#+begin_src emacs-lisp +(use-package emms + :config + (emms-all) + (evil-collection-emms-setup) + (emms-default-players) + (setq emms-source-file-default-directory "~/Music/") + + (defun chris/emms-delete-song () + "Deletes files in the emms browser by default. Maybe I'll have a yes or no thingy..." + (interactive) + (if (yes-or-no-p "delete the file too?") + (emms-browser-remove-tracks t) + (emms-browser-remove-tracks))) + + :general + (chris/leader-keys + :states 'normal + :keymaps 'override + "mo" 'emms + "mb" 'emms-browser + "mp" 'emms-pause) + (general-def 'normal emms-playlist-mode-map + "q" 'bury-buffer + "d" 'emms-playlist-mode-kill-track + "D" 'emms-playlist-mode-goto-dired-at-point) + (general-def 'normal emms-browser-mode-map + "q" 'bury-buffer + "d" 'chris/emms-delete-song + "D" 'emms-browser-view-in-dired)) +#+end_src + ** Transmission I use transmission on a server to manage my torrents #+begin_src emacs-lisp diff --git a/init.el b/init.el index 0859a996..c3cf4c7e 100644 --- a/init.el +++ b/init.el @@ -229,6 +229,7 @@ "of" '(:ignore t :which-key "elfeed") "h" '(:ignore t :which-key "help") "n" '(:ignore t :which-key "notes") + "m" '(:ignore t :which-key "music") "l" '(:ignore t :which-key "lsp") "sp" '(:ignore t :which-key "passwords") "bs" '(consult-buffer :which-key "buffer search") @@ -1874,22 +1875,43 @@ interfere with the default `bongo-playlist-buffer'." (use-package bongo :commands (bongo bongo-playlist-buffer) :config - (define-bongo-backend mpv - :constructor 'bongo-start-mpv-player - :program-name 'mpv - :extra-program-arguments '("--profile=fast --input-ipc-server=/tmp/mpvsocket") - :matcher '((local-file "file:" "http:" "ftp:" "lbry:") - "mka" "wav" "wma" "ogm" "opus" - "ogg" "flac" "mp3" "mka" "wav" - "mpg" "mpeg" "vob" "avi" "ogm" "mp4" - "mkv" "mov" "asf" "wmv" "rm" "rmvb" "ts") - :matcher '(("mms:" "mmst:" "rtp:" "rtsp:" "udp:" "unsv:" - "dvd:" "vcd:" "tv:" "dvb:" "mf:" "cdda:" "cddb:" - "cue:" "sdp:" "mpst:" "tivo:") . t) - :matcher '(("http:" "https:" "lbry:") . t)) + (setq bongo-default-directory "~/Music" + bongo-prefer-library-buffers nil + bongo-insert-whole-directory-trees t + bongo-logo nil + bongo-display-playback-mode-indicator t + bongo-display-inline-playback-progress t + bongo-field-separator (propertize " · " 'face 'shadow)) - (setq bongo-enabled-backends '(mpv) - bongo-mpv-extra-arguments '("--profile=fast") + (define-bongo-backend mpv + :constructor 'bongo-start-mpv-player + :program-name 'mpv + :extra-program-arguments '("--profile=fast --input-ipc-server=/tmp/mpvsocket") + :matcher '((local-file "file:" "http:" "ftp:" "lbry:") + "mpg" "mpeg" "vob" "avi" "ogm" "mp4" + "mkv" "mov" "asf" "wmv" "rm" "rmvb" "ts") + :matcher '(("mms:" "mmst:" "rtp:" "rtsp:" "udp:" "unsv:" + "dvd:" "vcd:" "tv:" "dvb:" "mf:" "cdda:" "cddb:" + "cue:" "sdp:" "mpst:" "tivo:") . t) + :matcher '(("http:" "https:" "lbry:") . t)) + + (define-bongo-backend mpv-music + :constructor 'bongo-start-mpv-player + :program-name-variable 'mpv + :extra-program-arguments '("--profile=slow --input-ipc-server=/tmp/mpvsocket") + :matcher '((local-file "file:" "http:" "ftp:" "lbry:") + "mka" "wav" "wma" "ogm" "opus" + "ogg" "flac" "mp3" "mka" "wav") + :matcher '(("http:" "https:" "lbry:") . t)) + + (setq bongo-custom-backend-matchers '((mpv-music local-file + "mka" "wav" "wma" "ogm" "opus" + "ogg" "flac" "mp3" "mka" "wav") + (mpv local-file + "mpg" "mpeg" "vob" "avi" "ogm" "mp4" + "mkv" "mov" "asf" "wmv" "rm" "rmvb" "ts"))) + + (setq bongo-enabled-backends '(mpv mpv-music) bongo-track-mark-icon-file-name "track-mark-icon.png") (defun chris/bongo-mark-line-forward () @@ -1912,9 +1934,10 @@ interfere with the default `bongo-playlist-buffer'." :general (chris/leader-keys - :states 'normal "ob" 'bongo - "oB" 'chris/bongo-open-elfeed-queue-buffer) + "oB" 'chris/bongo-open-elfeed-queue-buffer + "mi" 'bongo-insert-enqueue + "mp" 'bongo-pause/resume) (general-def 'normal bongo-playlist-mode-map "RET" 'bongo-dwim "d" 'bongo-kill-line @@ -1934,6 +1957,36 @@ interfere with the default `bongo-playlist-buffer'." "H" 'bongo-switch-buffers "q" 'bury-buffer)) +(use-package emms + :config + (emms-all) + (evil-collection-emms-setup) + (emms-default-players) + (setq emms-source-file-default-directory "~/Music/") + + (defun chris/emms-delete-song () + "Deletes files in the emms browser by default. Maybe I'll have a yes or no thingy..." + (interactive) + (if (yes-or-no-p "delete the file too?") + (emms-browser-remove-tracks t) + (emms-browser-remove-tracks))) + + :general + (chris/leader-keys + :states 'normal + :keymaps 'override + "mo" 'emms + "mb" 'emms-browser + "mp" 'emms-pause) + (general-def 'normal emms-playlist-mode-map + "q" 'bury-buffer + "d" 'emms-playlist-mode-kill-track + "D" 'emms-playlist-mode-goto-dired-at-point) + (general-def 'normal emms-browser-mode-map + "q" 'bury-buffer + "d" 'chris/emms-delete-song + "D" 'emms-browser-view-in-dired)) + (use-package transmission :commands (transmission) :config @@ -2034,8 +2087,6 @@ interfere with the default `bongo-playlist-buffer'." gcmh-verbose nil)) (setq warning-suppress-types '((comp))) -<<<<<<< HEAD -======= (custom-set-variables ;; custom-set-variables was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. @@ -2053,4 +2104,3 @@ interfere with the default `bongo-playlist-buffer'." ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. ) ->>>>>>> origin/master