Revamp status item handling.
[paraslash.git] / README
diff --git a/README b/README
index ef07eed..6cf34f2 100644 (file)
--- a/README
+++ b/README
@@ -8,55 +8,62 @@ _Play, archive, rate and stream large audio sets happily_
 
 It contains the following programs:
 
------------------------
-para_server (obligatory)
------------------------
+-----------
+para_server
+-----------
 
 para_server streams binary audio data (mp3/oggvorbis/m4a files)
 over local and/or remote networks. It listens on a tcp port and
 accepts commands such as play, stop, pause, next from authenticated
 clients. However, there are many more commands.
 
-It supports three builtin network streaming methods (senders): http, dccp,
-or rtp.
+It supports three built-in network streaming methods (senders): http, dccp,
+or udp.
 
        * The http sender is recommended for public streams that can be played
          by any player like mpg123, xmms, itunes, winamp...
 
-       * The dccp sender is experimental and requires kernel support for the
-         rather new datagram congestion control protocol.
+       * The dccp sender requires kernel support for the datagram congestion
+         control protocol.
 
-       * The ortp sender is recommended for multicast LAN streaming
+       * The udp sender is recommended for multicast LAN streaming.
 
 It is possible to activate more than one sender simultaneously.
 
-para_server needs an audio file selector to work, mainly to determine
-which audio file to stream next. The following three selectors are
-built in:
+The built-in audio file selector of paraslash is used to manage your
+audio files. It maintains statistics on the usage of all available audio
+files such as last played time, and the number of times each file was
+selected.
 
-       * The random selector chooses audio files out of a given directory
-         by random
+Its features include
 
-       * The playlist selector chooses files from a specified playlist
+       * attributes. Allow fine-grained audio file selection.
 
-       * The (optional) mysql selector is more involved.  It connects
-         to a mysql server which holds information on your audio files
-         and maintains statistics on the available audio files. Audio
-         file selection works by sending a user-defined sql-query
-         to the mysql server. This allows rather sophisticated
-         configurations and is explained in detail in README.mysql.
+       * image table. For storing e.g. album cover art.
 
-It is possible to switch between all supported selectors at any time.
+       * lyrics table. For storing lyrics.
+
+       * playlist table. Stores arbitrary many playlists for later use.
+
+       * mood mode. Audio file selection works by specifying mood
+         methods involving attributes, pattern matching for file names
+         and more. This allows rather sophisticated configurations
+         and is explained in more detail in
+<<
+<a href="README.afs.html"> README.afs </a>
+>>
+
+       * rename detection. If files are moved or renamed, afs will
+         recognize them despite of this change.
 
 Despite of all these features, paraslash is lightweight. The
 stripped binary of para_server with all its features compiled in
-(mysql/random/playlist selector, mp3/ogg/aac support, http/dccp/ortp
-support) is about 120K on i386 under Linux. para_audiod (see below)
-is even smaller.
+mp3/ogg/aac support, http/dccp/udp support) is about 160K on i386
+under Linux. para_audiod (see below) is even smaller.
 
-------------------------
-para_client (obligatory)
-------------------------
+-----------
+para_client
+-----------
 
 The client program to connect to para_server.  paraslash commands
 are sent to para_server and the response is dumped to stdout. This
@@ -65,182 +72,107 @@ little programming effort.
 
 All connections between para_server and para_client are encrypted by
 default.  For each user of paraslash you must create a public/secret
-key pair for authentication. The (authenticated) connection is encrypted
-with a symmetric rc4 session key.
+RSA key pair for authentication. The authenticated connection is
+encrypted with a symmetric rc4 session key.
 
---------------------
-para_recv (optional)
---------------------
+---------
+para_recv
+---------
 
-A command line http/dccp/rtp stream grabber. The http mode of this tool
-can be used to receive date from any http streaming source.
+A command line http/dccp/udp stream grabber. The http mode of this
+tool can be used to receive data from any http streaming source.
 
-----------------------
-para_filter (optional)
-----------------------
+-----------
+para_filter
+-----------
 
-A filter program that converts from stdin and writes to stdout. It
-is completely independent from the rest of paraslash, so it might be
-useful also for different purposes.
+A filter program that converts from stdin and writes to stdout.
 
 para_filter combines several decoders (mp3, oggvorbis, aac) and a
-volume normalizer New filters can be added easily due to the modular
-design. If more than one filter is specified, the given filters
-are 'piped' together in-memory, i.e. without calling any of the
-read(2)/write(2)/select(2) etc. functions.
+volume normalizer. New filters can be added easily. It is possible
+to "chain" any number of filters, like UNIX pipes.
+
+para_filter does not depend on other parts of paraslash, so it can
+be used as a stand-alone command line tool for audio decoding and
+volume normalization.
 
------------------------
-para_write (obligatory)
------------------------
+--------
+para_afh
+--------
+
+A small stand-alone program that prints tech info about the given
+audio file to stdout. It can be instructed to print a "chunk table",
+an array of offsets within the audio file or to write the content of
+the audio file in complete chunks 'just in time'.
+
+This allows third-party streaming software that is unaware of
+the particular audio format to send complete frames in real
+time. Currently, mp3, ogg vorbis and aac are supported.
+
+----------
+para_write
+----------
 
 A modular audio stream writer. It supports a simple file writer
-output plug-in and optional wav/raw players for alsa (linux-only,
-Debian package: libasound2-dev) and Mac OS. para_write can also be
-used as a stand-alone wav or raw audio player.
+output plug-in and optional wav/raw players for ALSA (Linux) and for
+coreaudio (Mac OS). para_write can also be used as a stand-alone wav
+or raw audio player.
 
----------------------------------------
-para_audiod (optional, but recommended)
----------------------------------------
+-----------
+para_audiod
+-----------
 
 The local daemon that collects information from para_server.
 
