ng.bdti.com!kabir
Subject: comp.dsp FAQ [1 of 3]
Supersedes: <compdsp.1_819421480@bdti.com>
Date: 2 Jan 1996 23:30:18 GMT
Expires: 15 Feb 1996 23:33:56 GMT
Summary: This is a periodic posting to comp.dsp that gives information
        on frequently asked questions asked in this newsgroup.

Archive-name: dsp-faq/part1
Version: 2.3

   
   
   FAQs (Frequently asked questions with answers) on Digital Signal
   Processing
   
   Version date: June 21, 1995
     _________________________________________________________________
   
   
   
   Note: This FAQ is based on material aged one to two years. We have
   made efforts to correct some glaring errors, and have reformatted the
   FAQ a bit. More to come. We would appreciate any suggestions or
   observations. Contact us via e-mail at comp-dsp-faq@bdti.com.
   
   - Phil, FAQ maintainers
     _________________________________________________________________
   

0. What is comp.dsp?

1. General DSP.
1.1 DSP book and article references.
1.2 Where can I get free software for general DSP? 

2. Algorithms and standards.
2.1 Where can I get some algorithms for DSP?
2.2 What are CELP and LPC?  Where can I get source for them?
2.3 What is ADPCM?  Where can I get source for it?
2.4 What is GSM?  Where can I get source for it?
2.5 How does pitch perception work, and how do I implement it?
2.6 What standards exist for digital audio?
                What is AES/EBU? What is S/PDIF?
2.7 What is mu-law encoding?  Where can I get source for it?
2.8 How can I do CD  DAT sample rate conversion?

3. Programmable DSP chips and their software.
3.1 What are some current, popular programmable DSP chips?
3.2 Software for Motorola DSPs.
3.3 Software for Texas Instruments DSPs.
3.4 Software for Analog Devices DSPs.

4. Hardware.
4.1 DSP development boards. 
4.2 Who makes AES/EBU chips? 

5. Operating Systems.

6. List of manufacturers, addresses, and telephone numbers.

7. Summary of FTP sites.

8. Wavelets Information.

People involved...

   
     _________________________________________________________________

   
   
   Q0: What is comp.dsp?
     _________________________________________________________________
   
   
   
   Comp.dsp is a worldwide UseNet news group that is used to discuss
   various aspects of digital signal processing. It is unmoderated,
   though we try to keep the signal to noise ratio up :-). If you need to
   ask a question that isn't in the FAQ, and can't figure out how to
   post, consult news.newusers.questions. Other relevant news groups are
   comp.compression, comp.speech, and sci.image.processing.
     _________________________________________________________________
   
   
   
   Click on dsp_faq.zip or dsp_faq.tar.Z to download a compressed HTML
   version of the FAQ.
   
   Click on dsp_faq.asc.zip or dsp_faq.asc.tar.Z to download a compressed
   ASCII version of the FAQ.
   
   (When you click on these links, your browser should tell you that it
   can't display the files and then ask you if you want to download them
   instead. Say "yes." We're still setting up an anonymous FTP site. This
   is just an interim solution. -- Phil)
   
   It is also available on World Wide Web, which offers a much nicer
   interface. Try: http://www.bdti.com/dsp_faq.htm

Q1.1: Summary of DSP books and significant research articles.

  Q1.1.1: BIBLES OF DSP.

A.V. Oppenheim and R.W. Schafer, "Digital Signal
Processing", Prentice-Hall, Inc., Englewood Cliffs, N.J.,
1975.

A.V. Oppenheim and R.W. Schafer, "Discrete-Time Signal
Processing" Prentice Hall, Englewood Cliffs, New Jersey 07632,
1989. ISBN 0-13-216292-X This is an updated version of the
original, with some old material deleted and lots of new
material added.

L.R. Rabiner & R.W. Schafer, "Digital Processing of Speech
Signals", Prentice Hall, 1978, ISBN 0-13-213603-1.

R. E. Crochiere & L. R. Rabiner, "Multirate Digital Signal
Processing", Prentice-Hall, 1983, ISBN 0136051626.  This book
is the only real reference for filter banks and multirate
systems, as opposed to being a tutorial.

P. P. Vaidyanathan, "Multirate Systems and Filter Banks",
Prentice-Hall.  911 pp.

Thomas Parsons, "Voice and Speech Processing", McGraw-Hill,
1987, ISBN 0-07-048541-0.  Addresses the cocktail party
effect, as well as other material.  [Maurice Givens,
maury@tellabs.com]



  __________________________________________________________________________



Q1.1.2: Adaptive signal processing.


S. Haykin, "Adaptive Filter Theory", 2nd Ed., Prentice
Hall, Englewood Cliffs, NJ, 1991.

B. Widrow and S.D. Stearns, "Adaptive Signal Processing",
Prentice-Hall, Inc., Englewood Cliffs, N.J., 1985.



  __________________________________________________________________________



Q1.1.3: Array signal processing.


J.E. Hudson, "Adaptive Array Principles", IEE London and
New York, Peter Peregrinus Ltd. Stevenage, U.K., and New York,
1981.

R.A. Monzingo and T.W. Miller, "Introduction to Adaptive
Arrays" John Wiley and Sons, New York, 1980.

S. Haykin, J.H. Justice, N.L. Owsley, J.L. Yen, and A.C. Kak
"Array Signal Processing", Prentice-Hall, Inc., Englewood
Cliffs, N.J., 1985.

D. H. Johnson and D. E. Dudgeon, Array Signal Processing, Concepts and
Techniques, Prentice-Hall, 1993

R.T. Compton, Jr., "Adaptive Antennas, Concepts and
Performance", Prentice-Hall, 1988, ISBN 0-13-004151-3.
  __________________________________________________________________________




Q1.1.4: Windowing articles.

 F. J. Harris, "On the Use of Windows for Harmonic
Analysis with the DFT", IEEE Proceedings, January 1978,
pp. 51-83.  Perhaps the classic overview paper for
discrete-time windows.  It discusses some 15 different classes
of windows including their spectral responses and the reasons
for their development.  [Brian Evans, evans@eedsp.gatech.edu]
There are several typos in this paper.  The errors are
corrected by A. H. Nuttall in "Some Windows with Very Good
Sidelobe Behavior," IEEE Trans. on Acoustics, Speech, and
Signal Processing, Vol. ASSP-29, No. 1, February 1981.

Nezih C. Geckinli & Davras Yavuz, "Some Novel Windows and a
Concise Tutorial Comparison of Window Families", IEEE
Transactions on Acoustics, Speech, and Signal Processing,
Vol. ASSP-26, No. 6, December 1978.  [Bob Beauchaine,
bobb@vice.ico.tek.com]

Lineu C. Barbosa, "A Maximum-Energy-Concentration Spectral
Window," IBM J. Res. Develop., Vol. 30, No. 3, May 1986,
p. 321-325.  An elegant method for designing a time-discrete
solution for realization of a spectral window which is ideal
from an energy concentration viewpoint.  This window is one
that concentrates the maximum amount of energy in a specified
bandwidth and hence provides optimal spectral resolution.
Unlike the Kaiser window, this window is a discrete-time
realization having the same objectives as the continuous-time
prolate spheroidal function; at the expense of not having a
closed form solution. [Joe Campbell,
jpcampb@afterlife.ncsc.mil]


  __________________________________________________________________________



