Paraslash 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 listens on a tcp port and accepts commands such as play, stop, pause, next. However, there are many more commands. For audio streaming, at least one sender must be activated. At the moment, paraslash contains two internal senders: 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. 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. para_server needs a "database tool" to work, mainly to determine which song to stream next. There are three such tools available: random, plm and mysql. The former chooses audio files randomly and plm, the playlist manager, can handle playlists. Both are always supported. The (optional) 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_client (obligatory): The client program to connect to para_server. - para_recv (optional) A command line http/ortp stream grabber. - para_filter (optional) 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 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. - para_play (optional) A small wav/raw player for alsa. - para_audiod (optional, but recommended): The local daemon that starts playback and collects information from para_server to be forwarded to local clients. 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. - 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. - para_gui (optional, but recommended): 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 dbtool): 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 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). - para_slider (optional, only useful in conjunction with the mysql dbtool): 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 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. - openssl (needed by server, client): usually shipped with 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 - 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: 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/ 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). If you intend to use the optional ortp streamer: - 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. Get it at 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. 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: ~~~~~~~~~~~ Author: Andre Noll Comments and bug reports are welcome.