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