Q1.1.5: Digital Audio Effects Processing.


Books (in no particular order, sorry):

 Hal Chamberlin, Musical Applications of Microprocessors,
2nd Ed., Hayden Book Company, 1985.

Barry Blesser and J. Kates. "Digital Processing in Audio
Signals." In A. V.  Oppenheim, ed. Applications of Digital
Signal Processing. Englewood Cliffs, NJ: Prentice-Hall, 1978.

Digital Signal Processing Committee of IEEE Acoustics, Speech,
and Signal Processing Society, ed. Programs for Digital Signal
Processing. New York: IEEE Press, 1979.

John Strawn, ed., "Digital Audio Signal Processing: An
Anthology.", Los Altos, CA: W. Kaufmann, 1985.  [Contains
Moorer J.A. "About This Reverb..."  and contains an article
which gives a code for Phase Vocoder -- great tool for EQ, for
Pitchshifter and more --Juhana Kouhia]

Charles Dodge and Thomas A. Jerse. Computer Music: Synthesis,
Composition, and Performance. New York: Schirmer Books, 1985.

F. Richard Moore, "Elements of Computer Music", Englewood
Cliffs, NJ: Prentice-Hall, 1990.  ISBN: 0-13252-552-6
[Recommended.  --Juhana Kouhia]

Curtis Roads and John Strawn, ed., "The Foundations of
Computer Music", Cambridge, MA: MIT Press, 1985.  [Contains
article on analysis/synthesis by Strawn, recommended; also an
another article maybe by J.A. Moorer -- Juhana Kouhia]

John Strawn, ed., "Digital Audio Signal Processing", 283
pages, $34.95, ISBN 0-86576-082-9, pub: A-R Editions.
Contents:

1. Introduction to the mathematics of DSP (F. Richard Moore)
[Not a bad little text]

2. Introduction to digital filter theory (Julius O. Smith)
[Not a bad little text, either]

3. Spiral Synthesis (Tracy Lind Petersen)
[first published account of a new synthesis technique]

4. Signal processing aspects of computer music (J. A. Moorer)
[James Moorer's classic article--discusses many synthesis
techniques.  Reverb algorithms.  More than 6 pages of refs]

5. An introduction to the phase vocoder (J. W. Gordon, J. Strawn)
[Includes source code for a phase vocoder--a powerful method for
synthesis, pitch shifting, time scale modification, etc.]

[Comments by Quinn Jensen].
        
Curtis Road, ed., "Composers and the Computer", 201 pages,
$27.95, ISBN 0-86576-085-3, pub: A-R Editions.

John Strawn, ed., "Digital Audio Engineering", 144 pages,
$29.95, ISBN 0-86576-087-X pub: A-R Editions.

Deta S. Davis, "Computer Applications in Music: A
Bibliography", 537 pages, $49.95, ISBN 0-89579-225-7, pub: A-R
Editions.

Ken C. Pohlmann, "The Compact Disc: A Handbook of Theory and
Use", 288 pages, $45.95 (cloth) ISBN 0-89579-234-6, $29.95
(paper) ISBN 0-89579-228-1, pub: A-R Editions.

Forthcoming books:

Curtis Roads, "A Computer Music History: Musical Automation
from Antiquity to the Computer Age"

Joseph Rothstein, "MIDI: A Comprehensive Introduction"

David Cope, "Computer Analysis of Musical Style"

Dexter Morrill and Rick Taube, "A Little Book of Computer
Music Instruments"

Articles:

James A. Moorer, "About This Reverberation Business", Computer
Music Journal 3, 20 (1979): 13-28. (Also in Foundations of CM
below).  [Ok article, but you have to know basic DSP
operations.  --Juhana Kouhia]

Check more articles from Journal of the Audio Engineering
Society (JAES), for example more articles by Strawn.

Note: books published by A-R editions can be ordered from:

A-R Editions
801 Deming Way
Madison, Wisconsin 53717
608-836-9000 (They accept VISA orders)

[The above is largely from Quinn Jensen, jensenq@qcj.icon.com;
Juhana Kouhia, jk87377@cc.tut.fi; William Alves,
alves@calvin.usc.edu; and Paul A Simoneau,
pas1@kepler.unh.edu]

   
   
   Q1.2: Where can I get free software for general DSP?
   
   The packages listed below are mostly for general purpose DSP, that is,
   DSP that is not specific to a particular programmable DSP chip. See
   the later sections in the FAQ for software relevant to a particular
   programmable DSP chip.
   
   According to Brian Evans: "There was an entire session on this subject
   [free DSP software] at ICASSP '92, chaired by Dr. Sally Wood and Dr.
   James McClellan. It appears in Volume 4 of the Proceedings, pages
   73-112. There was another such session at ICASSP '93." [Brian Evans,
   evans@eedsp.gatech.edu] Much of the information below is from Brian's
   mail.
     _________________________________________________________________
   
   
   
   Q1.2.1: What is Gabriel? Where can I get it?
   
   Gabriel was a hierarchical block diagram environment for prototyping
   signal processing systems on single or multiple processors. It has
   been superceded by Ptolemy (see below), and is no longer available.
     _________________________________________________________________
   
   
   
   Q1.2.2: What is Ptolemy? Where can I get it?

Description: Ptolemy provides a highly flexible foundation
for the specification, simulation, and rapid prototyping of
systems.  It is an object oriented framework within which
diverse models of computation can co-exist and interact.  For
example, using Ptolemy a data-flow system can be easily
connected to a hardware simulator which in turn may be
connected to a discrete-event system, etc.  Because of this,
Ptolemy can be used to model entire systems.

In addition, Ptolemy now has code generation capabilities.
From a flow graph description, Ptolemy can generate both C
code and DSP assembly code for rapid prototyping.  Note that
code generation is not yet complete, and is included in the
current release for demonstration purposes only.

Ptolemy has been used for a broad range of applications
including signal processing, telecomunications, parallel
processing, wireless communications, network design, radio
astronomy, real-time systems, and hardware/software
co-design.  Ptolemy has also been used as a lab for signal
processing and communications courses.  Currently Ptolemy has
hundreds of users in over 100 sites, both in industry and
academia.

Ptolemy is available for the Sun 4 (sparc), DecStation
(MIPS), and HP (HP-PA) architectures. Installing the system
requires 90 Mbytes for Ptolemy (more if you optionally
remake).  Ptolemy also requires at least 8 Mbytes of physical
memory.  Linux binaries also exist.

Ptolemy is available via anonymous ftp.  Get the file:
file://ptolemy.eecs.berkeley.edu/pub/README
and follow the instructions.

ptolemy.eecs.berkeley.edu contains the entire
Ptolemy distribution, a postscript version of the Ptolemy
manual, and several Ptolemy papers.

Organizations without Internet FTP capability can obtain
Ptolemy, without support, from ILP.  This is often a more stable,
less featured version than is available by FTP.

        EECS/ERL Industrial Liaison Program Office
        Software Distribution
205 Cory Hall
        University of California, Berkeley
        Berkeley, CA 94720
        (510) 643-6687
email: ilpsoftware@eecs.berkeley.edu

