Installation
------------
-To install emus, simply add `emus.el` to a directory contained
-in your emacs `load-path`, then add the following to your `init.el`:
+To install emus, simply add the file "emus.el" to a directory
+contained in your emacs `load-path`, then add the following to your
+init.el file:
(require 'emus)
To open the emus song browser, use `M-x emus-browse`. Songs can be selected
for playback from this list by clicking their titles with the mouse cursor
-(if available) or by moving point over the title and pressing "RET". Playback
+(if available) or by moving point over the title and pressing `RET`. Playback
can be paused using the spacebar, the next/previous songs can be selected
-using the "n" and "p" keys. Similarly you can navigate between albums using
-"N" and "P".
+using the `n` and `p` keys. Similarly you can navigate between albums using
+`N` and `P`.
You can see the full list of keys available for playback control by using
`C-h m` with the browser buffer selected. This help window also lists the
to show the name of the currently selected/playing song as well as the
current volume.
+Enabling/disabling Progress Tracking
+------------------------------------
+
+By default, emus uses the mpg123 output to keep track of the progress
+through a track, and to listen to Icecast stream updates. However,
+this can cause glitches in the audio on some systems if Emacs (running
+in GUI mode) looses focus for extended periods. As a work-around it is
+possible to toggle progress tracking using `M-x emus-progress-tracking`
+which, inside the browser, is bound to `!`.
+
Example Hydra Configuration
---------------------------
The following example is from my own init.el configuration:
- (defhydra hydra-ecmus (:color red :hint nil
- :pre (emus-display-status)
- :post (message nil))
- "
- Volume: _-_/[_+__=_] (down/up) Tracks: _p_/_P_ (prev track/album) _n_/_N_ (next track/album)
- Playback: _SPC_ (play/pause) _o_ (stop) _,_/_._ (skip forward/backward) Browser: _b_ (open browser)
- "
- ("<ESC>" "quit" :color blue)
- ("q" "quit" :color blue)
- ("RET" "quit" :color blue)
- ("SPC" emus-playpause-status)
- ("p" emus-play-prev-status)
- ("n" emus-play-next-status)
- ("P" emus-play-prev-album-status)
- ("N" emus-play-next-album-status)
- ("," emus-jump-10s-backward-status)
- ("." emus-jump-10s-forward-status)
- ("-" emus-volume-down-status)
- ("+" emus-volume-up-status)
- ("=" emus-volume-up-status)
- ("o" emus-stop-status)
- ("b" emus-browse :color blue))
+ (defhydra hydra-ecmus (:color red :hint nil
+ :pre (emus-display-status)
+ :post (message nil))
+ "
+ Volume: _-_/[_+__=_] Tracks: _p_/_P_ _n_/_N_ (prev/next track/album) Progress: _#_
+ Playback: _SPC_ (play/pause) _o_ (stop) _,_/_._ (skip +/-) Browse: _b_ Restart: _!_
+ "
+ ("<ESC>" "quit" :color blue)
+ ("q" "quit" :color blue)
+ ("RET" "quit" :color blue)
+ ("SPC" emus-playpause-status)
+ ("p" emus-play-prev-status)
+ ("n" emus-play-next-status)
+ ("P" emus-play-prev-album-status)
+ ("N" emus-play-next-album-status)
+ ("," emus-jump-10s-backward-status)
+ ("." emus-jump-10s-forward-status)
+ ("<" emus-jump-1m-backward-status)
+ (">" emus-jump-1m-forward-status)
+ ("-" emus-volume-down-status)
+ ("+" emus-volume-up-status)
+ ("=" emus-volume-up-status)
+ ("o" emus-stop-status)
+ ("!" emus-restart-status)
+ ("#" emus-toggle-progress-status)
+ ("b" emus-browse :color blue))
(bind-key* (kbd "s-m") 'hydra-ecmus/body)
-
License
-------