aboutsummaryrefslogtreecommitdiff
path: root/README
blob: 8a1e97adcf5875bdb911f7bef8ec62c87522a14b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
EMMS --- The Emacs Multi-Media System                -*-outline-*-
=====================================

* 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 it's ideas are derived from MpthreePlayer
(http://www.nongnu.org/mp3player), but it tries to be more general and
more clean.

** EMMS, Emms, emms, or what?
-----------------------------
In various contexts, this program is called EMMS, Emms or emms. Those
are all correct, and which you use is a matter of personal preference.
EMMS highlights the acronym character of the name. Emms is akin to
Emacs and Gnus, ignoring that Emms is pronounce ee-em-em-es, and not a
single name. emms is highlighting that emms is a case-sensitive file
name and Emacs Lisp command.


* 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/")


** Setup
--------
EMMS is quite simple to set up. For the most basic needs, you will
just need the following line:

(require 'emms)

Which installs the core of EMMS. Now we need to do some configuration.

The EMMS module `emms-default' provides the function `emms-setup',
which is a way to quickly configure your EMMS. You can add any number
of directories which contain media. The first argument is the
complexity level of the user interface. Here's an example:

(require 'emms-default)
(emms-setup 'tiny "directory")

Here are the all the interface complexity options:

 * minimalistic : defines the players, play directory but nothing
                  more.

 * tiny : adds the pbi (playlist buffer interface)

 * default : adds the info reading (tags for mp3 and oggs)

 * advanced : features the tageditor and playlist manipulation

 * cvs : features playlist pop-up, pbi marking, mode-line, and
         asynchronous loading of tags.

Now your configuration is done.

The (optional) directory is used for
`emms-source-file-default-directory', in case you were wondering.


** Usage
--------
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 else, it doesn't show up. EMMS provides the following basic
user commands (that you might want to bind to keys):

emms-start ...... Start playing the current playlist
emms-stop ....... Stop playing
emms-next ....... Go to the next track in the playlist
emms-previous ... Go to the previous track in the playlist
emms-shuffle .... Shuffle the playlist
emms-show ....... What are you playing?

But before you can use these, you need a playlist to start with. The
following commands allow you to create a playlist from different
sources:

emms-play-file ............. Play a single file
emms-play-directory ........ Play a whole directory
emms-play-directory-tree ... Play a directory tree


* Overview
==========
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.


* Modules
=========

To use one of the modules that come with EMMS just put:

(require 'MODULE-NAME)

in your .emacs


** Playlist buffer (emms-pbi)
-----------------------------

emms-pbi ................ Switch to playlist buffer

The playlist-buffer *Playlist* will be created and put into
emms-pbi-mode, which give you some useful key bindings.

key             binding
---             -------
?		describe-mode
<mouse-2>	emms-pbi-play-current-line
RET		emms-pbi-play-current-line
q		bury-buffer
Q		emms-pbi-quit
f		emms-pbi-show-current-line
s		emms-stop
C-y		emms-pbi-yank
C-k		emms-pbi-kill-line
c		emms-pbi-recenter
p		emms-previous
n		emms-next
C-x C-s		emms-pbi-export-playlist


** Pop-up the Playlist Buffer (emms-pbi-popup)
----------------------------------------------

emms-pbi-popup-playlist...Popup Playlist buffer

After changing manually the track with emms-pbi-play-current-line the
old window configuration is restored. It might be useful to bind that
function to a global-key in your .emacs, for example:

(global-set-key (kbd "<f3>") 'emms-pbi-popup-playlist)

* Bare Bones Setup
==================
The following code fragment provides a minimal EMMS setup without
using the layer of `emms-default'. 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)
(setq emms-player-list '(emms-player-mpg321
                         emms-player-ogg123
                         emms-player-mplayer))