This includes printed documentation, including installation
instructions, a user's guide, and manual pages.  A handling
fee (on the order of $250) will be charged.

Contact: Alan Kamas, aok@ohm.berkeley.edu.

   
     _________________________________________________________________
   

Q1.2.3: What is Khoros?  Where can I get it?


Description: Block diagram simulator for image and video
processing.  1-D signal processing is also supported.  See
the UseNet group comp.soft-sys.khoros.

Platforms: sun 3, sun 4, others?  X windows.  Written in C.

To obtain, get this file, and read the instructions:
file://ftp.eece.unm.edu/pub/khoros/release/install.ftp

   
     _________________________________________________________________
   

Q1.2.4: What are DSP Tutorials?  Where can I get them?

Package: DSP Tutorials

Description: Computer aided instruction.

Platforms: suns under SunView.

Contact: Dr. Sally Wood, Electrical Engineering Department,
Santa Clara University, Santa Clara, CA 95053.

   
     _________________________________________________________________
   

Q1.2.5: What are some DSP extensions to MATLAB?  Where can
I get them? Package: MATLAB user's group public domain
extensions to MATLAB

Description: The MATLAB Digest is issued at irregular
intervals based on the number of questions and software items
contributed by users.  To make submissions to the digest,
please send to hwilson@ua1vm.ua.edu with a subject: "DIG" and
description.

For the Pacific, try netlib@draci.cs.uow.edu.au located at
the University of Wollongong, NSW, Australia.

A plethora of toolboxes are available at FTP site:
research.att.com (use netlib for the username)

   
     _________________________________________________________________
   

General index for the MATLAB User Group software library

Currently there are the following subdirectories:
approximation      approximation theory
archive            old MATLAB user group digests
control            control theory
dataanalysis       data analysis and statistics
graphics           graphics programs
integration        numerical integration
linearalgebra      linear algebra utilities
misc               miscellaneous
ode                ordinary differential equations
optimization       as the name says
pde                partial differential equations
rootfinding        zero-finding routines
specialfunctions   special functions
teaching           for classroom use
tools              miscellaneous tools

In order to get an index for a subdirectory (tools, say) send
the message:
   send index from MATLAB/tools
to netlib@ornl.gov.

