ftp.nice.ch/pub/next/unix/network/conferences/radio.1p3.s.tar.gz#/radio

MANIFEST
 
Makefile
 
README
 
broadcast.c
[View broadcast.c] 
broadcast.man
[View broadcast.man] 
libst.h
[View libst.h] 
nielsen.py
 
patchlevel.h
[View patchlevel.h] 
radio.c
[View radio.c] 
radio.man
[View radio.man] 
sndulaw.c
[View sndulaw.c] 
socklib.c
[View socklib.c] 
ulawtools/
 

README

Welcome to the wonderful world of Local Area Network radio!
===========================================================

This is Radio version 1, patchlevel 3.

If you have a local area network full of workstations with audio
capabilities and at least one FM/AM radio or other audio source, you
can broadcast the audio over the network, and let other users listen
to it.

This software works for Sun Sparcs running SunOS 4.0 or 4.1, for SGI
Indigo or 4D/35 workstations running SGI IRIX 4.0 or 3.3.2, and for
NeXT workstations (running version 2.1).  At CWI, it has been in use
continuously on a mix of Sun and SGI system types for the past few
months; it was quickly tested on a NeXT.

Man pages for "radio" and "broadcast" are provided.

The implementation continuously transmits UDP broadcast packets of
1400 bytes each (less than six per second), which contain the data in
U-LAW format (8000 samples/second, 1 byte/sample, logarithmically
encoded).  On a typical ethernet, this uses about 1 percent of the net
available bandwith.  Some loss of UDP packets is tolerated by the
receiving program (this is heard as short interruptions of the sound).

It is possible to use multiple transmission stations (each identified
by a different UDP port), and to transmit to multiple connected
subnets simultaneously (as long as the gateways let UDP broadcast
packets through).

This software is copyrighted.  See the notice at the end of this file.


Building and installing
-----------------------

For SunOS, type "make sun"; for SGI IRIX, type "make sgi".  For the
NeXT, type "make next".  This should produce two binaries, "radio" and
"broadcast", and for the NeXT, a third, "sndulaw".  Read the Makefile
for details -- it's pretty trivial.

For SunOS 4.1, you may try "make sun4.1" instead, assuming your audio
library is in /usr/demo/SOUND.  Edit the Makefile if necessary to
accomodate other locations.

For SGI IRIX, you also need to build the "recordulaw" program in
the subdirectory "ulawtools".  This uses the IRIX audio library to
sample the audio input and convert it to U-LAW format.  The audio
library is available on IRIS 4.0 and on IRIS 3.3.2 or higher.

Install the "radio" program on a convenient public place (where
potential listeners can find it, e.g., /usr/local); install
"broadcast" on a convenient place for yourself (assuming you're the
one doing transmissions).  The "recordulaw" or "sndulaw" programs, if
needed, should be installed together with "broadcast".


Usage -- transmissions
----------------------

To start transmissions on Sun Sparcs, run this command (probably in
the background, once you've debugged your audio setup):

	broadcast -p port </dev/audio

You must connect a mono audio source to the machine using a standard
cable provided by Sun.  Control the input gain with [x_]gaintool
(e.g., /usr/demo/SOUND/x_gaintool).


This command start transmissions on SGI IRIX:

	recordulaw | broadcast -p port

Connect a stereo audio source to the machine using a standard walkman
jack.  If you're using an early 4D/35, check that you have audio
hardware and software installed -- the output from hinv will tell you
this.


On the NeXT you start transmissions as follows:

	sndulaw | broadcast -p port

This takes input from the microphone; you may also connect an audio
source to the microphone input (probably needs some attenuation to get
the impedance right).


By default this broadcasts on the local ethernet.  You can specify one
or more -b options to broadcast, passing it explicit IP broadcast
addresses (last byte 0 or 255, depending on local convention).  You can
specify your local IP net or another net; the latter only works if
your gateways pass UDP broadcasts through (at CWI it works).

Note: each transmitter must choose a unique port number.  The default
is 54321; other suitable ports are 54322, 54323, and so on.


Usage -- reception
------------------

To listen to transmissions on either system:

	radio -p port

This sends the data directly to the audio output device (speaker or
headphones).  It is also possible to get the ULAW audio data on
standard output with the -f option ("filter").

The -v option sets the output volume (on a scale from 0 to 100).  To
change the volume later on a Sun Sparc, use [x_]gaintool (at CWI:
/usr/demo/SOUND/x_gaintool).  On an SGI, use "apanel".


Bells 'n whistles
-----------------

Jack Jansen <jack@cwi.nl> maintains several versions of a "tuner"
program that can be used to control the port that "radio" listens to,
default 54320 (changeable with the -c option).  Note that this allows
anybody on the world to control your radio, in principle.  If you
don't want this, you can pass the -s flag (secure), which turns off
the control port altogether.  By convention, the tuner program assumes
that every user who performs transmissions has two files "CD" and
"CDlog" in their home directory giving program information (this is
actually a bad idea, since it requires that the listener and the
broadcaster share the same file name space for user's home
directories, but it saves a lot of complication in the broadcast
program).

The tuner programs aren't distributed, since they are written in
Python, an experimental prototyping language that I developed.  Free
source for a Python interpreter can be obtained by writing me at the
address below.  An version is also available by anonymous ftp from
various file servers, e.g., wuarchive.wustl.edu (in the US),
mcsun.eu.net and ftp.cwi.nl (in the Netherlands).


The Python program "nielsen.py" implements a rudimentary way of
finding out who's listening to what.


Author
------

The author of this software is:

Guido van Rossum
CWI, dept. CST
Kruislaan 413
1098 SJ  Amsterdam
The Netherlands

E-mail (Internet)  :  Guido.van.Rossum@cwi.nl (guido@cwi.nl)
E-mail (X.400)     :  G=Guido;S=van.Rossum;O=cwi;PRMD=surf;ADMD=400net;C=nl

The "libst" U-LAW conversion library is written and copyrighted by Jef
Poskanzer.

If you port this software to other systems, I'd like to hear from you.


Acknowledgements
----------------

I would like the following contributors for pieces of code and/or
documentation:

Toerless Eckert for the -n, -l, -r and -t options

Paul Friedman for the -v option

Axel Belinfante for starting the man pages

Reimer A. Mellin for the NeXT port


Copyright notice
----------------

Copyright 1991 by Stichting Mathematisch Centrum, Amsterdam, The
Netherlands.

                        All Rights Reserved

Permission to use, copy, modify, and distribute this software and its 
documentation for any purpose and without fee is hereby granted, 
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in 
supporting documentation, and that the names of Stichting Mathematisch
Centrum or CWI not be used in advertising or publicity pertaining to
distribution of the software without specific, written prior permission.

STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.