Don't compute attributes string twice.
[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
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.
37
38 Its features include
39
40         * attributes: Allow fine-grained audio file selection.
41
42         * image table. For storage of e.g. album cover art.
43
44         * lyrics table. For storage of lyrics.
45
46         * playlist table. Stores arbitrary many playlists.
47
48         * mood mode. Audio file selection works by specifying mood
49           methods involving attributes, pattern matching for file names
50           and more.  This allows rather sophisticated configurations
51           and is explained in more detail in INSTALL.
52
53         * rename detection. If files are moved or renamed, afs will
54           recognioze them despite of this change.
55
56 Despite of all these features, paraslash is lightweight. The
57 stripped binary of para_server with all its features compiled in
58 mp3/ogg/aac support, http/dccp/ortp support) is about 150K on i386
59 under Linux. para_audiod (see below) is even smaller.
60
61 -----------
62 para_client
63 -----------
64
65 The client program to connect to para_server.  paraslash commands
66 are sent to para_server and the response is dumped to stdout. This
67 can be used by any scripting language to produce user interfaces with
68 little programming effort.
69
70 All connections between para_server and para_client are encrypted by
71 default.  For each user of paraslash you must create a public/secret
72 key pair for authentication. The (authenticated) connection is encrypted
73 with a symmetric rc4 session key.
74
75 ---------
76 para_recv
77 ---------
78
79 A command line http/dccp/rtp stream grabber. The http mode of this tool
80 can be used to receive date from any http streaming source.
81
82 -----------
83 para_filter
84 -----------
85
86 A filter program that converts from stdin and writes to stdout. It
87 is completely independent from the rest of paraslash, so it might be
88 useful also for different purposes.
89
90 para_filter combines several decoders (mp3, oggvorbis, aac) and a
91 volume normalizer New filters can be added easily due to the modular
92 design. If more than one filter is specified, the given filters
93 are 'piped' together in-memory, i.e. without calling any of the
94 read(2)/write(2)/select(2) etc. functions.
95
96 ----------
97 para_write
98 ----------
99
100 A modular audio stream writer. It supports a simple file writer
101 output plug-in and optional wav/raw players for alsa (linux-only,
102 Debian package: libasound2-dev) and Mac OS. para_write can also be
103 used as a stand-alone wav or raw audio player.
104
105 -----------
106 para_audiod
107 -----------
108
109 The local daemon that collects information from para_server.
110
111 It runs on the client side and connects to para_server. The audio stream is
112 read from the network and sent through any of paraslash's filters (decoder,
113 volume normalizer). The resulting stream is written to an output plug-in
114 (writer), e.g. the alsa writer on linux systems. It is possible to capture the
115 stream at any position in the filter chain.
116
117 para_audiod starts an appropriate receiver, filter and player as soon as
118 para_server announces the availability (and the type) of an audio stream.
119 Moreover, it listens on a local socket and sends status information about
120 para_server and para_audiod to local clients on request.
121
122 -----------
123 para_audioc
124 -----------
125
126 The client program which talks with para_audiod. Used to control
127 para_audiod, to receive status info, or to grab the stream at any
128 point in the filter chain.
129
130 para_audioc (hence para_audiod) is needed by para_gui, para_sdl_gui
131 and para_krell, see below.
132
133 --------
134 para_gui
135 --------
136
137 Themable ncurses-based gui. It calls para_audioc and presents
138 the obtained information in an ncurses window. para_gui provides
139 key-bindings for the most common commands and new key-bindings can
140 be added easily.
141
142 ---------
143 para_fade
144 ---------
145
146 A (Linux-only) alarm clock and volume-fader.
147
148 ---------------
149 bash_completion
150 ---------------
151
152 A small bash script for inclusion in ~/.bashrc. It gives you command
153 line completion for some paraslash commands.
154
155 -------
156 LICENSE
157 -------
158
159 Distribution of paraslash is covered by the GNU GPL, version 2. See file
160 COPYING.
161
162 ----------
163 THE AUTHOR
164 ----------
165
166 Andre Noll <maan@systemlinux.org>
167 Comments and bug reports are welcome.