aboutsummaryrefslogtreecommitdiff
path: root/emms.info
diff options
context:
space:
mode:
Diffstat (limited to 'emms.info')
-rw-r--r--emms.info4058
1 files changed, 0 insertions, 4058 deletions
diff --git a/emms.info b/emms.info
deleted file mode 100644
index 06fffd2..0000000
--- a/emms.info
+++ /dev/null
@@ -1,4058 +0,0 @@
-This is emms.info, produced by makeinfo version 6.1 from emms.texinfo.
-
-(C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2014, 2015, 2016,
-2020, 2021 Free Software Foundation, Inc.
- Permission is granted to copy, distribute and/or modify this
- document under the terms of the GNU Free Documentation License,
- Version 1.1 or any later version published by the Free Software
- Foundation; with no Invariant Sections, no Front-Cover Texts, and
- no Back-Cover Texts. A copy of the license is included in the
- section entitled "GNU Free Documentation License".
-INFO-DIR-SECTION Emacs
-START-INFO-DIR-ENTRY
-* Emms: (emms). The Emacs Multimedia System
-END-INFO-DIR-ENTRY
-
-
-File: emms.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir)
-
-Emms Manual
-***********
-
-This is the Manual for the Emacs Multimedia System.
-
- (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2014, 2015, 2016,
-2020, 2021 Free Software Foundation, Inc.
- Permission is granted to copy, distribute and/or modify this
- document under the terms of the GNU Free Documentation License,
- Version 1.1 or any later version published by the Free Software
- Foundation; with no Invariant Sections, no Front-Cover Texts, and
- no Back-Cover Texts. A copy of the license is included in the
- section entitled "GNU Free Documentation License".
-
-* Menu:
-
-Starting out
-* Introduction:: Introduction to Emms.
-* Quickstart Guide:: First steps with Emms for new users.
-* Installation:: How to install Emms on your System.
-* Setup:: How to setup Emms.
-* Configuration:: More detailed setup and configuration.
-* Getting Help:: Where to get help with Emms and make suggestions.
-* Formats and Freedom:: File formats without restrictions.
-
-Emms basics
-* Basic Commands:: How to control Emms with ease.
-* The Core File:: The inner core of Emms.
-* Sources:: Sources for playlists-creation.
-* Simple Players:: Some simple players.
-* Playlists:: How Emms organizes media.
-
-Advanced Features
-* Track Information:: More narrative track descriptions.
-* Interactive Playlists:: Interactive Playlists.
-* Markable Playlists:: Allow tracks to be marked.
-* Extending Emms:: How to define new players and modules.
-
-Modules and Extensions
-* The Browser:: Advanced metadata browsing.
-* Sorting Playlists:: Sorting the order of the tracks.
-* Persistent Playlists:: Restoring playlists on emacs startup.
-* Editing Tracks:: Editing track information from within Emms.
-* Emms Mode Line:: Emms information on the mode line.
-* Limiting:: Derive a new playlist from the current.
-* Music Player Daemon:: Interface to Music Player Daemon.
-* Lyrics:: Displaying lyrics synchronously.
-* Volume:: Changing the volume.
-* Streaming Audio:: Interface to streaming audio.
-* APE / FLAC Commands:: How to play next or previous track in these files.
-* Bookmarks:: Saving a place in a media file.
-* Managing Playlists:: Managing multiple playlists.
-* GNU FM:: Connect to music community websites.
-
-Copying and license
-* Copying:: The GNU General Public License gives you permission to
- redistribute Emms on certain terms; it also explains
- that there is no warranty.
-* The GNU FDL:: The license for this documentation.
-
-Indices
-* Concept Index::
-* Function Index::
-* Variable Index::
-* Keybinding Index::
-
--- The Detailed Node Listing --
-
-Here are some other nodes which are really inferiors of the ones
-already listed, mentioned here so you can get to them in one step:
-
-Installation
-* Compiling Emms:: Compiling Emms into Byte-Code.
-
-The Core File
-* User Variables:: Variables for the user to tweak.
-* Hooks:: Hooks for important Emms functions.
-* Core Functions:: Providing the basic functionality of Emms.
-
-Track Information
-* Metadata Utilities:: Supported external metadata utilities.
-* Defining Info Methods:: Defining new info methods.
-
-Extending Emms
-* New Player:: How to define a new player.
-* Simple Player for `play':: Example player using 'play'.
-* More Complex Player:: Example of a complex player using 'mpg321'.
-
-
-File: emms.info, Node: Introduction, Next: Quickstart Guide, Up: Top
-
-1 Introduction
-**************
-
-Emms is the Emacs Multi-Media System. Emms organizes playlists, allows
-browsing through track and album metadata, and plays files by calling
-external players.
-
- This manual tries to be the definitive source of information about
-Emms, an online version of the manual is available at:
-<http://www.gnu.org/software/emms/manual/>.
-
- The basic functionality of Emms consists of three parts: The core,
-the sources, and the players.
-
- The core resides in 'emms.el', provides a simple playlist, and the
-basic functionality to use all the other features of Emms. It provides
-the common user commands and interfaces for other parts. It thinks in
-tracks, where a track is the combination of a type and a name - e.g.
-the track type 'file has a name that is the file name. Other track
-types are possible.
-
- To get to tracks, the core needs sources. The file
-'emms-source-file.el' provides simple sources to interact with the file
-system.
-
- When Emms finally has the sources in the playlist, it needs a player
-to play them. 'emms-player-simple.el' defines a few useful players and
-provides a straightforward way of providing your own.
-
- The Emms comes with many additional features to extend the
-functionality beyond the core.
-
- The way Emms works is easy to customize with your own code or by
-using 'M-x customize' or by changing the variables directly.
-
-
-File: emms.info, Node: Quickstart Guide, Next: Installation, Prev: Introduction, Up: Top
-
-2 Quickstart Guide
-******************
-
-This chapter demonstrates how to setup Emms so that you can start
-listening to your music without having to read all of the documentation
-first. This is the tl;dr version of the manual.
-
- The first thing you do is to load Emms via GNU ELPA. But if you are
-installing manually, then start by telling Emacs where Emms is located.
-Let's say you have it in '~/elisp/emms/'. So add this line to your
-'.emacs':
-
- (add-to-list 'load-path "~/elisp/emms/lisp/")
-
- More detailed information about installing Emms can be found in the
-installation chapter, *Note Installation::.
-
- You'll then want to load Emms into Emacs. To achieve this you invoke
-the 'emms-all' setup function by adding the following three lines to
-your Emacs initialization file.
-
- (require 'emms-setup)
- (emms-all)
- (emms-default-players)
-
- The function 'emms-default-players' in the last line sets up the list
-of default players. The list contains lightweight specialized players
-like ogg123 or mpg321 and we-play-everything-players such as mplayer,
-mpv, vlc, etc.. To be sure that emms can play all your music you should
-check that your preferred players are installed on the machine.
-
- More detail about setting up Emms can be found in the setup chapter,
-*Note Setup::.
-
- Emms tries to display the tags (the name of the song, as opposed to
-the name of the file) of the music you listen to. Emms can use a number
-of pieces of software and libraries as sources for track info, see *Note
-Track Information:: for more.
-
- The last thing to do is to tell Emms where is your music; the root
-directory of our music collection. Let's say all your music is in
-'~/Music' or in subdirectories thereof:
-
- (setq emms-source-file-default-directory "~/Music/")
-
- OK, now we've set up Emms. Reload your Emacs initialization file or
-restart Emacs to let the changes have an effect.
-
- Now we will add all our music to a playlist by invoking 'M-x
-emms-add-directory-tree RET ~/Music/ RET'. We do this because then Emms
-will read the tags of all your music files and caches them (the cache is
-also required for the Emms browser, *Note The Browser::.)
-
- To switch to the playlist buffer, invoke 'M-x emms-playlist-mode-go'
-or simply 'M-x emms'. You may see that some tracks are displayed with
-their file name, but as Emms asynchronously populates its tag cache,
-track by track, the filenames get replaced with the artist and track
-name of the file's tag.
-
- Go ahead and navigate to a track and hit 'RET' on it to start
-playback.
-
- Now you can start exploring Emms. It's probably best to begin with
-the basic commands (*note Basic Commands::), the interactive playlists
-(*note Interactive Playlists::), and the browser (*note The Browser::).
-
-
-File: emms.info, Node: Installation, Next: Setup, Prev: Quickstart Guide, Up: Top
-
-3 Installation
-**************
-
-Emms is available via GNU ELPA, which takes care of all of the following
-steps automatically.
-
- If you are installing Emms manually, you need to put all the .el
-files of emms in a directory in your load-path. For example, if you put
-all those files into ~/elisp/emms/, then in your ~/.emacs, you should
-add:
-
- (add-to-list 'load-path "~/elisp/emms/lisp/")
-
-* Menu:
-
-* Compiling Emms:: Compiling Emms into Byte-Code.
-
-
-File: emms.info, Node: Compiling Emms, Up: Installation
-
-3.1 Compiling Emms
-==================
-
-If you are using XEmacs, you will need to edit 'Makefile' as follows
-before continuing.
-
- EMACS=xemacs
- SITEFLAG=-no-site-file
-
- You can byte-compile Emms by first entering the directory containing
-the Emms source code, followed by invoking:
-
- 'make'
-
- Which will byte compile Emms. You can then invoke:
-
- 'make install'
-
- Which will install Emms into your Emacs directories (provided you
-have the appropriate permissions to do so on your system).
-
- Note that Emms is a light-weight and agile program, you can therefore
-run Emms just fine without byte compiling it.
-
-
-File: emms.info, Node: Setup, Next: Configuration, Prev: Installation, Up: Top
-
-4 Setup
-*******
-
-The 'emms-setup' feature is provided by the file 'emms-setup.el'. It is
-essentially a collection of shortcuts for loading different Emms
-features quickly, but everything you can do with 'emms-setup' can also
-be done manually.
-
- We use 'emms-setup' by calling one of the setup functions.
-
- -- Function: emms-minimalistic
- An Emms setup script. Playlists and all the basics for playing
- media, but nothing else.
-
- -- Function: emms-all
- An Emms setup script. Loads all the stable features which come
- with the Emms distribution.
-
- 'emms-setup' also comes with a convenience function to set a default
-list of media players.
-
- -- Function: emms-default-players
- Set EMMS-PLAYER-LIST to EMMS-SETUP-DEFAULT-PLAYER-LIST.
-
- You can of course write your own Emms setup functions like the above
-by looking at the existing function definitions in 'emms-setup.el'.
-
-
-File: emms.info, Node: Configuration, Next: Getting Help, Prev: Setup, Up: Top
-
-5 Configuration
-***************
-
-This chapter discusses the configuration of Emms in more detail.
-
- The following code fragment provides a minimal Emms setup without
-using the layer of 'emms-setup'. It can maybe be used to better
-understand the internals of Emms. You can see how Emms needs to know
-about players (these are defined in 'emms-player-simple') and about
-sources for tracks (trivial file system based sources, such as this
-'emms-directory-tree', are defined in 'emms-source-file').
-
- (require 'emms-player-simple)
- (require 'emms-source-file)
- (require 'emms-source-playlist)
- (setq emms-player-list '(emms-player-mpg321
- emms-player-ogg123
- emms-player-mplayer))
-
- For a discussion on how to define additional players, see *Note
-Simple Players::.
-
- Much of the behaviour of Emms can be changed by setting variables.
-For example:
-
- (setq emms-info-asynchronously nil)
- (setq emms-playlist-buffer-name "*Music*")
-
- The first 'setq' turns off the asynchronous updating of info tags.
-The second sets the default name of the Emms playlist buffer.
-
- Another way to change Emms variables is to use the M-x 'customize'
-mechanism provided by Emacs.
-
-* Menu:
-
-* Finding files and speed:: Finding files quickly or portably.
-* Setup Examples:: Examples of ways to setup Emms.
-
-
-File: emms.info, Node: Finding files and speed, Next: Setup Examples, Up: Configuration
-
-5.1 Finding files and speed
-===========================
-
-Emms needs to traverse directories in order to find playable media. The
-default method Emms uses to achive this is
-'emms-source-file-directory-tree-internal' as defined in
-'emms-source-file.el'. The above method is written portably and will
-always work, but might be too slow if we want to load several hundred
-tracks (or more).
-
- 'emms-source-file.el' defines another method for finding files,
-'emms-source-file-directory-tree-find' which uses GNU/find.
-'emms-source-file-directory-tree-find' is usually an order of magnitude
-faster, but of course will not work if you do not have GNU/find
-installed.
-
- The method Emms will use is defined in the customisable variable
-EMMS-SOURCE-FILE-DIRECTORY-TREE-FUNCTION.
-
-
-File: emms.info, Node: Setup Examples, Prev: Finding files and speed, Up: Configuration
-
-5.2 Setup Examples
-==================
-
-What follow are samples from real-world Emms configurations which show
-some of the variety and breadth of modifications people make to the
-default Emms setup.
-
- The following excerpt includes dbus integration, defining a "recent"
-filter for the *Note The Browser::, persistent playlist via
-'emms-history.el', and enabling sending track information with
-'emms-librefm-stream.el':
-
- ;; notifications
- (require 'emms-dbus)
- (emms-dbus-enable)
- ;; covers
- (setq emms-browser-covers #'emms-browser-cache-thumbnail-async)
- (setq emms-browser-thumbnail-small-size 64)
- (setq emms-browser-thumbnail-medium-size 128)
- ;; filters
- (emms-browser-make-filter "all" #'ignore)
- (emms-browser-make-filter "recent"
- (lambda (track) (< 30
- (time-to-number-of-days
- (time-subtract (current-time)
- (emms-info-track-file-mtime track))))))
- (emms-browser-set-filter (assoc "all" emms-browser-filters))
- ;; history
- (emms-history-load)
- ;; libre-fm
- (emms-librefm-scrobbler-enable)
-
- In the following it is possible to see how some of defaults are set
-regarding saving playlists, playlist interaction, as well as adding
-special arguments to a specific player backend.
-
- (setq-default
- emms-source-file-default-directory "/mnt/db/mediaCore/sound_music/"
-
- emms-source-playlist-default-format 'm3u
- emms-playlist-mode-center-when-go t
- emms-playlist-default-major-mode 'emms-playlist-mode
- emms-show-format "NP: %s"
-
- emms-player-list '(emms-player-mpv)
- emms-player-mpv-environment '("PULSE_PROP_media.role=music")
- emms-player-mpv-parameters '("--quiet" "--really-quiet" "--no-audio-display" "--force-window=no" "--vo=null"))
-
-
-File: emms.info, Node: Getting Help, Next: Formats and Freedom, Prev: Configuration, Up: Top
-
-6 Getting Help
-**************
-
-If you have a bug to report, need help, or wish to suggest a feature,
-please feel free to use the Emms mailing list. The address of the list
-is emms-help@gnu.org. To subscribe to it, visit
-<http://lists.gnu.org/mailman/listinfo/emms-help>.
-
- If you are familiar with the Gmane service, there is a Gmane
-newsgroup which mirrors this mailing address at gmane.emacs.emms.user.
-
- Emms also has a website at <http://www.gnu.org/software/emms/>.
-
-
-File: emms.info, Node: Formats and Freedom, Next: Basic Commands, Prev: Getting Help, Up: Top
-
-7 Formats and Freedom
-*********************
-
-Emms is free software, but some of the file formats it can play carry
-restrictions, they are proprietary file formats. Proprietary software
-companies are pushing out audio and video formats which restrict when,
-where and how you can play them, and restrict developers from writing
-free software which interacts with them.
-
- Restrictive file formats put the corporate bottom-line before the
-public interest.
-
- Fortunately there are alternatives like Ogg. Ogg is a professional
-grade multimedia format. Ogg Vorbis is the compressed audio format
-(like MP3), and Ogg Theora is the video format. For more information,
-go to <http://www.xiph.org/>.
-
- If you want to transcode audio into a lossless format, you can try
-FLAC (Free Lossless Audio Codec). FLAC stands out as the fastest and
-most widely supported lossless audio codec, and the only one that at
-once is non-proprietary, is unencumbered by patents and has the source
-code for a reference implementation freely available. For more
-information about FLAC, go to <http://flac.sourceforge.net/>.
-
-
-File: emms.info, Node: Basic Commands, Next: The Core File, Prev: Formats and Freedom, Up: Top
-
-8 Basic Commands
-****************
-
-Before you can use the interface commands, you need a playlist to start
-with. The following commands allow you to add to the current playlist
-from different sources:
-
- Note that the commands with the "emms-add-" prefix add the source to
-the playlist but do not start playing it immediately. Conversely, the
-commands with the "emms-play-" prefix begin playing the track
-immediately.
-
- -- Function: emms-play-file file
- A source for a single file - either FILE, or queried from the user.
- If called with a prefix the file will be added like
- 'emms-add-file'.
- -- Function: emms-add-file file
- A source for a single file - either FILE, or queried from the user.
- If called with a prefix the file will be played like
- 'emms-play-file'.
- -- Function: emms-play-directory dir
- A source for a whole directory tree - either DIR, or queried from
- the user.
- -- Function: emms-add-directory dir
- A source for a whole directory tree - either DIR, or queried from
- the user.
- -- Function: emms-play-directory-tree dir
- A source for multiple directory trees - either DIR, or the value of
- EMMS-SOURCE-FILE-DEFAULT-DIRECTORY.
- -- Function: emms-add-directory-tree dir
- A source for multiple directory trees - either DIR, or the value of
- EMMS-SOURCE-FILE-DEFAULT-DIRECTORY.
- -- Function: emms-play-url url
- A source for an URL - for example, for streaming.
- -- Function: emms-add-url url
- A source for an URL - for example, for streaming.
- -- Function: emms-play-playlist playlist
- A source for the M3u or PLS playlist format from the file PLAYLIST.
- -- Function: emms-add-playlist playlist
- A source for the M3u or PLS playlist format from the file PLAYLIST.
- -- Function: emms-play-find dir regexp
- A source that will find files in DIR or
- EMMS-SOURCE-FILE-DEFAULT-DIRECTORY which match REGEXP.
- -- Function: emms-add-find dir regexp
- A source that will find files in DIR or
- EMMS-SOURCE-FILE-DEFAULT-DIRECTORY which match REGEXP.
-
- The basic functionality of Emms is just to play music without being
-noticed. It provides a few commands to skip the current track and such,
-but other than that it doesn't show up. Emms provides the following
-basic user commands (which you might want to bind to keystrokes):
-
- -- Function: emms-start
- Start playing the current playlist
- -- Function: emms-stop
- Stop playing
- -- Function: emms-next
- Start playing the next track in the playlist
- -- Function: emms-previous
- Start playing previous track in the playlist
- -- Function: emms-shuffle
- Shuffle the current playlist. This uses
- EMMS-PLAYLIST-SHUFFLE-FUNCTION.
- -- Function: emms-sort
- Sort the current playlist. This uses EMMS-PLAYLIST-SORT-FUNCTION.
- -- Function: emms-show &optional insertp
- Describe the current Emms track in the minibuffer. If INSERTP is
- non-nil, insert the description into the current buffer instead.
- This function uses EMMS-SHOW-FORMAT to format the current track.
-
- The command 'emms-show-all' will pop up a window with the complete
-information about the track being played. 'emms-show-all' is provided
-by 'emms-show-all.el', which is included in the 'emms-all' setup level.
-See *Note Setup::.
-
-
-File: emms.info, Node: The Core File, Next: Sources, Prev: Basic Commands, Up: Top
-
-9 The Core File
-***************
-
-The core file 'emms.el' provides the all basic functions for playing
-music, generating playlists and defining players.
-
-* Menu:
-
-* User Variables:: Variables for the user to tweak.
-* Hooks:: Hooks for important Emms functions.
-* Core Functions:: Providing the basic functionality of Emms.
-
-
-File: emms.info, Node: User Variables, Next: Hooks, Up: The Core File
-
-9.1 User Variables
-==================
-
-The core file defines a number of user variables.
-
- -- User Option: emms-player-list
- A list of players Emms can use. You need to set this in order to
- use Emms to play media.
- -- User Option: emms-show-format
- The format to use for 'emms-show'. Any "%s" is replaced by what
- EMMS-TRACK-DESCRIPTION-FUNCTION returns for the currently playing
- track.
- -- User Option: emms-repeat-playlist
- Non-nil if the Emms playlist should automatically repeat the
- playlist. If nil, playback will stop when the last track finishes
- playing.
- -- User Option: emms-track-description-function
- Function for describing an Emms track in a user-friendly way.
- -- User Option: emms-sort-lessp-function
- A function that compares two tracks, and returns non-nil if the
- first track should be sorted before the second (see also 'sort').
-
-
-File: emms.info, Node: Hooks, Next: Core Functions, Prev: User Variables, Up: The Core File
-
-9.2 Hooks
-=========
-
-The core file provides hook variables for the basic functionality of
-Emms.
-
- -- User Option: emms-player-started-hook
- A hook run when an Emms player started playing.
- -- User Option: emms-player-stopped-hook
- A hook run when an Emms player stopped playing. See also
- EMMS-PLAYER-FINISHED-HOOK.
- -- User Option: emms-playlist-source-inserted-hook
- Hook run when a source got inserted into the playlist. The buffer
- is narrowed to the new tracks.
- -- User Option: emms-playlist-selection-changed-hook
- Hook run after another track is selected in the Emms playlist.
- -- User Option: emms-playlist-cleared-hook
- Hook run after the current Emms playlist is cleared. This happens
- both when the playlist is cleared and when a new buffer is created
- for it.
- -- User Option: emms-player-finished-hook
- Hook run when an Emms player finishes playing a track. Please pay
- attention to the differences between EMMS-PLAYER-FINISHED-HOOK and
- EMMS-PLAYER-STOPPED-HOOK. The former is called only when the
- player is stopped interactively; the latter, only when the player
- actually finishes playing a track.
- -- User Option: emms-player-paused-hook
- Hook run when a player is paused or resumed. Use
- EMMS-PLAYER-PAUSED-P to find the current state.
-
-
-File: emms.info, Node: Core Functions, Prev: Hooks, Up: The Core File
-
-9.3 Core Functions
-==================
-
-The core file also defines all the functions important to the basic use
-of Emms.
-
- There are functions which deal with movement in the playlist.
-
- -- Function: emms-next-noerror
- Start playing the next track in the Emms playlist. Unlike
- 'emms-next', this function doesn't signal an error when called at
- the end of the playlist. This function should only be called when
- no player is playing. This is a good function to put in
- 'emms-player-finished-hook'.
- -- Function: emms-playlist-next
- Move to the previous track in the current buffer.
- -- Function: emms-playlist-previous
- Move to the previous track in the current buffer.
- -- Function: emms-random
- Jump to a random track.
- -- Function: emms-toggle-repeat-playlist
- Toggle whether emms repeats the playlist after it is done. See
- EMMS-REPEAT-PLAYLIST.
- -- Function: emms-toggle-repeat-track
- Toggle whether emms repeats the current track. See
- EMMS-REPEAT-TRACK.
- -- Function: emms-toggle-random-playlist
- Toggle whether emms plays the tracks randomly or sequentially. See
- EMMS-RANDOM-PLAYLIST.
-
- Some functions deal with the getting and setting track information.
-
- -- Function: emms-track type name
- Create a track with type TYPE and name NAME.
- -- Function: emms-track-type track
- Return the type of TRACK.
- -- Function: emms-track-name track
- Return the name of TRACK.
- -- Function: emms-track-get name track &optional inexistent
- Return the value of NAME for TRACK. If there is no value, return
- DEFAULT (or nil, if not given).
- -- Function: emms-track-set track name value
- Set the value of NAME for TRACK to VALUE.
- -- Function: emms-track-description track
- Return a description of TRACK. This function uses
- EMMS-TRACK-DESCRIPTION-FUNCTION.
- -- Function: emms-player-for track
- Return an Emms player capable of playing TRACK. This will be the
- first player whose PLAYABLEP function returns non-nil, or nil if no
- such player exists.
- -- Function: emms-playlist-current-selected-track
- Return the currently selected track in the current playlist.
-
- There are also functions which deal with the playing itself.
-
- -- Function: emms-player-start track
- Start playing TRACK.
- -- Function: emms-player-stop
- Stop the currently playing player.
- -- Function: emms-player-stopped
- Declare that the current Emms player is finished. This should only
- be done by the current player itself.
- -- Function: emms-seek seconds
- Seek the current player SECONDS seconds. This can be a floating
- point number for sub-second fractions. It can also be negative to
- seek backwards.
- -- Function: emms-seek-forward
- Seek ten seconds forward.
- -- Function: emms-seek-backward
- Seek ten seconds backward.
-
- For more basic commands defined in the core file see *Note Basic
-Commands::.
-
-
-File: emms.info, Node: Sources, Next: Simple Players, Prev: The Core File, Up: Top
-
-10 Sources
-**********
-
-Sources allow Emms to add and play tracks. Emms comes with a number of
-sources of its own. Sources are designed so that creating new ones will
-be easy.
-
- For examples of Emms sources for files and directories see
-'emms-source-file.el'.
-
- -- User Option: emms-source-file-default-directory
- The default directory to look for media files.
- -- Function: emms-play-find
- Play all files in EMMS-SOURCE-FILE-DEFAULT-DIRECTORY that match a
- specific regular expression.
- -- Function: emms-source-file &optional file
- An Emms source for a single file - either FILE, or queried from the
- user.
- -- Function: emms-source-files files
- An Emms source for a list of FILES.
- -- Function: emms-source-directory &optional dir
- An Emms source for a whole directory tree - either DIR, or queried
- from the user
- -- Function: emms-source-directory-tree & optional dir
- An Emms source for multiple directory trees - either DIR, or the
- value of EMMS-SOURCE-FILE-DEFAULT-DIRECTORY.
- -- Function: emms-source-playlist file
- An Emms source for playlists. See EMMS-SOURCE-PLAYLIST-FORMATS for
- a list of supported formats.
- -- Function: emms-source-playlist-native file
- An Emms source for a native Emms playlist file.
- -- Function: emms-source-playlist-m3u file
- An Emms source for an m3u playlist file.
- -- Function: emms-source-playlist-pls file
- An Emms source for a pls playlist file.
- -- Function: emms-source-find &optional dir regex
- An Emms source that will find files in DIR or
- EMMS-SOURCE-FILE-DEFAULT-DIRECTORY that match REGEXP.
- -- Function: emms-source-file-directory-tree &optional dir
- Return a list of all files under DIR which match REGEX.
- -- Function: emms-source-dired
- Play all marked files of a dired buffer
- -- Function: emms-source-file-regex
- Return a regexp that matches everything any player (that supports
- files) can play.
- -- Function: emms-locate regexp
- Search for REGEXP and display the results in a locate buffer
-
-
-File: emms.info, Node: Simple Players, Next: Playlists, Prev: Sources, Up: Top
-
-11 Simple Players
-*****************
-
- -- Macro: define-emms-simple-player name types regex command &rest args
- Define a simple player. NAME is used to construct the name of the
- function like emms-player-NAME. TYPES is a list of track types
- understood by this player. REGEX must be a regexp that matches the
- filenames the player can play. COMMAND specifies the command line
- argument to call the player and ARGS are the command line
- arguments.
-
- For a discussion on how to define new players see *Note New Player::.
-
- -- Function: emms-player-simple-stop
- Stop the currently playing process, if indeed there is one.
- -- Function: emms-player-simple-start filename cmdname params
- Starts a process playing FILENAME using the specified CMDNAME with
- the specified PARAMS.
- -- Function: emms-player-simple-sentinel proc str
- Sentinel for determining the end of process for the process PROC
- and the sentinel string STR.
-
-
-File: emms.info, Node: Playlists, Next: Track Information, Prev: Simple Players, Up: Top
-
-12 Playlists
-************
-
-Emms uses Emacs buffers to store the media tracks for playing. We call
-one such buffer a "playlist buffer" or an "Emms playlist buffer". Emms
-then proceeds to play the media tracks in the buffer from top to bottom
-until the end of the playlist.
-
- The name of the playlist buffer is defined in the variable
-EMMS-PLAYLIST-BUFFER-NAME and is set to be an invisible Emacs buffer by
-default. You can change to any name you want. For an example
-configuration see *Note Configuration::.
-
- You can create any number of playlist buffers you wish. At any time
-Emms has a single "current" buffer through which it proceeds track by
-track.
-
- -- Function: emms-playlist-new &optional name
- Create a new playlist buffer. The buffer is named NAME, but made
- unique. NAME defaults to 'emms-playlist-buffer-name'. If called
- interactively, the new buffer is also selected.
-
- -- Function: emms-playlist-save &optional format file
- Store the current playlist to FILE as the type FORMAT. The default
- format is specified by EMMS-SOURCE-PLAYLIST-DEFAULT-FORMAT.
-
- The current Emms playlist buffer is stored in the variable
-EMMS-PLAYLIST-BUFFER.
-
-
-File: emms.info, Node: Track Information, Next: Interactive Playlists, Prev: Playlists, Up: Top
-
-13 Track Information
-********************
-
-By default Emms will only list tracks as file names or URLs in playlists
-(*note Playlists::) and the browser (*note The Browser::). However,
-Emms can be configured to utilize so-called "info methods" to augment
-tracks with metadata information, such as artist name, track name, album
-title, and the like. We describe these methods and their use in this
-chapter.
-
- Fundamentally, info methods are Emacs Lisp functions that are called
-for each track to provide information for that track. Current info
-methods in Emms are restricted to tracks that are files; they do not
-work with stream URLs (*note Streaming Audio::). Some of the methods
-require installation of some additional software that Emms can then call
-to read metadata from disk (*note Metadata Utilities::). Finally, some
-methods work only with a limited set of media file formats such as Ogg
-or MP3, while some methods support a wide variety of formats.
-
- If caching is enabled (it is by default) then the metadata for each
-track will be stored in the cache for faster retrieval. That means if
-you change info method and want updated tracks, you will have to reset
-the cache 'M-x emms-cache-reset' and then repopulate with 'M-x
-emms-add-directory-tree RET ~/Music/ RET' or similar.
-
- Automatic track information retrieval is enabled by default in the
-'emms-all' setup level (*note Setup::). That setup level configures
-Emms to use 'emms-info-native' and 'emms-info-cueinfo' methods, as they
-are the only methods that do not rely on additional software.
-
- Here is a list of all info methods distributed with Emms and their
-software requirements:
-
-'emms-info-native'
- This method is implemented completely in Emacs Lisp and hence does
- not require any external software. It supports Ogg Vorbis, Opus,
- FLAC and MP3 files.
-
-'emms-info-tinytag'
- This method utilizes a small Python library 'tinytag'. It supports
- MP3, Ogg Vorbis, Opus, MP4, M4A, FLAC, WMA and WAV formats.
-
-'emms-info-exiftool'
- This method calls 'exiftool' utility written in Perl. It supports
- dozens of media file formats, far too many to list here.
-
-'emms-info-libtag'
- This method calls a small "shim" executable 'emms-print-metadata'
- built around TagLib library. It supports MP3, Ogg Vorbis, Opus,
- FLAC, MPC, Speex, WavPack, TrueAudio, WAV, AIFF, MP4 and ASF
- formats.
-
-'emms-info-metaflac'
- This method calls 'metaflac' utility. It works only with FLAC
- files.
-
-'emms-info-mp3info'
- This method calls 'mp3info' utility. It works only with MP3 files
- that have older id3v1 tags.
-
-'emms-info-ogginfo'
- This method calls 'ogginfo' utility. It supports Ogg Vorbis and
- Theora formats.
-
-'emms-info-opusinfo'
- This method calls 'opusinfo' utility. It works only with Opus
- files.
-
-'emms-info-cueinfo'
- This is a special method that parses track information from an
- accompanying cue file for FLAC and APE files (*note APE / FLAC
- Commands::). It does not require any additional software.
-
- To use any of the methods, add the method to 'emms-info-functions'
-list. For example:
-
- (require 'emms-info-native)
- (add-to-list 'emms-info-functions 'emms-info-native)
-
-You can also use a combination of format-specific tools if needed:
-
- (require 'emms-info-mp3info)
- (require 'emms-info-ogginfo)
- (add-to-list 'emms-info-functions 'emms-info-mp3info 'emms-info-ogginfo)
-
-In this case both 'emms-info-mp3info' and 'emms-info-ogginfo' will be
-called for each track.
-
- There are a number of user variables which control the behavior of
-'emms-info':
-
- -- User Option: emms-info-auto-update
- Non-nil when Emms should update track information if the file
- changes. This will cause hard drive activity on track loading. If
- this is too annoying for you, set this variable to nil.
-
- -- User Option: emms-info-asynchronously
- Non-nil when track information should be loaded asynchronously.
- This requires the feature 'later-do' which is provided by the file
- 'later-do.el', which comes with Emms. See variable
- 'emms-later-do-batch' for performance tweaking.
-
- -- User Option: emms-info-functions
- A list of functions (info methods) which add information to tracks.
- Each function is called with a track as argument. If two info
- methods produce the same information (for example album name), the
- latter one takes precedence.
-
-* Menu:
-
-* Metadata Utilities:: Supported external metadata utilities.
-* Defining Info Methods:: How to define new info methods.
-
-
-File: emms.info, Node: Metadata Utilities, Next: Defining Info Methods, Up: Track Information
-
-13.1 Metadata Utilities
-=======================
-
-With the exception of 'emms-info-native' and 'emms-info-cueinfo', Emms
-info methods require external metadata utilities to read metadata from
-media files. If you plan to use a certain info method, make sure you
-have the corresponding utility installed. All of these utilities are
-free software, and most of them are included in free GNU/Linux
-distributions.
-
-tinytag
-.......
-
-tinytag is a Python library for reading metadata from music files. It
-is available at <https://pypi.org/project/tinytag/>. Naturally a
-working Python interpreter is also required. The corresponding Emms
-info method is 'emms-info-tinytag'.
-
- It is best to configure 'emms-info-tinytag' as the sole info method
-for Emms, because competing and overlapping methods can cause confusion.
-To use it, add the following into your Emacs initialization file:
-
- (require 'emms-info-tinytag)
- (setq emms-info-functions '(emms-info-tinytag))
-
-ExifTool
-........
-
-ExifTool is a platform-independent Perl library and a command-line
-application for reading, writing and editing meta information in a wide
-variety of files. It is available at <https://exiftool.org/>.
-Naturally a working Perl interpreter is also required. The
-corresponding Emms info method is 'emms-info-exiftool'.
-
- It is best to configure 'emms-info-exiftool' as the sole info method
-for Emms, because competing and overlapping methods can cause confusion.
-To use it, add the following into your Emacs initialization file:
-
- (require 'emms-info-exiftool)
- (setq emms-info-functions '(emms-info-exiftool))
-
-TagLib
-......
-
-TagLib is a library for reading and editing metadata of several popular
-audio formats. It is available at <http://taglib.github.io/>. Because
-TagLib is a C++ library instead of an executable program, you have to
-build and install a small "shim" executable 'emms-print-metadata' around
-it. 'emms-info-libtag' will then call this executable to read metadata
-from media files.
-
- To compile 'emms-print-metadata' invoke
-
- 'make emms-print-metadata'
-
-in Emms directory. For this to succeed you need to have a working C++
-compiler and TagLib development libraries installed on your system. The
-resultant binary executable will be installed when you invoke
-
- 'make install' as in *Note Compiling Emms::.
-
-It is of course also possible to install only the 'emms-print-metadata'
-binary where your system can find and execute it without installing all
-of Emms via the make command.
-
- Once 'emms-print-metadata' is available, it is best to configure
-'emms-info-libtag' as the sole info method for Emms, because competing
-and overlapping methods can cause confusion. To use it, add the
-following into your Emacs initialization file:
-
- (require 'emms-info-libtag)
- (setq emms-info-functions '(emms-info-libtag))
-
-metaflac
-........
-
-'metaflac' is the command-line FLAC file metadata editor. It is
-included in FLAC source distribution available at
-<https://github.com/xiph/flac>. The corresponding info method is
-'emms-info-metaflac'. To use it, add the following into your Emacs
-initialization file:
-
- (require 'emms-info-metaflac)
- (add-to-list 'emms-info-functions 'emms-info-libtag)
-
-MP3info
-.......
-
-MP3info is a small utility for reading and modifying id3v1 tags from MP3
-files. Note that more recent id3v2 tags are not supported; for those
-you need to use another info method, for example 'emms-info-native'.
-MP3info is available at <https://ibiblio.org/mp3info/>.
-
- The corresponding info method is 'emms-info-mp3info'. To use it, add
-the following into your Emacs initialization file:
-
- (require 'emms-info-mp3info)
- (add-to-list 'emms-info-functions 'emms-info-mp3info)
-
-ogginfo
-.......
-
-'ogginfo' is a small utility for extracting information about Ogg Vorbis
-and Theora files. It is part of Vorbis Tools source distribution
-available at <https://github.com/xiph/vorbis-tools>. The corresponding
-info method is 'emms-info-ogginfo'. To use it, add the following into
-your Emacs initialization file:
-
- (require 'emms-info-ogginfo)
- (add-to-list 'emms-info-functions 'emms-info-ogginfo)
-
-opusinfo
-........
-
-'opusinfo' is a small utility for extracting information about Opus
-files. It is part of Opus Tools source distribution available at
-<https://github.com/xiph/opus-tools>. The corresponding info method is
-'emms-info-opusinfo'. To use it, add the following into your Emacs
-initialization file:
-
- (require 'emms-info-opusinfo)
- (add-to-list 'emms-info-functions 'emms-info-opusinfo)
-
-
-File: emms.info, Node: Defining Info Methods, Prev: Metadata Utilities, Up: Track Information
-
-13.2 Defining Info Methods
-==========================
-
-An info method essentially consists of a function which, given an Emms
-track, sets the appropriate "info-symbols" for that track. Info symbols
-are keys that have an associated value stored in the "metadata cache".
-While info symbols can have arbitrary names, the following symbols are
-recognized by Emms:
-
-'info-album'
- Album title.
-
-'info-albumsort'
- Album title for collation.
-
-'info-artist'
- Artist name.
-
-'info-artistsort'
- Artist name for collation.
-
-'info-albumartist'
- Album artist name.
-
-'info-albumartistsort'
- Album artist name for collation.
-
-'info-composer'
- Composer name.
-
-'info-composersort'
- Composer name for collation.
-
-'info-date'
- Release date.
-
-'info-originaldate'
- Original release date.
-
-'info-performer'
- Performer name.
-
-'info-title'
- Track title.
-
-'info-titlesort'
- Track title for collation.
-
-'info-tracknumber'
- Track number.
-
-'info-discnumber'
- Disc number.
-
-'info-year'
- Release year.
-
-'info-originalyear'
- Original release year.
-
-'info-note'
- Free-form note.
-
-'info-genre'
- Genre.
-
-'info-label'
- Record label.
-
-'info-playing-time'
- Playing time in seconds.
-
-An info method does not need to add all of these symbols into the given
-track. It can also add other symbols, but those extra symbols won't be
-used by Emms.
-
- We can for example look at the predefined method for retrieving
-information about audio tracks in the Ogg format. The function
-'emms-info-ogginfo' provided by 'emms-info-ogginfo.el' accepts an Emms
-track TRACK as a single argument. It uses 'ogginfo' utility to extract
-a list of key-value metadata pairs from the file represented by TRACK.
-Next, it sets the appropriate info symbols for TRACK by calling
-'emms-track-set'. Info symbols are interned from the extracted keys.
-Those keys can be arbitrary strings, but they typically coincide with
-the keys listed above; for example "album" and "artist" form info
-symbols 'info-album' and 'info-artist'.
-
-
-File: emms.info, Node: Interactive Playlists, Next: Markable Playlists, Prev: Track Information, Up: Top
-
-14 Interactive Playlists
-************************
-
-Emms provides a visual, interactive playlist mode as well as the ability
-to use playlists without ever looking at then. This visual, interactive
-mode is called the 'emms-playlist-mode' and is defined in
-'emms-playlist-mode.el'.
-
- The interactive playlist mode is enabled by default in the 'emms-all'
-setup level. For more information about Emms setup levels see *Note
-Setup::.
-
- -- Function: emms-playlist-mode-go
- Switch to the current emms-playlist buffer and use
- emms-playlist-mode.
-
- If you wish to make this the default Emms playlist mode, add the
-following to your '.emacs'.
-
- (setq emms-playlist-default-major-mode 'emms-playlist-mode)
-
- The interactive playlist buffer shows the tracks in the current Emms
-playlist in the order in which they will be played. The current track
-will be highlighted.
-
- When in the interactive playlist mode we can perform different
-actions on the current playlist.
-
-'a'
- Add files in the playlist at point to the current playlist buffer.
- If we are in the current playlist, make a new playlist buffer and
- set it as current.
-'b'
- Set the current playlist buffer.
-'n'
- Start playing the next track in the playlist.
-'p'
- Start playing the previous track in the playlist.
-'s'
- Stop playing.
-'P'
- Pause.
-'>'
- Seek ten seconds forward.
-'<'
- Seek ten seconds backward.
-'f'
- Describe the currently playing track in the minibuffer.
-'c'
- Display the current track in the center of the screen.
-'RET'
- Start playing the track under point. Note that this is also
- available with '<mouse-2>'.
-'SPC'
- Scroll up a near full page.
-'M-<'
- Go to the first track in the playlist.
-'M->'
- Go to the last track in the playlist.
-'r'
- Go to a randomly selected track in the playlist.
-'q'
- Put the interactive playlist buffer at the end of the list of all
- buffers.
-'C-x C-s'
- Save the current playlist buffer to a file. By default, Emms will
- ask you for confirmation before overwriting an existing playlist.
- You can silently overwrite existing playlist by setting
- EMMS-SOURCE-PLAYLIST-ASK-BEFORE-OVERWRITE to nil.
-'?'
- Describe the mode.
-
- We can also edit the playlist using familiar GNU/Emacs commands:
-
-'C-k'
- Remove the track under point from the playlist buffer. Also
- available using the 'd' key.
-'C-y'
- See the command 'yank'
-'C-w'
- See the command 'kill-region'
-'M-y'
- See the command 'yank-pop'.
-'C-j'
- Insert a newline at point.
-
- We can use the regular GNU/Emacs killing and yanking commands to move
-and copy tracks in between playlist buffers. We can use the same
-commands to insert arbitrary text into the playlist buffers together
-with the playlist tracks. Text which is not a track is ignored by the
-program and can therefore be used to include titles and annotations
-within the playlist.
-
-
-File: emms.info, Node: Markable Playlists, Next: Extending Emms, Prev: Interactive Playlists, Up: Top
-
-15 Markable Playlists
-*********************
-
-The Markable Playlists provided by the file 'emms-mark.el' are an
-alternative to the default interactive playlists, *Note Interactive
-Playlists::. They allow marking tracks with keybindings familiar to
-users of dired.
-
- To enable the Markable Playlists you have to add
-
- (require 'emms-mark)
-
- to your '.emacs'. Then you can activate 'emms-mark-mode' by
-executing 'M-x emms-mark-mode' in a playlist buffer. You can return to
-the default interactive playlist mode with 'M-x emms-mark-mode-disable'.
-
- If you wish to make this the default Emms playlist mode, add the
-following to your '.emacs'.
-
- (setq emms-playlist-default-major-mode 'emms-mark-mode)
-
-'m'
- Marks the current track and sets point one line forward. If a
- prefix argument ARG is given, it will mark the next ARG tracks and
- set point accordingly. A negative argument marks backward.
-'U'
- Unmarks all tracks in the playlist.
-'t'
- Toggles mark on the current track.
-'u'
- Unmarks same way as 'emms-mark-forward' marks.
-'% m'
- Marks all tracks in the playlist matching the given regular
- expression. A prefix argument means to unmark them instead.
-
- When tracks are marked you can operate on them:
-
-'D'
- Deletes the marked tracks from the playlist.
-'K'
- Deletes the marked tracks from the playlist and places them in the
- kill-ring, so that you can 'yank' in into another playlist.
-'W'
- Adds the marked tracks to the kill-ring, so that you can 'yank'
- them into another playlist.
-
- emms-mark is also intent to provide a way for user to select tracks
-for other command to operate on them. Currently, 'emms-tag-editor.el'
-uses the emms-mark to edit the tags of selected tracks. Two functions
-are useful for the elisp programer to handle marked tracks.
-
- -- Function: emms-mark-do-with-marked-track
- This function take a function to perform on all marked tracks. A
- optional argument 'move-flag' to tell the function to move forward
- line after calling given function. If the given function didn't
- change position, the second argument should set to non-nil.
-
- -- Function: emms-mark-mapcar-marked-track
- This function is very similar to 'emms-mark-do-with-marked-track'
- except it collects result of given function (that's why named with
- 'mapcar').
-
-
-File: emms.info, Node: Extending Emms, Next: The Browser, Prev: Markable Playlists, Up: Top
-
-16 Extending Emms
-*****************
-
-Emms introduces a high abstraction layer for playing music so you can
-customise it to your needs.
-
-* Menu:
-
-* New Player:: How to define a new player.
-* Simple Player for `play':: An example player using 'play'.
-* More Complex Player:: Example of a complex player using 'mpg321'.
-
-
-File: emms.info, Node: New Player, Next: Simple Player for `play', Up: Extending Emms
-
-16.1 New Player
-===============
-
-The file 'emms-player-simple.el' defines some easy players to start
-with, but it shouldn't be hard to provide a function for your favourite
-player. We will start with an easy example that shows how we can use
-the 'play' command under Unix to play our WAV files.
-
-
-File: emms.info, Node: Simple Player for `play', Next: More Complex Player, Prev: New Player, Up: Extending Emms
-
-16.2 Simple Player for 'play'
-=============================
-
-Play is a very easy command line player for various format. If you want
-your emms to play WAV files just put the following lines in you
-'.emacs':
-
- (require 'emms-player-simple)
- (define-emms-simple-player play '(file) "\\.wav$" "play")
-
- Huh! Wasn't that easy?
-
- The macro function 'define-emms-simple-player' takes a minimum of
-three arguments. The first argument (_play_ in our example) defines the
-name of the player. It's used to name the player functions. The second
-is a regexp, that defines which files to play with our player.
-_\\.wav$_ matches any filename ending with a dot and the string wav.
-The last argument is the actual command line command we use to play our
-files. You can also add the path but we just assume that the command is
-in your path. All arguments you add to these three are optional. They
-define the command line arguments you want to add to your argument. If
-you want to hear the wav file of your favourite artist in the most
-possible volume use the following line:
-
- (require 'emms-player-simple)
-
- (define-emms-simple-player play
- '(file)
- "\\artist-*.wav$"
- "play"
- "--volume=100")
-
- Please notice that you have to add the arguments as strings!
-
- The command line tool you use for 'define-emms-simple-player' has to
-take one song as argument and stop after playing that particular song.
-For any other concept you will need to customise emms a bit more...
-
-
-File: emms.info, Node: More Complex Player, Prev: Simple Player for `play', Up: Extending Emms
-
-16.3 More Complex Player
-========================
-
-The most players you use will be simple players so you don't need to
-read this chapter. But if you are curious how you can use (almost)
-every player in emms read further...
-
- In this chapter we will use mpg321 to construct a player that
-actually can pause a track, restart it and show rest time. We won't
-implement all of that, but after that chapter you will know how to
-define it.
-
- The command 'define-emms-simple-player' is just a abstraction layer
-for 'define-emms-player', which is a little bit more complicated but
-much more powerful!
-
- (define-emms-player "emms-mpg321-remote"
- :start 'emms-mpg321-remote-start
- :stop 'emms-mpg321-remote-stop
- :playablep 'emms-mpg321-remote-playable-p)
-
- So, that is almost all! 'define-emms-player' takes a minimum of
-three arguments. The first is the name of the player. The rest are
-methods with functions to call. Three methods are required: start, stop
-and playable. Start says Emms how to start a track (sic!), stop how to
-stop a player and playablep should return non-nil if the player can play
-the track.
-
- So we just need these three functions to get our mpg321-remote:
-
- First we code the start function. We will check if there's a open
-process and start one otherwise. Then we send a string to the process
-with the filename and set a filter.
-
- (defun emms-mpg321-remote-start ()
- (unless (get-process ``mpg321-remote'')
- (setq emms-mpg321-remote-process
- (start-process "mpg321-remote-process"
- "*mpg321*" "mpg321" "-R" "abc"))
- (process-send-string "mpg321-remote-process"
- (concat "l " (emms-track-name track)))
- (set-process-filter emms-mpg321-remote-process 'emms-mpg321-remote-filter)))
-
- We need the filter, as mpg321-remote won't quit after playing the
-track as the simple player do. We wait until the process sends the
-output "(at-sign)P 0" (the signal of mpg321 that the song ended) to the
-filter and call emms-mpg321-remote-stop.
-
- (defun emms-mpg321-remote-filter (process output)
- (when (string-match "(at-sign)P 0" output)
- (emms-mpg321-remote-stop)))
-
- 'emms-mpg321-remote-stop' won't do anything interesting. It just
-test if there are other files to play and close the process otherwise.
-
- (defun emms-mpg321-remote-stop ()
- (unless emms-playlist
- (process-send-string "mpg321-remote-process" "Q\n"))
-
- And to make that a playable example I also added
-'emms-mpg321-remote-playablep', which I really just steal from
-'emms-player-simple.el'
-
- (defun emms-mpg321-remote-playablep (track)
- "Return non-nil when we can play this track."
- (and (eq 'file (emms-track-type track))
-
- Now we have a ready player and we could add commands like
-'emms-mpg321-remote-pause' for example.
-
-
-File: emms.info, Node: The Browser, Next: Sorting Playlists, Prev: Extending Emms, Up: Top
-
-17 The Browser
-**************
-
-The Browser allows you to browse the metadata cache and add tracks to
-your playlist. It includes a powerful interactive mode.
-
- The Browser is defined in 'emms-browser.el' and is included in the
-'emms-all' setup level. For more information about Emms setup levels
-see *Note Setup::.
-
- You can also manually add the Browser to your Emms setup by loading
-it explicitly with:
-
- (require 'emms-browser)
-
- To be properly useful, you should do M-x 'emms-add-directory-tree' to
-all the files you own at least once so that the cache is fully
-populated.
-
-* Menu:
-
-* Browser Interface:: The interactive browser interface.
-* Filtering Tracks:: Displaying a subset of the tracks.
-* Displaying Covers:: Displaying album covers in the browser interface.
-* Changing Looks:: Changing the tree structure, display format and faces.
-
-
-File: emms.info, Node: Browser Interface, Next: Filtering Tracks, Up: The Browser
-
-17.1 Browser Interface
-======================
-
-The browser interface allows you to display and interact with your
-tracks in many different ways. There are a number of ways to start the
-browser.
-
- -- Function: emms-smart-browse
- Display browser and playlist. Toggle between selecting browser,
- playlist or hiding both. Tries to behave sanely if the user has
- manually changed the window configuration.
-
- -- Function: emms-browse-by-artist
- Display the browser and order the tracks by artist.
-
- -- Function: emms-browse-by-album
- Display the browser and order the tracks by album.
-
- -- Function: emms-browse-by-genre
- Display the browser and order the tracks by genre.
-
- -- Function: emms-browse-by-year
- Display the browser and order the tracks by year.
-
- Once the Browser is displayed you can use it to managed your track
-collection and playlists. The Browser is interactive and has its own
-keybindings.
-
-'C-j'
- Add all tracks at point, and play the first added track.
-
-'RET'
- Add all tracks at point.
-
-'SPC'
- Show or hide (kill) subitems under the current line.
-
-'1'
- Collapse everything.
-
-'2'
- Expand all top level items one level.
-
-'3'
- Expand all top level items two levels.
-
-'4'
- Expand all top level items three levels.
-
-'C'
- Clear the playlist.
-
-'E'
- Expand everything.
-
-'d'
- View the current directory in dired.
-
-'q'
- Bury the browser buffer.
-
-'r'
- Jump to a random track.
-
-'/'
- Isearch through the buffer.
-
-'<'
- Redisplay with the previous filter.
-
-'>'
- Redisplay with the next filter.
-
-'?'
- See the Emacs documentation for the function.
-
-'C-/'
- Undo the previous playlist action.
-
-'<C-return>'
- Add all tracks at point, and play the first added track.
-
-'<backtab>'
- Jump to the previous non-track element.
-
-'<tab>'
- Jump to the next non-track element.
-
-'s A'
- Search the collection by album.
-
-'s a'
- Search the collection by artist.
-
-'s s'
- Search the collection by names.
-
-'s t'
- Search the collection by title.
-
-'b 1'
- Browse the collection by artist.
-
-'b 2'
- Browse the collection by album.
-
-'b 3'
- Browse the collection by genre.
-
-'b 4'
- Browse the collection by year.
-
-'W a p'
- Lookup the album using Pitchfork.
-
-'W a w'
- Lookup the album using Wikipedia.
-
-
-File: emms.info, Node: Filtering Tracks, Next: Displaying Covers, Prev: Browser Interface, Up: The Browser
-
-17.2 Filtering Tracks
-=====================
-
-If you want to display a subset of your collection (such as a directory
-of 80s music, only avi files, etc.) then you can extend the Browser by
-defining "filters".
-
- Show everything:
-
- (emms-browser-make-filter "all" 'ignore)
-
- Set "all" as the default filter:
-
- (emms-browser-set-filter (assoc "all" emms-browser-filters))
-
- Show all files (no streamlists, etc):
-
- (emms-browser-make-filter
- "all-files" (emms-browser-filter-only-type 'file))
-
- Show only tracks in one folder:
-
- (emms-browser-make-filter
- "80s" (emms-browser-filter-only-dir "~/Mp3s/80s"))
-
- Show all tracks played in the last month:
-
- (emms-browser-make-filter
- "last-month" (emms-browser-filter-only-recent 30))
-
- After executing the above commands, you can use M-x
-emms-browser-show-all, emms-browser-show-80s, etc to toggle between
-different collections. Alternatively you can use '<' and '>' to cycle
-through the available filters.
-
- The second argument to make-filter is a function which returns t if a
-single track should be filtered. You can write your own filter
-functions to check the type of a file, etc.
-
- Show only tracks not played in the last year:
-
- (emms-browser-make-filter "not-played"
- (lambda (track)
- (not (funcall (emms-browser-filter-only-recent 365) track))))
-
- Show all files that are not in the pending directory:
-
- (emms-browser-make-filter
- "all"
- (lambda (track)
- (or
- (funcall (emms-browser-filter-only-type 'file) track)
- (not (funcall
- (emms-browser-filter-only-dir "~/Media/pending") track)))))
-
-
-File: emms.info, Node: Displaying Covers, Next: Changing Looks, Prev: Filtering Tracks, Up: The Browser
-
-17.3 Displaying Covers
-======================
-
-The browser will attempt to display cover images if they're available.
-
- Customize EMMS-BROWSER-COVERS to configure how EMMS should retrieve
-the covers.
-
- By default it looks for images 'cover_small.jpg', 'cover_med.jpg',
-etc. Note that you'll probably want to resize your existing covers to
-particular sizes. Suggested sizes are 100x100 for small, and 200x200
-for medium.
-
- The above behaviour demands manual processing on behalf of the user.
-Instead, you might prefer to automate the process by setting
-EMMS-BROWSER-COVERS to 'emms-browser-cache-thumbnail': covers matching
-'emms-browser-thumbnail-filter' will be automatically resized if
-necessary and cached to EMMS-BROWSER-THUMBNAIL-DIRECTORY. The cache
-gets automatically updated upon change in the source folder.
-
- Customize EMMS-BROWSER-COVERS-FILE-EXTENSIONS to include or exclude
-specific extensions.
-
- 'emms-browser-cache-thumbnail' might be everytime a cover is queried,
-so to help with performance you can also set EMMS-BROWSER-COVERS to
-'emms-browser-cache-thumbnail-async'. The latter is like the former
-except that it caches queries: every subsequent query will be much
-faster. The drawback is that it won't see changes made to covers after
-the first query. To force-refresh the thumbnail cache, you can run
-'emms-browser-clear-cache-hash'.
-
- Also, Emacs by default will jump around a lot when scrolling a buffer
-with images. In order to prevent that, you can set
-SCROLL-UP-AGGRESSIVELY and SCROLL-DOWN-AGGRESSIVELY to the number "0.0".
-
- To show a 'no cover' image for albums which don't have a cover, add
-the following code to your .emacs:
-
- (setq emms-browser-default-covers
- (list "/path/to/cover_small.jpg" nil nil)
-
- The medium and large images can be set as well.
-
- You can download an example 'no cover' image
-(http://repose.cx/cover_small.jpg).
-
-
-File: emms.info, Node: Changing Looks, Prev: Displaying Covers, Up: The Browser
-
-17.4 Changing Looks
-===================
-
-The Browser's look can be customised. You can change the way the tree
-structure looks, the display format and display faces.
-
-Changing Tree Structure
------------------------
-
-You can change the way the tree is displayed by modifying the function
-'emms-browser-next-mapping-type'.
-
- The following code displays artist->track instead of
-artist->album->track when you switch to the 'singles' filter:
-
- (defadvice emms-browser-next-mapping-type
- (after no-album (current-mapping))
- (when (eq ad-return-value 'info-album)
- (setq ad-return-value 'info-title)))
-
- (defun toggle-album-display ()
- (if (string= emms-browser-current-filter-name "singles")
- (ad-activate 'emms-browser-next-mapping-type)
- (ad-deactivate 'emms-browser-next-mapping-type)))
-
- (add-hook 'emms-browser-filter-changed-hook 'toggle-album-display)
-
- Furthermore, you can customize EMMS-BROWSER-GET-TRACK-FIELD-FUNCTION
-to choose which the metadata fields used for the different tree nodes
-(''info-artist', 'info-year', etc.). For instance, you can choose
-whether to organize the tree by artist, album artist or performer.
-
-Changing Display Format
------------------------
-
-Format strings govern the way items are displayed in the browser and
-playlist. You can customize these if you wish.
-
- EMMS-BROWSER-DEFAULT-FORMAT controls the format to use when no other
-format has been explicitly defined. By default, only track and albums
-deviate from the default.
-
- To customise the format of a particular type, find the name of the
-field you want to use (eg 'info-artist', 'info-title', etc), and insert
-that into emms-browser-<type>-format or
-emms-browser-playlist-<type>-format. For example, if you wanted to
-remove track numbers from tracks in both the browser and playlist, you
-could do:
-
- (defvar emms-browser-info-title-format "%i%n")
- (defvar emms-browser-playlist-info-title-format
- emms-browser-info-title-format)
-
- The format specifiers available include:
-
- %i indent relative to the current level
- %n the value of the item - eg -info-artist might be "pink floyd"
- %y the album year
- %A the album name
- %a the artist name of the track
- %t the title of the track
- %T the track number
- %cS a small album cover
- %cM a medium album cover
- %cL a big album cover
-
- Note that if you use track-related items like %t, it will take the
-data from the first track.
-
-Changing Display Faces
-----------------------
-
-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'.
-
-
-File: emms.info, Node: Sorting Playlists, Next: Persistent Playlists, Prev: The Browser, Up: Top
-
-18 Sorting Playlists
-********************
-
-The 'emms-playlist-sort' module, defined in the 'emms-playlist-sort.el'
-package provides functions for sorting Emms playlists, as well as
-keyboard shortcuts for invoking the functions in the playlist buffer.
-Most of the functions will sort in reverse order if the command is
-preceded by a prefix. 'emms-playlist-sort' can be loaded by invoking:
-
- (require 'emms-playlist-sort)
-
- -- Function: emms-playlist-sort-by-info-artist
- Sort by artist name.
-
- -- Function: emms-playlist-sort-by-play-count
- Sort by number of times the track has been played.
-
- -- Function: emms-playlist-sort-by-info-album
- Sort by album name.
-
- -- Function: emms-playlist-sort-by-last-played
- Sort by time the track was played last.
-
- -- Function: emms-playlist-sort-by-info-title
- Sort by track title.
-
- -- Function: emms-playlist-sort-by-file-extension
- Sort by filename extension.
-
- -- Function: emms-playlist-sort-by-info-performer
- Sort by performer name.
-
- -- Function: emms-playlist-sort-by-info-year
- Sort by year.
-
- -- Function: emms-playlist-sort-by-info-note
- Sort by track notes.
-
- -- Function: emms-playlist-sort-by-info-composer
- Sort by composer.
-
- -- Function: emms-playlist-sort-by-name
- Sort by track name.
-
- -- Function: emms-playlist-sort-by-file-mtime
- Sort by file mtime.
-
-
-File: emms.info, Node: Persistent Playlists, Next: Editing Tracks, Prev: Sorting Playlists, Up: Top
-
-19 Persistent Playlists
-***********************
-
-The Emms module 'emms-history.el' makes playlists persistent over emacs
-sessions. To make use of this feature put this into your ~/.emacs.
-
- (require 'emms-history)
-
- When you kill emacs all playlists will be saved in the file given by
-the variable:
-
- -- User Option: emms-history-file
- The file to save playlists in. It defaults to
- "~/.emacs.d/emms-history".
-
- After you started up emacs again, you can restore all saved playlists
-with this function.
-
- -- Function: emms-history-load
- Restore all playlists in 'emms-history-file'.
-
- If that should be done automatically on each startup, put these lines
-into your ~/.emacs.
-
- (require 'emms-history)
- (emms-history-load)
-
- Normally 'emms-history' only restores playlists. If you want it to
-start playback afterwards, you can tweak this variable.
-
- -- User Option: emms-history-start-playing
- If non-nil emms starts playing the current track after
- 'emms-history-load' was invoked. The default value is nil.
-
-
-File: emms.info, Node: Editing Tracks, Next: Emms Mode Line, Prev: Persistent Playlists, Up: Top
-
-20 Editing Tracks
-*****************
-
-Using 'emms-tag-editor.el', emms can set tag informations of tracks and
-write them back to the file with the help of external programs, such as
-'mid3v2' and 'vorbiscomment'.
-
- Use the keybinding 'E' to edit the tags of track under point in the
-playlist or all marked tracks (*note Markable Playlists:: for how to
-mark tracks). The track's tag informations are listed in a special
-buffer '*Emms-TAGS*' in text format. Field names are marked in bold
-face and are not editable. Any tag information is placed behind an
-equal sign and is changable. A special field 'name' is the track's file
-name. If any change is made in this field, the track's file will be
-renamed to the new name. When you finished editing the tag infos use
-'C-c C-c' (which calls 'emms-tag-editor-submit-and-exit') to submit the
-changes and close the '*Emms-TAGS*' buffer.
-
- There are a few commands to perform changes on all tracks.
-
- -- Function: emms-tag-editor-set-all tag value
- Set TAG to VALUE in all tracks.
-
- If transient-mark-mode is turned on, you can apply the command to a
- selected region.
-
- If 'transient-mark-mode' is on and the mark is active, the changes
- will only take effect on the tracks in the region.
-
- -- Function: emms-tag-editor-replace-in-tag tag from to
- Query and replace text in selected TAG.
-
- For example, if the info-title tag is selected, then only perform
- replacement in title tags.
-
- If 'transient-mark-mode' is on and the mark is active, the changes
- will only take effect on the tracks in the region.
-
- -- Function: emms-tag-editor-transpose-tag tag1 tag2
- Transpose value of TAG1 and TAG2.
-
- If 'transient-mark-mode' is on and the mark is active, the changes
- will only take effect on the tracks in the region.
-
- -- Function: emms-tag-editor-submit arg
- Make modified tags take affect.
-
- With prefix argument, bury the tag edit buffer.
-
- If you want to extend the tag editor to work with file formats other
-than 'mp3' and 'ogg', have a look at these variables.
-
- -- Variable: emms-tag-editor-formats
- This variable determine how to insert track fields to
- 'emms-tag-editor-edit-buffer'. Emms tag info editable fields is
- usually determined by the extension of track name. The variable
- 'emms-tag-editor-tags' contains all tags that emms track may have.
- A single charactar is assigned to the tag to make the
- 'emms-tag-editor-formats' easier to generate.
-
- -- Variable: emms-tag-editor-tagfile-functions
- To write tags to track file, an extern program should specified in
- this variable.
-
-Renaming Files
-==============
-
-The tag editor is also capable to rename the file of the track at point
-or all files of the marked tracks according to the value this variable.
-
- -- User Option: emms-tag-editor-rename-format
- When 'emms-tag-editor-rename' is invoked the track's file will be
- renamed according this format specification. The file extension
- will be added automatically.
-
- It uses the format specs defined in 'emms-tag-editor-tags'.
-
- The default value is "%a - %l - %n - %t", so that files are named
-
- <Artist> - <Album> - <Tracknumber> - <Title>.<extension>
-
- after renaming.
-
- To perform the renaming put point on the track you want to rename or
-mark some tracks. Then hit 'R' which calls this function:
-
- -- Function: emms-tag-editor-rename
- Rename the file corresponding to track at point or all marked
- tracks according to the value of 'emms-tag-editor-rename-format'.
-
-
-File: emms.info, Node: Emms Mode Line, Next: Limiting, Prev: Editing Tracks, Up: Top
-
-21 Emms Mode Line
-*****************
-
-We can display information about the currenty playing track on the Emacs
-mode line using the package 'emms-mode-line' which is provided by the
-file 'emms-mode-line.el'.
-
- To activate this feature invoke:
-
- (require 'emms-mode-line)
- (emms-mode-line 1)
-
- It is also possible to display the amount of time a track has been
-playing. This feature is defined in the 'emms-playing-time' package
-which is provided by the file 'emms-playing-time.el'.
-
- To use this feature invoke:
-
- (require 'emms-playing-time)
- (emms-playing-time 1)
-
- A graphical icon can be displayed in the modeline when Emms is
-playing. This feature is provided by 'emms-mode-line-icon.el'. To
-enable invoke the following and make sure that
-EMMS-MODE-LINE-ICON-ENABLED-P is set to a non-nil value:
-
- (require emms-mode-line-icon)
-
- Note: '(emms-playing-time -1)' will disable emms-playing-time module
-completely, and is not recommended. (since some other emms modules may
-rely on it)
-
- Instead, to toggle displaying playing time on mode line, one could
-call 'emms-playing-time-enable-display' and
-'emms-playing-time-disable-display'."
-
- -- Function: emms-playing-time-enable-display
- Display playing time on mode line.
-
- -- Function: emms-playing-time-disable-display
- Remove playing time from mode line.
-
-
-File: emms.info, Node: Limiting, Next: Music Player Daemon, Prev: Emms Mode Line, Up: Top
-
-22 Limiting
-***********
-
-The package 'emms-playlist-limit', provided by 'emms-playlist-limit.el',
-allows creating a new playlist derived from the playlist in the current
-buffer. For instance, it is possible to create a new playlist
-containing only a certain artist or genre from the playlist in the
-current buffer.
-
- If the playlist in the current buffer is the emms current playlist
-then the derived playlist becomes current.
-
-'/ a'
- Create a new playlist buffer and populate it with tracks whose
- artist info field matches the given regular expression (default:
- the artist info field of the track at point).
-
-'/ b'
- Create a new playlist buffer and populate it with tracks whose
- album info field matches the given regular expression (default: the
- album info field of the track at point).
-
-'/ c'
- Create a new playlist buffer and populate it with tracks whose
- composer info field matches the given regular expression (default:
- the composer info field of the track at point).
-
-'/ d'
- Create a new playlist buffer and populate it with tracks whose
- track description matches the given regular expression (default:
- the track description of the track at point).
-
-'/ g'
- Create a new playlist buffer and populate it with tracks whose
- genre info field matches the given regular expression (default: the
- genre info field of the track at point).
-
-'/ n'
- Create a new playlist buffer and populate it with tracks whose name
- matches the given regular expression (default: the name of the
- track at point).
-
-'/ p'
- Create a new playlist buffer and populate it with tracks whose
- performer info field matches the given regular expression (default:
- the performer info field of the track at point).
-
-'/ t'
- Create a new playlist buffer and populate it with tracks whose
- title info field matches the given regular expression (default: the
- title info field of the track at point).
-
-'/ y'
- Create a new playlist buffer and populate it with tracks whose year
- info field matches the given regular expression (default: the year
- info field of the track at point).
-
-'/ /'
- Switch to the original playlist buffer (if it still exists).
-
-
-File: emms.info, Node: Music Player Daemon, Next: Lyrics, Prev: Limiting, Up: Top
-
-23 Music Player Daemon
-**********************
-
-Emms provides an interface to the Music Player Daemon
-(http://www.musicpd.org/)(MusicPD) software. The package is called
-'emms-player-mpd' and is provided by the file 'emms-player-mpd.el'.
-
- The advantages of using MusicPD as an Emms backend include the
-following.
-
- * minimal CPU usage
- * fast access of track information
- * optional crossfade
-
-Setup
------
-
-To load 'emms-player-mpd' invoke:
-
- (require 'emms-player-mpd)
-
- Set the variables EMMS-PLAYER-MPD-SERVER-NAME and
-EMMS-PLAYER-MPD-SERVER-PORT to the location and port (respectively) of
-your MusicPD server. For example:
-
- (setq emms-player-mpd-server-name "localhost")
- (setq emms-player-mpd-server-port "6600")
-
- If your MusicPD setup requires a password, you will to set
-EMMS-PLAYER-MPD-SERVER-PASSWORD as follows.
-
- (setq emms-player-mpd-server-password "mypassword")
-
- To get track information from MusicPD, invoke the following:
-
- (add-to-list 'emms-info-functions 'emms-info-mpd)
-
- Adding 'emms-player-mpd' to your Emms player list is accomplished by
-invoking:
-
- (add-to-list 'emms-player-list 'emms-player-mpd)
-
- Unless your MusicPD is configured to use absolute file names, you
-must set the emms-player-mpd-music-directory variable to the value of
-'music_directory' in your MusicPD configuration. There are additional
-options available as well, but the defaults should be sufficient for
-most uses.
-
- Once you've done the above, run the 'M-x emms-cache-set-from-mpd-all'
-command to fill the Emms cache with the contents of your MusicPD
-database. The music in your MusicPD database should then be accessible
-via the Emms browser.
-
- You can set EMMS-PLAYER-MPD-SYNC-PLAYLIST to nil if your master Emms
-playlist contains only stored playlists.
-
-Commands provided
------------------
-
- -- Function: emms-player-mpd-connect
- Connect to MusicPD and retrieve its current playlist. Afterward,
- the status of MusicPD will be tracked.
-
- -- Function: emms-player-mpd-disconnect
- Terminate the MusicPD client process and disconnect from MusicPD.
-
- -- Function: emms-player-mpd-show &optional insertp
- Describe the current Emms track in the minibuffer. If INSERTP is
- non-nil, insert the description into the current buffer instead.
- This function uses EMMS-SHOW-FORMAT to format the current track.
- It differs from 'emms-show' in that it asks MusicPD for the current
- track, rather than Emms.
-
-Updating the MusicPD database
-.............................
-
- -- Function: emms-player-mpd-update-directory dir
- Cause the tracks in DIR to be updated in the MusicPD database.
-
- -- Function: emms-player-mpd-update-all
- Cause all tracks in the MusicPD music directory to be updated in
- the MusicPD database.
-
-emms-cache.el integration
-.........................
-
- -- Function: emms-cache-set-from-mpd-directory dir
- Dump all MusicPD data from DIR into the Emms cache. This is useful
- to do when you have recently acquired new music.
-
- -- Function: emms-cache-set-from-mpd-all
- Dump all MusicPD data into the Emms cache. This is useful to do
- once, just before using emms-browser.el, in order to prime the
- cache.
-
-emms-volume.el integration
-..........................
-
-To activate this, add the following to your .emacs.
-
- (require 'emms-volume)
- (setq emms-volume-change-function 'emms-volume-mpd-change)
-
-
-File: emms.info, Node: Lyrics, Next: Volume, Prev: Music Player Daemon, Up: Top
-
-24 Lyrics
-*********
-
-We can display the lyrics of a song in time with the music using the
-'emms-lyrics' package provided by the file 'emms-lyrics.el'.
-
- The lyrics files should have the extention ".lrc", and can be placed
-under either the same directory as the music files or EMMS-LYRICS-DIR.
-
- To add this feature we invoke:
-
- (require 'emms-lyrics)
- (emms-lyrics 1)
-
- There are a number of variables we can set to define the way that
-'emms-lyrics' behaves, we can set these directly or by using the
-Customize feature in Emacs.
-
- -- User Option: emms-lyrics-display-on-minibuffer
- If non-nil, display lyrics on minibuffer.
-
- -- User Option: emms-lyrics-display-on-modeline
- If non-nil, display lyrics on modeline.
-
- -- User Option: emms-lyrics-dir
- Local lyrics repository. 'emms-lyrics-find-lyric' will look for
- lyrics in current directory(i.e., same as the music file) and this
- directory.
-
- -- User Option: emms-lyrics-display-format
- Format for displaying lyrics. "%s" will be replaced by the lyrics
- string.
-
- -- User Option: emms-lyrics-coding-system
- Coding system used in the output of lyrics.
-
- -- User Option: emms-lyrics-scroll-p
- Non-nil value will enable lyrics scrolling.
-
- -- User Option: emms-lyrics-scroll-timer-interval
- Interval between scroller timers. The shorter, the faster.
-
- We can control 'emms-lyrics' with the help of the following
-functions:
-
- -- Function: emms-lyrics-start
- Start displaying lyrics.
-
- -- Function: emms-lyrics-stop
- Stop displaying lyrics.
-
- -- Function: emms-lyrics-toggle-display-on-minibuffer
- Toggle display lyrics on minibufer.
-
- -- Function: emms-lyrics-toggle-display-on-modeline
- Toggle display lyrics on mode line.
-
- -- Function: emms-lyrics-enable
- Enable displaying Emms lyrics.
-
- -- Function: emms-lyrics-disable
- Disable displaying Emms lyrics.
-
- -- Function: emms-lyrics-toggle
- Toggle displaying Emms lyrics.
-
-
-File: emms.info, Node: Volume, Next: Streaming Audio, Prev: Lyrics, Up: Top
-
-25 Volume
-*********
-
-We can use the 'emms-volume' package, as provided by the
-'emms-volume.el' file, to manipulate the volume.
-
- -- User Option: emms-volume-change-amount
- The amount to use when raising or lowering the volume using the
- emms-volume interface.
-
- This should be a positive integer.
-
- -- Function: emms-volume-raise
- Increase the volume.
-
- -- Function: emms-volume-lower
- Decrease the volume.
-
- If you feel like binding those two functions to global keys -- don't
-do it or you'll miss the convenience of 'emms-volume-minor-mode'.
-Instead, bind the following two commands to some keys that you like.
-
- -- Function: emms-volume-mode-plus
- Raise volume and enable or extend the 'emms-volume-minor-mode'
- timeout.
-
- -- Function: emms-volume-mode-minus
- Lower volume and enable or extend the 'emms-volume-minor-mode'
- timeout.
-
- Example:
-
- (global-set-key (kbd "C-c +") 'emms-volume-mode-plus)
- (global-set-key (kbd "C-c -") 'emms-volume-mode-minus)
-
- Whenever you use one of these keys or call these functions with
-'M-x', Emms will be put into 'emms-volume-minor-mode' for a short period
-defined by 'emms-volume-mode-timeout'.
-
- -- User Option: emms-volume-mode-timeout
- The timeout in amount of seconds used by 'emms-volume-minor-mode'.
-
- In this interval you can raise/lower the volume simply by pressing
-'+' or '-', which will also reset the timer to its initial value. So
-instead of pressing 'C-c +' six times to increase volume by six steps of
-'emms-volume-change-amount', you would simply type 'C-c + + + + + +'.
-
- Emms can change volume with amixer, mpd, PulseAudio and mixerctl out
-of the box, see EMMS-VOLUME-CHANGE-FUNCTION.
-
-
-File: emms.info, Node: Streaming Audio, Next: APE / FLAC Commands, Prev: Volume, Up: Top
-
-26 Streaming Audio
-******************
-
-Emms is a great way to play streaming audio and internet radio. It is
-possible to add streaming playlists and URLs to any playlist, but Emms
-also comes with a built-in, eclectic list of streaming audio stations.
-(1)
-
- The 'emms-streams.el' package provides the command 'emms-streams'.
-
- Invoking 'emms-streams' will pull up an Emms playlist buffer and
-populate it with the built-in list of streaming audio sources.
-
- ---------- Footnotes ----------
-
- (1) Emms has no affiliation of any kind with the streaming audio
-stations included, nor is their inclusion an endorsement of these
-stations. Instead, this is a collection of stations submitted to the
-project over the years by people who enjoy Emms. We hope you will enjoy
-them too, and invite you to send in your suggestions to add to the list.
-
-
-File: emms.info, Node: APE / FLAC Commands, Next: Bookmarks, Prev: Streaming Audio, Up: Top
-
-27 APE / FLAC Commands
-**********************
-
-Often, a single APE or FLAC file contains a complete album. We can
-still play next or previous track in the album with the help of
-'emms-cue.el' package, provided there is a corresponding cue sheet file.
-This package also defines 'emms-info-cueinfo' for retreiving the track
-information for APE / FLAC itself.
-
- To load 'emms-cue.el':
-
- (require 'emms-cue)
- (add-to-list 'emms-info-functions 'emms-info-cueinfo)
-
- -- Function: emms-cue-next
- Play next track from .cue file
- -- Function: emms-cue-previous
- Play previous track from .cue file
-
-
-File: emms.info, Node: Bookmarks, Next: Managing Playlists, Prev: APE / FLAC Commands, Up: Top
-
-28 Bookmarks
-************
-
-Emms can save a "temporal bookmark" in a media file via emms-bookmarks.
-The file 'emms-bookmarks.el' provides the package emms-bookmarks.
-
- While some media is playing, invoking 'M-x emms-bookmarks-add' will
-first pause the playback and then prompt for a name describing the
-bookmark. Tracks can have multiple bookmarks associated with them.
-
- To jump to the next and previous bookmarks in the current track
-invoke 'M-x emms-bookmarks-next' and 'M-x emms-bookmarks-prev'
-respectively.
-
- To clear all of the bookmarks for the current track invoke 'M-x
-emms-bookmarks-clear'.
-
-
-File: emms.info, Node: Managing Playlists, Next: GNU FM, Prev: Bookmarks, Up: Top
-
-29 Managing Playlists
-*********************
-
-Emms can have multiple playlists, since a playlist is just another
-buffer with a list of tracks. You can manage multiple playlists using
-'emms-metaplaylist-mode', provided by the file 'emms-metaplaylist-mode'.
-
- Start the playlist manager with 'M-x emms-metaplaylist-mode-go'. The
-playlist manager will list the playlists and mark the current one. The
-following commands are available:
-
-'RET'
- Make the buffer at point the Emms playlist buffer and switch to it.
-
-'SPC'
- Make the buffer at point the Emms playlist buffer (but do not
- switch to it).
-
-'n'
- Move point to the next playlist.
-
-'p'
- Move point to the previous playlist.
-
-'g'
- Update the playlist manager buffer.
-
-'C'
- Create a new Emms playlist buffer.
-
-'C-k'
- Kill the Emms playlist buffer at point.
-
-'c'
- Move point to the current playlist buffer.
-
-'q'
- Kill the playlist manager.
-
-
-File: emms.info, Node: GNU FM, Next: Copying, Prev: Managing Playlists, Up: Top
-
-30 GNU FM
-*********
-
-GNU FM (https://www.gnu.org/software/gnufm/) is free software for
-running music community websites. It was created for the music
-community site, Libre.fm (http://libre.fm/).
-
- Emms can send track information, and stream music from GNU FM servers
-using 'emms-librefm-scrobbler.el' and 'emms-librefm-stream.el',
-respectively.
-
- Emms is configured by default to use Libre.fm (http://libre.fm/), but
-can work with any GNU FM server by configuring the variable
-EMMS-LIBREFM-SCROBBLER-HANDSHAKE-URL to the URL of the GNU FM server.
-
- The recommended way of providing your credentials to the GNU FM
-server is by using an authinfo file. Add authentication to your
-auth-info file, typically '~/.authinfo.gpg', as:
- machine libre.fm login USERNAME password PASSWORD
- If you are using some other server than libre.fm, change "'libre.fm'"
-to match EMMS-LIBREFM-SCROBBLER-HANDSHAKE-URL.
-
- Alternatively, you can save the password in plaintext in your
-init-file by setting these variables:
-
- (setq emms-librefm-scrobbler-username "USERNAME"
- emms-librefm-scrobbler-password "PASSWORD")
-
-* Menu:
-
-* Uploading Track Information:: How to submit listened track information.
-* GNU FM Streaming:: Streaming music from a GNU FM server.
-
-
-File: emms.info, Node: Uploading Track Information, Next: GNU FM Streaming, Up: GNU FM
-
-30.1 Uploading Track Information
-================================
-
-GNU FM servers, such as Libre.fm can optionally store a user's listening
-habits using information sent to the website's server from the Emms. By
-utilizing the records of users' listening habits, the website aims to be
-able to recommend music to users by analyzing their musical taste.
-
- Load the feature into Emms with:
-
- (require 'emms-librefm-scrobbler)
-
- This feature can also be enabled via *Note Setup::, in the 'emms-all'
-setup level.
-
- Enable uploading the details of the tracks Emms plays to the GNU FM
-server with 'emms-librefm-scrobbler-enable'. The track's details will
-be uploaded to the server when the track's playback ends. You can
-disable this behavior with 'emms-librefm-scrobbler-disable'.
-
-
-File: emms.info, Node: GNU FM Streaming, Prev: Uploading Track Information, Up: GNU FM
-
-30.2 GNU FM Streaming
-=====================
-
-If the GNU FM server provides a streaming music service you can take
-advantage of it by loading:
-
- (require 'emms-librefm-stream)
-
- This feature can also be enabled via *Note Setup::, in the 'emms-all'
-setup level.
-
- Then invoke 'emms-librefm-stream' and enter the URL of the station
-you wish to listen to, for example "librefm://globaltags/Classical".
-
-
-File: emms.info, Node: Copying, Next: The GNU FDL, Prev: Extending Emms, Up: Top
-
-GNU General Public License
-**************************
-
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
-
- Everyone is permitted to copy and distribute verbatim copies of this
- license document, but changing it is not allowed.
-
-Preamble
-========
-
-The GNU General Public License is a free, copyleft license for software
-and other kinds of works.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program-to make sure it remains free
-software for all its users. We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors. You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so. This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software. The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products. If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU General Public
- License.
-
- "Copyright" also means copyright-like laws that apply to other
- kinds of works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
- License. Each licensee is addressed as "you". "Licensees" and
- "recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the
- work in a fashion requiring copyright permission, other than the
- making of an exact copy. The resulting work is called a "modified
- version" of the earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work
- based on the Program.
-
- To "propagate" a work means to do anything with it that, without
- permission, would make you directly or secondarily liable for
- infringement under applicable copyright law, except executing it on
- a computer or modifying a private copy. Propagation includes
- copying, distribution (with or without modification), making
- available to the public, and in some countries other activities as
- well.
-
- To "convey" a work means any kind of propagation that enables other
- parties to make or receive copies. Mere interaction with a user
- through a computer network, with no transfer of a copy, is not
- conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
- to the extent that it includes a convenient and prominently visible
- feature that (1) displays an appropriate copyright notice, and (2)
- tells the user that there is no warranty for the work (except to
- the extent that warranties are provided), that licensees may convey
- the work under this License, and how to view a copy of this
- License. If the interface presents a list of user commands or
- options, such as a menu, a prominent item in the list meets this
- criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
- for making modifications to it. "Object code" means any non-source
- form of a work.
-
- A "Standard Interface" means an interface that either is an
- official standard defined by a recognized standards body, or, in
- the case of interfaces specified for a particular programming
- language, one that is widely used among developers working in that
- language.
-
- The "System Libraries" of an executable work include anything,
- other than the work as a whole, that (a) is included in the normal
- form of packaging a Major Component, but which is not part of that
- Major Component, and (b) serves only to enable use of the work with
- that Major Component, or to implement a Standard Interface for
- which an implementation is available to the public in source code
- form. A "Major Component", in this context, means a major
- essential component (kernel, window system, and so on) of the
- specific operating system (if any) on which the executable work
- runs, or a compiler used to produce the work, or an object code
- interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
- the source code needed to generate, install, and (for an executable
- work) run the object code and to modify the work, including scripts
- to control those activities. However, it does not include the
- work's System Libraries, or general-purpose tools or generally
- available free programs which are used unmodified in performing
- those activities but which are not part of the work. For example,
- Corresponding Source includes interface definition files associated
- with source files for the work, and the source code for shared
- libraries and dynamically linked subprograms that the work is
- specifically designed to require, such as by intimate data
- communication or control flow between those subprograms and other
- parts of the work.
-
- The Corresponding Source need not include anything that users can
- regenerate automatically from other parts of the Corresponding
- Source.
-
- The Corresponding Source for a work in source code form is that
- same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
- copyright on the Program, and are irrevocable provided the stated
- conditions are met. This License explicitly affirms your unlimited
- permission to run the unmodified Program. The output from running
- a covered work is covered by this License only if the output, given
- its content, constitutes a covered work. This License acknowledges
- your rights of fair use or other equivalent, as provided by
- copyright law.
-
- You may make, run and propagate covered works that you do not
- convey, without conditions so long as your license otherwise
- remains in force. You may convey covered works to others for the
- sole purpose of having them make modifications exclusively for you,
- or provide you with facilities for running those works, provided
- that you comply with the terms of this License in conveying all
- material for which you do not control copyright. Those thus making
- or running the covered works for you must do so exclusively on your
- behalf, under your direction and control, on terms that prohibit
- them from making any copies of your copyrighted material outside
- their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
- the conditions stated below. Sublicensing is not allowed; section
- 10 makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
- measure under any applicable law fulfilling obligations under
- article 11 of the WIPO copyright treaty adopted on 20 December
- 1996, or similar laws prohibiting or restricting circumvention of
- such measures.
-
- When you convey a covered work, you waive any legal power to forbid
- circumvention of technological measures to the extent such
- circumvention is effected by exercising rights under this License
- with respect to the covered work, and you disclaim any intention to
- limit operation or modification of the work as a means of
- enforcing, against the work's users, your or third parties' legal
- rights to forbid circumvention of technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
- receive it, in any medium, provided that you conspicuously and
- appropriately publish on each copy an appropriate copyright notice;
- keep intact all notices stating that this License and any
- non-permissive terms added in accord with section 7 apply to the
- code; keep intact all notices of the absence of any warranty; and
- give all recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
- and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
- produce it from the Program, in the form of source code under the
- terms of section 4, provided that you also meet all of these
- conditions:
-
- a. The work must carry prominent notices stating that you
- modified it, and giving a relevant date.
-
- b. The work must carry prominent notices stating that it is
- released under this License and any conditions added under
- section 7. This requirement modifies the requirement in
- section 4 to "keep intact all notices".
-
- c. You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable
- section 7 additional terms, to the whole of the work, and all
- its parts, regardless of how they are packaged. This License
- gives no permission to license the work in any other way, but
- it does not invalidate such permission if you have separately
- received it.
-
- d. If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has
- interactive interfaces that do not display Appropriate Legal
- Notices, your work need not make them do so.
-
- A compilation of a covered work with other separate and independent
- works, which are not by their nature extensions of the covered
- work, and which are not combined with it such as to form a larger
- program, in or on a volume of a storage or distribution medium, is
- called an "aggregate" if the compilation and its resulting
- copyright are not used to limit the access or legal rights of the
- compilation's users beyond what the individual works permit.
- Inclusion of a covered work in an aggregate does not cause this
- License to apply to the other parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
- of sections 4 and 5, provided that you also convey the
- machine-readable Corresponding Source under the terms of this
- License, in one of these ways:
-
- a. Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b. Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that
- product model, to give anyone who possesses the object code
- either (1) a copy of the Corresponding Source for all the
- software in the product that is covered by this License, on a
- durable physical medium customarily used for software
- interchange, for a price no more than your reasonable cost of
- physically performing this conveying of source, or (2) access
- to copy the Corresponding Source from a network server at no
- charge.
-
- c. Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially,
- and only if you received the object code with such an offer,
- in accord with subsection 6b.
-
- d. Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to
- the Corresponding Source in the same way through the same
- place at no further charge. You need not require recipients
- to copy the Corresponding Source along with the object code.
- If the place to copy the object code is a network server, the
- Corresponding Source may be on a different server (operated by
- you or a third party) that supports equivalent copying
- facilities, provided you maintain clear directions next to the
- object code saying where to find the Corresponding Source.
- Regardless of what server hosts the Corresponding Source, you
- remain obligated to ensure that it is available for as long as
- needed to satisfy these requirements.
-
- e. Convey the object code using peer-to-peer transmission,
- provided you inform other peers where the object code and
- Corresponding Source of the work are being offered to the
- general public at no charge under subsection 6d.
-
- A separable portion of the object code, whose source code is
- excluded from the Corresponding Source as a System Library, need
- not be included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means
- any tangible personal property which is normally used for personal,
- family, or household purposes, or (2) anything designed or sold for
- incorporation into a dwelling. In determining whether a product is
- a consumer product, doubtful cases shall be resolved in favor of
- coverage. For a particular product received by a particular user,
- "normally used" refers to a typical or common use of that class of
- product, regardless of the status of the particular user or of the
- way in which the particular user actually uses, or expects or is
- expected to use, the product. A product is a consumer product
- regardless of whether the product has substantial commercial,
- industrial or non-consumer uses, unless such uses represent the
- only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
- procedures, authorization keys, or other information required to
- install and execute modified versions of a covered work in that
- User Product from a modified version of its Corresponding Source.
- The information must suffice to ensure that the continued
- functioning of the modified object code is in no case prevented or
- interfered with solely because modification has been made.
-
- If you convey an object code work under this section in, or with,
- or specifically for use in, a User Product, and the conveying
- occurs as part of a transaction in which the right of possession
- and use of the User Product is transferred to the recipient in
- perpetuity or for a fixed term (regardless of how the transaction
- is characterized), the Corresponding Source conveyed under this
- section must be accompanied by the Installation Information. But
- this requirement does not apply if neither you nor any third party
- retains the ability to install modified object code on the User
- Product (for example, the work has been installed in ROM).
-
- The requirement to provide Installation Information does not
- include a requirement to continue to provide support service,
- warranty, or updates for a work that has been modified or installed
- by the recipient, or for the User Product in which it has been
- modified or installed. Access to a network may be denied when the
- modification itself materially and adversely affects the operation
- of the network or violates the rules and protocols for
- communication across the network.
-
- Corresponding Source conveyed, and Installation Information
- provided, in accord with this section must be in a format that is
- publicly documented (and with an implementation available to the
- public in source code form), and must require no special password
- or key for unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of
- this License by making exceptions from one or more of its
- conditions. Additional permissions that are applicable to the
- entire Program shall be treated as though they were included in
- this License, to the extent that they are valid under applicable
- law. If additional permissions apply only to part of the Program,
- that part may be used separately under those permissions, but the
- entire Program remains governed by this License without regard to
- the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
- remove any additional permissions from that copy, or from any part
- of it. (Additional permissions may be written to require their own
- removal in certain cases when you modify the work.) You may place
- additional permissions on material, added by you to a covered work,
- for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material
- you add to a covered work, you may (if authorized by the copyright
- holders of that material) supplement the terms of this License with
- terms:
-
- a. Disclaiming warranty or limiting liability differently from
- the terms of sections 15 and 16 of this License; or
-
- b. Requiring preservation of specified reasonable legal notices
- or author attributions in that material or in the Appropriate
- Legal Notices displayed by works containing it; or
-
- c. Prohibiting misrepresentation of the origin of that material,
- or requiring that modified versions of such material be marked
- in reasonable ways as different from the original version; or
-
- d. Limiting the use for publicity purposes of names of licensors
- or authors of the material; or
-
- e. Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f. Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified
- versions of it) with contractual assumptions of liability to
- the recipient, for any liability that these contractual
- assumptions directly impose on those licensors and authors.
-
- All other non-permissive additional terms are considered "further
- restrictions" within the meaning of section 10. If the Program as
- you received it, or any part of it, contains a notice stating that
- it is governed by this License along with a term that is a further
- restriction, you may remove that term. If a license document
- contains a further restriction but permits relicensing or conveying
- under this License, you may add to a covered work material governed
- by the terms of that license document, provided that the further
- restriction does not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
- must place, in the relevant source files, a statement of the
- additional terms that apply to those files, or a notice indicating
- where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in
- the form of a separately written license, or stated as exceptions;
- the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
- provided under this License. Any attempt otherwise to propagate or
- modify it is void, and will automatically terminate your rights
- under this License (including any patent licenses granted under the
- third paragraph of section 11).
-
- However, if you cease all violation of this License, then your
- license from a particular copyright holder is reinstated (a)
- provisionally, unless and until the copyright holder explicitly and
- finally terminates your license, and (b) permanently, if the
- copyright holder fails to notify you of the violation by some
- reasonable means prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
- reinstated permanently if the copyright holder notifies you of the
- violation by some reasonable means, this is the first time you have
- received notice of violation of this License (for any work) from
- that copyright holder, and you cure the violation prior to 30 days
- after your receipt of the notice.
-
- Termination of your rights under this section does not terminate
- the licenses of parties who have received copies or rights from you
- under this License. If your rights have been terminated and not
- permanently reinstated, you do not qualify to receive new licenses
- for the same material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
- run a copy of the Program. Ancillary propagation of a covered work
- occurring solely as a consequence of using peer-to-peer
- transmission to receive a copy likewise does not require
- acceptance. However, nothing other than this License grants you
- permission to propagate or modify any covered work. These actions
- infringe copyright if you do not accept this License. Therefore,
- by modifying or propagating a covered work, you indicate your
- acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
- receives a license from the original licensors, to run, modify and
- propagate that work, subject to this License. You are not
- responsible for enforcing compliance by third parties with this
- License.
-
- An "entity transaction" is a transaction transferring control of an
- organization, or substantially all assets of one, or subdividing an
- organization, or merging organizations. If propagation of a
- covered work results from an entity transaction, each party to that
- transaction who receives a copy of the work also receives whatever
- licenses to the work the party's predecessor in interest had or
- could give under the previous paragraph, plus a right to possession
- of the Corresponding Source of the work from the predecessor in
- interest, if the predecessor has it or can get it with reasonable
- efforts.
-
- You may not impose any further restrictions on the exercise of the
- rights granted or affirmed under this License. For example, you
- may not impose a license fee, royalty, or other charge for exercise
- of rights granted under this License, and you may not initiate
- litigation (including a cross-claim or counterclaim in a lawsuit)
- alleging that any patent claim is infringed by making, using,
- selling, offering for sale, or importing the Program or any portion
- of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
- License of the Program or a work on which the Program is based.
- The work thus licensed is called the contributor's "contributor
- version".
-
- A contributor's "essential patent claims" are all patent claims
- owned or controlled by the contributor, whether already acquired or
- hereafter acquired, that would be infringed by some manner,
- permitted by this License, of making, using, or selling its
- contributor version, but do not include claims that would be
- infringed only as a consequence of further modification of the
- contributor version. For purposes of this definition, "control"
- includes the right to grant patent sublicenses in a manner
- consistent with the requirements of this License.
-
- Each contributor grants you a non-exclusive, worldwide,
- royalty-free patent license under the contributor's essential
- patent claims, to make, use, sell, offer for sale, import and
- otherwise run, modify and propagate the contents of its contributor
- version.
-
- In the following three paragraphs, a "patent license" is any
- express agreement or commitment, however denominated, not to
- enforce a patent (such as an express permission to practice a
- patent or covenant not to sue for patent infringement). To "grant"
- such a patent license to a party means to make such an agreement or
- commitment not to enforce a patent against the party.
-
- If you convey a covered work, knowingly relying on a patent
- license, and the Corresponding Source of the work is not available
- for anyone to copy, free of charge and under the terms of this
- License, through a publicly available network server or other
- readily accessible means, then you must either (1) cause the
- Corresponding Source to be so available, or (2) arrange to deprive
- yourself of the benefit of the patent license for this particular
- work, or (3) arrange, in a manner consistent with the requirements
- of this License, to extend the patent license to downstream
- recipients. "Knowingly relying" means you have actual knowledge
- that, but for the patent license, your conveying the covered work
- in a country, or your recipient's use of the covered work in a
- country, would infringe one or more identifiable patents in that
- country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
- arrangement, you convey, or propagate by procuring conveyance of, a
- covered work, and grant a patent license to some of the parties
- receiving the covered work authorizing them to use, propagate,
- modify or convey a specific copy of the covered work, then the
- patent license you grant is automatically extended to all
- recipients of the covered work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
- the scope of its coverage, prohibits the exercise of, or is
- conditioned on the non-exercise of one or more of the rights that
- are specifically granted under this License. You may not convey a
- covered work if you are a party to an arrangement with a third
- party that is in the business of distributing software, under which
- you make payment to the third party based on the extent of your
- activity of conveying the work, and under which the third party
- grants, to any of the parties who would receive the covered work
- from you, a discriminatory patent license (a) in connection with
- copies of the covered work conveyed by you (or copies made from
- those copies), or (b) primarily for and in connection with specific
- products or compilations that contain the covered work, unless you
- entered into that arrangement, or that patent license was granted,
- prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
- any implied license or other defenses to infringement that may
- otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If conditions are imposed on you (whether by court order, agreement
- or otherwise) that contradict the conditions of this License, they
- do not excuse you from the conditions of this License. If you
- cannot convey a covered work so as to satisfy simultaneously your
- obligations under this License and any other pertinent obligations,
- then as a consequence you may not convey it at all. For example,
- if you agree to terms that obligate you to collect a royalty for
- further conveying from those to whom you convey the Program, the
- only way you could satisfy both those terms and this License would
- be to refrain entirely from conveying the Program.
-
- 13. Use with the GNU Affero General Public License.
-
- Notwithstanding any other provision of this License, you have
- permission to link or combine any covered work with a work licensed
- under version 3 of the GNU Affero General Public License into a
- single combined work, and to convey the resulting work. The terms
- of this License will continue to apply to the part which is the
- covered work, but the special requirements of the GNU Affero
- General Public License, section 13, concerning interaction through
- a network will apply to the combination as such.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new
- versions of the GNU General Public License from time to time. Such
- new versions will be similar in spirit to the present version, but
- may differ in detail to address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
- Program specifies that a certain numbered version of the GNU
- General Public License "or any later version" applies to it, you
- have the option of following the terms and conditions either of
- that numbered version or of any later version published by the Free
- Software Foundation. If the Program does not specify a version
- number of the GNU General Public License, you may choose any
- version ever published by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
- versions of the GNU General Public License can be used, that
- proxy's public statement of acceptance of a version permanently
- authorizes you to choose that version for the Program.
-
- Later license versions may give you additional or different
- permissions. However, no additional obligations are imposed on any
- author or copyright holder as a result of your choosing to follow a
- later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
- APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE
- COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS"
- WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE
- RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.
- SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
- NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
- WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES
- AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR
- DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
- CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
- THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
- BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
- PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
- PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF
- THE POSSIBILITY OF SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
- above cannot be given local legal effect according to their terms,
- reviewing courts shall apply local law that most closely
- approximates an absolute waiver of all civil liability in
- connection with the Program, unless a warranty or assumption of
- liability accompanies a copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
-
-How to Apply These Terms to Your New Programs
-=============================================
-
-If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these
-terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
- ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
- Copyright (C) YEAR NAME OF AUTHOR
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or (at
- your option) any later version.
-
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-
- Also add information on how to contact you by electronic and paper
-mail.
-
- If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
- PROGRAM Copyright (C) YEAR NAME OF AUTHOR
- This program comes with ABSOLUTELY NO WARRANTY; for details type 'show w'.
- This is free software, and you are welcome to redistribute it under certain conditions; type 'show c' for details.
-
- The hypothetical commands 'show w' and 'show c' should show the
-appropriate parts of the General Public License. Of course, your
-program's commands might be different; for a GUI interface, you would
-use an "about box".
-
- You should also get your employer (if you work as a programmer) or
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. For more information on this, and how to apply and follow
-the GNU GPL, see <http://www.gnu.org/licenses/>.
-
- The GNU General Public License does not permit incorporating your
-program into proprietary programs. If your program is a subroutine
-library, you may consider it more useful to permit linking proprietary
-applications with the library. If this is what you want to do, use the
-GNU Lesser General Public License instead of this License. But first,
-please read <http://www.gnu.org/philosophy/why-not-lgpl.html>.
-
-
-File: emms.info, Node: The GNU FDL, Next: Concept Index, Prev: Copying, Up: Top
-
-31 GNU Free Documentation License
-*********************************
-
- Version 1.2, November 2002
-
- Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
-
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- 0. PREAMBLE
-
- The purpose of this License is to make a manual, textbook, or other
- functional and useful document "free" in the sense of freedom: to
- assure everyone the effective freedom to copy and redistribute it,
- with or without modifying it, either commercially or
- noncommercially. Secondarily, this License preserves for the
- author and publisher a way to get credit for their work, while not
- being considered responsible for modifications made by others.
-
- This License is a kind of "copyleft", which means that derivative
- works of the document must themselves be free in the same sense.
- It complements the GNU General Public License, which is a copyleft
- license designed for free software.
-
- We have designed this License in order to use it for manuals for
- free software, because free software needs free documentation: a
- free program should come with manuals providing the same freedoms
- that the software does. But this License is not limited to
- software manuals; it can be used for any textual work, regardless
- of subject matter or whether it is published as a printed book. We
- recommend this License principally for works whose purpose is
- instruction or reference.
-
- 1. APPLICABILITY AND DEFINITIONS
-
- This License applies to any manual or other work, in any medium,
- that contains a notice placed by the copyright holder saying it can
- be distributed under the terms of this License. Such a notice
- grants a world-wide, royalty-free license, unlimited in duration,
- to use that work under the conditions stated herein. The
- "Document", below, refers to any such manual or work. Any member
- of the public is a licensee, and is addressed as "you". You accept
- the license if you copy, modify or distribute the work in a way
- requiring permission under copyright law.
-
- A "Modified Version" of the Document means any work containing the
- Document or a portion of it, either copied verbatim, or with
- modifications and/or translated into another language.
-
- A "Secondary Section" is a named appendix or a front-matter section
- of the Document that deals exclusively with the relationship of the
- publishers or authors of the Document to the Document's overall
- subject (or to related matters) and contains nothing that could
- fall directly within that overall subject. (Thus, if the Document
- is in part a textbook of mathematics, a Secondary Section may not
- explain any mathematics.) The relationship could be a matter of
- historical connection with the subject or with related matters, or
- of legal, commercial, philosophical, ethical or political position
- regarding them.
-
- The "Invariant Sections" are certain Secondary Sections whose
- titles are designated, as being those of Invariant Sections, in the
- notice that says that the Document is released under this License.
- If a section does not fit the above definition of Secondary then it
- is not allowed to be designated as Invariant. The Document may
- contain zero Invariant Sections. If the Document does not identify
- any Invariant Sections then there are none.
-
- The "Cover Texts" are certain short passages of text that are
- listed, as Front-Cover Texts or Back-Cover Texts, in the notice
- that says that the Document is released under this License. A
- Front-Cover Text may be at most 5 words, and a Back-Cover Text may
- be at most 25 words.
-
- A "Transparent" copy of the Document means a machine-readable copy,
- represented in a format whose specification is available to the
- general public, that is suitable for revising the document
- straightforwardly with generic text editors or (for images composed
- of pixels) generic paint programs or (for drawings) some widely
- available drawing editor, and that is suitable for input to text
- formatters or for automatic translation to a variety of formats
- suitable for input to text formatters. A copy made in an otherwise
- Transparent file format whose markup, or absence of markup, has
- been arranged to thwart or discourage subsequent modification by
- readers is not Transparent. An image format is not Transparent if
- used for any substantial amount of text. A copy that is not
- "Transparent" is called "Opaque".
-
- Examples of suitable formats for Transparent copies include plain
- ASCII without markup, Texinfo input format, LaTeX input format,
- SGML or XML using a publicly available DTD, and standard-conforming
- simple HTML, PostScript or PDF designed for human modification.
- Examples of transparent image formats include PNG, XCF and JPG.
- Opaque formats include proprietary formats that can be read and
- edited only by proprietary word processors, SGML or XML for which
- the DTD and/or processing tools are not generally available, and
- the machine-generated HTML, PostScript or PDF produced by some word
- processors for output purposes only.
-
- The "Title Page" means, for a printed book, the title page itself,
- plus such following pages as are needed to hold, legibly, the
- material this License requires to appear in the title page. For
- works in formats which do not have any title page as such, "Title
- Page" means the text near the most prominent appearance of the
- work's title, preceding the beginning of the body of the text.
-
- A section "Entitled XYZ" means a named subunit of the Document
- whose title either is precisely XYZ or contains XYZ in parentheses
- following text that translates XYZ in another language. (Here XYZ
- stands for a specific section name mentioned below, such as
- "Acknowledgements", "Dedications", "Endorsements", or "History".)
- To "Preserve the Title" of such a section when you modify the
- Document means that it remains a section "Entitled XYZ" according
- to this definition.
-
- The Document may include Warranty Disclaimers next to the notice
- which states that this License applies to the Document. These
- Warranty Disclaimers are considered to be included by reference in
- this License, but only as regards disclaiming warranties: any other
- implication that these Warranty Disclaimers may have is void and
- has no effect on the meaning of this License.
-
- 2. VERBATIM COPYING
-
- You may copy and distribute the Document in any medium, either
- commercially or noncommercially, provided that this License, the
- copyright notices, and the license notice saying this License
- applies to the Document are reproduced in all copies, and that you
- add no other conditions whatsoever to those of this License. You
- may not use technical measures to obstruct or control the reading
- or further copying of the copies you make or distribute. However,
- you may accept compensation in exchange for copies. If you
- distribute a large enough number of copies you must also follow the
- conditions in section 3.
-
- You may also lend copies, under the same conditions stated above,
- and you may publicly display copies.
-
- 3. COPYING IN QUANTITY
-
- If you publish printed copies (or copies in media that commonly
- have printed covers) of the Document, numbering more than 100, and
- the Document's license notice requires Cover Texts, you must
- enclose the copies in covers that carry, clearly and legibly, all
- these Cover Texts: Front-Cover Texts on the front cover, and
- Back-Cover Texts on the back cover. Both covers must also clearly
- and legibly identify you as the publisher of these copies. The
- front cover must present the full title with all words of the title
- equally prominent and visible. You may add other material on the
- covers in addition. Copying with changes limited to the covers, as
- long as they preserve the title of the Document and satisfy these
- conditions, can be treated as verbatim copying in other respects.
-
- If the required texts for either cover are too voluminous to fit
- legibly, you should put the first ones listed (as many as fit
- reasonably) on the actual cover, and continue the rest onto
- adjacent pages.
-
- If you publish or distribute Opaque copies of the Document
- numbering more than 100, you must either include a machine-readable
- Transparent copy along with each Opaque copy, or state in or with
- each Opaque copy a computer-network location from which the general
- network-using public has access to download using public-standard
- network protocols a complete Transparent copy of the Document, free
- of added material. If you use the latter option, you must take
- reasonably prudent steps, when you begin distribution of Opaque
- copies in quantity, to ensure that this Transparent copy will
- remain thus accessible at the stated location until at least one
- year after the last time you distribute an Opaque copy (directly or
- through your agents or retailers) of that edition to the public.
-
- It is requested, but not required, that you contact the authors of
- the Document well before redistributing any large number of copies,
- to give them a chance to provide you with an updated version of the
- Document.
-
- 4. MODIFICATIONS
-
- You may copy and distribute a Modified Version of the Document
- under the conditions of sections 2 and 3 above, provided that you
- release the Modified Version under precisely this License, with the
- Modified Version filling the role of the Document, thus licensing
- distribution and modification of the Modified Version to whoever
- possesses a copy of it. In addition, you must do these things in
- the Modified Version:
-
- A. Use in the Title Page (and on the covers, if any) a title
- distinct from that of the Document, and from those of previous
- versions (which should, if there were any, be listed in the
- History section of the Document). You may use the same title
- as a previous version if the original publisher of that
- version gives permission.
-
- B. List on the Title Page, as authors, one or more persons or
- entities responsible for authorship of the modifications in
- the Modified Version, together with at least five of the
- principal authors of the Document (all of its principal
- authors, if it has fewer than five), unless they release you
- from this requirement.
-
- C. State on the Title page the name of the publisher of the
- Modified Version, as the publisher.
-
- D. Preserve all the copyright notices of the Document.
-
- E. Add an appropriate copyright notice for your modifications
- adjacent to the other copyright notices.
-
- F. Include, immediately after the copyright notices, a license
- notice giving the public permission to use the Modified
- Version under the terms of this License, in the form shown in
- the Addendum below.
-
- G. Preserve in that license notice the full lists of Invariant
- Sections and required Cover Texts given in the Document's
- license notice.
-
- H. Include an unaltered copy of this License.
-
- I. Preserve the section Entitled "History", Preserve its Title,
- and add to it an item stating at least the title, year, new
- authors, and publisher of the Modified Version as given on the
- Title Page. If there is no section Entitled "History" in the
- Document, create one stating the title, year, authors, and
- publisher of the Document as given on its Title Page, then add
- an item describing the Modified Version as stated in the
- previous sentence.
-
- J. Preserve the network location, if any, given in the Document
- for public access to a Transparent copy of the Document, and
- likewise the network locations given in the Document for
- previous versions it was based on. These may be placed in the
- "History" section. You may omit a network location for a work
- that was published at least four years before the Document
- itself, or if the original publisher of the version it refers
- to gives permission.
-
- K. For any section Entitled "Acknowledgements" or "Dedications",
- Preserve the Title of the section, and preserve in the section
- all the substance and tone of each of the contributor
- acknowledgements and/or dedications given therein.
-
- L. Preserve all the Invariant Sections of the Document, unaltered
- in their text and in their titles. Section numbers or the
- equivalent are not considered part of the section titles.
-
- M. Delete any section Entitled "Endorsements". Such a section
- may not be included in the Modified Version.
-
- N. Do not retitle any existing section to be Entitled
- "Endorsements" or to conflict in title with any Invariant
- Section.
-
- O. Preserve any Warranty Disclaimers.
-
- If the Modified Version includes new front-matter sections or
- appendices that qualify as Secondary Sections and contain no
- material copied from the Document, you may at your option designate
- some or all of these sections as invariant. To do this, add their
- titles to the list of Invariant Sections in the Modified Version's
- license notice. These titles must be distinct from any other
- section titles.
-
- You may add a section Entitled "Endorsements", provided it contains
- nothing but endorsements of your Modified Version by various
- parties--for example, statements of peer review or that the text
- has been approved by an organization as the authoritative
- definition of a standard.
-
- You may add a passage of up to five words as a Front-Cover Text,
- and a passage of up to 25 words as a Back-Cover Text, to the end of
- the list of Cover Texts in the Modified Version. Only one passage
- of Front-Cover Text and one of Back-Cover Text may be added by (or
- through arrangements made by) any one entity. If the Document
- already includes a cover text for the same cover, previously added
- by you or by arrangement made by the same entity you are acting on
- behalf of, you may not add another; but you may replace the old
- one, on explicit permission from the previous publisher that added
- the old one.
-
- The author(s) and publisher(s) of the Document do not by this
- License give permission to use their names for publicity for or to
- assert or imply endorsement of any Modified Version.
-
- 5. COMBINING DOCUMENTS
-
- You may combine the Document with other documents released under
- this License, under the terms defined in section 4 above for
- modified versions, provided that you include in the combination all
- of the Invariant Sections of all of the original documents,
- unmodified, and list them all as Invariant Sections of your
- combined work in its license notice, and that you preserve all
- their Warranty Disclaimers.
-
- The combined work need only contain one copy of this License, and
- multiple identical Invariant Sections may be replaced with a single
- copy. If there are multiple Invariant Sections with the same name
- but different contents, make the title of each such section unique
- by adding at the end of it, in parentheses, the name of the
- original author or publisher of that section if known, or else a
- unique number. Make the same adjustment to the section titles in
- the list of Invariant Sections in the license notice of the
- combined work.
-
- In the combination, you must combine any sections Entitled
- "History" in the various original documents, forming one section
- Entitled "History"; likewise combine any sections Entitled
- "Acknowledgements", and any sections Entitled "Dedications". You
- must delete all sections Entitled "Endorsements."
-
- 6. COLLECTIONS OF DOCUMENTS
-
- You may make a collection consisting of the Document and other
- documents released under this License, and replace the individual
- copies of this License in the various documents with a single copy
- that is included in the collection, provided that you follow the
- rules of this License for verbatim copying of each of the documents
- in all other respects.
-
- You may extract a single document from such a collection, and
- distribute it individually under this License, provided you insert
- a copy of this License into the extracted document, and follow this
- License in all other respects regarding verbatim copying of that
- document.
-
- 7. AGGREGATION WITH INDEPENDENT WORKS
-
- A compilation of the Document or its derivatives with other
- separate and independent documents or works, in or on a volume of a
- storage or distribution medium, is called an "aggregate" if the
- copyright resulting from the compilation is not used to limit the
- legal rights of the compilation's users beyond what the individual
- works permit. When the Document is included in an aggregate, this
- License does not apply to the other works in the aggregate which
- are not themselves derivative works of the Document.
-
- If the Cover Text requirement of section 3 is applicable to these
- copies of the Document, then if the Document is less than one half
- of the entire aggregate, the Document's Cover Texts may be placed
- on covers that bracket the Document within the aggregate, or the
- electronic equivalent of covers if the Document is in electronic
- form. Otherwise they must appear on printed covers that bracket
- the whole aggregate.
-
- 8. TRANSLATION
-
- Translation is considered a kind of modification, so you may
- distribute translations of the Document under the terms of section
- 4. Replacing Invariant Sections with translations requires special
- permission from their copyright holders, but you may include
- translations of some or all Invariant Sections in addition to the
- original versions of these Invariant Sections. You may include a
- translation of this License, and all the license notices in the
- Document, and any Warranty Disclaimers, provided that you also
- include the original English version of this License and the
- original versions of those notices and disclaimers. In case of a
- disagreement between the translation and the original version of
- this License or a notice or disclaimer, the original version will
- prevail.
-
- If a section in the Document is Entitled "Acknowledgements",
- "Dedications", or "History", the requirement (section 4) to
- Preserve its Title (section 1) will typically require changing the
- actual title.
-
- 9. TERMINATION
-
- You may not copy, modify, sublicense, or distribute the Document
- except as expressly provided for under this License. Any other
- attempt to copy, modify, sublicense or distribute the Document is
- void, and will automatically terminate your rights under this
- License. However, parties who have received copies, or rights,
- from you under this License will not have their licenses terminated
- so long as such parties remain in full compliance.
-
- 10. FUTURE REVISIONS OF THIS LICENSE
-
- The Free Software Foundation may publish new, revised versions of
- the GNU Free Documentation License from time to time. Such new
- versions will be similar in spirit to the present version, but may
- differ in detail to address new problems or concerns. See
- <http://www.gnu.org/copyleft/>.
-
- Each version of the License is given a distinguishing version
- number. If the Document specifies that a particular numbered
- version of this License "or any later version" applies to it, you
- have the option of following the terms and conditions either of
- that specified version or of any later version that has been
- published (not as a draft) by the Free Software Foundation. If the
- Document does not specify a version number of this License, you may
- choose any version ever published (not as a draft) by the Free
- Software Foundation.
-
-31.1 ADDENDUM: How to use this License for your documents
-=========================================================
-
-To use this License in a document you have written, include a copy of
-the License in the document and put the following copyright and license
-notices just after the title page:
-
- Copyright (C) YEAR YOUR NAME.
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the GNU Free Documentation License, Version 1.2
- or any later version published by the Free Software Foundation;
- with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
- Texts. A copy of the license is included in the section entitled ``GNU
- Free Documentation License''.
-
- If you have Invariant Sections, Front-Cover Texts and Back-Cover
-Texts, replace the "with...Texts." line with this:
-
- with the Invariant Sections being LIST THEIR TITLES, with
- the Front-Cover Texts being LIST, and with the Back-Cover Texts
- being LIST.
-
- If you have Invariant Sections without Cover Texts, or some other
-combination of the three, merge those two alternatives to suit the
-situation.
-
- If your document contains nontrivial examples of program code, we
-recommend releasing these examples in parallel under your choice of free
-software license, such as the GNU General Public License, to permit
-their use in free software.
-
-
-File: emms.info, Node: Concept Index, Next: Function Index, Prev: The GNU FDL, Up: Top
-
-Concept Index
-*************
-
-
-* Menu:
-
-* adding functionality: Hooks. (line 6)
-* advanced player: More Complex Player. (line 6)
-* basic commands: Basic Commands. (line 6)
-* basic functions: Core Functions. (line 6)
-* basic player: Simple Player for `play'.
- (line 6)
-* commands, basic: Basic Commands. (line 6)
-* compiling: Compiling Emms. (line 6)
-* complex player: More Complex Player. (line 6)
-* Configuration: Configuration. (line 6)
-* configuration: Setup Examples. (line 6)
-* core file: The Core File. (line 6)
-* core functions: Core Functions. (line 6)
-* defining info methods: Defining Info Methods. (line 6)
-* defining new players: New Player. (line 6)
-* defining players: Extending Emms. (line 6)
-* display emms information: Emms Mode Line. (line 6)
-* example: Setup Examples. (line 6)
-* FDL, GNU Free Documentation License: The GNU FDL. (line 6)
-* files: Finding files and speed.
- (line 6)
-* format: Formats and Freedom. (line 6)
-* freedom: Formats and Freedom. (line 6)
-* GNU FM: GNU FM. (line 6)
-* heart of Emms: The Core File. (line 6)
-* hooks: Hooks. (line 6)
-* info tags: Track Information. (line 6)
-* installation: Installation. (line 6)
-* Interactive Playlists: Interactive Playlists. (line 6)
-* internet radio: Streaming Audio. (line 6)
-* introduction: Introduction. (line 6)
-* limiting: Limiting. (line 6)
-* lyrics: Lyrics. (line 6)
-* mailing list: Getting Help. (line 6)
-* Markable Playlists: Markable Playlists. (line 6)
-* mode line: Emms Mode Line. (line 6)
-* mpd: Music Player Daemon. (line 6)
-* music player daemon: Music Player Daemon. (line 6)
-* new player: New Player. (line 6)
-* new players: Extending Emms. (line 6)
-* new players, defining: Extending Emms. (line 6)
-* options: User Variables. (line 6)
-* organizing tracks and media: Playlists. (line 6)
-* players, simple: Simple Players. (line 6)
-* playlist: Limiting. (line 6)
-* primitive functions: The Core File. (line 6)
-* primitive player: Simple Player for `play'.
- (line 6)
-* quick setup: Setup. (line 6)
-* remote interface: Music Player Daemon. (line 6)
-* setting up Emms: Setup. (line 6)
-* setup: Setup. (line 6)
-* simple player: Simple Player for `play'.
- (line 6)
-* sort: Sorting Playlists. (line 6)
-* Sources: Sources. (line 6)
-* speed: Finding files and speed.
- (line 6)
-* streaming audio: Streaming Audio. (line 6)
-* track editor: Editing Tracks. (line 6)
-* track information: Track Information. (line 6)
-* track order: Sorting Playlists. (line 6)
-* user variables: User Variables. (line 6)
-* volume: Volume. (line 6)
-* website: Getting Help. (line 6)
-
-
-File: emms.info, Node: Function Index, Next: Variable Index, Prev: Concept Index, Up: Top
-
-Function Index
-**************
-
-
-* Menu:
-
-* bury-buffer: Interactive Playlists.
- (line 65)
-* define-emms-simple-player: Simple Players. (line 6)
-* describe-mode: Interactive Playlists.
- (line 73)
-* describe-mode <1>: Browser Interface. (line 77)
-* emms-add-directory: Basic Commands. (line 26)
-* emms-add-directory-tree: Basic Commands. (line 32)
-* emms-add-file: Basic Commands. (line 19)
-* emms-add-find: Basic Commands. (line 46)
-* emms-add-playlist: Basic Commands. (line 41)
-* emms-add-url: Basic Commands. (line 37)
-* emms-all: Setup. (line 17)
-* emms-browse-by-album: Browser Interface. (line 18)
-* emms-browse-by-album <1>: Browser Interface. (line 107)
-* emms-browse-by-artist: Browser Interface. (line 15)
-* emms-browse-by-artist <1>: Browser Interface. (line 104)
-* emms-browse-by-genre: Browser Interface. (line 21)
-* emms-browse-by-genre <1>: Browser Interface. (line 110)
-* emms-browse-by-year: Browser Interface. (line 24)
-* emms-browse-by-year <1>: Browser Interface. (line 113)
-* emms-browser-add-tracks: Browser Interface. (line 35)
-* emms-browser-add-tracks-and-play: Browser Interface. (line 32)
-* emms-browser-add-tracks-and-play <1>: Browser Interface. (line 83)
-* emms-browser-bury-buffer: Browser Interface. (line 62)
-* emms-browser-clear-playlist: Browser Interface. (line 53)
-* emms-browser-collapse-all: Browser Interface. (line 41)
-* emms-browser-expand-all: Browser Interface. (line 56)
-* emms-browser-expand-to-level-2: Browser Interface. (line 44)
-* emms-browser-expand-to-level-3: Browser Interface. (line 47)
-* emms-browser-expand-to-level-4: Browser Interface. (line 50)
-* emms-browser-goto-random: Browser Interface. (line 65)
-* emms-browser-lookup-album-on-pitchfork: Browser Interface. (line 116)
-* emms-browser-lookup-album-on-wikipedia: Browser Interface. (line 119)
-* emms-browser-next-filter: Browser Interface. (line 74)
-* emms-browser-next-non-track: Browser Interface. (line 89)
-* emms-browser-prev-non-track: Browser Interface. (line 86)
-* emms-browser-previous-filter: Browser Interface. (line 71)
-* emms-browser-search-by-album: Browser Interface. (line 92)
-* emms-browser-search-by-artist: Browser Interface. (line 95)
-* emms-browser-search-by-names: Browser Interface. (line 98)
-* emms-browser-search-by-title: Browser Interface. (line 101)
-* emms-browser-toggle-subitems: Browser Interface. (line 38)
-* emms-browser-view-in-dired: Browser Interface. (line 59)
-* emms-cache-set-from-mpd-all: Music Player Daemon. (line 93)
-* emms-cache-set-from-mpd-directory: Music Player Daemon. (line 89)
-* emms-cue-next: APE / FLAC Commands. (line 17)
-* emms-cue-previous: APE / FLAC Commands. (line 19)
-* emms-default-players: Setup. (line 24)
-* emms-history-load: Persistent Playlists.
- (line 21)
-* emms-isearch-buffer: Browser Interface. (line 68)
-* emms-locate: Sources. (line 48)
-* emms-lyrics-disable: Lyrics. (line 63)
-* emms-lyrics-enable: Lyrics. (line 60)
-* emms-lyrics-start: Lyrics. (line 48)
-* emms-lyrics-stop: Lyrics. (line 51)
-* emms-lyrics-toggle: Lyrics. (line 66)
-* emms-lyrics-toggle-display-on-minibuffer: Lyrics. (line 54)
-* emms-lyrics-toggle-display-on-modeline: Lyrics. (line 57)
-* emms-mark-copy-marked-tracks: Markable Playlists. (line 46)
-* emms-mark-delete-marked-tracks: Markable Playlists. (line 41)
-* emms-mark-do-with-marked-track: Markable Playlists. (line 54)
-* emms-mark-forward: Markable Playlists. (line 25)
-* emms-mark-kill-marked-tracks: Markable Playlists. (line 43)
-* emms-mark-mapcar-marked-track: Markable Playlists. (line 60)
-* emms-mark-regexp: Markable Playlists. (line 35)
-* emms-mark-toggle: Markable Playlists. (line 31)
-* emms-mark-unmark-all: Markable Playlists. (line 29)
-* emms-mark-unmark-forward: Markable Playlists. (line 33)
-* emms-metaplaylist-mode-center-current: Managing Playlists. (line 37)
-* emms-metaplaylist-mode-goto-current: Managing Playlists. (line 15)
-* emms-metaplaylist-mode-kill-buffer: Managing Playlists. (line 34)
-* emms-metaplaylist-mode-new-buffer: Managing Playlists. (line 31)
-* emms-metaplaylist-mode-set-active: Managing Playlists. (line 18)
-* emms-metaplaylist-mode-update: Managing Playlists. (line 28)
-* emms-minimalistic: Setup. (line 13)
-* emms-next: Basic Commands. (line 59)
-* emms-next <1>: Interactive Playlists.
- (line 38)
-* emms-next <2>: Interactive Playlists.
- (line 40)
-* emms-next-noerror: Core Functions. (line 11)
-* emms-pause: Interactive Playlists.
- (line 44)
-* emms-play-directory: Basic Commands. (line 23)
-* emms-play-directory-tree: Basic Commands. (line 29)
-* emms-play-file: Basic Commands. (line 15)
-* emms-play-find: Basic Commands. (line 43)
-* emms-play-find <1>: Sources. (line 15)
-* emms-play-playlist: Basic Commands. (line 39)
-* emms-play-url: Basic Commands. (line 35)
-* emms-player-for: Core Functions. (line 49)
-* emms-player-mpd-connect: Music Player Daemon. (line 62)
-* emms-player-mpd-disconnect: Music Player Daemon. (line 66)
-* emms-player-mpd-show: Music Player Daemon. (line 69)
-* emms-player-mpd-update-all: Music Player Daemon. (line 82)
-* emms-player-mpd-update-directory: Music Player Daemon. (line 79)
-* emms-player-simple-sentinel: Simple Players. (line 21)
-* emms-player-simple-start: Simple Players. (line 18)
-* emms-player-simple-stop: Simple Players. (line 16)
-* emms-player-start: Core Functions. (line 58)
-* emms-player-stop: Core Functions. (line 60)
-* emms-player-stopped: Core Functions. (line 62)
-* emms-playing-time-disable-display: Emms Mode Line. (line 42)
-* emms-playing-time-enable-display: Emms Mode Line. (line 39)
-* emms-playlist-current-selected-track: Core Functions. (line 53)
-* emms-playlist-limit-to-all: Limiting. (line 61)
-* emms-playlist-limit-to-description: Limiting. (line 31)
-* emms-playlist-limit-to-info-album: Limiting. (line 21)
-* emms-playlist-limit-to-info-artist: Limiting. (line 16)
-* emms-playlist-limit-to-info-composer: Limiting. (line 26)
-* emms-playlist-limit-to-info-genre: Limiting. (line 36)
-* emms-playlist-limit-to-info-performer: Limiting. (line 46)
-* emms-playlist-limit-to-info-title: Limiting. (line 51)
-* emms-playlist-limit-to-info-year: Limiting. (line 56)
-* emms-playlist-limit-to-name: Limiting. (line 41)
-* emms-playlist-mode-add-contents: Interactive Playlists.
- (line 32)
-* emms-playlist-mode-center-current: Interactive Playlists.
- (line 52)
-* emms-playlist-mode-first: Interactive Playlists.
- (line 59)
-* emms-playlist-mode-go: Interactive Playlists.
- (line 15)
-* emms-playlist-mode-insert-newline: Interactive Playlists.
- (line 87)
-* emms-playlist-mode-kill: Interactive Playlists.
- (line 83)
-* emms-playlist-mode-kill-track: Interactive Playlists.
- (line 78)
-* emms-playlist-mode-last: Interactive Playlists.
- (line 61)
-* emms-playlist-mode-play-current-track: Interactive Playlists.
- (line 54)
-* emms-playlist-mode-undo: Browser Interface. (line 80)
-* emms-playlist-mode-yank: Interactive Playlists.
- (line 81)
-* emms-playlist-mode-yank-pop: Interactive Playlists.
- (line 85)
-* emms-playlist-new: Playlists. (line 20)
-* emms-playlist-next: Core Functions. (line 17)
-* emms-playlist-previous: Core Functions. (line 19)
-* emms-playlist-save: Playlists. (line 25)
-* emms-playlist-save <1>: Interactive Playlists.
- (line 68)
-* emms-playlist-set-playlist-buffer: Interactive Playlists.
- (line 36)
-* emms-playlist-sort-by-file-extension: Sorting Playlists. (line 29)
-* emms-playlist-sort-by-file-mtime: Sorting Playlists. (line 47)
-* emms-playlist-sort-by-info-album: Sorting Playlists. (line 20)
-* emms-playlist-sort-by-info-artist: Sorting Playlists. (line 14)
-* emms-playlist-sort-by-info-composer: Sorting Playlists. (line 41)
-* emms-playlist-sort-by-info-note: Sorting Playlists. (line 38)
-* emms-playlist-sort-by-info-performer: Sorting Playlists. (line 32)
-* emms-playlist-sort-by-info-title: Sorting Playlists. (line 26)
-* emms-playlist-sort-by-info-year: Sorting Playlists. (line 35)
-* emms-playlist-sort-by-last-played: Sorting Playlists. (line 23)
-* emms-playlist-sort-by-name: Sorting Playlists. (line 44)
-* emms-playlist-sort-by-play-count: Sorting Playlists. (line 17)
-* emms-previous: Basic Commands. (line 61)
-* emms-random: Core Functions. (line 21)
-* emms-random <1>: Interactive Playlists.
- (line 63)
-* emms-seek: Core Functions. (line 65)
-* emms-seek-backward: Core Functions. (line 71)
-* emms-seek-backward <1>: Interactive Playlists.
- (line 48)
-* emms-seek-forward: Core Functions. (line 69)
-* emms-seek-forward <1>: Interactive Playlists.
- (line 46)
-* emms-show: Basic Commands. (line 68)
-* emms-show <1>: Interactive Playlists.
- (line 50)
-* emms-shuffle: Basic Commands. (line 63)
-* emms-smart-browse: Browser Interface. (line 10)
-* emms-sort: Basic Commands. (line 66)
-* emms-source-directory: Sources. (line 23)
-* emms-source-directory-tree: Sources. (line 26)
-* emms-source-dired: Sources. (line 43)
-* emms-source-file: Sources. (line 18)
-* emms-source-file-directory-tree: Sources. (line 41)
-* emms-source-file-regex: Sources. (line 45)
-* emms-source-files: Sources. (line 21)
-* emms-source-find: Sources. (line 38)
-* emms-source-playlist: Sources. (line 29)
-* emms-source-playlist-m3u: Sources. (line 34)
-* emms-source-playlist-native: Sources. (line 32)
-* emms-source-playlist-pls: Sources. (line 36)
-* emms-start: Basic Commands. (line 55)
-* emms-stop: Basic Commands. (line 57)
-* emms-stop <1>: Interactive Playlists.
- (line 42)
-* emms-tag-editor-rename: Editing Tracks. (line 89)
-* emms-tag-editor-replace-in-tag: Editing Tracks. (line 32)
-* emms-tag-editor-set-all: Editing Tracks. (line 23)
-* emms-tag-editor-submit: Editing Tracks. (line 47)
-* emms-tag-editor-transpose-tag: Editing Tracks. (line 41)
-* emms-toggle-random-playlist: Core Functions. (line 29)
-* emms-toggle-repeat-playlist: Core Functions. (line 23)
-* emms-toggle-repeat-track: Core Functions. (line 26)
-* emms-track: Core Functions. (line 35)
-* emms-track-description: Core Functions. (line 46)
-* emms-track-get: Core Functions. (line 41)
-* emms-track-name: Core Functions. (line 39)
-* emms-track-set: Core Functions. (line 44)
-* emms-track-type: Core Functions. (line 37)
-* emms-volume-lower: Volume. (line 18)
-* emms-volume-mode-minus: Volume. (line 29)
-* emms-volume-mode-plus: Volume. (line 25)
-* emms-volume-raise: Volume. (line 15)
-* kill-this-buffer: Managing Playlists. (line 40)
-* next-line: Managing Playlists. (line 22)
-* previous-line: Managing Playlists. (line 25)
-* scroll-up: Interactive Playlists.
- (line 57)
-
-
-File: emms.info, Node: Variable Index, Next: Keybinding Index, Prev: Function Index, Up: Top
-
-Variable Index
-**************
-
-
-* Menu:
-
-* emms-history-file: Persistent Playlists.
- (line 14)
-* emms-history-start-playing: Persistent Playlists.
- (line 33)
-* emms-info-asynchronously: Track Information. (line 99)
-* emms-info-auto-update: Track Information. (line 94)
-* emms-info-functions: Track Information. (line 105)
-* emms-lyrics-coding-system: Lyrics. (line 36)
-* emms-lyrics-dir: Lyrics. (line 27)
-* emms-lyrics-display-format: Lyrics. (line 32)
-* emms-lyrics-display-on-minibuffer: Lyrics. (line 21)
-* emms-lyrics-display-on-modeline: Lyrics. (line 24)
-* emms-lyrics-scroll-p: Lyrics. (line 39)
-* emms-lyrics-scroll-timer-interval: Lyrics. (line 42)
-* emms-player-finished-hook: Hooks. (line 23)
-* emms-player-list: User Variables. (line 8)
-* emms-player-paused-hook: Hooks. (line 29)
-* emms-player-started-hook: Hooks. (line 9)
-* emms-player-stopped-hook: Hooks. (line 11)
-* emms-playlist-cleared-hook: Hooks. (line 19)
-* emms-playlist-selection-changed-hook: Hooks. (line 17)
-* emms-playlist-source-inserted-hook: Hooks. (line 14)
-* emms-repeat-playlist: User Variables. (line 15)
-* emms-show-format: User Variables. (line 11)
-* emms-sort-lessp-function: User Variables. (line 21)
-* emms-source-file-default-directory: Sources. (line 13)
-* emms-tag-editor-formats: Editing Tracks. (line 55)
-* emms-tag-editor-rename-format: Editing Tracks. (line 73)
-* emms-tag-editor-tagfile-functions: Editing Tracks. (line 63)
-* emms-track-description-function: User Variables. (line 19)
-* emms-volume-change-amount: Volume. (line 9)
-* emms-volume-mode-timeout: Volume. (line 42)
-
-
-File: emms.info, Node: Keybinding Index, Prev: Variable Index, Up: Top
-
-Keybinding Index
-****************
-
-
-* Menu:
-
-* / (emms-browser): Browser Interface. (line 68)
-* / /: Limiting. (line 61)
-* / a: Limiting. (line 16)
-* / b: Limiting. (line 21)
-* / c: Limiting. (line 26)
-* / d: Limiting. (line 31)
-* / g: Limiting. (line 36)
-* / n: Limiting. (line 41)
-* / p: Limiting. (line 46)
-* / t: Limiting. (line 51)
-* / y: Limiting. (line 56)
-* 1 (emms-browser): Browser Interface. (line 41)
-* 2 (emms-browser): Browser Interface. (line 44)
-* 3 (emms-browser): Browser Interface. (line 47)
-* 4 (emms-browser): Browser Interface. (line 50)
-* < (emms-browser): Browser Interface. (line 71)
-* <backtab> (emms-browser): Browser Interface. (line 86)
-* <C-return> (emms-browser): Browser Interface. (line 83)
-* <tab> (emms-browser): Browser Interface. (line 89)
-* > (emms-browser): Browser Interface. (line 74)
-* ? (emms-browser): Browser Interface. (line 77)
-* b 1 (emms-browser): Browser Interface. (line 104)
-* b 2 (emms-browser): Browser Interface. (line 107)
-* b 3 (emms-browser): Browser Interface. (line 110)
-* b 4 (emms-browser): Browser Interface. (line 113)
-* C: Managing Playlists. (line 31)
-* c: Managing Playlists. (line 37)
-* C (emms-browser): Browser Interface. (line 53)
-* C-/ (emms-browser): Browser Interface. (line 80)
-* C-j (emms-browser): Browser Interface. (line 32)
-* C-k: Managing Playlists. (line 34)
-* d (emms-browser): Browser Interface. (line 59)
-* E (emms-browser): Browser Interface. (line 56)
-* g: Managing Playlists. (line 28)
-* n: Managing Playlists. (line 22)
-* p: Managing Playlists. (line 25)
-* q: Managing Playlists. (line 40)
-* q (emms-browser): Browser Interface. (line 62)
-* r (emms-browser): Browser Interface. (line 65)
-* RET: Managing Playlists. (line 15)
-* RET (emms-browser): Browser Interface. (line 35)
-* s A (emms-browser): Browser Interface. (line 92)
-* s a (emms-browser): Browser Interface. (line 95)
-* s s (emms-browser): Browser Interface. (line 98)
-* s t (emms-browser): Browser Interface. (line 101)
-* SPC: Managing Playlists. (line 18)
-* SPC (emms-browser): Browser Interface. (line 38)
-* W a p (emms-browser): Browser Interface. (line 116)
-* W a w (emms-browser): Browser Interface. (line 119)
-
-
-
-Tag Table:
-Node: Top701
-Node: Introduction4336
-Node: Quickstart Guide5804
-Node: Installation8677
-Node: Compiling Emms9226
-Node: Setup9914
-Node: Configuration10900
-Node: Finding files and speed12375
-Node: Setup Examples13244
-Node: Getting Help15177
-Node: Formats and Freedom15755
-Node: Basic Commands16960
-Node: The Core File20341
-Node: User Variables20775
-Node: Hooks21751
-Node: Core Functions23177
-Node: Sources26177
-Node: Simple Players28310
-Node: Playlists29367
-Node: Track Information30648
-Node: Metadata Utilities35358
-Node: Defining Info Methods40030
-Node: Interactive Playlists42174
-Node: Markable Playlists45216
-Node: Extending Emms47687
-Node: New Player48123
-Node: Simple Player for `play'48512
-Node: More Complex Player50240
-Node: The Browser53247
-Node: Browser Interface54223
-Node: Filtering Tracks56637
-Node: Displaying Covers58415
-Node: Changing Looks60429
-Node: Sorting Playlists63407
-Node: Persistent Playlists64876
-Node: Editing Tracks66035
-Node: Emms Mode Line69709
-Node: Limiting71152
-Node: Music Player Daemon73491
-Node: Lyrics77004
-Node: Volume79052
-Node: Streaming Audio80840
-Ref: Streaming Audio-Footnote-181432
-Node: APE / FLAC Commands81783
-Node: Bookmarks82490
-Node: Managing Playlists83201
-Node: GNU FM84224
-Node: Uploading Track Information85578
-Node: GNU FM Streaming86460
-Node: Copying86960
-Node: The GNU FDL124477
-Node: Concept Index146865
-Node: Function Index151723
-Node: Variable Index167415
-Node: Keybinding Index169884
-
-End Tag Table