-It runs on the client side and connects to para_server. The audio stream is
-read from the network and sent through any of paraslash's filters (decoder,
-volume normalizer). The resulting stream is written to an output plug-in
-(writer), e.g. the alsa writer on linux systems. It is possible to capture the
-stream at any position in the filter chain.
+It runs on the client side and connects to para_server.  As soon as
+para_server announces the availability of an audio stream, para_audiod
+starts an appropriate receiver, any number of filters and a paraslash
+writer to play the stream. It is possible to capture the stream at
+any position in the filter chain.
 
-para_audiod starts an appropriate receiver, filter and player as soon as
-para_server announces the availability (and the type) of an audio stream.
-Moreover, it listens on a local socket and sends status information about
-para_server and para_audiod to local clients on request.
+Moreover, para_audiod listens on a local socket and sends status
+information about para_server and para_audiod to local clients on
+request. Access via this local socket may be restricted by using Unix
+socket credentials, if available.
 
---------------------------------------
-para_audioc (optional, but recommended)
---------------------------------------
+-----------
+para_audioc
+-----------
 
-The client program which talks with para_audiod. Used to control
+The client program which talks to para_audiod. Used to control
 para_audiod, to receive status info, or to grab the stream at any
 point in the filter chain.
 
-para_audioc (hence para_audiod) is needed by para_gui, para_sdl_gui
-and para_krell, see below.
+para_audioc (hence para_audiod) is needed by para_gui see below.
 
--------------------
-para_gui (optional)
--------------------
+--------
+para_gui
+--------
 
 Themable ncurses-based gui. It calls para_audioc and presents
 the obtained information in an ncurses window. para_gui provides
 key-bindings for the most common commands and new key-bindings can
 be added easily.
 
------------------------
-para_sdl_gui (optional)
------------------------
-
-SDL-based gui. Similar to para_gui but presents its output in an X
-window (fullscreen mode is also available) and can display jpg images
-on a per song basis. para_sdl_gui provides an input prompt to enter
-arbitrary commands. However, it can also be used non-interactively
-(e.g. as a screen saver) via the -i switch.
-
--------------------------------------------------------------------------
-para_krell (optional, only useful in conjunction with the mysql selector)
--------------------------------------------------------------------------
-
-A plugin for gkrellm which shows small pictures of the current song. It
-allows you to launch 27 different commands by clicking in different
-areas of its picture (9 small squares x 3 mouse buttons).
-
---------------------
-para_fade (optional)
---------------------
-
-A (Linux-only) alarm clock and volume-fader.
-
--------------------------------------------------------------------------
-para_dbadm (optional, only useful in conjunction with the mysql selector)
--------------------------------------------------------------------------
-
-Very simple curses-based frontend which uses libmenu. Useful for
-quickly changing the attributes of the current song (e.g. from para_gui
-as an external command).
+---------
+para_fade
+---------
 
---------------------------------------------------------------------------
-para_slider (optional, only useful in conjunction with the mysql selector)
---------------------------------------------------------------------------
+A (oss-only) alarm clock and volume-fader.
 
-A small X application which shows a scrollbar for each attribute
-defined in the mysql database. It creates a stream definition from
-the values of the scrollbars. This allows to smoothly change the mood
-of the given stream without any file editing.
-
---------------------------
-bash_completion (optional)
---------------------------
+---------------
+bash_completion
+---------------
 
 A small bash script for inclusion in ~/.bashrc. It gives you command
 line completion for some paraslash commands.
 
-------------
-Requirements
-------------
-
-In any case you need
-
-       - gcc, the gnu compiler collection (shipped with distro): gcc-3.3
-         or newer is required.
-       - openssl (needed by server, client): usually shipped with
-         distro, but you might have to install the "development package"
-         (called libssl-dev on debian systems) as well:
-         http://www.openssl.org/
-       - software mixing, e.g. ALSA and the direct mixing plugin (dmix)
-
-If you want to use the mysql-based audio file selector, you also need
-
-       - mysql-server
-       - mysql-client
-       - libmysqlclient
-
-These are usually shipped with the distro but probably not installed
-by default.
-
-The mp3 decoder of para_filter is based on libmad: If you prefer to
-use the libmad package provided by your distributor, make sure to
-install the corresponding development package as well.  Otherwise,
-just download libmad from http://www.underbit.com/products/mad/
-
-For ogg vorbis streams you'll need libogg, libvorbis, libvorbisfile,
-The corresponding Debian packages are called libogg-dev libvorbis-dev,
-other distributors chose similar names.  All of these are also
-available at http://www.xiph.org/downloads/
-
-For aac files (m4a) you'll need libfaad. Get it at
-http://www.audiocoding.com/modules/wiki/?page=AAC
-
-If you intend to use the optional ortp streamer, you'll need libortp:
-http://www.linphone.org/ortp/
-
-For the optional SDL-based gui, the following packages must be installed:
-
-       - X (usually shipped with distro): http://www.x.org/
-       - libSDL (usually shipped with distro): http://www.libsdl.org/index.php
-       - SDL_image: http://www.libsdl.org/projects/SDL_image/
-
-For para_slider, the zero memory widget library is neccessary:
-http://www710.univ-lyon1.fr/~exco/ZMW/
-
-Finally, para_krell needs
-
-       - gtk2: http://www.gtk.org/
-       - gkrellm2: http://members.dslextreme.com/users/billw/gkrellm/gkrellm.html
-
 -------
 LICENSE
 -------
 
-Distribution of paraslash is covered by the GNU GPL. See file COPYING.
+Distribution of paraslash is covered by the GNU GPL, version 2. See file
+COPYING.
 
 ----------
 THE AUTHOR