In order to get some code, (unbundle in the `tools'
directory, say), send the message:
   send unbundle from MATLAB/tools
to netlib@ornl.gov.

   
     _________________________________________________________________
   

There is a set of Wavelet Tools available for MATLAB, see
Section 8 of this FAQ.

   
     _________________________________________________________________
   

Communications Toolbox

We have developed a "Communications Toolbox" based on the
Matlab code for classroom use.  It is used by students taking
a 4th year communications course where the emphasis is on
digital coding of waveforms and on digital data transmission
systems.  The Matlab code that constitutes this toolbox has
been in use for over two years.

There are close to 100 "M-files" that implement various
functions.  Some of them are quite simple and are based on
existing Matlab M-files.  But a great many of them has been
created from scratch.  We also prepared a lab manual (in TEX
format) for the 7 simulations which the students perform as
the lab component of this course.  The topics of these
simulations are:
        [1]. Probability Theory
        [2]. Random Processes
        [3]. Quantization
        [4]. Binary Signalling Formats
        [5]. Detection
        [6]. Digital Modulation
        [7]. Digital Communication

New version (Matlab 4.1) is available on:
file://ftp.mathworks.com/pub/contrib/misc/comm_tbx.tar

Old version (Matlab 3.5) is available on:
file://evans.ee.adfa.oz.au/pub/matlab/comms/comm_tbx.tar

Functionality is basically the same.

The manual has also been slightly changed.  I am still
working to get all the figures in postscript format.  Please
continue using the old manual until I have the new manual in
postscript format ready.

[Mehmet Zeytinoglu - mzeytin@ee.ryerson.ca]

   
     _________________________________________________________________
   

FOR STUDENTS: Prentice Hall has published a student edition
of matlab which contains a book and set of disks for PCs and
Macs.  The software is limited only in matrix size (32 x 32
matrix; 1024 elements) and in its ability to import or call C
or Fortran subroutines. On the plus side, it is able to run
without a coprocessor (it will use one if it is present) and
it includes a subset of the Signal Processing and Controls
Toolboxes, The Signals and Systems Toolbox, which provides
for added functionality.

Book only (about US$30): ISBN =0138560064;

Book + disk: (about US$50) ISBN=0-13-855974-0 for 3.5"
or  ISBN=0-13-855982-1 for 5.25

Macintosh version: ISBN=0-13-855990-2.

There will be related books out by mid to late 1993 :
Computer Aided Signal Processing with MATLAB, by Burrus,
Oppenheim, McClellan, Parks, Schafer, and Schussler;

and Signal Processing : A Computer Approach, by Etter. More
books in this MATLAB Curriculum Series are planned.

For general info: matlab@prenhall.com

[From the Matlab Users Group (Editor, hwilson@ua1vm.ua.edu)]

   
     _________________________________________________________________
   

Q1.2.6: What are the Signal Processing Packages for Mathematica?
 Where can I get them?

Package: Signal Processing Packages (SPP) and Notebooks.

Freely distributable extensions to Mathematica.  Enables the
symbolic manipulation of signal processing expressions: 1-D
discrete/continuous convolutions and 1-D/m-D linear transforms
(Laplace, Fourier, z, DTFT, and DFT).  For linear transforms,
you can specify your own transform pairs and see the
intermediate computations. Great for showing students how to
take transforms, or for deriving input-output relationships in
a transform domain.  Additional abilities include analog
filter design, solving DE's using transforms, converting
signal processing expressions to their equivalent TeX forms,
number theoretic operations (Bezout numbers, Smith Form
decompositions, and matrix factors), and multirate operations
(graphical design of 2-d decimators).  Accompanying the SPPs
are tutorial notebooks on analog filter design, Fourier
analysis, piecewise convolution, and the z-transform (includes
a discussion of fundamentals of digital filter design).  These
Notebooks illustrate difficult concepts (such as the
flip-and-slide view of convolution) through animation.

Get this file, and read the instructions:
file://gauss.eedsp.gatech.edu/Mathematica/README

A freely distributable Notebook reader is available for
Macintosh computers and IBM-compatibles running MicroSoft
Windows by anonymous ftp:
Mac: file://mathsource.wri.com/pub/NumberedItems/0204-297-0011
Windows: file://mathsource.wri.com/pub/NumberedItems/0203-599-0011

Contact: Brian Evans, evans@eedsp.gatech.edu.

   
     _________________________________________________________________
   

Dr. Roberto H. Bamberger reports: I have developed a series
of about 30 Lectures that I use for EE341 (Analog
Communication Systems) here at Washington State University.
They use the SPP by Brian Evans.  They discuss many concepts
associated with linear systems theory.  They are available
from: file://yardbird.eecs.wsu.edu/pub/Notebooks.  Topics
covered include LTI system theory, convolution, AM, FM, PM
modulation and demodulation, and the sampling theorem.  NOTE:
All Notebooks were developed under NeXTSTEP 3.1 using
Mathematica 2.2.  I make no guarantees about the graphics
being able to be rendered on anything other than a NeXT.

   
     _________________________________________________________________
   

FOR STUDENTS: A student version of Mathematica is available
for $175. The price includes a copy of the reference manual.
The only drawbacks to the student version are that the
floating point coprocessor is disabled and that upgrades
cannot be ordered.

   
     _________________________________________________________________
   

Q1.2.7: What is the Control Systems Analysis Packages for Mathematica?
Where can I get them?

Package: Control Systems Analysis Package (COSYPAK) and Notebooks

Description: Public domain extension to Mathematica.
Classical and state-space control analysis and design
methods.  The Notebooks supplement the material in the
textbook "Modern Controls Theory" by Ogata.  Largely based on
the Signal Processing Packages (SPP, see above).

Contact: Dr. Sreenath, sree@veda.esys.cwru.edu.

To obtain: anonymous ftp veda.esys.cwru.edu (129.22.40.9).

   
     _________________________________________________________________
   

Q1.2.8: What are some other Mathematica DSP Notebooks?

The following Mathematica notebooks can be ftped from
ftp.apple.com:

pub/malcolm/FilterDesign.math  IIR Filter Design (continuous and discrete)
pub/malcolm/ear.math           Implementation of Lyon's Cochlear Model
pub/malcolm/Gammatone.math     Implementation of Gammatone Cochlear Model

Printed copies (with floppies) are available from the author
[malcolm@apple.com]

The following Mathematica notebooks can be ftped from
ccrma-ftp.stanford.edu:

pub/DSP/GenHamming.ma.Z    Generalized Hamming windows
pub/DSP/Kaiser.ma.Z     The Kaiser window
pub/DSP/WinFlt.ma.Z     Digital filter design by the "window method"

(There are other DSP related items in pub/DSP on ccrma-ftp;
see other sections of this FAQ for details).

   
     _________________________________________________________________
   

Q1.2.9: What is the Linear Systems Toolbox for Maple?
Where can I get it?

Package: Linear systems toolbox for Maple.

Description: Public domain extension to Maple.

Contact: Tony Richardson, amr@mpl.ucsd.edu.

To obtain:
file://ftp.egr.duke.edu/pub/maple/linsys1.2.tar.Z

   
     _________________________________________________________________
   

Q1.2.10: Where can I get text to speech conversion software?

Free (but not public domain) text to speech conversion
software is available via anonymous ftp from
wilma.cs.brown.edu in the pub directory as speak.tar.Z.  It
will compile and run on a SPARC's built-in audio after
modifying speak.c with the path of your libaudio.h (e.g.,
/usr/demo/SOUND/libaudio.h).  It's a simple phoneme
concatenation system with commensurate synthesized speech
quality (a directory of phoneme audio files is included).
[Joe Campbell, jpcampb@afterlife.ncsc.mil]

A public domain version of the same Naval Research Lab text
to phoneme rules can be obtained from:

file://svr-ftp.eng.cam.ac.uk/comp.speech/sources/english2phoneme.shar

A implementation of the Klatt phoneme to waveform speech
synthesiser is in:

file://svr-ftp.eng.cam.ac.uk/comp.speech/sources/klatt-0.02.tar.Z

This directory also contains lossless speech compression
(shorten-1.08.tar.Z), speech recognition (recnet-1.1.tar),
acoustic modelling (rasta.tar.Z) and text normalisation
(textnorm.shar) software.

   
     _________________________________________________________________
   

Q1.2.11: Where can I get filter design software? There
are filter design programs available via anonymous FTP.  The
following are summarized here and discussed in greater detail
below:

1. August 1992 IEEE Trans. on Signal Processing: METEOR FIR
filter design program.

2. DFIR FIR filter design program.

3. Netlib IIR filter design.

4. IEEE Press "Programs for Digital Signal Processing".

   
     _________________________________________________________________
   

The August 92 issue of IEEE Transactions on Signal Processing
there is a paper entitled "METEOR: A Constraint-Based FIR
Filter Design Program" by Kenneth Steiglitz, Thomas W. Parks
and James F. Kaiser.  They describe an FIR design program
which allows specification of the target frequency response
characteristics in a fairly generalised and flexible way.  As
well as designing filters, the program can optimise filter
lengths and push band limits.

The paper contains a footnote which says "Pascal and C
versions of source code are available to anonymous ftp at
princeton.edu in the directory /pub as meteor.p, form.p,
meteor.c and form.c".

True, they are.  They appear to work.  The Pascal versions
have been put through p2c to get the C versions; all the
needed Pascal library stuff is included in the C versions and
they built error-free out of the box for me on an SGI
machine.

One catch is, there is no manual - you need the paper to know
how to drive the programs.

[Steve Clift, clift@ml.csiro.au]

   
     _________________________________________________________________
   

Another public domain filter design package is DFIR, for FIR
filter designs.  It includes design capabilities for:
equiripple linear phase multiband filters, linear phase
differentiators, linear phase Hilbert transform filters, MMSE
interpolating filters and equiripple Nyquist filters.  It is
written in Fortran 77 and has been tested on DECStations and
Suns.

It is available from: aldebaran.ee.mcgill.ca/pub/dfir.
Additionally, a package to plot filter responses is available
in "pltfilter-V2R0.tar.Z".

[Peter Kabal, via Witold Waldman]

   
     _________________________________________________________________
   

Another source is netlib: "A free program to design IIR
Butterworth, Chebyshev, and Cauer (elliptic) filters, in any
of lowpass, bandpass, band reject, and high pass
configurations, is available in netlib (e.g.
research.att.com) as the file netlib/cephes/ellf.shar.Z.  By
email to netlib@research.att.com the request message text is
`send ellf from cephes'

[Stephen Moshier, mosher@world.std.com]

   
     _________________________________________________________________
   

The Fortran source code from the IEEE Press book "Programs
For Digital Signal Processing" is available for anonymous ftp
from
file://soma.crl.mcmaster.ca/pub/IEEE/software/dsp.zip
or
file://soma.crl.mcmaster.ca/pub/IEEE/software/dsp.tar.gz
It includes FIR and IIR filter design software, FFT
subroutines, interpolation programs, a coherence and
cross-spectral estimation program, linear prediction analysis
programs, and a frequency domain filtering program.
There is also a C/C++ version of the Parks-McLellan FIR
filter design program available from
file://ftp.uu.net/usenet/comp.sources.misc/volume22/fir/part01.Z

This program was created and tested using Borland C++ 2.0.
This requires a pretty reasonable C++ compiler - it is
reported that QuickC (not C++) won't do it.

[Witold Waldman, witold@hotblk.aed.dsto.gov.au, from Charles
Owen at mgcbo@uxa.ecn.bgu.au]
[also Andrew Ukrainec, andy@array.ca]

   
     _________________________________________________________________
   

{ There are other free filter design programs floating around
out there,  such as optfir/wfir.  Does anyone know of ftp sites? }

   
     _________________________________________________________________
   

 Q1.2.12 What is PC Convolution?  Where can I get it?

P.C. convolution is a educational software package that graphically
demonstrates the convolution operation.  It runs on IBM PC type computers
using DOS 4.0 or later.  It is currently being used in schools of Mathematics,
Electrical Engineering, Earth Sciences, Aeronautics, Astronomy, Geophysics,
and (believe it or not) Experimental Psychology.

The current version of this software only demonstrates continuous time
convolution, but a discrete time version is in the works.

Anyone may download a demonstration version of this software via anonymous
ftp from 131.151.4.11 (file name /pub/pc_conv.zip)

University instructors my obtain a free, fully operational version by
contacting Dr. Kurt Kosbar at the address listed below.

Dr. Kurt Kosbar
117 Electrical Engineering Building, University of Missouri - Rolla
Rolla, Missouri, USA 65401, phone: (314) 341-4894
e-mail:  kk@ee.umr.edu

   
     _________________________________________________________________
   

Q1.2.13: What is the AudioFile System?  Where can I get
it?

The AudioFile System (AF) is a device-independent
network-transparent audio server.  The distribution includes
device drivers and server code for Digital RISC systems
running Ultrix, Digital Alpha AXP systems running OSF/1, and
Sun Microsystems SPARCstations running SunOS.  Also included
are an API and library, out-of-the-box core applications, and
a number of contributed applications.  AudioFile allows
applications to generate and process audio in real-time and
at present handles up to 48 KHz stereo audio.

AudioFile is distributed in source form, with a copyright
allowing unrestricted use for any purpose except sale (see
the Copyright notice).  af@crl.dec.com is a mailing list for
discussions of AudioFile. Send mail to af-request@crl.dec.com
to be added to this list.

The kit is located at:
file://crl.dec.com/pub/DEC/AF/AF2R2.tar.Z

A sample kit of sound-bites is available as:
file://crl.dec.com/pub/DEC/AF/AF2R2-other.tar.Z

[Larry Stewart, stewart@crl.dec.com]

   
     _________________________________________________________________
   

1.2.14 What is MathViews?  Where can I get it?

Package-Name: mathview.zip

MathViews for Windows/32 - Math Software for Windows
(32-bit).  Current version is 1.60.  "MathViews for
Windows/32 is Matlab look-alike. It has a full set of linear
algebra and signal processing functionality."

No sources.  Windows 3.1.  Shareware.  Try:
ftp.cica.indiana.edu, oak.oakland.edu or wuarchive.wustl.edu

Author: Dr. Shalom Halevy 70274.2564@compuserve.com PO BOX
22564, San Diego, CA 92192 (619) 552-9031 USA (Tel/FAX)


   
     _________________________________________________________________
   

1.2.15 What is Shorten?  Where can I get it?

Shorten is a compressor/coder for waveform files.  Two major
changes have been made since the last announcement:

a) Thanks to the efforts of two users there is now a MS-DOS
executable (version 1.09) available on:

file://svr-ftp.eng.cam.ac.uk/comp.speech/sources/shn109.exe

b) The lastest version, 1.11, has early support for lossy
compresson. This is achieved by quantisation of the
prediction residual which maximises the segmental signal to
noise ratio.  This works well for many waveforms - for
speech the quality is sometimes better and sometimes worse
than the various CCITT ADPCM standards.  The advantages are
that the code is very fast, will accept most known file
formats and will code from lossless compression down to
three bits per sample.  The disadvange is that this is a
variable bit rate scheme and so is more suited to storage
than transmission applications. It is available from:

file://svr-ftp.eng.cam.ac.uk/comp.speech/sources/shorten-1.11.tar.Z

The MS-DOS version comes with no support whatsoever - you
have been warned.  I'll be able to test and maintain this
code when someone decides that it is worth funding the kit
to enable me to do this.

The UNIX version has been tested on many platforms and there
are no known portability problems.  If you have problems,
then please tell me.

Feedback from USENET readers has been very valuable in the
past, and I'd like to ask for this again.  I'll incorporate
as many sugestions as I can into version 2.0.

Contact: Tony Robinson (ajr@dsl.eng.cam.ac.uk)


Q2.1: Where can I get some algorithms for general DSP?

The following archives contain things such as matrix
operations, FFT's and generally useful things like that, as
opposed to complete applications.

   
     _________________________________________________________________
   

Netlib, which serves some of this software via email. Try mail to
netlib@ORNL.GOV with "send help" in the subject field.

For Europe:
  Internet:       netlib@nac.no
  EARN/BITNET:    netlib%nac.no@norunix.bitnet
  X.400:          s=netlib; o=nac; c=no;
  EUNET/uucp:     nac!netlib

For the Pacific, try netlib@draci.cs.uow.edu.au

For background about netlib, see Jack J. Dongarra and Eric Grosse,
"Distribution of Mathematical Software Via Electronic Mail,"
Comm. ACM (1987) 30,403--407.

A similar collection of statistical software is available from
  statlib@temper.stat.cmu.edu.

The symbolic algebra system REDUCE is supported by
  reduce-netlib@rand.org.

   
     _________________________________________________________________
   

The Naval Surface Warfare Center has a library of mathematical
Fortran subroutines that may be of use.  From the report itself:

NSWC Library of Mathematical Subroutines
Report No.: NSWC TR 90-21, January 1990
by Alfred H. Morris, Jr.

Naval Surface Warfare Center (E43)
Dahlgren, VA 22448-5000
U.S.A.

Distribution: Approved for public release; distribution unlimited.

Abstract:

The NSWC library is a library of general-purpose Fortran
subroutines that provide a basic computational capability in
a variety of mathematical activities. Emphasis has been
placed on the transportability of the codes. Subroutines are
available in the following areas: Elementary Operations,
Geometry, Special Functions, Polynomials, Vectors, Matrices,
Large Dense Systems of Linear Equations, Banded Matrices,
Sparse Matrices, Eigenvalues and Eigenvectors, l1 Solution of
Linear Equations, Least-Squares Solution of Linear Equations,
Optimization, Transforms, Approximation of Functions, Curve
Fitting, Surface Fitting, Manifold Fitting, Numerical
Integration, Integral Equations, Ordinary Differential
Equations, Partial Differential Equations

[Witold Waldman, witold@hotblk.aed.dsto.gov.au]

This is avialble from
file://euler.math.usma.edu/pub/misc/nswc.tar.Z
This is a 3.2 Mbyte file with 800+ Fortran routines mentioned
above.

   
     _________________________________________________________________
   

Also, you can get the Fortran source code from the IEEE Press book
"Programs For Digital Signal Processing."  See question 1.2.
Also, see the summary of DSP-related FTP sites, at the end of
this FAQ.

If you don't know where to find what you're after, try archie.

   
     _________________________________________________________________
   

SigLib

SigLib is an ANSI C Source DSP library. Current version is
1.61 SigLib has been compiled to run on IBM PCs, Sun
Workstations and the following DSPs : TMS320C30, TMS320C40,
DSP96002 and ADSP21020.

SigLib contains about 130 base functions, from which many
others are derived and over 80 demonstration programs, all of
which exercise more than on part of the library at any one
time. The library source and examples supplied total more
than 18000 lines of code. SigLib also includes DFilter, an
FIR and IIR digital filter design program and WinBuf, a
Windows 3 graphical front end, for display of process
results.

Some applications of SigLib include drill string vibration
analysis, room response analysis, audio effects,
telecommunications, active control of sound and vibration,
system simmulation and medical imaging.

Registered users of SigLib get one years free upgrade and
maintenance.

