para_play -> para_write documentation update
[paraslash.git] / README
1 Paraslash README
2 ================
3 Paraslash is an acronym for
4
5 Play, archive, rate and stream large audio sets happily
6
7 It contains the following programs:
8
9 - para_server (obligatory):
10
11 This server listens on a tcp port and accepts commands such as
12 play, stop, pause, next from authenticated clients.
13
14 For audio streaming, at least one of the three supported senders
15 of para_server must be activated:
16
17 The http sender is recommended for public streams that can
18 be played by any player like mpg123, xmms, winamp...
19
20 The dccp sender is experimental and requires kernel support
21 for the rather new datagram congestion control protocol.
22
23 The ortp sender is recommended for LAN streaming and for
24 private streams that require authentication.
25
26 It is possible to activate more than one sender simultaneously.
27 All senders have the same set of commands that allow to
28 control the access permissions of the stream.
29
30 para_server needs an "audio file selector" to work, mainly
31 to determine which song to stream next. There are three
32 selectors available: random, playlist and mysql. The former
33 chooses audio files randomly and playlist can handle, well,
34 playlists. Both are always supported.
35
36 The optional mysql selector connects to a mysql server which
37 holds information on your audio files. It has several unusual
38 features, see README.mysql for details.
39
40 - para_client (obligatory):
41
42 The client program to connect to para_server.
43
44 - para_recv (optional)
45
46 A command line http/dccp/rtp stream grabber.
47
48 - para_filter (optional)
49
50 A filter program that converts from stdin and writes to
51 stdout. This one is independent from the rest of paraslash,
52 so it might be useful also for different purposes.
53
54 para_filter combines an mp3 decoder an oggvorbis decoder
55 and a volume normalzer. New filters can be added easily due
56 to the modular design. If more than one filter is specified,
57 the given filters are 'piped' together in-memory, i.e. without
58 calling any of the read(2)/write(2)/select(2) etc. functions.
59
60 - para_write (obligatory)
61
62 A modular audio stream writer. It supports a simple file
63 writer output plugin and an optional wav/raw player for alsa.
64 Debian package: libasound2-dev
65
66 - para_audiod (optional, but recommended):
67
68 The local daemon that collects information from para_server. It
69 starts an appropriate receiver, filter and player as soon
70 as para_server announces the availability (and the type) of
71 an audio stream. para_audiod listens on a local socket and
72 sends status information about para_server and para_audiod
73 to local clients on request.
74
75 - para_audioc (optional, but recommended)
76
77 The client program which talks with para_audiod. Used to
78 control para_audiod, to receive status info, or to grab the
79 stream at any point in the filter chain.
80
81 para_audioc (hence para_audiod) is needed by para_gui,
82 para_sdl_gui and para_krell, see below.
83
84 - para_gui (optional):
85
86 Themable ncurses-based gui. It calls para_audioc and presents
87 the obtained information in an ncurses window. para_gui
88 provides key-bindings for the most common commands and new
89 key-bindings can be added easily.
90
91 - para_sdl_gui (optional):
92
93 SDL-based gui. Similar to para_gui but presents its output
94 in an X window (fullscreen mode is also available) and can
95 display jpg images on a per song basis. para_sdl_gui provides
96 an input prompt to enter arbitrary commands. However, it
97 can also be used non-interactively (e.g. as a screen saver)
98 via the -i switch.
99
100 - para_krell (optional, only useful in conjunction with the mysql selector):
101
102 A plugin for gkrellm which shows small pictures of the
103 current song. It allows you to launch 27 different commands
104 by clicking in different areas of its picture (9 small squares
105 x 3 mouse buttons).
106
107 - para_fade (optional):
108
109 A (Linux-only) alarm clock and volume-fader.
110
111 - para_dbadm (optional, only useful in conjunction with the mysql selector):
112
113 Very simple curses-based frontend which uses libmenu. Useful
114 for quickly changing the attributes of the current song
115 (e.g. from para_gui as an external command).
116
117 - para_slider (optional, only useful in conjunction with the mysql selector):
118
119 A small X application which shows a scrollbar for each
120 attribute defined in the mysql database. It creates a stream
121 definition from the values of the scrollbars. This allows
122 to smoothly change the mood of the given stream without any
123 file editing.
124
125 - bash_completion (optional):
126
127 A small bash script for inclusion in ~/.bashrc. It gives you
128 command line completion for some paraslash commands.
129
130 REQUIREMENTS:
131 ~~~~~~~~~~~~~
132 In any case you need
133
134 - gcc, the gnu compiler collection (shipped with distro): gcc-3
135 or newer is prefered, but gcc-2.95 is still supported. Note
136 that gcc-2.95 may spit out many warnings like unused function
137 parameters and missing initializers. These are all harmless
138 and may be ignored.
139
140 - openssl (needed by server, client): usually shipped with
141 distro, but you might have to install the "development"
142 package as well
143
144 http://www.openssl.org/
145
146 - software mixing, e.g. ALSA and the direct mixing plugin (dmix)
147
148 If you want to use the mysql-based audio file selector, you also need
149
150 - mysql-server
151 - mysql-client
152 - libmysqlclient
153
154 These are usually shipped with the distro but probably not installed
155 by default.
156
157 The mp3 decoder of para_filter is based on libmad:
158
159 http://www.underbit.com/products/mad/
160
161 If you prefer to use the libmad package provided by your distributor,
162 make sure to install the corresponding development package as well.
163
164 If you want to stream ogg vorbis files you'll need:
165
166 - libogg, libvorbis, libvorbisfile, and a command line ogg vorbis
167 decoder, e.g. para_filter or ogg123.
168
169 http://www.xiph.org/downloads/
170
171 Debian packages: libogg-dev libvorbis-dev
172
173 Note that para_audiod still works even if neither mp3 nor ogg support
174 was compiled in. You'll have to use the --no_default_filters option
175 in this case (and e.g. "mpg123 -" as the stream write command).
176
177 If you intend to use the optional ortp streamer:
178
179 - libortp
180
181 http://www.linphone.org/ortp/
182
183
184 For the optional SDL-based gui, the following packages must be installed:
185
186 - X (usually shipped with distro)
187
188 http://www.x.org/
189
190 - libSDL (usually shipped with distro)
191
192 http://www.libsdl.org/index.php
193
194 - SDL_image
195
196 http://www.libsdl.org/projects/SDL_image/
197
198 For para_slider, the zero memory widget library is neccessary. Get it at
199
200 http://www710.univ-lyon1.fr/~exco/ZMW/
201
202 Finally, para_krell needs
203
204 - gtk2
205
206 http://www.gtk.org/
207
208 - gkrellm2
209
210 http://members.dslextreme.com/users/billw/gkrellm/gkrellm.html
211
212 LICENSE:
213 ~~~~~~~~
214 Distribution of paraslash is covered by the GNU GPL. See file COPYING.
215
216 LIMITATIONS:
217 ~~~~~~~~~~~~
218 The mysql selector assumes that the basenames of your audio files are
219 unique. If this is not the case, don't use this selector, rename your
220 files, or create your own one.
221
222 THE AUTHOR:
223 ~~~~~~~~~~~
224 Author: Andre Noll <maan@systemlinux.org>
225 Comments and bug reports are welcome.