README/INSTALL/FEATURES cleanup.
[paraslash.git] / README
1 README
2 ======
3
4 ----
5 Paraslash is an acronym for
6
7 _Play, archive, rate and stream large audio sets happily_
8
9 It contains the following programs:
10
11 -----------------------
12 para_server (obligatory)
13 -----------------------
14
15 para_server streams binary audio data (mp3/oggvorbis/m4a files)
16 over local and/or remote networks. It listens on a tcp port and
17 accepts commands such as play, stop, pause, next from authenticated
18 clients. However, there are many more commands.
19
20 It supports three builtin network streaming methods (senders): http, dccp,
21 or rtp.
22
23 * The http sender is recommended for public streams that can be played
24 by any player like mpg123, xmms, itunes, winamp...
25
26 * The dccp sender is experimental and requires kernel support for the
27 rather new datagram congestion control protocol.
28
29 * The ortp sender is recommended for multicast LAN streaming
30
31 It is possible to activate more than one sender simultaneously.
32
33 The built-in audio file selector of paraslash is used to manage your
34 audio files. It maintains statistics on the usage of all available audio
35 files such as last played time, and the number of times each file was
36 selected. Its features include
37
38 * attributes: Allow fine-grained audio file selection.
39
40 * image table. For storage of e.g. album cover art.
41
42 * lyrics table. For storage of lyrics.
43
44 * playlist table. Stores arbitrary many playlists.
45
46 * mood mode. Audio file selection works by spcifying mood
47 methods involving attributes, pattern matching for file names
48 and more. This allows rather sophisticated configurations
49 and is explained in more detail in INSTALL.
50
51 * rename detection. If files are moved or renamed, afs will
52 recognioze them despite of this change.
53
54 Despite of all these features, paraslash is lightweight. The
55 stripped binary of para_server with all its features compiled in
56 mp3/ogg/aac support, http/dccp/ortp support) is about 150K on i386
57 under Linux. para_audiod (see below) is even smaller.
58
59 ------------------------
60 para_client (obligatory)
61 ------------------------
62
63 The client program to connect to para_server. paraslash commands
64 are sent to para_server and the response is dumped to stdout. This
65 can be used by any scripting language to produce user interfaces with
66 little programming effort.
67
68 All connections between para_server and para_client are encrypted by
69 default. For each user of paraslash you must create a public/secret
70 key pair for authentication. The (authenticated) connection is encrypted
71 with a symmetric rc4 session key.
72
73 --------------------
74 para_recv (optional)
75 --------------------
76
77 A command line http/dccp/rtp stream grabber. The http mode of this tool
78 can be used to receive date from any http streaming source.
79
80 ----------------------
81 para_filter (optional)
82 ----------------------
83
84 A filter program that converts from stdin and writes to stdout. It
85 is completely independent from the rest of paraslash, so it might be
86 useful also for different purposes.
87
88 para_filter combines several decoders (mp3, oggvorbis, aac) and a
89 volume normalizer New filters can be added easily due to the modular
90 design. If more than one filter is specified, the given filters
91 are 'piped' together in-memory, i.e. without calling any of the
92 read(2)/write(2)/select(2) etc. functions.
93
94 -----------------------
95 para_write (obligatory)
96 -----------------------
97
98 A modular audio stream writer. It supports a simple file writer
99 output plug-in and optional wav/raw players for alsa (linux-only,
100 Debian package: libasound2-dev) and Mac OS. para_write can also be
101 used as a stand-alone wav or raw audio player.
102
103 ---------------------------------------
104 para_audiod (optional, but recommended)
105 ---------------------------------------
106
107 The local daemon that collects information from para_server.
108
109 It runs on the client side and connects to para_server. The audio stream is
110 read from the network and sent through any of paraslash's filters (decoder,
111 volume normalizer). The resulting stream is written to an output plug-in
112 (writer), e.g. the alsa writer on linux systems. It is possible to capture the
113 stream at any position in the filter chain.
114
115 para_audiod starts an appropriate receiver, filter and player as soon as
116 para_server announces the availability (and the type) of an audio stream.
117 Moreover, it listens on a local socket and sends status information about
118 para_server and para_audiod to local clients on request.
119
120 --------------------------------------
121 para_audioc (optional, but recommended)
122 --------------------------------------
123
124 The client program which talks with para_audiod. Used to control
125 para_audiod, to receive status info, or to grab the stream at any
126 point in the filter chain.
127
128 para_audioc (hence para_audiod) is needed by para_gui, para_sdl_gui
129 and para_krell, see below.
130
131 -------------------
132 para_gui (optional)
133 -------------------
134
135 Themable ncurses-based gui. It calls para_audioc and presents
136 the obtained information in an ncurses window. para_gui provides
137 key-bindings for the most common commands and new key-bindings can
138 be added easily.
139
140 --------------------
141 para_fade (optional)
142 --------------------
143
144 A (Linux-only) alarm clock and volume-fader.
145
146 --------------------------
147 bash_completion (optional)
148 --------------------------
149
150 A small bash script for inclusion in ~/.bashrc. It gives you command
151 line completion for some paraslash commands.
152
153 ------------
154 Requirements
155 ------------
156
157 In any case you need
158
159 - gcc, the gnu compiler collection (shipped with distro): gcc-3.3
160 or newer is required.
161 - gnu make (shipped with disto, might be called gmake)
162 - bash
163 - openssl (needed by server, client): usually shipped with
164 distro, but you might have to install the "development package"
165 (called libssl-dev on debian systems) as well:
166 http://www.openssl.org/
167 - software mixing, e.g. ALSA and the direct mixing plugin (dmix)
168
169 The mp3 decoder of para_filter is based on libmad: If you prefer to
170 use the libmad package provided by your distributor, make sure to
171 install the corresponding development package as well. Otherwise,
172 just download libmad from http://www.underbit.com/products/mad/
173
174 For ogg vorbis streams you'll need libogg, libvorbis, libvorbisfile,
175 The corresponding Debian packages are called libogg-dev libvorbis-dev,
176 other distributors chose similar names. All of these are also
177 available at http://www.xiph.org/downloads/
178
179 For aac files (m4a) you'll need libfaad. Get it at
180 http://www.audiocoding.com/modules/wiki/?page=AAC
181
182 If you intend to use the optional ortp streamer, you'll need libortp:
183 http://www.linphone.org/ortp/
184
185 -------
186 LICENSE
187 -------
188
189 Distribution of paraslash is covered by the GNU GPL. See file COPYING.
190
191 ----------
192 THE AUTHOR
193 ----------
194
195 Andre Noll <maan@systemlinux.org>
196 Comments and bug reports are welcome.