Spectrum analysis : FFTs and IFFTs; real, complex, zoom and
spectrograms, microscan.  Windowing types : Hanning, Hamming,
Blackman, Triangle, Rectangle, Kaiser and Blackman-Harris.
Fixed coefficient filtering : FIR, comb, IIR and one pole IIR
filters, filter design methods, polyphase multi-rate filters,
differentiation and integration filters, Hilbert
transformers.  Adaptive coefficient filtering : LMS.
Convolution and Correlation : convolve, correlate.  Imaging :
conv3x3, histogram and 2DFFT.  Signal generation : Sine,
Cosine, White noise, Chirp (linear and non-linear), Square,
Triangular, Sawtooth, Impulse, PN sequence.  Modulation : AM,
complex shift, FSK, spectral inversion, FM, QAM.  Statistical
analysis : sum, mean, average, standard deviation and
variance, kurtosis.  Regression analysis : linear,
logarithmic, exponential, power.  Digital effects : reverb,
distortion, echo, pitch shifting Utility functions, including
: scaling (lin and log) offset, min/max find, clip, offset,
rotate, buffer lengthen, buffer shorten, buffer addition
multiplication etc., histogram, quantise, absolute, peak
hold, polynomial expansion.  Control : PID.  Graphics :
display_buffer, display_buffer_line, print_buffer,
display_3d_buffer, pole_zero_plot, xy_plot.  Data stream disk
I/O functions.

ITEMPRICE

SigLib object code UKP20, US$30
SigLib source and object code UKP35, US$60
Educational Price (Source code) UKP25, US$40

Available on 3.5" diskette

UK shipping per package UKP3
Non UK shipping per diskette UKP5, US$8

These fees include 1 years free upgrade and maintenance.

Payment preferably by Money Order or Cheque.

email:johned@cix.compulink.co.uk

John Edwards, Numerix, 157 Sileby Road, Barrow-on-Soar,
Leics, LE12 8LW, UK.

Phone : +44 (0)509 413195, UK time between 17.30 PM and 9.00
PM.

Q2.2: What are CELP and LPC?  Where can I get the source for CELP and LPC?

CELP stands for "code excited linear prediction".  LPC stands for
"linear predictive coding".  They are compression algorithms used for
low bit rate (2400 and 4800 bps) speech coding.  You can't get the
source for LPC anywhere on the net.

The U.S. DoD's Federal-Standard-1016 based 4800 bps code excited linear
prediction voice coder version 3.2 (CELP 3.2) Fortran and C simulation
source codes are available for worldwide distribution (on DOS
diskettes, but configured to compile on Sun SPARC stations) from NTIS
and DTIC.  Example input and processed speech files are included.  A
Technical Information Bulletin (TIB), "Details to Assist in
Implementation of Federal Standard 1016 CELP," and the official
standard, "Federal Standard 1016, Telecommunications:  Analog to
Digital Conversion of Radio Voice by 4,800 bit/second Code Excited
Linear Prediction (CELP)," are also available.

This is available through the National Technical Information Service:
NTIS
U.S. Department of Commerce
5285 Port Royal Road
Springfield, VA  22161
USA
(703) 487-4650

It may also be obtained from:
file://svr-ftp.eng.cam.ac.uk/comp.speech/sources/DoD_CELP-3.2.tar.Z

An updated version of the FS-1016 CELP 3.2 code is available, at least
for a while, on:

file://super.org/pub/celp_3.2a.tar.Z

The code (C, FORTRAN, diskio) all has been built and tested on a Sun4
under SunOS4.1.3.  If you want to run it somewhere else, then you may
have to do a bit of work.  (A Solaris 2.x-compatible release is
planned soon.)

