Network Audio System - a portable, network-transparent audio system
The Network Audio System service is a network-transparent system developed at
Network Computing Devices for playing, recording, and manipulating audio data
over a network. It uses the client/server model to separate application code
from the software drivers needed to control specific audio input and output
devices.
The Network Audio System service provides applications with the ability to send
and receive audio data such as voice, sound effects, and music in a network
environment. A audio server inside the desktop terminal or personal computer
controls the various input and output devices in response to messages sent
from client programs running on other hosts.
A variety of utility programs are provided that can be used to play or record
audio using shell scripts or command-line procedures. More ambitious
applications can communicate directly with the audio server using a C-language
programming library.
The Network Audio System service supports a variety of the common formats used
to store sound data. Audio inputs and outputs can run at a any of a range of
sampling rates. The audio server automatically converts all data to the
designed format or rate.
Streams of data from multiple inputs can be mixed together and directed to any
attached output device. Sounds that are used many times can be stored in the
server so that they do not need to be transmitted over the network each time
they are played. Furthermore, inputs can be hooked directly to outputs (for
example, a CD player can be connected to a set of speakers) so that data can
be played without requiring any client intervention or network traffic.
Each audio server has a name that is used by applications in establishing a
connection. The format of the name depends upon the type of network being
used. In TCP/IP environments, audio server names look like:
tcp/
hostname:
portnum
where
hostname is the name or numeric IP address of the desktop machine
to be contacted and
portnum is the port number on which the server is
listening. If the ``tcp/'' prefix is not given, 8000 is automatically added to
portnum so that the audio server name is compatible with the X Window
System display name.
In DECnet environments, audio server names look like:
decnet/
nodename::
num
where
nodename is the name or numeric DECnet address of the desktop
machine to be contacted and
num is the DECnet task AUDIO$
num. If
the ``decnet/'' prefix is omitted, it is automatically added so that the audio
server name is compatible with the X Window System display name.
Most audio utilities accept a command line argument
-audio servername for
specifying the audio server to be contacted.
% auinfo -audio tcp/ncdunit:8000
If no server is specified on the command line, the AUDIOSERVER environment
variable is checked to see if a name has been stored there. Otherwise, the
DISPLAY environment variable used by X Window System applications is checked
and the corresponding audio server is used.
Several sample programs that use the Network Audio System service are provided
by NCD:
- auplay
- This program simply plays the files listed on its command
line. It is typically used from shell scripts, command-line procedures, or
other programs that just need to ``dump'' sound data to the audio
server.
- audemo
- This program allows the user to select and play
pre-recorded sound files or to record new sound files. It provides a
simple control panel for dynamically changing the volume while a sound is
being played and for aborting a sound.
- audial
- This program generates North American telephone touch tones
correspond to a given string. audial can also recognize touch tones
and produce the corresponding string.
- autool
- This program is compatible with the Sun audiotool
program and is typically used to play prerecorded sound files. Unlike
auplay it provides a graphical interface to allow the user to
replay or cancel the data.
- auinfo
- This program lists information describing the capabilities
of an audio server.
- auctl
- This program can be used to change various device
parameters.
- auscope
- This program is an audio protocol filter that can be used
to view the network packets being sent between an application and an audio
server.
- aupanel
- This program provides an X-based window-oriented interface
allowing the user to adjust the attributes of the devices provided by the
Network Audio System service.
- auedit
- This program provides an X-based window-oriented interface
allowing the user to edit audio files.
- auconvert
- This program allows the user to perform various conversion
operations on sound files.
- auphone
- This program provides an X-based window-oriented interface
allowing two-way real time voice communication between two audio
servers.
- aurecord
- This program is used to record audio data from an audio
server into a file.
- auwave
- This program provides an X-based window-oriented interface
demonstrating the use of waveform elements.
The audio programming library and utility programs can be used to read and write
files in any of the following file formats:
- Sun/NeXT
- These files typically have a '.au' or '.snd' extension.
They are usually produced by Sun or NeXT workstations.
- Creative Labs
- These files typically have a '.voc' extension. They are
usually produced by by Soundblaster audio cards on IBM PC compatible
computers.
- Microsoft WAVE
- These files typically have a '.wav' extension. They are
usually produced by IBM PC compatible computers.
- AIFF
-
These files typically have an '.aiff' or '.aif' extension. They are usually
produced by SGI workstations or Apple computers.
- Amiga IFF/8SVX
- These files typically have an '.iff' extension.
Due to the nature of the file formats, only the Sun/NeXT file format can be
piped through standard input and/or standard output. The convention for
specifying standard input or standard output is to use a hyphen
("-") as the file name.
Application developers may create their own audio clients using the Network
Audio System programming library.
The following environment variables are used by Network Audio System programs:
- AUDIOSERVER
- This specifies the name of default audio server to contact
if no name is explicitly given on the command line.
- DISPLAY
- This specifies the name of an X Window System display that
should be assumed to also have a corresponding Network Audio System
server.
auplay(1),
audemo(1),
audial(1),
autool(1),
auinfo(1),
auctl(1),
auscope(1),
aupanel(1),
auedit(1),
auconvert(1),
auphone(1),
aurecord(1),
auwave(1)
Network Audio System Overview and Programmers Guide
The following copyright and permission notice applies to all files in the
Network Audio System application programming libraries and example programs
provided in source form by Network Computing Devices:
Copyright 1993, 1994 Network Computing Devices, Inc.
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, 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 name Network Computing Devices, Inc. not be used in advertising or
publicity pertaining to distribution of this software without specific,
written prior permission.
THIS SOFTWARE IS PROVIDED `AS-IS'. NETWORK COMPUTING DEVICES, INC., DISCLAIMS
ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING WITHOUT LIMITATION ALL
IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
NONINFRINGEMENT. IN NO EVENT SHALL NETWORK COMPUTING DEVICES, INC., BE LIABLE
FOR ANY DAMAGES WHATSOEVER, INCLUDING SPECIAL, INCIDENTAL OR CONSEQUENTIAL
DAMAGES, INCLUDING LOSS OF USE, DATA, OR PROFITS, EVEN IF ADVISED OF THE
POSSIBILITY THEREOF, AND REGARDLESS OF WHETHER IN AN ACTION IN CONTRACT, TORT
OR NEGLIGENCE, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
THIS SOFTWARE.
NCD, NCD Display Station, and NCDware are all trademarks of Network Computing
Devices, Inc.
X Window System is a trademark of the Massachusetts Institute of Technology.
Greg Renda, Jim Fulton, David Lemke