-Paraslash README
-================
+README
+======
+
+----
Paraslash is an acronym for
- Play, archive, rate and stream large audio sets happily
+_Play, archive, rate and stream large audio sets happily_
It contains the following programs:
-- para_server (obligatory):
+-----------------------
+para_server (obligatory)
+-----------------------
- This server listens on a specified tcp port and accepts the
- usual commands such as play, stop, pause, next. However, there
- are many more commands.
+This server supports audio streaming of mp3, ogg vorbis and aac files.
+It listens on a tcp port and accepts commands such as play, stop,
+pause, next from authenticated clients.
- For audio streaming, at least one sender must be activated.
- At the moment, paraslash contains two internal senders:
+The audio stream may be sent over the network by three different
+senders:
- The http sender is recommended for public streams that can
- be played by any player like mpg123, xmms, winamp...
+The http sender is recommended for public streams that can be played
+by any player like mpg123, xmms, winamp...
- The ortp sender is recommended for LAN streaming and for
- private streams that require authentication.
+The dccp sender is experimental and requires kernel support for the
+rather new datagram congestion control protocol.
- It is possible to activate more than one sender simultaneously.
- All senders have the same set of commands that allow to
- control the access permissions of the stream.
+The ortp sender is recommended for LAN streaming and for private
+streams that require authentication.
- para_server needs a database tool to work, mainly to determine
- which song to stream next. There are two database tools
- available: mysql and random. The former is recommended as
- the random database tool is only meant as a fallback and
- as a starting point for people that want to write their own
- database tool for paraslash.
+It is possible to activate more than one sender simultaneously.
- The mysql database tool connects to a mysql server which
- holds information on your audio files. It has several unusual
- features, see README.mysql for details.
+para_server needs an "audio file selector" to work, mainly to determine
+which song to stream next. There are three selectors available:
+random, playlist and mysql. The former chooses audio files randomly
+and playlist can handle, well, playlists. Both are always supported.
-- para_client (obligatory):
+The optional mysql selector connects to a mysql server which holds
+information on your audio files. It has several unusual features,
+see README.mysql for details.
- The client program to connect to para_server.
+------------------------
+para_client (obligatory)
+-----------------------
-- para_recv (optional)
+The client program to connect to para_server.
- A command line http/ortp stream grabber.
+-------------------
+para_recv (optional)
+-------------------
-- para_filter (optional)
+A command line http/dccp/rtp stream grabber.
- An filter program that converts from stdin and writes to
- stdout. This one is independent from the rest of paraslash,
- so it might be useful also for different purposes.
+---------------------
+para_filter (optional)
+---------------------
- para_filter combines an mp3 decoder an oggvorbis decoder
- and a volume normalzer. 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.
+A filter program that converts from stdin and writes to stdout. This
+one is independent from the rest of paraslash, so it might be useful
+also for different purposes.
-- para_play (optional)
+para_filter combines several decoders (mp3, oggvorbis, aac) and a
+volume normalzer. 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.
- A small wav/raw player for alsa.
+----------------------
+para_write (obligatory)
+----------------------
-- para_audiod (optional, but recommended):
+A modular audio stream writer. It supports a simple file writer output
+plugin and an optional wav/raw player for alsa. Debian package:
+libasound2-dev
- The local daemon that starts playback and collects information
- from para_server to be forwarded to local clients.
+---------------------------------------
+para_audiod (optional, but recommended)
+---------------------------------------
- para_audiod reads the audio stream from the network if
- para_server indicates that there is a stream available. It may
- be sent through any of the supported filters (see para_filter
- above) before the result is fed to the output software
- (default: para_play) which must be capable of reading from
- stdin, but is not restricted otherwise.
+The local daemon that collects information from para_server. It
+starts an appropriate receiver, filter and player as soon as
+para_server announces the availability (and the type) of an audio
+stream. para_audiod listens on a local socket and sends status
+information about para_server and para_audiod to local clients
+on request.
-- para_audioc (optional, but recommended)
+--------------------------------------
+para_audioc (optional, but recommended)
+--------------------------------------
- A small client that can talk to para_audiod. Used to control
- para_audiod and to receive status info. It can also be used to
- grab the stream at any point in the filter chain. para_audioc
- is needed by para_gui, para_sdl_gui and para_krell, see below.
+The client program which talks with para_audiod. Used to control
+para_audiod, to receive status info, or to grab the stream at any
+point in the filter chain.
-- para_gui (optional, but recommended):
+para_audioc (hence para_audiod) is needed by para_gui, para_sdl_gui
+and para_krell, see below.
- 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_gui (optional)
+-------------------
-- para_sdl_gui (optional):
+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.
- 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_sdl_gui (optional)
+-----------------------
-- para_krell (optional, only useful in conjunction with the mysql dbtool):
+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.
- 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_krell (optional, only useful in conjunction with the mysql selector)
+-------------------------------------------------------------------------
-- para_fade (optional):
+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).
- A (Linux-only) alarm clock and volume-fader.
+--------------------
+para_fade (optional)
+--------------------
-- para_dbadm (optional, only useful in conjunction with the mysql dbtool):
+A (Linux-only) alarm clock and volume-fader.
- 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_dbadm (optional, only useful in conjunction with the mysql selector)
+-------------------------------------------------------------------------
-- para_slider (optional, only useful in conjunction with the mysql dbtool):
+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).
- 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.
+--------------------------------------------------------------------------
+para_slider (optional, only useful in conjunction with the mysql selector)
+--------------------------------------------------------------------------
-- bash_completion (optional):
+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.
- A small bash script for inclusion in ~/.bashrc. It gives you
- command line completion for some paraslash commands.
+--------------------------
+bash_completion (optional)
+--------------------------
-REQUIREMENTS:
-~~~~~~~~~~~~~
-In any case you need
+A small bash script for inclusion in ~/.bashrc. It gives you command
+line completion for some paraslash commands.
+
+------------
+Requirements
+------------
- - gcc, the gnu compiler collection (shipped with distro): gcc-3
- or newer is prefered, but gcc-2.95 is still supported. Note
- that gcc-2.95 may spit out many warnings like unused function
- parameters and missing initializers. These are all harmless
- and may be ignored.
+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 as well
-
- http://www.openssl.org/
-
+ distro, but you might have to install the "development"
+ package 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 dbtool (recommended), you also need
+If you want to use the mysql-based audio file selector, you also need
- mysql-server
- mysql-client
These are usually shipped with the distro but probably not installed
by default.
-The mp3 decoder of para_filter is based on libmad:
-
- http://www.underbit.com/products/mad/
-
-If you prefer to use the libmad package provided by your distributor,
-make sure to install the corresponding development package as well.
-
-If you want to stream ogg vorbis files you'll need:
-
- - libogg, libvorbis, libvorbisfile, and a command line ogg vorbis
- player, e.g. para_filter or ogg123.
-
- http://www.xiph.org/downloads/
+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/
-Note that para_audiod still works even if neither mp3 nor ogg support
-was compiled in. You'll have to use the --no_default_filters option
-in this case (and e.g. "mpg123 -" as the stream write command).
+For ogg vorbis streams you'll need libogg, libvorbis, libvorbisfile,
+and a command line ogg vorbis decoder, e.g. para_filter or ogg123.
+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/
-If you intend to use the optional ortp streamer:
-
- - libortp
-
- http://www.linphone.org/ortp/
+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
+ - 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/
- - SDL_image
-
- http://www.libsdl.org/projects/SDL_image/
-
-For para_slider, the zero memory widget library is neccessary. Get it at
-
- http://www710.univ-lyon1.fr/~exco/ZMW/
+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
+ - gtk2: http://www.gtk.org/
+ - gkrellm2: http://members.dslextreme.com/users/billw/gkrellm/gkrellm.html
- http://members.dslextreme.com/users/billw/gkrellm/gkrellm.html
+-------
+LICENSE
+-------
-LICENSE:
-~~~~~~~~
Distribution of paraslash is covered by the GNU GPL. See file COPYING.
-LIMITATIONS:
-~~~~~~~~~~~~
-The mysql database tool assumes that the basenames of your audio files
-are unique. If this is not the case, don't use this database tool,
-rename your files, or create your own database tool.
+----------
+THE AUTHOR
+----------
-THE AUTHOR:
-~~~~~~~~~~~
-Author: Andre Noll <maan@systemlinux.org>
+Andre Noll <maan@systemlinux.org>
Comments and bug reports are welcome.