README ====== ---- Paraslash is an acronym for _Play, archive, rate and stream large audio sets happily_ It contains the following programs: ----------------------- para_server (obligatory) ----------------------- 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. 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 dccp sender is experimental and requires kernel support for the rather new datagram congestion control protocol. The ortp sender is recommended for LAN streaming and for private streams that require authentication. It is possible to activate more than one sender simultaneously. 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. 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. ------------------------ para_client (obligatory) ----------------------- The client program to connect to para_server. ------------------- para_recv (optional) ------------------- A command line http/dccp/rtp stream grabber. --------------------- para_filter (optional) --------------------- 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_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. ---------------------- para_write (obligatory) ---------------------- A modular audio stream writer. It supports a simple file writer output plugin and optional wav/raw players for alsa (linux-only, Debian package: libasound2-dev) and Mac OS. --------------------------------------- para_audiod (optional, but recommended) --------------------------------------- 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) -------------------------------------- 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_audioc (hence para_audiod) is needed by para_gui, para_sdl_gui and para_krell, see below. ------------------- para_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. ----------------------- 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_slider (optional, only useful in conjunction with the mysql selector) -------------------------------------------------------------------------- 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) -------------------------- 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. ---------- THE AUTHOR ---------- Andre Noll Comments and bug reports are welcome.