diff options
author | Yoni Rabkin <yoni@rabkins.net> | 2020-06-12 16:55:34 -0400 |
---|---|---|
committer | Yoni Rabkin <yoni@rabkins.net> | 2020-06-12 16:55:34 -0400 |
commit | be35f11af8b4dad7266f4c031c6d8d636535d874 (patch) | |
tree | 747f5fb7e36f14866f979b4151cbe2ee6112feac | |
parent | 1a67c30c186145de7cd950411151b883b1b6838e (diff) |
Add emms.info to top-level for elpa to find.
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | emms.info | 3790 |
2 files changed, 3792 insertions, 0 deletions
@@ -46,6 +46,7 @@ emms-auto.el: emms-auto.in $(SOURCE) docs: $(MAKE) -C $(DOCDIR) for file in $(DOCDIR)*.info; do install-info $$file dir; done + cp $(DOCDIR)emms.info $(CURDIR)/ emms-print-metadata: $(SRCDIR)/emms-print-metadata.cpp $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $(SRCDIR)/$@ $< `taglib-config --cflags --libs` @@ -82,6 +83,7 @@ ChangeLog: clean: -rm -f *~ $(DOCDIR)emms.info $(DOCDIR)emms.html $(SRCDIR)/emms-print-metadata -rm -f *~ *.elc emms-auto.el + -rm -f emms.info dist: clean emms-auto.el git archive --format=tar --prefix=emms-$(VERSION)/ HEAD | \ diff --git a/emms.info b/emms.info new file mode 100644 index 0000000..5b27632 --- /dev/null +++ b/emms.info @@ -0,0 +1,3790 @@ +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 +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 +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 +* Using tinytag:: Track information via tinytag. +* Using TagLib:: TagLib for track information. +* 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. It tries to be a clean and small +application to play multimedia files from Emacs using external players. +Many of its ideas are derived from MpthreePlayer +(http://www.nongnu.org/mp3player), but it tries to be more general and +more clean. + + 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', and 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 +allows you to define your own in a very simple way. + + The Emms core comes with many additional features to extend its +functionality. + + 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 have to do is 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'. + + (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 your music is; 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' 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 (this 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 populates its tag cahe, 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 +************** + +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 do: + + (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. + + +File: emms.info, Node: Finding files and speed, 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: 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 with the use of 'emms-define-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 +******************** + +Without a way to read the embedded track information inside files, Emms +will only be able to list file names and file locations. Therefore Emms +is distributed with support for a number of pieces of software and +libraries which can be used to provide access to track metadata such as +the artist's name, track name, album title, etc. + + Emms can use tinytag; a small python utility. See *Note Using +tinytag::. + + Emms can use the TagLib library installed on a system. See *Note +Using TagLib::. + + Emms also has multiple predefined methods for retrieving info for +specific file types, provided by modules such as 'emms-info-mp3info.el', +'emms-info-ogginfo.el', 'emms-info-opusinfo.el', 'emms-cue.el' and +'emms-info-libtag.el'. The first three packages are front-ends for +command-line tools. Ogg track information is retrieved using the +ogginfo (http://directory.fsf.org/audio/ogg/vorbistools.html) and the +<https://www.opus-codec.org/ opusinfo> software. Likewise, mp3 track +information is available using mp3info +(http://www.ibiblio.org/mp3info/). 'emms-cue.el' retrieves tracks +information for ape/flac files by parsing a cue sheet file, which is +plain text. + + Automatic track information retrieval is enabled by default in the +'emms-all' setup level provided by 'emms-setup.el'. For more +information about 'emms-setup.el' see *Note Setup::. + + If you would like to know how Emms track retreival works and how we +can define new methods for track retrieval see *Note Defining Info +Methods::. + + There are a number of user variables which control the behaviour 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 LATER-DO-BATCH for + performance tweaking. + -- User Option: emms-info-functions + Functions which add information to tracks. Each is called with a + track as argument. + +* Menu: + +* Using tinytag:: Track information via tinytag. +* Using TagLib:: TagLib for track information. +* Defining Info Methods:: Defining new info methods. + + +File: emms.info, Node: Using tinytag, Next: Using TagLib, Up: Track Information + +13.1 Using tinytag +================== + +Make sure that the python program tinytag is installed on your system. +It is available at tinytag (https://pypi.org/project/tinytag/). + + Configure tinytag as the sole info method (competing and overlapping +methods can cause confusion) for Emms: + + (setq emms-info-functions '(emms-info-tinytag)) + + +File: emms.info, Node: Using TagLib, Next: Defining Info Methods, Prev: Using tinytag, Up: Track Information + +13.2 Using TagLib +================= + +'emms-info-libtag.el' uses a tiny C shim (included in the src/ +directory) program to take advantage of TagLib +(http://taglib.github.io/). + + The communication with the TagLib library is done via a tiny program +written in C++ 'emms-print-metadata.cpp', which comes with Emms. To +compile 'emms-print-metadata' invoke: + + 'make emms-print-metadata' + + The resultant binary 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 the binary is available load 'emms-info-libtag' and make it the +_only_ info function with (note that if you have caching enabled you may +have to delete the existing cache and repopulate it in order to see the +TagLib data): + + (require 'emms-info-libtag) + (setq emms-info-functions '(emms-info-libtag)) + + +File: emms.info, Node: Defining Info Methods, Prev: Using TagLib, Up: Track Information + +13.3 Defining Info Methods +========================== + +An info method essentially consists of a function which given an Emms +track returns the appropriate info for that track. + + 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 as a single argument and returns the appropriate +information string. + + We then register our info function with Emms by adding it to the +EMMS-INFO-FUNCTIONS list. The function will then be called at the right +time to provide track info. + + (add-to-list 'emms-info-functions 'emms-info-ogginfo) + + +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) + + 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 ablum. We can +still play next or previous track in the ablum 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) +* 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) +* 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) +* using taglib: Using TagLib. (line 6) +* Using tinytag: Using tinytag. (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 35) +* emms-playing-time-enable-display: Emms Mode Line. (line 32) +* 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 45) +* emms-info-auto-update: Track Information. (line 41) +* emms-info-functions: Track Information. (line 50) +* 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: Top689 +Node: Introduction4369 +Node: Quickstart Guide5944 +Node: Installation8694 +Node: Compiling Emms9107 +Node: Setup9795 +Node: Configuration10781 +Node: Finding files and speed12192 +Node: Getting Help13038 +Node: Formats and Freedom13616 +Node: Basic Commands14821 +Node: The Core File18202 +Node: User Variables18636 +Node: Hooks19612 +Node: Core Functions21038 +Node: Sources24038 +Node: Simple Players26171 +Node: Playlists27265 +Node: Track Information28546 +Node: Using tinytag31112 +Node: Using TagLib31539 +Node: Defining Info Methods32647 +Node: Interactive Playlists33429 +Node: Markable Playlists36471 +Node: Extending Emms38942 +Node: New Player39378 +Node: Simple Player for `play'39767 +Node: More Complex Player41495 +Node: The Browser44502 +Node: Browser Interface45478 +Node: Filtering Tracks47892 +Node: Displaying Covers49670 +Node: Changing Looks51684 +Node: Sorting Playlists54662 +Node: Persistent Playlists56131 +Node: Editing Tracks57290 +Node: Emms Mode Line60964 +Node: Limiting62132 +Node: Music Player Daemon64471 +Node: Lyrics67984 +Node: Volume70032 +Node: Streaming Audio71820 +Ref: Streaming Audio-Footnote-172412 +Node: APE / FLAC Commands72763 +Node: Bookmarks73470 +Node: Managing Playlists74181 +Node: GNU FM75204 +Node: Uploading Track Information76558 +Node: GNU FM Streaming77440 +Node: Copying77940 +Node: The GNU FDL115457 +Node: Concept Index137845 +Node: Function Index142703 +Node: Variable Index158395 +Node: Keybinding Index160738 + +End Tag Table |