NAME | SYNOPSIS | DISCLAIMER | OVERVIEW | INSTALLATION | NETWORK IMPLEMENTATION | CONFERENCING | DESCRIPTION | ERRORS | FILES | SEE ALSO | NOTES
radio [ -h host ] [ -s service ] [ generic-tool-arguments ]
This program is furnished on an AS IS basis as a demonstration of audio applications programming.
Radio Free Ethernet (RFE) is a network audio broadcasting system. It consists of programs and tools that allow packets of audio data to be transmitted around a network. The system is best understood by using the analogy of traditional radio broadcasting.
A radio station takes audio data from a variety of sources (e.g., CDs, tapes, a microphone in front of a disc jockey, the telephone, etc.) and broadcasts it in the atmosphere. Similarly, a workstation may take audio data from an audio file or input device (e.g., a microphone or CD plugged into the audio cable of a workstation) and broadcast it over the local area network. Each such workstation becomes a radio station, and must broadcast on a distinct 'frequency' in order to be differentiated from other active radio stations.
Individual radios function as receivers for radio broadcasts. To listen to a radio station, you must tune your radio to its frequency. At that point, the broadcast data is converted to an audio signal and may be played through a speaker. In the same fashion, a workstation may scan the network for RFE broadcasts and 'tune in' a particular station by routing its audio data to the audio output device (e.g., the speaker). Multiple stations may broadcast on the same network; it is up to the receiver program to select the radio station of interest and discard any other broadcast data.
As with conventional radios, a receiver may be requested to scan the network and tune in to the next detected radio station. One of the advantages of the computer implementation is the ability to display a list of all the active radio stations and allow the user to select from among them.
In traditional radio, a regulation agency allocates broadcast frequencies, and associates a station identification name with each frequency. In Radio Free Ethernet, the broadcast frequency is directly derived from the station call letters; that is, the ASCII code for a four-character station name becomes a 32-bit broadcast frequency. Each network radio packet contains a 12-byte header that identifies the frequency, packet type, sequence number, and the low order 3 bytes of the broadcaster's network id. This information is used to differentiate radio broadcasts and to detect multiple stations (workstations) that may be broadcasting on the same frequency (call letters). At the network level, each packet also contains a port number corresponding to the Radio Free Ethernet port. Ordinarily, this port is identified by looking up the service named radio in the NIS services map.
In addition to its audio data packets, each station transmits a Station Identification packet once every five seconds. This packet contains detailed information about the station and disc-jockey (i.e., the host and user ids). Station Identification is also used to recognize stations that are On-The-Air, but are not currently broadcasting audio data.
This can occur when a transmitter detects silent audio input and squelches it (see radio_xmit(6)). For instance, if a user is broadcasting from a microphone, the station may be squelched when the microphone is switched off.
When a radio station goes Off-The-Air, it broadcasts a final sign-off message to alert the receiver programs that broadcasting has ceased.
One of the pitfalls of the radio analogy is that users seem to expect that they can always tune in some radio station when they start up a receiver program. Do not be deceived. If nobody is broadcasting, there are no stations to tune in. As with radio in the early 20th century, the usefulness of the radio is only as good as the quantity (and quality) of broadcasters.
Another common mistake is to assume that traditional radio broadcasts will somehow be available on the network. Keep in mind that the transmitter only broadcasts data from its audio input source. If you connect the line-level or headphone output of a radio to the workstation audio input, then in fact you can broadcast traditional radio over the network. (Interestingly, the 8khz data rate provides roughly the same audio quality as AM radio.) But if you connect no audio input source, then you will not broadcast anything.
In order for Radio Free Ethernet to function properly, the following entry should be present in the NIS services map:
radio 5002/udp # Radio Free Ethernet |
This entry specifies the port number that is used to identify RFE broadcast data. If this entry is not present, the port number may be specified as a command-line option.
Radio Free Ethernet can be configured to broadcast data either in UDP Broadcast packets or using IP Multicasting. These techniques differ in subtle but important ways.
UDP Broadcast packets are broadcast only within the local subnetwork. Network gateway routers do not forward these packets to other networks. When a UDP Broadcast packet is issued, every machine on the subnet receives the packet and discards it, unless a program is specifically registered to listen for that particular packet type. Though the overhead of processing such packets is small, it is normally considered unfriendly to issue many UDP Broadcast packets on a network (RFE normally broadcasts approximately eight packets per second, each containing around 1000 bytes). UDP Broadcast is available for the time being only because older versions of the operating system do not support IP Multicast.
IP Multicasting is an improvement over broadcast techniques. By sending network packets to a particular well-known multicast address, only machines that have registered interest in that address will receive the data (packet filtering is usually performed in the network interface hardware). Some experimental IP routers exist that will forward multicast packets to other networks. Such forwarding is only performed when there is a listener on the destination network, and when the packet itself is identified as forwardable.
In order for Radio Free Ethernet to function properly, the following entry should be present in the NIS hosts map:
RadioFreeEthernet 224.0.3.255 # IP Multicast address |
This entry specifies the base address used for RFE station broadcasts. For more information on how IP Multicasting is used, please refer to the radio_xmit(6) manual page.
The Radio Free Ethernet tools have been designed to provide a limited kind of audio conferencing capability. Since a workstation may broadcast on one frequency while receiving a different one, clever assignment of radio stations can be constructed to implement 2-way conferencing. Multi-party conferencing may be enabled by modifying the radio receiver to sum the audio data from multiple radio stations together, thus achieving a simple audio mix.
radio is the window-based Radio Free Ethernet receiver. It functions as a graphical front-end to the radio_recv(6) program, which it uses to scan the network for active radio stations and to play audio data from the network on the audio device. It also provides six preset buttons, similar to the presets on a car radio, that may be programmed to specific radio station names.
Ordinarily, the program scans for radio stations that are broadcasting to the IP Multicast address identified by the host name RadioFreeEthernet found in the NIS hosts map (stations using UDP Broadcast are also received). The -h host command-line option may be used to specify an alternate host address or name to use for the default IP Multicast address.
The Radio Free Ethernet tools use the port number identified by the service name radio found in the NIS services map. The -s service command-line option may be used to specify an alternate service name or port number to use.
The following sections describe the individual panel controls. In addition, online help is available by positioning the pointer over the item in question and pressing the < HELP > key.
toggles the state of the receiver on and off. Since this involves communicating with a running copy of the radio_recv program, this operation may take a few seconds to complete.
initiates a scan for the next active radio station. By pressing this button repeatedly, you can browse all of the active stations.
brings up a menu of the radio stations that have been detected. Selecting a station from this menu will tune in that station. Station names are enclosed in square brackets if the station is determined to be on-the-air but has not broadcast any data for some time. This can occur when the transmitter squelches silent audio input.
displays the username and hostname of the disc jockey for the current radio station.
establishes a station preset button. It uses the name in the Preset Station item or, if that is blank, the name of the current station. Once a preset is programmed, pressing the button forces the radio tuner to scan for that particular station. Set also causes the current program parameters and presets to be written out to the initialization file.
clears a station preset button. It uses the name in the Preset Station item or, if that is blank, the name of the current station. Clear also causes the current program parameters and presets to be written out to the initialization file.
starts up an Audio Control Panel (see gaintool(6)).
brings up a property sheet for the program that allows various operating parameters to be set. Changes to the tool properties do not take effect until the Apply button is pressed. Apply also causes the current program parameters and presets to be written out to the initialization file. The Reset button on the property sheet restores the controls to their current state.
The following sections describe the property sheet controls:
When this feature is enabled, the radio tuner will scan for a new radio station when no broadcast has been received from the current station for a certain amount of time (specified, in seconds, by a numeric value).
When this feature is enabled, the radio tuner will relinquish the audio output device whenever another process tries to use it. This allows other applications, such as AudioTool, the opportunity to interrupt the playing of a radio station in order to play what is presumed to be more important audio data.
This property sheet item indicates the audio output device that is used to play a radio broadcast.
If radio (or radio_recv) are run more than once on a single workstation, subsequent invocations may display the error message: Radio receiver socket is busy. This is because there may only be one program listening to a particular network port at a time.
gaintool(6), radio_recv(6), radio_xmit(6), xmit(6)
RFC 1256, Network Information Center, SRI International, Menlo Park, Calif., September 1991.
The Radio Free Ethernet tools were inspired by similar programs originally developed by Stephen Uhler and Peter Langston at Bellcore.
NAME | SYNOPSIS | DISCLAIMER | OVERVIEW | INSTALLATION | NETWORK IMPLEMENTATION | CONFERENCING | DESCRIPTION | ERRORS | FILES | SEE ALSO | NOTES