[One note to PCers.  The files:
[
[       cbsearch.F celp.F csub.F mexcite.F psearch.F
[
[are meant to be passed through the C preprocessor (cpp).
[We gather that DOS (or whatever it's called) can't distinguish
[the .F from a .f.  Be careful!

Very limited support is available from the authors (Joe, et al.).
Please do not send questions or suggestions without first reading the
documentation (README files, the Technical Information Bulletin, etc.).
The authors would enjoy hearing from you, but they have limited time
for support and would like to use it as efficiently as possible.  They
welcome bug reports, but, again, please read the documentation first.
All users of FS-1016 CELP software are strongly encouraged to acquire
the latest release (version 3.2a as of this writing).

The "AD" ordering number for the CELP software is AD M000 118
(US$ 90.00) and for the TIB it's AD A256 629 (US$ 17.50).  The LPC-10
standard, described below, is FIPS Pub 137 (US$ 12.50).  There is a
$3.00 shipping charge on all U.S. orders.  The telephone number for
their automated system is 703-487-4650, or 703-487-4600 if you'd prefer
to talk with a real person.

(U.S. DoD personnel and contractors can receive the package from the
Defense Technical Information Center:  DTIC, Building 5, Cameron
Station, Alexandria, VA 22304-6145.  Their telephone number is
703-274-7633.)

The following articles describe the Federal-Standard-1016 4.8-kbps CELP
coder (it's unnecessary to read more than one):

Campbell, Joseph P. Jr., Thomas E. Tremain and Vanoy C. Welch,
"The Federal Standard 1016 4800 bps CELP Voice Coder," Digital Signal
Processing, Academic Press, 1991, Vol. 1, No. 3, p. 145-155.

Campbell, Joseph P. Jr., Thomas E. Tremain and Vanoy C. Welch,
"The DoD 4.8 kbps Standard (Proposed Federal Standard 1016),"
in Advances in Speech Coding, ed. Atal, Cuperman and Gersho,
Kluwer Academic Publishers, 1991, Chapter 12, p. 121-133.

Campbell, Joseph P. Jr., Thomas E. Tremain and Vanoy C. Welch, "The
Proposed Federal Standard 1016 4800 bps Voice Coder:  CELP," Speech
Technology Magazine, April/May 1990, p. 58-64.

The U.S. DoD's Federal-Standard-1015/NATO-STANAG-4198 based 2400 bps
linear prediction coder version 53 (LPC-10e v53) Fortran or C simulation
source codes are available on a limited basis upon written request to:

        Tom Tremain
        Department of Defense
        Ft. Meade, MD  20755-6000
        USA

There is also a section about FS-1015 in the book:
Panos E. Papamichalis, Practical Approaches to Speech Coding,
Prentice-Hall, 1987.

The following article describes the FS 1016 4.8-kbps CELP coder:
Campbell, Joseph P. Jr., Thomas E. Tremain and Vanoy C. Welch, "The
Proposed Federal Standard 1016 4800 bps Voice Coder:  CELP," Speech
Technology Magazine, April/May 1990, p. 58-64.

Copies of the official standard
"Federal Standard 1016, Telecommunications: Analog to Digital Conversion
of Radio Voice by 4,800 bit/second Code Excited Linear Prediction (CELP)"
are available for US$ 5.00 each from:

GSA Federal Supply Service Bureau
Specification Section, Suite 8100
470 E. L'Enfant Place, S.W.
Washington, DC  20407
(202)755-0325

The U.S. Federal Standard 1015 (NATO STANAG 4198) is described in:
Thomas E. Tremain, "The Government Standard Linear Predictive Coding
Algorithm:  LPC-10," Speech Technology Magazine, April 1982, p. 40-49.

The voicing classifier used in the enhanced LPC-10 (LPC-10e) is described in:
Campbell, Joseph P., Jr. and T. E. Tremain, "Voiced/Unvoiced Classification
of Speech with Applications to the U.S. Government LPC-10E Algorithm,"
Proceedings of the IEEE International Conference on Acoustics, Speech, and
Signal Processing, 1986, p. 473-6.

Realtime DSP code for FS-1015 and FS-1016 is sold by several vendors,
including DSP Software Engineering and Analogical Systems (see the
vendor address list in section 5 for contact info).  DSP Software
Engineering's FS-1016 code can run on a DSP Research's Tiger 30 or on
Intellibit's AE2000 TMS320C31 based 3" by 2.5" card.  See section 4.1
for more on these cards.  Analogical's product runs on a 27 MHz
DSP56001 chip.

[Most of the above from Joe Campbell, jpcampb@afterlife.ncsc.mil, with
additions from Dan Frankowski, drankow@cs.umn.edu, and Ed Hall,
edhall@rand.org]

Q2.3: What is ADPCM?  Where can I get source for it?

ADPCM stands for Adaptive Differential Pulse Code Modulation.  It is a
family of speech compression and decompression algorithms.  A common
implementation takes 16-bit linear PCM samples samples and converts
them to 4-bit samples, yeilding a compression rate of 4:1.

There is public domain C code available via anonymous ftp at
file://ftp.cwi.nl/pub/audio/adpcm.shar written by Jack Jansen (email
Jack.Jansen@cwi.nl).  It is very programmer-friendly.  The ADPCM code
used is the Intel/DVI ADPCM code which is being recommended by the IMA
Digital Audio Technical Working Group.  It allows the following calls:

adpcm_coder(short inbuf[], char outbuf[], int nsample,
        struct adpcm_state *state);
adpcm_decoder(char inbuf[], short outbuf[], int nsample,
        struct adpcm_state *state);

The routines have been tested on an SGI Indigo running Irix 4.0.2 and
on a Sparcstation 1+ running SunOS 4.1.1.  On a Sun, the code will
compress at 250Ksample/sec and decompress at 300Ksample/sec.  On an
SGI, the compressor runs at 350Ksample/sec and the decompressor at
700Ksample/sec.

Note that this is NOT a CCITT G722 coder.   The CCITT ADPCM standard is
much more complicated, probably resulting in better quality sound but
also in much more computational overhead.

You can get a G.721/722/723 package by email to teledoc@itu.arcom.ch, with
 GET ITU-3022
as the *only* line in the body of the message.

This is also available as:
file://svr-ftp.eng.cam.ac.uk/comp.speech/sources/G711_G722_G723.tar.Z

[From Dan Frankowski, drankow@cs.umn.edu; Jack Jansen, Jack.Jansen@cwi.nl]

Q2.4: What is GSM?  Where can I get source for it?

The README file for GSM says:

GSM 06.10 13 kbit/s RPE/LTP speech compression available
--------------------------------------------------------

The Communications and Operating Systems Research Group (KBS) at the
Technische Universitaet Berlin is currently working on a set of
UNIX-based tools for computer-mediated telecooperation that will be
made freely available.

As part of this effort we are publishing an implementation of the
European GSM 06.10 provisional standard for full-rate speech
transcoding, prI-ETS 300 036, which uses RPE/LTP (residual pulse
excitation/long term prediction) coding at 13 kbit/s.

GSM 06.10 compresses frames of 160 13-bit samples (8 kHz sampling
rate, i.e. a frame rate of 50 Hz) into 260 bits; for compatibility
with typical UNIX applications, our implementation turns frames of 160
16-bit linear samples into 33-byte frames (1650 Bytes/s).
The quality of the algorithm is good enough for reliable speaker
recognition; even music often survives transcoding in recognizable
form (given the bandwidth limitations of 8 kHz sampling rate).

The interfaces offered are a front end modelled after compress(1), and
a library API.  Compression and decompression run faster than realtime
on most SPARCstations.  The implementation has been verified against the
ETSI standard test patterns.

Jutta Degener (jutta@cs.tu-berlin.de)
Carsten Bormann (cabo@cs.tu-berlin.de)

Communications and Operating Systems Research Group, TU Berlin
Fax: +49.30.31425156, Phone: +49.30.31424315

An implementation can be had from:
      file://tub.cs.tu-berlin.de/pub/tubmik/gsm-1.0.tar.Z
with  file://tub.cs.tu-berlin.de/pub/tubmik/gsm-1.0-patch1
and   file://tub.cs.tu-berlin.de/pub/tubmik/gsm-1.0-patch2

or as a faster but not always up-to-date alternative:
file://liasun3.epfl.ch/pub/audio/gsm-1.0pl1.tar.Z

[From Dan Frankowski, dfrankow@cs.umn.edu]

Q2.5: How does pitch perception work, and how do I implement it on my DSP chip?

Pitch is officially defined as "That attribute of auditory sensation
in terms of which sounds may be ordered on a musical scale."  Several
good examples illustrating the subtleties of pitch perception are
included in the "Auditory Demonstrations CD" which is available from
the Acoustical Society of America, Woodbury, NY 10797 for $20.

A good general reference about the psychology of pitch perception is
the book:

        B.C.J. Moore, "An Introduction to the Psychology of Hearing",
        Academic Press, London, 1989.

This book is available in paperback and makes a good desk reference.

An algorithm implementation that matches a large body of psychoacoustical
work, but which is computationally very intensive, is presented in the paper:

        Malcolm Slaney and Richard Lyon, "A Perceptual Pitch Detector,"
        Proceedings of the International Conference of Acoustics, Speech,
        and Signal Processing, 1990, Albuquerque, New Mexico.

The definitive papers describing the use of such a perceptual pitch
detector as applied to the classical pitch literature is in:

        Ray Meddis and M. J. Hewitt. "Virtual pitch and phase
        sensitivity of a computer model of the auditory periphery. "
        Journal of the Acoustical Society of America 89 (6 1991): 2866-2682.
        and 2883-2894.

The current work that argues for a pure spectral method starts with the work
of Goldstein:

        J. Goldstein,  "An optimum processor theory for the
        central formation of the pitch of complex tones," Journal
        of the Acoustical Society of America 54, 1496-1516, 1973.

Two approaches are worth considering if something approximating pitch
is appropriate.  The people at IRCAM have proposed a harmonic analysis
approach that can be implemented on a DSP

        Boris Doval and Xavier Rodet, "Estimation of Fundamental Frequency
        of Musical Sound Signals," Proceedings of the 1991 International
        Conference on Acoustics, Speech, and Signal Processing, Toronto,
        Volume 5, pp. 3657-3660.

The classic paper for time domain (peak picking) pitch algorithms is:

        B. Gold and L. Rabiner, "Parallel processing techniques for estimating
        pitch periods of speech in the time domain," Journal of the Acoustical
        Society of America, 46, pp 441-448, 1969.

Finally, a word of caution: Pitch is not single-valued.  We can hear a
sound and match it to several different pitches.  Imagine the number
of instruments in an orchestra, each with its own pitch.  Even a
single sound can have more than one pitch.  See for example
Demonstration 27 from the ASA Auditory Demonstrations CD.

[The above from Malcolm Slaney, Apple Computer, and John Lazzaro,
U.C. Berkeley.]

Q2.6: What standards are there for digital audio?  What is AES/EBU?
      What is S/P-DIF?

The "AES/EBU" (Audio Engineering Society / European Broadcast Union)
digital audio standard is probably the most popular digital audio
standard today.  Most consumer and professional digital audio devices
(CD players, DAT decks, etc.) that feature digital audio I/O support
AES/EBU.

AES/EBU is a bit-serial communications protocol for transmitting
digital audio data through a single transmission line.  It provides two
channels of audio data (up to 24 bits per sample), a method for
communication control and status information ("channel status bits"),
and some error detection capabilities.  Clocking information (i.e.,
sample rate) is derived from the AES/EBU bit stream, and is thus
controlled by the transmitter.  The standard mandates use of 32 kHz,
44.1 kHz, or 48 kHz sample rates, but some interfaces can be made to
work at other sample rates.

AES/EBU provides both "professional" and "consumer" modes.  The big
difference is in the format of the channel status bits mentioned above.
The professional mode bits include alphanumeric channel origin and
destination data, time of day codes, sample number codes, word length,
and other goodies.  The consumer mode bits have much less information,
but do include information on copy protection (naturally).  Additionally,
the standard provides for "user data", which is a bit stream containing
user-defined (i.e., manufacturer-defined) data.  According to Tim
Channon, "CD user data is almost raq CD subcode; DAT is StartID and
SkipID.  In progfessional mode, there is an SDLC protocol or, if DAT,
it may be the same as consumer mode."

The physical connection media are commonly used with AES/EBU:
balanced (differential), using two wires and shield in three-wire microphone
cable with XLR connectors; unbalanced (single-ended), using audio coax cable
with RCA jacks; and optical (via fiber optics).

"S/P-DIF" (Sony/Philips Digital Interface Format) typically refers to
AES/EBU operated in consumer mode over unbalanced RCA cable.  Note
that S/P-DIF and AES/EBU mean different things depending on how much
of a purist you are in the digital audio world; see the Finger article
below.

References:

Finger, Robert, "AES3-199X: The Revised Two Channel Digital Audio
Interface (DRAFT)", presented at the 91st Convention of the Audio
Engineering Society, October 4-8, 1991.  Reprints: AES, 60 East 42nd
St., New York, NY, 10165.

[The above from Phil Lapsley, phil@ohm.Berkeley.EDU, and Tim Channon,
tchannon@black.demon.co.uk]

Q2.7: What is mu-law encoding?  Where can I get source for it?

Mu-law (also "u-law") encoding is a form of logarithmic quantization
or companding.  It's based on the observation that many signals are
statistically more likely to be near a low signal level than a high
signal level.  Therefore, it makes more sense to have more quantization
points near a low level than a high level.  In a typical mu-law system,
linear samples of 14 to 16 bits are companded to 8 bits.  Most telephone
quality codecs (including the Sparcstation's audio codec) use mu-law
encoded samples.

Desktop Sparc machines come with routines to convert between linear and
mu-law samples.  On a desktop Sparc, see the man page for audio_ulaw2linear
in /usr/demo/SOUND/man.

Craig Reese posted the source of similar routines to comp.dsp in August '92.
These are archived on file://evans.ee.adfa.oz.au/pub/dsp/misc

References:

CCITT Recommendation G.711 (very difficult to follow).

Michael Villeret, et. al, "A New Digital Technique for Implementation
of Any Continuous PCM Companding Law,", IEEE Int. Conf. on Communications,
1973, vol. 1, pp. 11.12-11.17.

MIL-STD-188-113, "Interoperability and Performance Standards
for Analog-to-Digital Conversion Techniques," 17 February 1987.

"TI Digital Signal Processing Applications with the TMS320 Family",
pp. 169-198.

[From Joe Campbell; Craig Reese, cfreese@super.org; Sepehr Mehrabanzad,
sepehr@falstaff.dev.cdx.mot.com]

Q2.8: How can I do CD  DAT sample rate conversion?

CD players use a 44.1 kHz sample rate, whereas DAT uses a 48
kHz sample rate.  This means that you must do sample rate
conversion before you can get data from a CD player directly
into a DAT deck.

[From Ed Hall, edhall@rand.org:]

For a start, look at "Multirate Digital Signal Processing"
by Crochiere and Rabiner (see FAQ section 1.1).

Almost any technique for producing good digital low-pass
filters will be adaptable to sample-rate conversion. 44.1:48
and vice-versa is pretty hairy, though, because the lowest
whole-number ratio is 147:160.  To do all that in one go
would require a FIR with thousands of coefficients, of which
only 1/147th or 1/160th are used for each sample--the real
problem is memory, not CPU for most DSP chips.  You could
chain several interpolators and decimators, as suggested by
factoring the ratio into 3*7*7:2*2*2*2*2*5.  This adds
complexity, but reduces the number of coefficients required
by a considerable amount.


  __________________________________________________________________________



[From  Lou Scheffer:]

Theory of operation: 44.1 and 48 are in the ratio 147/160.
To convert from 44.1 to 48, for example, we (conceptually):
    1) interpolate 159 zeros between every input sample.  This
       raises that data rate to 7.056 MHz.  Since it is
       equivalent to reconstructing with delta functions, it
       also creates images of frequency f at 44.1-f, 44.1+f,
       88.2-f, 88.2+f, ...
    2) We remove these with an FIR digital filter, leaving a
       signal containing only 0-20 KHz information, but still
       sampled at a rate of 7.056 MHz.
    3) We discard 146 of every 147 output samples.  It does
       not hurt to do so since we have no content above 24 KHz.
       In practice, of course, we never compute the values of
       the samples we will throw out.

So we need to design an FIR filter that is flat to 20 KHz,
and down at least X db at 24 KHz.  How big does X need to
be?  You might think about 100 db, since the max signal size
is roughly +-32767, and the input quantization +- 1/2, so we
know the input had a signal to broadband noise ratio of 98
db at most.  However, the noise in the stopband
(20KHz-3.5MHz) is all folded into the passband by the
decimation in step 3, so we need another 22 db (that's 160
in db) to account for the noise folding.  Thus 120 db
rejection yields a broadband noise equal to the original
quantizing noise.  If you are a fanatic, you can shoot for
130 db to make the original quantizing errors dominate, and
a 22.05 KHz cutoff to eliminate even ultrasonic aliasing.
You will pay for your fanaticism with a penance of more
taps, however.


  __________________________________________________________________________



For more details, a technical report (the author's name is
missing, if you know who - let me know!), is available is
LaTeX source form as 
file://evans.ee.adfa.oz.au/pub/dsp/cd-rate-convert.tex
and in PostScript as 
file://evans.ee.adfa.oz.au/pub/dsp/cd-rate-convert.ps


  __________________________________________________________________________


There's a free implementation of Julius O. Smith III and someone
else's "bandwidth-limited interpolation" rate conversion algorithm.

The paper available as
file://ccrma-ftp.stanford.edu/pub/DSP/Tutorials/BandlimitedInterpolation.eps.Z
explains the algorithm.  The source code in
file://netcom.com/pub/thinman/resample.01.Z
file://netcom.com/pub/thinman/resample.02.Z
file://netcom.com/pub/thinman/kaiser.c
implements the algorithm.  It all works quite well.

-- 

-Kabir-

