Sign in

username:

password:



Not a member?

Search compdsp



Search tips

comp.dsp by Keywords

Adaptive Filter | ADPCM | ADSP | ADSP-2181 | Aliasing | AMR | Anti-Aliasing | ARMA | Autocorrelation | AutoCovariance | Beamforming | Bessel | Blackfin | Butterworth | C6713 | CCS | Chebyshev | CIC Filter | Circular Convolution | Code Composer Studio | Comb Filter | Compression | Convolution | Cross Correlation | DCT | Decimation | Deconvolution | Demodulation | DM642 | DSP Boards | DSP/BIOS | DTMF | Echo Cancellation | Equalization | Equalizer | ETSI | EZLITE (Ez-kit Lite) | FFT | FFTW | FIR Filter | Fixed Point | FSK | G.711 | G.723 | G.729 | Gaussian Noise | Goertzel | GPIO | Hilbert Transform | IFFT | IIR Filter | Interpolation | Invariance | JTAG | Kalman | Laplace Transform | Levinson | LPC | McBSP | MIPS | Modulation | MPEG | Multirate | Notch Filter | Nyquist | OFDM | Oversampling | Pink Noise | Pitch | PLL | Polyphase | QAM | QDMA | Quantization | Quantizer | Radar | Random Noise | Reed Solomon | Remez | Resampling | RTDX | Sampling | Sharc | TI C6711 | Undersampling | Viterbi | Wavelets | White Noise | Wiener Filter | Windowing | XDS510PP | Z Transform

Sponsor

Industry's highest performing at the lowest power DSPs now as low as $5.00*
Start development today!
*volume pricing for 10ku

Discussion Groups

Free Online Books

See Also

Embedded SystemsFPGAElectronics

Discussion Groups | Comp.DSP | Re: comp.dsp FAQ [2 of 4]

There are 3 messages in this thread.

You are currently looking at messages 0 to 3.


Re: comp.dsp FAQ [2 of 4] - Stephan M. Bernsee - 2004-10-19 14:50:00

On 2004-10-19 18:17:45 +0200, c...@bdti.com (Kenton Williston) said:

> 
>           Another  interesting  piece  of information on pitch perception
>           can be found at
>           http://www.dspdimension.com/html/timepitch.html.   [Stephan  M.
>           Sprenger, s...@prosoniq.com]
>      ____________________________________


Hi,

please note that my name is now Stephan M. Bernsee and my comp.dsp 
email is s...@dspdimension.com. The web site is not about pitch 
perception actually, but rather about changing pitch and speed of a 
digital recording independendly of each other.
-- 
Stephan M. Bernsee
http://www.dspdimension.com

______________________________
New DSP Code Snippets Section now Live.   Learn more about the reward program for contributors here.

comp.dsp FAQ [1 of 4] - 2004-12-06 15:22:52



Archive-name: dsp-faq/part1
Last-modified: Tue Oct 19 2004
URL: http://www.bdti.com/faq/


  FAQs (Frequently asked questions with answers) on Digital Signal Processing

   The  world-wide  web  version  of  the  comp.dsp FAQ is maintained and
   sponsored by Berkeley Design Technology, Inc. For information on BDTI,
   visit the BDTI home page at http://www.bdti.com.

   Version date: Oct 19, 2004

   Fifteenth Anniversary Edition

   - Kenton Williston, FAQ maintainer
     _________________________________________________________________

  0. What is comp.dsp?

          0.1 Relevant links
          0.2 Versions of the comp.dsp FAQ
          0.3 DISCLAIMER OF WARRANTY
          0.4 Redistribution permission
          0.5 Note on the list of manufacturers, addresses, and telephone
          numbers

  1. General DSP

          1.1 DSP book and article references

                1.1.1 Bibles of DSP theory

                1.1.2 Adaptive signal processing

                1.1.3 Array signal processing

                1.1.4 Windowing articles

                1.1.5 Digital audio effects processing

                1.1.6 Digital signal processing implementation

                1.1.7 Free online books

          1.2 DSP training

                1.2.1 Courses on DSP

                1.2.2 On-Line courses on DSP

          1.3 Where can I get free software for general DSP? 

                1.3.1 DSP packages for MATLAB

                1.3.2 DSP packages for Mathematica

                1.3.3 Other DSP libraries

                1.3.4 DSP software

                1.3.5 Text to Speech Conversion Software

                1.3.6 Filter design software

                1.3.7 Audio effects

  2. Algorithms and standards

          2.1 Where can I get public domain 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.6.1  Where  can  I  get  copies of ITU (formerly CCITT)
                standards?

                2.6.2 What standards are there for digital audio?

          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?
          2.9 What are wavelets?

                2.9.1   What   are   wavelets?   Where  can  I  get  more
                information?

                2.9.2 What are some good books and papers on wavelets?

                2.9.3 Where can I get some software for wavelets?

          2.10  How  do  I  calculate  the  coefficients  for  a  Hilbert
          transformer?
          2.11    Algorithm    implementation:    floating-point   versus
          fixed-point

  3. Programmable DSP chips and their software

          3.1 What are the available DSP chips and chip architectures?
          3.2 What is the difference between a DSP and a microprocessor?
          3.3 Software for Analog Devices DSPs

                3.3.1  Where can I get a C compiler for the ADSP-21xx and
                ADSP-21xxx?

                3.3.2 Where can I get tools for the ADSP-21xxx?

                3.3.3 Where can I get an assembler for the ADSP-2105?

                3.3.4  Where can I get algorithms or libraries for Analog
                Devices DSPs?

          3.4  Software  for Agere Systems (Formerly Lucent Technologies)
          DSPs
          3.5 Software for Motorola DSPs

                3.5.1  Where  can I get a free assembler for the Motorola
                DSP56000?

                3.5.2  Where can I get a free C compiler for the Motorola
                DSP56000?

                3.5.3  Where  can  I  get a disassembler for the Motorola
                DSP56000?

                3.5.4  Where  can  I  get  algorithms  and  libraries for
                Motorola DSPs?

                3.5.5  Where  can I get NeXT-compatible Motorola DSP56001
                code?

                3.5.6  Where  can  I  get emulators for the 68HC11 (6811)
                processor?

          3.6 Software for Texas Instruments DSPs

                3.6.1 Where can I get free algorithms or libraries for TI
                DSPs?

                3.6.2 Where can I get free development tools for TI DSPs?

                3.6.3  Where  can  I  get  a  free  C compiler for the TI
                TMS320C3x/4x?

                3.6.4  Where  can  I  get  a  free  assembler  for the TI
                TMS320C3x/4x?

                3.6.5  Where  can  I  get  a  free  simulator  for the TI
                TMS320C3x/4x?

                3.6.6 What is Tick? Where can I get it?

  4. DSP development boards

  5. Operating Systems

   People involved...

                Previous section (Overview) Next section (1)

                             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.

Q0.0: Original Charter

   Contributed  by  Max  Hauser  Fifteen  years ago, comp.dsp sprang into
   life. The group's original charter is presented below.
From: t...@ivucsb.sba.ca.us (Todd Day)
Newsgroups: comp.dsp
Subject: Welcome!
Message-ID: <1...@ivucsb.sba.ca.us>
Date: 20 Sep 89 19:54:49 GMT
Reply-To: t...@ivucsb.sba.ca.us (Todd Day)
Organization: Disillusioned Graduate Hackers, Santa Barbara, CA
Lines: 34


Just so people know what this new group is all about, I am
reposting the proposal for this group:

DSP is an acronym for Digital Signal Processing.  DSP is currently a
rapidly growing field.  Most people have come in contact with DSP
either through compact disc players or satellite photos.
Here are the proposed topics to be covered by this group:

1) Discussions of DSP hardware
        a) single processors
        b) DSP boards for computers
        c) new DSP product announcements
        d) architecture

2) Discussions of DSP software
        a) source code listings for particular chip
        b) how to use development software on particular chip
        c) general purpose DSP software on computers

3) Discussions of DSP theory
        a) general algorithms
        b) other devices that use DSP (CD players, etc.)

4) Discussions of DSP applications
        a) audio
        b) image
        c) control
        d) communications
        e) speech
        f) etc.

--
Todd Day  |  t...@ivucsb.sba.ca.us  |  ivucsb!t...@anise.acc.com
"Just give me a killer sound system and the babes will follow."

Q0.1: Relevant links

          Other relevant news groups are:

          + comp.arch.embedded
          + comp.compression
          + comp.realtime
          + comp.speech.research
          + sci.image.processing

          Relevant FAQs are:

          + Higher-order statistics FAQ
          + comp.arch.embedded FAQ
          + comp.compression FAQ
          + comp.realtime FAQ
          + comp.speech FAQ
          + sci.image.processing FAQ
          + Audio sampling FAQ

          There is an index of DSP-related mailing lists at:

          + http://www.dsprelated.com/

          Other relevant links:

          + http://weblab.research.att.com/phoaks/comp/dsp/
          + http://www.ncc.com/misc/dsp_sites.html
          + http://www.tasp.org
          + http://www.eg3.com/dsp/index.htm,
            http://www.cera2.com/dsp/index.htm, or
            http://www.eetoolbox.com/dsp/index.htm
          + http://www.dspguru.com
          + http://shoko.calarts.edu/~glmrboy/musicdsp/music-dsp.html

Q0.2: Versions of the comp.dsp FAQ

          If you're reading this via the World Wide Web:

          Click       on      http://www.bdti.com/faq/dsp_faq.zip      or
          http://www.bdti.com/faq/dsp_faq.tar.Z  to download a compressed
          HTML version of the FAQ.

          Click     on     http://www.bdti.com/faq/dsp_faq.asc.zip     or
          http://www.bdti.com/faq/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.")

          If you're reading this as ASCII text:

          Get  with  the  program  and  get  a  web  browser.  The FAQ is
          available  on  World Wide Web with a much nicer interface. This
          is  especially  true for information presented in tabular form.
          Try: http://www.bdti.com/faq

Q0.3: DISCLAIMER OF WARRANTY

          BERKELEY   DESIGN   TECHNOLOGY,   INC.   AND   THE   INDIVIDUAL
          CONTRIBUTORS  TO  THE FAQ BY NECESSITY ASSUME NO RESPONSIBILITY
          FOR  ACCURACY, ERRORS OR OMISSIONS, OR FOR THE USES MADE OF ANY
          INFORMATION  AND/OR  MATERIAL  CONTAINED HEREIN OR ANY DECISION
          BASED  ON SUCH USE. NO WARRANTIES ARE MADE, EXPRESS OR IMPLIED,
          WITH  REGARD TO THE CONTENTS OF THIS WORK, ITS MERCHANTABILITY,
          OR   FITNESS   FOR   A   PARTICULAR  PURPOSE.  BERKELEY  DESIGN
          TECHNOLOGY,  INC.  AND THE INDIVIDUAL CONTRIBUTORS SHALL NOT BE
          RESPONSIBLE  FOR  ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR
          CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE AND/OR RELIANCE ON
          THE CONTENTS OF THIS WORK. 

          Additionally,  please  note  that the opinions expressed herein
          are  those  of  the  individual contributors, and should not be
          construed  to  be  those  of  the  contributor's  employers  or
          Berkeley Design Technology, Inc.

          Phew.

Q0.4: Redistribution Permission

          This  FAQ may be redistributed (in either electronic or printed
          form)  for non-commercial purposes provided that this notice is
          preserved  and  that due credit is given to the maintainers and
          contributors.

Q0.5: Note on the list of manufacturers, addresses, and telephone numbers

          The  comp.dsp  FAQ  no longer includes a list of manufacturers.
          The  information  becomes  outdated  in  a  few  months, and we
          believe that the list takes up an inappropriate amount of space
          in the FAQ compared to the interest in the list.

                Previous section (Overview) Next section (1)

                   Previous section (0) Next section (2)

                                Q1: General DSP

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

   Updated 12/17/01

  Q1.1.1: Bibles of DSP theory

          R.  E.  Crochiere  and  L. R. Rabiner, Multirate Digital Signal
          Processing, Prentice-Hall, 1983, ISBN 0-13-605162-6.

     This book is the only real reference for filter banks and multirate
     systems, as opposed to being a tutorial.

     Peter  Kootsookos  notes:  this book is most certainly an excellent
     book  on multi-rate signal processing, but it came out right before
     perfect  reconstruction  filter  banks  hit  the streets. Multirate
     Systems and Filter Banks by P. P. Vaidyanathan covers this issue.

          G.  H.  Golub  and  C.  F. van Loan, Matrix Computations, Third
          Edition, John Hopkins University Press, 1996, ISBN 081085413-X.

          S.  M. Kay, Modern Spectral Estimation: Theory and Application,
          Prentice Hall, 1988, ISBN 0-13-598582-X.

          R.   G.   Lyons,   Understanding   Digital  Signal  Processing,
          Addison-Wesley Publishing Co., 1997, ISBN 0-201-63467-8.

          Sanjit  K.  Mitra  and  James  F.  Kaiser, Handbook for Digital
          Signal   Processing,   John   Wiley   and   Sons,   1993,  ISBN
          0-471-61995-7.

     Excellent  reference  work,  but  assumes you know a fair amount to
     begin with. [Phil Lapsley]

          A.  V.  Oppenheim,  A.  S.  Willsky, and S. H. Nawab, Signals &
          Systems, Prentice-Hall, Inc., 1996, ISBN 0-13-814757-4.

          A.  V.  Oppenheim and R. W. Schafer, Digital Signal Processing,
          Prentice-Hall,   Inc.,   Englewood   Cliffs,   NJ,  1975,  ISBN
          0-13-214635-5.

          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.

          S.  J.  Orfanidis,  Optimum  Signal Processing, Second Edition,
          1989, MacMillan Publishing, USA, ISBN 0-02-9498597.

     An  introduction  to  signal  processing  methods  which  have many
     applications  including  speech analysis, image processing, and oil
     exploration.   The   author   uses  optimum  Wiener  filtering  and
     least-squares  estimation  concepts as unifying themes and includes
     subroutines     for     FORTRAN     and    C.    [Juergen    Kahrs,
     j...@castor.atlas.de]

          T.W.   Parks   and   C.  S.  Burrus,  DFT/FFT  and  Convolution
          Algorithms:  Theory  and  Implementation,  John Wiley and Sons,
          1985, ISBN 0-47-181932-8.

          Thomas Parsons, Voice and Speech Processing, McGraw-Hill, 1987,
          ISBN 0-07-048541-0.

          W.  H.  Press,  S.  A.  Teukolsky,  W. T. Vetterling, and B. P.
          Flannery,  Numerical  Recipes  in  C, Second Edition, Cambridge
          University Press, 1992, ISBN 0-52-143108-5.

     The book is also available on-line at http://www.nr.com.

          J.  G.  Proakis and D. G. Manolakis, Digital Signal Processing:
          Principles, Algorithms, and Applications, MacMillan Publishing,
          New York, NY, 1992, ISBN 0-02-396815-X.

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

          S.  D.  Stearns  and R. A. David, Signal Processing Algorithms,
          Prentice Hall, Eaglewood Cliffs, NJ, 1988. ISBN

          P.   P.  Vaidyanathan,  Multirate  Systems  and  Filter  Banks,
          Prentice-Hall. 911 pp. ISBN 0-13-605718-7.
     _________________________________________________________________

  Q1.1.2: Adaptive signal processing

          S.  Haykin,  Adaptive  Filter  Theory,  3rd Ed., Prentice Hall,
          Englewood Cliffs, NJ, 1991. ISBN 0-13-322760-X.

          J.  R. Treichler, C. R. Johnson, and M. G. Lawrence, Theory and
          Design  of  Adaptive  Filters, John Wiley & Sons, New York, NY,
          1987, ISBN 0-47-183220-0.

          B.   Widrow  and  S.D.  Stearns,  Adaptive  Signal  Processing,
          Prentice-Hall,   Inc.,   Englewood   Cliffs,   NJ,  1985.  ISBN
          0-13-004029-0
     _________________________________________________________________

  Q1.1.3: Array signal processing

          J.E.  Hudson,  Adaptive  Array  Principles,  IEE London and New
          York,  Peter  Peregrinus  Ltd. Stevenage, UK and NY, 1981. ISBN
          0-86-341143-6.

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

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

          D.  H.  Johnson  and  D.  E.  Dudgeon, Array Signal Processing,
          Concepts    and    Techniques,    Prentice-Hall,   1993.   ISBN
          0-13-048513-6.

          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  Discrete  Fourier  Transform",  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, b...@ece.utexas.edu]

     There  are  several  typos  in  the  above  paper.  The  errors are
     corrected in:

          A. H. Nuttall, "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 and 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.

          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,
     j...@afterlife.ncsc.mil]

          D.  J.  Thomson,  "Spectrum  Estimation and Harmonic Analysis,"
          Proc. of the IEEE, vol. 70, no. 9, pp. 1055-1096, Sep. 1982.

     In  his  classic  1982  paper, David Thompson proposes the powerful
     multiple-window  method,  which  is an elegant and robust technique
     for  spectrum  estimation.  Based  on  the  Cramer  representation,
     Thompson's  method  is  nonparametric,  consistent,  efficient, and
     optimally  suited  for  finite  data  samples.  In addition, it has
     excellent  bias  control  and  stability,  provides  an analysis of
     variance  test for line components, and finally, works very well in
     many  practical applications. Unfortunately, his important work has
     been   neglected   in   many  textbooks  and  graduate  courses  on
     statistical signal processing. [Dong Wei,
     w...@vision.ece.utexas.edu, and Brian Evans, b...@ece.utexas.edu]
     _________________________________________________________________

  Q1.1.5: Digital audio effects processing

   Books:

          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.
          ISBN 0-13-039115-8.

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

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

          Charles  Dodge  and Thomas A. Jerse, Computer Music: Synthesis,
          Composition,  and  Performance,  NY: Schirmer Books, 1985. ISBN
          0-02-873100-X.

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

          F. Richard Moore, Elements of Computer Music, Englewood Cliffs,
          NJ: Prentice-Hall, 1990. ISBN: 0-13252-552-6.

     Recommended. [Juhana Kouhia, j...@cc.tut.fi]

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

          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,
     j...@cc.tut.fi]

          Joseph  Rothstein, Midi: A Comprehensive Introduction (Computer
          Music  and  Digital Audio, Vol 7), 2nd Ed., A-R Editions, 1995.
          ISBN 0-89-579309-1.

          Ken  Steiglitz,  A  DSP  Primer  - With Applications to Digital
          Audio   and  Computer  Music,  Addison-Wesley,  1996,  314  pp,
          softcover, ISBN 0-8053-1684-1.

          John  Strawn,  ed.,  Digital  Audio Engineering, 144 pages, A-R
          Editions. ISBN 0-86576-087-X.

          John   Strawn,   ed.,   Digital  Audio  Signal  Processing:  An
          Anthology,   Los   Altos,   CA:   W.   Kaufmann,   1985.   ISBN
          0-86-576087-X.

     Contains  J.A. Moorer's classic "About This Reverb Business..." and
     contains  an  article which gives a code for Phase Vocoder -- great
     tool   for   EQ,   for   Pitchshifter   and  more  [Juhana  Kouhia,
     j...@cc.tut.fi]

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

     Recommended. [Quinn Jensen, j...@qcj.icon.com]

   Forthcoming books:

   {please let us know at c...@bdti.com if they are out!}

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

          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, j...@cc.tut.fi]

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

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

  Q1.1.6: Digital signal processing implementation

          User's  manuals  and  data  sheets  on  specific digital signal
          processors  are  available directly from the manufacturers. The
          works listed below may also be of interest.

          A.  Bateman  and  W.  Yates,  Digital Signal Processing Design,
          Computer Science Press, MD, 1989.

          R.   Chassaing,   Digital   Signal   Processing   -  Laboratory
          Experiments  Using  C  and  the  TMS320C31 DSK, Wiley, NY, ISBN
          0-471-29362-8, 1999.

          R.   Chassaing,  Digital  Signal  Processing  with  C  and  the
          TMS320C30, Wiley, NY, 1992.

          R.  Chassaing and D. W. Horning, Digital Signal Processing with
          the TMS320C25, Wiley, NY, 1990.

          R.  Chassaing,  DSP Applications Using C and the TMS320C6x DSK,
          Wiley, NY, ISBN 0471207543, 2002.

          Y.  Dote,  Servo  Motor and Motion Control Using Digital Signal
          Processors, Prentice Hall, NJ, 1990.

          Mohamed  El-Sharkawy,  Digital  Signal  Processing Applications
          with  Motorola's  56002  Processor,  Prentice Hall, Upper Sadle
          River, NJ, ISBN 0-13-569476-0, 1996.

          Dale  Grover  and John R. Deller, Digital Signal Processing and
          the  Microcontroller,  Prentice  Hall,  NJ, ISBN 0-13-081348-6,
          1999.

          J.  L.  Hennessy  and D. A. Patterson, Computer Architecture: A
          Quantitative  Approach,  Morgan Kaufmann Publishers, San Mateo,
          CA, 1990, ISBN 1-55-860329-8.

          R.  Higgins,  Digital Signal Processing in VLSI, Prentice Hall,
          NJ, 1990. ISBN 0-13-212887-X.

     It's  a good primer on DSP theory and practice (albeit slightly out
     of  date  regarding  today's chips), aimed at both analog engineers
     entering  the  digital  realm  and  digital  engineers dealing with
     real-world problems. Its hardware orientation is towards components
     and  the Analog Devices ADSP-2100 series (just emerging at the time
     of  publication),  but  there is much in it of fundamental tutorial
     value. [D...@ix.netcom.com]

          B.  A.  Hutchins  and  T. W. Parks, A Digital Signal Processing
          Laboratory Using the TMS320C25, Prentice Hall, NJ, 1990.

          D.  L.  Jones  and  T.  W.  Parks,  A Digital Signal Processing
          Laboratory using the TMS32010, Prentice Hall, NJ, 1988.

          P.  Lapsley,  J.  Bier, A. Shoham, and E. A. Lee, DSP Processor
          Fundamentals:   Architectures  and  Features,  Berkeley  Design
          Technology, Inc., Fremont, CA, 1996.

          Vijay   Madisetti,   VLSI   Digital   Signal   Processors:   An
          Introduction  to  Rapid  Prototyping and Design Synthesis, IEEE
          Press/Butterworth-Heinemann, 1995.

          Henrik   V.  Sorensen  and  Jianping  Chen,  A  Digital  Signal
          Processing Laboratory Using the TMS320C30, Prentice Hall, Upper
          Sadle River, NJ, ISBN 0-13-741828-0, 1997.

          Steven  A.  Tretter,  Communication  system  design  using  DSP
          algorithms:  with  laboratory  experiments  for  the TMS320C30,
          Plenum Press, Norwell, MA, ISBN 0306450321, 1995.
     _________________________________________________________________

  Q1.1.7: Free online books

   Updated 2/11/02

    The Scientist and Engineer's Guide to Digital Signal Processing

          This  introductory  DSP  book is available for free download at
          http://www.dspguide.com/.  Topics covered in this 640-page book
          include:  convolution,  digital filters, audio processing, data
          compression, and Fourier, Laplace, and z transforms.

    Yehar's sound DSP tutorial for the braindead

          This  tutorial  is  for  people  with  "high school level" math
          knowledge,  so  you won't have to be a specialized genius to be
          able  to read this. There's actually quite a lot information in
          this  one,  but  the  best  covered  subjects  are:  filters in
          general,  FIR  and  IIR filter design, interpolation, frequency
          shifting.

          http://www.student.oulu.fi/~oniemita/DSP/INDEX.HTM

   [Steve Horne, s...@lurking.demon.co.uk]
     _________________________________________________________________

Q1.2: DSP training

   Updated 05/06/02

  Q1.2.1: Courses on DSP

          DSP training is available from the following sources:

         1. DSP  Made  Simple:  basic  DSP  theory  and  algorithms. Web:
            http://www.bessercourse.com/
         2. DSP  without  Tears:  Z Domain Technologies covers theory and
            applications. Web: http://www.zdt.com/
         3. DSP  Workshop:  Dr.  Bill  Gordon,  who is located in Austin,
            gives them. He is a former Texas Instruments employee. He can
            be reached at d...@io.com. Web: http://www.dsp-workshops.com/
         4. Berkeley Design Technology Inc.: BDTI is a DSP consulting and
            independent  DSP processor/tools evaluation firm in Berkeley,
            CA. Web: http://www.bdti.com/
         5. Cysip:   Courses   in   DSP,   Speech/Image  Processing,  and
            Communications. Web: http://www.cysip.com/

          [Brian    Evans,    b...@ece.utexas.edu;   Andreas   Spanias,
          s...@asu.edu]
     _________________________________________________________________

  Q1.2.2: On-Line courses on DSP

   Updated Mar 1, 2003

          Prof.   Brian   Evans:   Real-time   DSP   course   online   at
          http://www.ece.utexas.edu/~bevans/courses/realtime/.

          TechOnLine  (http://www.techonline.com/):  Courses  on  various
          topics.

          Engineering Productivity Tools Ltd.
          (http://www.eptools.com/tn/index.htm):   Technical   notes   on
          various topics (FFT, Sensor arrays, etc.).

          BORES Signal Processing DSP course.
          (http://www.bores.com/courses/intro/index.htm):    Introduction
          courses to DSP.

          TI  has  a  centralized  training  site where DSP designers can
          access  all  of TI's training webcasts, workshops and seminars.
          It can be found at www.dspvillage.ti.com/trainingpr2. It covers
          TI  DSP,  tools,  software and applications. Analog training is
          also included.

          TI  also  has  a site designed to help new DSP users (primarily
          new   TI   DSP   users)   get   started   with  their  designs:
          http://www.dspvillage.ti.com/cocostu.
     _________________________________________________________________

Q1.3: Where can I get free software for general DSP?

   Updated 05/06/02

          The  packages listed below are mostly not oriented for use with
          a specific DSP processor. See the later sections in the FAQ for
          software relevant to a particular programmable DSP chip.

  Q1.3.1: DSP Packages for MATLAB

   Updated 05/06/02

          FOR  STUDENTS IN THE US AND CANADA: The MATLAB Student Version,
          available  from  The  MathWorks,  is a full-featured version of
          MATLAB  and  includes  Simulink  (with  model  sizes  up to 300
          blocks)  and  the  Symbolic  Math  toolbox. It is available for
          Windows and Linux. See
          http://www.mathworks.com/products/studentversion/. 

    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
          subscribe     to     the     newsletter,     send    mail    to
          s...@mathworks.com.  To  make  submissions  to the digest,
          please  send  to h...@ua1vm.ua.edu with a subject: "DIG" and
          description.

   To obtain:
          Some    MATLAB    tools   are   available   on   the   web   at
          http://www.mathworks.com,    or    via    anonymous    ftp   at
          ftp://ftp.mathworks.com/.

    Wavelet Tools

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

    Communications Toolbox

   Description:
          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:

          + Probability Theory
          + Random Processes
          + Quantization
          + Binary Signalling Formats
          + Detection
          + Digital Modulation
          + Digital Communication

   To obtain:
          M-files (MATLAB 4.2) is available in:
          ftp://ftp.mathworks.com/pub/contrib/v4/misc/comm_tbx/

          The  complete  manual  in  Postscript  format  is  available at
          ftp://ftp.mathworks.com/pub/contrib/v4/misc/comm_tbx/comm_tbx.m
          anual.ps. [Mehmet Zeytinoglu, m...@ee.ryerson.ca]

    Digital Filter Package (DFP)

   Description:
          The Digital Filter Package is a GUI front-end to digital filter
          design with MATLAB. DFP extends the basic digital filter design
          functionality of MATLAB in two important ways:

          + Filter   coefficients  can  be  quantized.  This  feature  is
            important if the filter is to be implemented on a fixed-point
            DSP processor.
          + DFP generates assembly-language code for the designed digital
            filter.  In  the  current release of DFP, this option is only
            available for the Motorola DSP56xxx family.

   For more information:
          http://www.ee.ryerson.ca:8080/~mzeytin/dfp/index.html.  [Mehmet
          Zeytinoglu, m...@ee.ryerson.ca]

    Implementations of the CELP Federal Standard 1016 Speech Coder and LPC-10e
    Speech Coder

   To obtain:
          http://www.cysip.com/dsplinks.html.      [Andreas      Spanias,
          s...@asu.edu]

    GSM Routines

   Description:
          Chris  Stratford  has  placed  GSM-related  MATLAB code online,
          including    routines   for   GMSK   modulation   and   Viterbi
          equalization.

   To obtain:
          http://www.stratfordc.free-online.co.uk.
     _________________________________________________________________

  Q1.3.2: DSP Packages for Mathematica

   Updated 04/03/01

     Note:  FOR STUDENTS: A student version of Mathematica is available.
     It  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.

    Signal Processing Packages (SPP) and Notebooks, Version 2.9.5

   Description:
          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.

   To obtain:
          Contact   Brian   Evans   at   b...@ece.utexas.edu,   or  see
          http://www.ece.utexas.edu/~bevans/projects/symbolic/spp.html.

          Version  3.0  of  the  SPP  (an  "overhauled  version  of  2.x"
          according  to  the  author)  is  available  commercially in two
          products:  the  Signals and Systems Pack from Wolfram Research,
          and   a  book  entitled  "Mathematica  Notebooks  to  Accompany
          Contemporary  Linear  Systems Using MATLAB" from PWS Publishing
          company.

    EE341

   Description:
          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.  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.

    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).

   For more information:
          Contact Dr. Sreenath, s...@veda.esys.cwru.edu.

    Other Mathematica DSP Notebooks

          The   following   Mathematica   notebooks  can  be  ftped  from
          worldserver.com:

          + pub/malcolm/FilterDesign.math  IIR  Filter Design (continuous
            and discrete)
          + pub/malcolm/ear.math.Z   Implementation  of  Lyon's  Cochlear
            Model
          + pub/malcolm/Gammatone.math    Implementation   of   Gammatone
            Cochlear  Model. Printed copies (with floppies) are available
            from   the   Apple   library  (c...@applelink.apple.com).
            Pointers to the notebooks are available from Malcolm Slaney's
            homepage at http://www.interval.com/~malcolm/pubs.html.

          The   following   Mathematica  notebooks  (from  Julius  Smith,
          j...@ccrma.stanford.edu)       can       be      ftped      from
          ccrma-ftp.stanford.edu:

          + pub/DSP/Tutorials/GenHamming.ma.Z Generalized Hamming windows
          + pub/DSP/Tutorials/Kaiser.ma.Z The Kaiser window
          + pub/DSP/Tutorials/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.3.3: Other DSP Libraries

   Updated 05/06/02

    Audio File I/O Routines

   Description:
          The Audio File Signal Processing (AFsp) package is a library of
          routines  for  reading  and  writing  audio  files  of  various
          formats.  It also provides utility programs for comparing audio
          files   (speech   activity  factor,  SNR);  coping,  combining,
          concatenating,   and   changing  the  format  of  audio  files;
          resampling  (arbitrary sample rate conversion); filtering audio
          files  (including ITU-T filters); and generating noise / tones.
          These routines are freely distributable under a license similar
          to  the  GNU license. They were written by Prof. Peter Kabal of
          the  Telecommunications and Signal Processing Library at McGill
          University.

   To obtain:
          The kit is located at: ftp://ftp.tsp.ece.mcgill.ca/TSP/AFsp/

   For more information:
          See   http://www.tsp.ece.mcgill.ca/Docs/Software/AFsp/AFsp.html
          [Brian Evans, b...@ece.utexas.edu]

    FFTW ("Fastest Fourier Transform in the West")

   Description:
          FFTW, a fast C FFT library, along with benchmarks comparing the
          speed  and  accuracy of many public domain FFTs on a variety of
          platforms.

   To obtain:
          http://www.fftw.org

   For more information:
          f...@fftw.org.

    Intel Signal Processing Library

   Description:
          The Intel Signal Processing Library provides a set of optimized
          C functions that implement typical signal processing operations
          on Intel processors.

   To obtain:
          http://developer.intel.com/software/products/perflib/spl/index.
          htm

    ISIP Automatic Speech Recognition System

   Description:
          Source  code  for  a public domain automatic speech recognition
          system.

   To obtain:
          http://www.isip.msstate.edu/projects/speech/software/asr/index.
          html

    ISIP Foundation Classes

   Description:
          A  large  C++  class  library  for  use  in  signal  processing
          research.  Includes  classes  for  file  I/O, vector and matrix
          operations,   signal   processing,   pattern  recognition,  and
          automatic speech recognition.

   To obtain:
          http://www.isip.msstate.edu/projects/speech/software/documentat
          ion/class/index.html

    Linear Systems Toolbox for Maple

   Description:
          Public domain extension to Maple.

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

   For more information:
          Contact Tony Richardson, a...@mpl.ucsd.edu.

    Signal Processing using C++ (SPUC)

   Description:
          Free  C++  classes  for DSP & digital communications simulation
          and modeling. Includes:

          + Basic  building  blocks  such  as  fixed  bit  width  integer
            classes, pure-delay blocks, Gaussian and random noise, etc.
          + DSP  building  blocks  such  as  FIR,  IIR,  Allpass, Running
            Average,  Lagrange  interpolation  filters, NCOs (numerically
            controlled oscillators), Cordic rotator.
          + Several  communications  functions  such as timing, phase and
            frequency    discriminators   for   BPSK/QPSK   signals   and
            raised-cosine type FIR filter functions.

   To obtain:
          http://spuc.sourceforge.net/

   For more information:
          t...@ieee.org.

    Vector/Signal/Image Processing Library (VSIPL)

   Description:
          VSIPL  is  an  API  and  library  for vector, signal, and image
          processing.

   To obtain:
          http://www.vsipl.org
     _________________________________________________________________

  Q1.3.4: DSP Software

   Updated 10/18/99

    AudioFile System

   Description:
          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.

   To obtain:
          AudioFile  is  distributed  in  source  form,  with a copyright
          allowing  unrestricted use for any purpose except sale (see the
          Copyright notice).

          The kit is located in the at: ftp://crl.dec.com/pub/DEC/AF/

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

   For more information:
          a...@crl.dec.com  is a mailing list for discussions of AudioFile.
          Send  mail  to a...@crl.dec.com to be added to this list.
          [Larry Stewart, s...@crl.dec.com]

    Khoros

   Description:
          Visual  programming  interface  for image and video processing.
          See the UseNet group comp.soft-sys.khoros. A free trial version
          is available.

   Platforms:
          Digital UNIX 4.0D, Red Hat Linux 4.2, Irix 6.2 and 6.3, Solaris
          2.5.1, Windows NT 4.0

   To obtain:
          Khoros is found at: http://www.khoral.com/.

    MathViews, WaveXplorer, MathXplorer

   Description:
          MathViews  for  Windows/32  -  Math  Software  for  Windows 3.1
          (version  2.1 only) and Windows 95/NT. Current version is 2.21.
          "MathViews  for  Windows/32 is MATLAB look-alike. It has a full
          set  of  linear  algebra  and  signal processing functionality.
          MathViews is highly compatible with the MATLAB language"

          WaveXplorer  for  Windows  95/NT:  version  2.21.  "Interactive
          waveform   editor   (based   on  the  computational  engine  of
          MathViews)"

          MathXplorer,   MathViews   ActiveX   control:   version   2.21.
          "MathXplorer    provides   easy   access   to   the   MathViews
          computational  engine  that can be embedded in MS Excel, Visual
          Basic, Internet Explorer, etc."

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

   To obtain:
          http://www.mathwizards.com/.   No  sources.  Shareware  version
          available.

    PC Convolution

   Description:
          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
          Experimental Psychology.

          The  current  version  of this software demonstrates continuous
          time convolution, discrete time, and circular convolution along
          with cross-correlation.

   To obtain:
          ftp://lamarr.ee.umr.edu/pub/pcc5.zip.   University  instructors
          may  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: (573) 341-4894
    e-mail: k...@ee.umr.edu

    Ptolemy

   Description:
          Ptolemy  is an object oriented framework for the specification,
          simulation, and rapid prototyping of systems. From a flow graph
          description,  Ptolemy can generate both C code and DSP assembly
          code for rapid prototyping. Code generation is not yet complete
          and  is  included  in  the  current  release  for demonstration
          purposes only.

   Platforms:
          Ptolemy  is  available  for Solaris, HPUX, Digital Unix, Linux,
          and Windows NT.

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

          Organizations  without  Internet  access  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: i...@eecs.berkeley.edu

          This  includes  printed  documentation,  including installation
          instructions,  a user's guide, and manual pages. A handling fee
          will be charged.

   For more information about Ptolemy and its successor, Ptolemy II:
          See        http://ptolemy.eecs.berkeley.edu       and       the
          comp.soft-sys.ptolemy Usenet newsgroup.

    SANTIS (now Dataplore)

   Description:
          SANTIS   is   a  tool  for  Signal  ANalysis  and  TIme  Series
          processing.   All   operations   can   be   executed   from   a
          mouse-supported  graphical user interface. It contains standard
          facilities  for  signal processing as well as advanced features
          like wavelet techniques and methods of nonlinear dynamics.

   Platforms:
          Supported  systems  include  Microsoft Windows, Linux, Solaris,
          and SGI Irix.

   To obtain:
          You can get the software and more information from the WWW page
          http://datan.de/dataplore/.         [Ralf         Vandenhouten,
          v...@Physiology.RWTH-Aachen.DE]

    ScopeDSP

   Description:
          ScopeDSP  is  a  time  and frequency signal processing tool for
          Windows  95/NT.  It can read and or write real or complex, time
          or  frequency sampled data in a variety of file formats. It can
          generate  various  types  of time signals, manipulate data, and
          transform  between time and frequency domains. Shareware with a
          60-day test period.

   To obtain:
          http://www.iowegian.com/.

    Sfront

   Description:
          Sfront  is  a  compiler  for Structured Audio, the audio signal
          processing  language that is a part of the ISO/IEC MPEG 4 Audio
          standard.  The output of the compiler is a C program, that when
          compiled  and  executed  generates  the  audio, with many audio
          input,  audio  output, and control options, including real-time
          interactive  and  audio  streaming  support  for some OS's. The
          website  also  includes  an  online  book  for  learning how to
          program  in  Structured  Audio,  and  a  reference  manual that
          describes how to extend sfront and embed it in applications.

   Platforms:
          The compiler is written in strict ANSI C, and runs on most UNIX
          systems as well as MS Windows.

   To obtain:
          Sfront  is  distributed  under  the  GNU public license, and is
          available     for     free    download    at    the    website:
          http://www.cs.berkeley.edu/~lazzaro/sa.

    Shorten

   Description:
          Shorten  is  a compressor/coder for waveform files. It supports
          both  lossless  coding  and lossy coding down to three bits per
          sample. It operates using a linear predictor and Huffman coding
          the  prediction  residual  using Rice codes. A technical report
          shows  that  this  simple scheme is both fast and near optimal.
          Data  formats  supported are RIFF WAVE plus signed and unsigned
          values  at  8  or  16  bits per sample, ulaw, alaw and multiple
          interleaved  channels. For lossless compression of speech files
          recorded  using  16  bits  at  16  kHz the compression ratio is
          typically  2:1.  CD  audio  (44.1  kHz,  16 bit stereo) is near
          transparant at 4:1 or 5:1 lossy compression.

   Platforms:
          The  command  line  version  compiles on most UNIX platforms. A
          version is available for MS Windows/NT.

   To obtain:
          http://www.softsound.com/Shorten.html  points  to all versions.
          [Tony Robinson, a...@softsound.com]
     _________________________________________________________________

  Q1.3.5: Text to Speech Conversion Software

   Updated 1/7/97

          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, j...@afterlife.ncsc.mil]

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

          ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/syntheses/english2p
          honeme.tar.gz

          The  comp.speech FTP site includes a speech synthesis directory
          at  ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/synthesis.  The
          main  package  is  "rsynth"  which is a complete text to speech
          synthesis  system. Several component packages are also present.
          "textnorm"  converts non-words such as digit strings into words
          (e.g. 1000 to ONE THOUSAND). "english2phoneme" does some of the
          same  but  its  main  functionality  is to guess an appropriate
          phoneme sequence for each word. "klatt" takes a parametric form
          that  describes  each  phoneme  and  converts it to a waveform.
          Other  packages  exist  in  the  same  directory  to  edit  and
          visualise     the    klatt    parameters.    [Tony    Robinson,
          a...@softsound.com]
     _________________________________________________________________

  Q1.3.6: Filter Design Software

   Updated Sep 9 2004

     * There  are many filter design programs available via anonymous FTP
       or  by  HTTP.  The  following are summarized here and discussed in
       greater detail below:
          + August  1992  IEEE  Trans.  on  Signal Processing: METEOR FIR
            filter design program.
          + DFiltFIR and DFiltInt FIR filter design program.
          + Netlib IIR filter design.
          + IEEE Press "Programs for Digital Signal Processing".
          + Tod Schuck's near-optimal Kaiser-Bessel program.
          + Brian  Evans'  and  Niranjan  Damera-Venkata's  packages  for
            Matlab and Mathematica.
          + ScopeFIR.
          + FilterExpress.
          + Charles Poynton's filter design resource page.
          + Juhana Kouhia's hotlist.
          + Alex Matulich's recipes for compiling 2-pole digital filters.

     * The  August  92  issue  of  IEEE Transactions on Signal Processing
       includes  a  paper entitled "METEOR: A Constraint-Based FIR Filter
       Design Program" by Kenneth Steiglitz, Thomas W. Parks and James F.
       Kaiser.  The  authors  describe an FIR design program which allows
       specification  of the target frequency response characteristics in
       a  fairly  generalized  and  flexible  way.  As  well as designing
       filters,  the  program  can  optimize filter lengths and push band
       limits.
       The  source  for  the  programs  (meteor.p,  form.p, meteor.c, and
       form.c)  and the METEOR paper as a postscript file may be found at
       http://www.  music.Princeton.edu/classes/class.html.  The programs
       were originally written in Pascal and then evidentally run through
       p2c  to  produce  the C versions; all the necessary Pascal library
       stuff  is  included in the C code and they built error-free out of
       the box for me on an SGI machine.
       There is no manual. The paper includes instructions on running the
       programs. [Steve Clift, c...@mail.anacapa.net]
       Weimin  Liu  has  created  a  Windows  95  interface to the Meteor
       program, which can be downloaded from
       http://www.nyx.net/~wliu/filter.html.

     * Other  free  filter  design  packages  are  DFiltFIR and DFiltInt.
       DFiltFIR  designs  minimax  approximation FIR filters. It uses the
       algorithm  developed  by  McClelland  and  Parks  and incorporates
       constraints  on  the  response  as  proposed  by  Grenez. DFiltInt
       designs  minimum  mean-square error FIR interpolating filters. The
       design  specification  is  in  terms of a tabulated power spectrum
       model for the input signal.
       The packages are available from
       http://www.tsp.ece.mcgill.ca/Docs/Software/FilterDesign/FilterDesi
       gn.html     or     directly     via     anonymous     ftp     from
       ftp://ftp.tsp.ece.mcgill.ca/TSP/FilterDesign/.
       Another  package,  libtsp, is a library of C-language routines for
       signal    processing.    The    package    is    available    from
       http://www.tsp.ece.mcgill.ca/reports/Software/libtsp/libtsp.html
       or directly via anonymous ftp from
       ftp://ftp.tsp.ece.mcgill.ca/pub/libtsp/        [Peter       Kabal,
       k...@ECE.McGill.CA]

     * 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.,  netlib.bell-labs.com)  as  the file
       netlib/cephes/ellf.shar.Z. By email to n...@netlib.bell-labs.com
       the  request  message  text is `send ellf from cephes'. The URL is
       http://www.netlib.org. [Stephen Moshier, m...@world.std.com]

     * The  Fortran  source  code  from the IEEE Press book "Programs For
       Digital  Signal  Processing"  is  available  by anonymous ftp from
       ftp://soma.crl.mcmaster.ca/pub/IEEE/software/dsp.zip            or
       ftp://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
       McClellan-Parks-Rabiner  FIR  filter design program available from
       ftp://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, from Charles Owen
       at      m...@uxa.ecn.bgu.au;      also      Andrew      Ukrainec,
       u...@InfoUkes.com]

     * I  have  developed  a  MATLAB  (vers 4.0 for Windows) program that
       allows  for  the  frequency  domain  design  of the "near optimal"
       Kaiser-Bessel  window.  The program is based upon the three closed
       form  equations developed by Kaiser and Schafer in 1981 that allow
       for  the  specification  of the time domain window length, and the
       frequency  domain  mainlobe width and relative sidelobe amplitude.
       For  signal  processing applications where the spectral content of
       the  windowing  function  is  critical  so as not to mask adjacent
       spectra  such as radar signal processing applications where a weak
       target  return  adjacent to a strong target return could be easily
       masked  by a windowing function that resolves poorly in frequency;
       this program allows complete frequency domain specification of the
       spectral  characteristics  of  the windowing function. The current
       version  of  this  program  allows for the user to specify the two
       frequency   domain  parameters  of  mainlobe  width  and  relative
       sidelobe  amplitude  and  lets  the  window length fall out as the
       dependent  variable.  The  program is easily modified to allow for
       any  two  parameters  to  be selected and allowing the third to be
       determined as a result.
       This  program will output to an ASCII file the window coefficients
       that can be easily dumped to an EPROM or included in a program. It
       also  generates  both time and frequency domain graphs so that the
       user  can  visually  verify  the  widow record length and spectral
       content.  I  will  gladly  provide  any interested parties with my
       MATLAB code.


    Tod M. Schuck
    Lockheed Martin NE&SS
    Moorestown, NJ 08060
    e-mail: t...@lmco.com

     * Filter  Optimization  Packages for Matlab and Mathematica, version
       1.1  by  Brian L. Evans and Niranjan Damera-Venkata, Dept. of ECE,
       The    University    of    Texas   at   Austin.   Available   from
       http://www.ece.utexas.edu/~bevans/projects/filters/syn_filter_soft
       ware.html .
       We  have  released  a  set  of  Matlab  packages  to  optimize the
       following characteristics of analog filter designs simultaneously:
         1. magnitude response
         2. linear phase in the passband
         3. peak overshoot in the step response
         4. quality factors (Q)
       subject  to  constraints  on  the same characteristics. The Matlab
       packages  take  about  10  seconds  for fourth-order filters and 3
       minutes  for  eighth-order filters to run on a 167-MHz Sun Ultra-2
       workstation.
       We   use  the  symbolic  mathematics  environment  Mathematica  to
       describe the constrained non-linear optimization problem formally,
       derive  the  gradients  of  the cost function and constraints, and
       synthesize  the  Matlab  code  to perform the optimization. In the
       public  release,  we  provide  the  Matlab  to optimize analog IIR
       filters of fourth, sixth, and eighth orders. Using the Mathematica
       formulation,  designers can add new measures and constraints, such
       as   capacitance   spread   for  integrated  circuit  layout,  and
       regenerate the Matlab code.
       We  describe  the  framework  in  [1].  An  earlier version of the
       framework is described in [2]. We plan to extend this framework to
       digital IIR filters.
       [1]  N.  Damera-Venkata,  B.  L.  Evans,  M. D. Lutovac, and D. V.
       Tosic,    Joint    Optimization   of   Multiple   Behavioral   and
       Implementation  Properties  of  Analog  Filter Designs, Proc. IEEE
       Int.  Sym. on Circuits and Systems, Monterey, CA, May 31 - Jun. 3,
       1998, vol. 6, pp. 286-289.
       http://www.ece.utexas.edu/~bevans/papers/1998/filter_optimization/
       .
       [2]  B.  L.  Evans,  D.  R.  Firth,  K.  D.  White, and E. A. Lee,
       Automatic   Generation   of   Programs   That   Jointly   Optimize
       Characteristics  of Analog Filter Designs, Proc. of European Conf.
       on  Circuit  Theory  and  Design,  Istanbul, Turkey, August 27-31,
       1995, pp. 1047-1050.
       http://ptolemy.eecs.berkeley.edu/publications/papers/95/filter_des
       ign_ecctd95/ 
       [Brian Evans, b...@combo.ece.utexas.edu]

     * ScopeFIR  is  a  FIR  filter  design  tool for Windows 95/NT which
       designs complex FIR filters using the Parks-McClellan algorithm or
       windowing.  It  can  then  mix,  scale, quantize, and edit the FIR
       coefficients.  It  creates a wide variety of impulse and frequency
       response  plots, and supports many data file formats, including TI
       assembly  and  ADI  PM.  Shareware  with  a  60-day  trial period,
       available from http://www.iowegian.com/scopefir.htm.
       [Grant Griffin, g...@iowegian.com]

     * FilterExpress  is  a  free  filter  synthesis tool for Windows. It
       supports  the  design  and  analysis of IIR, FIR and multirate FIR
       filters. It is available for download from
       http://www.systolix.co.uk/swdownload.htm.

     * DSP  Design Performance provides Java applets generating different
       filters. The applets can be found at
       www/jdtaft" target=_blank rel="nofollow">http://www.nauticom.net/www/jdtaft.

     * Charles  Poynton  has  an  extensive  list  of hot-links to filter
       design resources on the web at
       http://www.inforamp.net/~poynton/Poynton-dsp.html.

     * Juhana    Kouhia    has    an   extensive   list   of   links   at
       http://www.funet.fi/~kouhia/hotlist-dsp.html.

     * Alex Matulich has compiled recipes (step by step instructions) for
       coding  three  kinds  of 2-pole digital filters, both low-pass and
       high-pass,  complete  with correction factors to ensure that the 3
       dB  cutoff  frequency  stays  where  you  put  it when you cascade
       filters of the same type together.
       Alex     has     made     these     recipes     available    here:
       http://unicorn.us.com/alex/2polefilters.html
       The  recipes  cover  Butterworth,  Critically-Damped,  and  Bessel
       filters.  Alex  also  includes test results; i.e., plots of actual
       frequency  response  and  step-function te
______________________________
New DSP Code Snippets Section now Live.   Learn more about the reward program for contributors here.

comp.dsp FAQ [2 of 4] - 2004-12-06 15:22:52

Archive-name: dsp-faq/part2
Last-modified: Tue Oct 19 2004
URL: http://www.bdti.com/faq/


                   Previous section (1) Next section (3)

                         Q2: Algorithms and standards

Q2.1: Where can I get public domain algorithms for general-purpose DSP?

   Updated 12/31/96

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

    Netlib

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

   To Obtain:
          For Europe:

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

   For more information:
          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
          s...@temper.stat.cmu.edu.

          The   symbolic   algebra   system   REDUCE   is   supported  by
          r...@rand.org.

    NSWC Library

          The  Naval Surface Warfare Center has a library of mathematical
          Fortran  subroutines  that may be of use. 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

   For more information:
          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.
          [Witold Waldman]

    IEEE Press book "Programs For Digital Signal Processing"

          You  can  get  the Fortran source code from the IEEE Press book
          "Programs For Digital Signal Processing." See question 1.3.6.
     _________________________________________________________________

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

   Updated 09/10/01

          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.

          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.

   To obtain CELP:
          Available through the National Technical Information Service:


    NTIS
    U.S. Department of Commerce
    5285 Port Royal Road
    Springfield, VA 22161
    USA
    (800) 553-6847

          FS-1016    CELP    3.2    may    also    be    obtained    from
          ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/coding/celp_3.2a.ta
          r.Z.

          LPC-10 (2.4 Kbps) is available from
          ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/coding/lpc10-1.0.ta
          r.gz.

          LPC    (4.8    Kbps)   can   be   downloaded   in   SpeakFreely
          http://www.speakfreely.org/,        or       in       HawkVoice
          http://www.hawksoft.com/hawkvoice/. HawkVoice includes versions
          of  OpenLPC,  LPC-10,  LPC,  GSM,  and  Intel/DVI  ADPCM. These
          versions  have  been rewritten to support multiple encoding and
          decoding  streams,  and  the interfaces have been standardized.
          [Phil Frisbie, Jr., p...@hawksoft.com]

          OpenLPC   (1.4   and   1.8   Kbps)   can   be  downloaded  from
          ftp://ftp.futuredynamics.com/OpenLPC/.

          MATLAB     software    for    LPC-10    is    available    from
          http://www.eas.asu.edu/~spanias/srtcrs.html.  Also,  postscript
          copies   of   tutorials  of  speech  coding  can  be  found  at
          http://www.eas.asu.edu/~spanias/papers.html.  [Andreas Spanias,
          s...@asu.edu]

   For more information:

     * 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.
       Additional   information   on  CELP  can  also  be  found  in  the
       comp.speech FAQ.
     * 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.
       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,
       pp. 40-49.

   [Most of the above from Joe Campbell, j...@afterlife.ncsc.mil, with
   additions  from  Dan  Frankowski,  d...@winternet.com, and Ed Hall,
   e...@rand.org]
     _________________________________________________________________

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

   Updated: 04/03/01

   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 and
          converts  them to 4-bit samples, yielding a compression rate of
          4:1.

   To obtain:
          There  is  public  domain C code available via anonymous ftp at
          ftp://ftp.cwi.nl/pub/audio/adpcm.shar  written  by  Jack Jansen
          (email J...@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);

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

   Platforms:
          The  routines  have been tested on numerous platforms, and will
          easily  compress  and decompress millions of samples per second
          on current hardware.

   For more information:
          The   G.721/722/723   packages   are   available  from  ITU  at
          http://www.itu.ch/.

          This is also available as:
          ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/coding/G711_G722_G7
          23.tar.gz

          [From  Dan  Frankowski,  d...@winternet.com;  Jack  Jansen,
          J...@cwi.nl]
     _________________________________________________________________

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

   Updated 4/27/00

          GSM  (Global System for Mobile Communication) is a standard for
          digital  cellular  telephony used in Europe. GSM also refers to
          the  speech  coder  used  in GSM telephones, which is what this
          section of the FAQ is concerned with.

          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 they 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  modeled  after
          compress(1),  and  a library API. Compression and decompression
          run   faster   than   real  time  on  most  SPARCstations.  The
          implementation has been verified against the ETSI standard test
          patterns.

          Jutta    Degener    j...@cs.tu-berlin.de,    Carsten   Bormann
          c...@cs.tu-berlin.de)

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

   To obtain:
          ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/coding/gsm-1.0.6.ta
          r.gz. An alternative site is
          ftp://ftp.cwi.nl/pub/audio/gsm-1.0.7.tar.gz.      Try     also:
          http://kbs.cs.tu-berlin.de/~jutta/toast.html.

   [From   Dan   Frankowski,   d...@winternet.com;   Jutta   Degener,
   j...@cs.tu-berlin.de]
     _________________________________________________________________

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

   Updated 04/02/01

          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.

   Books/papers:
          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, 1997.

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

          An  algorithm  implementation  that  matches  a  large  body of
          psycho-acoustical  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. Available for
     ftp at ftp://worldserver.com/pub/malcolm/ICASSP90.psc.Z

          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, Interval Research, and John
          Lazzaro, U.C. Berkeley.]

          Another  interesting  piece  of information on pitch perception
          can be found at
          http://www.dspdimension.com/html/timepitch.html.   [Stephan  M.
          Sprenger, s...@prosoniq.com]
     _________________________________________________________________

Q2.6: What standards exist for digital audio? What is AES/EBU? What is S/PDIF?

   Updates 1/8/97

  Q2.6.1: Where can I get copies of ITU (formerly CCITT) standards?

          Try the ITU (International Telecommunication Union) homepage at
          http://www.itu.ch/.
     _________________________________________________________________

  Q2.6.2: What standards are there for digital audio?

    AES/EBU

          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 raw CD
          subcode; DAT is StartID and SkipID. In professional 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

          "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   and   Tim   Channon,
          t...@black.demon.co.uk]

          Painter,  E.  M., and Spanias, A. S. (1997 and revised 1999). A
          Review  of  Algorithms  for  Perceptual Coding of Digital Audio
          Signals. (PostScript, 3MB)
          http://www.eas.asu.edu/~spanias/papers.html

          [Andreas Spanias, s...@asu.edu]
     _________________________________________________________________

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

   Updated 9/13/99

          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.

   To obtain:
          Craig  Reese  posted the source of similar routines to comp.dsp
          in August '92. These are archived on
          ftp://mirriwinni.cse.rmit.edu.au/pub/dsp/misc/ulaw_reese.

   References:
          ITU-T  (formerly 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 (TI literature number SPRA012A), pp. 169-198.

   [From   Joe   Campbell;   Craig   Reese,   c...@super.org;   Sepehr
   Mehrabanzad,     s...@falstaff.dev.cdx.mot.com;    Keith    Kendall,
   KLK3%m...@magic.itg.ti.com]
     _________________________________________________________________

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

   Updated 9/13/99

          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, e...@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.

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

          A paper available as
          ftp://ccrma-ftp.stanford.edu/pub/DSP/Tutorials/BandlimitedInter
          polation.eps.Z  explains  the  algorithm.  Free source code, as
          well  as  an  HTML discussion of the algorithm, is available at
          www.stanford.edu/~jos/resample/" target=_blank rel="nofollow">http://ccrma-www.stanford.edu/~jos/resample/.   It   all  works
          quite well.

          [From Kevin Bradley, kb+@andrew.cmu.edu:]

          There  is an implementation of polyphase resampling for various
          rates    as    a   part   of   the   Sox   audio   toolkit   at
          http://home.sprynet.com/~cbagwell/sox.html. See file polyphas.c
          for details.

          Sox    also   contains   an   implementation   of   bandlimited
          interpolation  and  linear interpolation, and serves as a ready
          vehicle for module experimentation.

          [From Fritz M. Rothacher, f...@ieee.org:]

          You  can  add  my Ph.D. thesis on sample-rate conversion to the
          FAQ:

          Fritz M. Rothacher, Sample-Rate Conversion: Algorithms and VLSI
          Implementation,  Ph.D.  thesis,  Integrated  Systems Lab, Swiss
          Federal  Institute  of  Technology,  ETH  Zuerich,  1995,  ISBN
          3-89191-873-9

          It    can    also   be   downloaded   from   my   homepage   at
          http://www.guest.iis.ee.ethz.ch/~rota.
     _________________________________________________________________

Q2.9: Wavelets

   Updated 6/3/98

  Q2.9.1 What are wavelets? Where can I get more information?

          In  short,  wavelets  are  a way to analyze a signal using base
          functions  which  are  localized  both  in time (as diracs, but
          unlike sine waves), and in frequency (as sine waves, but unlike
          diracs).  They  can  be used for efficient numerical algorithms
          and many DSP or compression applications.

          Sources of information on wavelets include:

          + a  newsletter,  "Wavelet  Digest".  Subscriptions for Wavelet
            Digest: E-mail to w...@math.scarolina.edu with "subscribe"
            as   subject.  The  Wavelet  Digest  can  also  be  found  at
            http://www.wavelet.org/.
          + http://www.amara.com/current/wavelet.html
     _________________________________________________________________

  Q2.9.2 What are some good books and papers on wavelets

          The best introduction to wavelet transforms is in:

     Wavelets  and  Signal Processing- Oliver Rioul and Martin Vetterli,
     IEEE Signal Processing magazine, Oct. 91, pp 14-38

          A good introductory book on wavelets:

     Randy  K.  Young,  Wavelet  Theory  and  Its  Applications,  Kluwer
     Academic Publishers, ISBN 0-7923-9271-X, 1993.

          A more thorough book:

     Ali  N.  Akansu  and  Richard  A.  Haddad,  Multiresolution  Signal
     Decomposition  Transforms, Subbands, Wavelets Academic Press, Inc.,
     ISBN 0-12-047140-X

          A couple more interesting papers:

     Wavelets  and Filter banks: Theory and Design, IEEE Transactions on
     Signal Processing, Vol. 40, No.9, Sept. 1992, pp 2207-2232

     Mac  Cody's  articles  in  Dr. Dobb's Journal, April 1992 and April
     1993
     Paper by Ingrid Daubechies in IEEE Trans. on Info. theory , vol 36.
     No.5 , Sept 1990 and a book titled " Ten lectures on Wavelets" deal
     with the mathematical aspects of the WT.
     _________________________________________________________________

  Q2.9.3: Where can I get some software for wavelets?

    ftp://pascal.math.yale.edu/pub/wavelets/software/xwpl

          Binaries   are  available  for  the  following  platforms:  Sun
          Sparcstations  running  SunOS 4.1 or Solaris 2.3, NeXT machines
          running  NeXTstep  3.0  or  higher,  with  an X server, Silicon
          Graphics  machines  (IRIS),  DEC Alpha AXP running OSF/1 1.2 or
          higher, i386/i486 PC compatible with Linux 0.99.

          There  is  also  a sample data directory containing interesting
          signals.

   More information:
          http://www.math.yale.edu/users/majid/

          [From Fazal Majid m...@math.yale.edu]:

    Rice Wavelet Tools

   Description:
          The  Rice  Wavelet  Toolbox  (RWT)  is  a  collection of Matlab
          M-files  and  C MEX-files for 1D and 2D wavelet and filter bank
          design,  analysis,  and  processing. The toolbox provides tools
          for  denoising and interfaces directly with our Matlab code for
          wavelet  domain  hidden  Markov  models and wavelet regularized
          deconvolution.  Also included is a simple converter to the data
          format used by the official Matlab wavelet toolbox.

          The  current  distribution, Version 2.3 (Dec 1, 2000), has been
          streamlined  and  packaged  for  different  systems,  including
          Solaris,  Linux,  and  Microsoft  Windows. Functions omitted in
          Version 2.3 can be found in the Version 2.01 distribution.

   To obtain:
          See http://www-dsp.rice.edu/software/RWT/.

          Send mail to w...@rice.edu (or r...@dsp.rice.edu)
     _________________________________________________________________

Q2.10: How do I calculate the coefficients for a Hilbert transformer?

   Updated 6/3/98

          For  all  the  gory details, I suggest the paper: Andrew Reilly
          and   Gordon  Frazer  and  Boualem  Boashash:  Analytic  signal
          generation---tips   and  traps,  IEEE  Transactions  on  Signal
          Processing, no. 11, vol. 42, Nov. 1994, pp. 3241-3245.

          For comp.dsp, the gist is:

         1. Design  a  half-bandwidth  real  low-pass  FIR  filter  using
            whatever optimal method you choose, with the principle design
            criterion  being  minimization  of the maximum attenuation in
            the band f_s/4 to f_s/2.
         2. Modulate  this  by  exp(2  pi  f_s/4  t),  so  that  now your
            stop-band  is  the negative frequencies, the pass-band is the
            positive  frequencies,  and the roll-off at each end does not
            extend into the negative frequency band.
         3. either  use it as a complex FIR filter, or a pair of I/Q real
            filters in whatever FIR implementation you have available.

          If  your  original  filter  design produced an impulse response
          with  an  even  number  of  taps,  then the filtering in 3 will
          introduce  a  spurious  half-sample  delay (resampling the real
          signal   component),   but   that  does  not  matter  for  many
          applications, and such filters have other features to recommend
          them.

          Andrew Reilly [R...@zeta.org.au]
     _________________________________________________________________

Q2.11: Algorithm implementation: floating-point versus fixed-point

          According  to  the  WWWebster  Dictionary,  an  algorithm is "a
          procedure for solving a mathematical problem (as of finding the
          greatest  common  divisor)  in  a  finite  number of steps that
          frequently  involves  repetition  of  an  operation; broadly: a
          step-by-step  procedure  for solving a problem or accomplishing
          some end especially by a computer."

          Typical (although by no means the only) operations are those of
          addition and multiplication. When expressing the algorithm with
          pencil  and  paper,  these  operations are commonly taken to be
          within  an  algebraically  complete  number  system such as the
          integers  or  the  reals.  However,  when  the  time  comes  to
          implement  the  algorithm  on  a computer, these "ideal" number
          systems  must be exchanged for something realizable. The number
          systems  available  today  on  common  processors  and  digital
          hardware   are   broadly   categorized  as  floating-point  and
          fixed-point.

          In  a  floating-point  representation, the total number of bits
          available  are  partitioned  into  an  exponent  and  mantissa.
          Generally   speaking,  the  mantissa  stores  the  "significant
          digits"  of the value while the exponent scales the significant
          digits  to the desired magnitude. The action of the exponent is
          to  move,  or  "float,"  the  decimal  point  depending  on the
          magnitude being represented; thus the term "floating-point."

          Because  floating-point  representations are typically at least
          32  bits  long  (IEEE-754  is a popular standard for 32-bit and
          64-bit  floating-point  numbers),  there  exists simultaneously
          high   precision  and  high  dynamic  range.  These  traits  of
          floating-point  numbers  allow  most  algorithms  to  be ported
          directly  to  floating-point  implementations with little or no
          change,   and   this   is   the   key   reason   floating-point
          representations  are  highly  desirable.  The  disadvantage  of
          floating-point   implementations   is   that   they  require  a
          significant   amount   of   extra   hardware  over  fixed-point
          implementations, which translates to higher parts costs, higher
          power  consumption,  slower  execution,  larger chip area, or a
          combination of these.

          As  the term "fixed-point" implies, fixed-point representations
          have  the  binary  point  at  a  fixed  location. There are two
          subsets of fixed-point implementations: fractional and integer.
          In  a  fractional  fixed-point  implementation,  such  as  that
          provided  on  the Motorola 56K series of DSPs, the binary point
          is  always  assumed  to  be to the left of the most-significant
          digit.  In  an integer fixed-point implementation, such as that
          provided  by  the Texas Instruments TMS320C54xx series of DSPs,
          the  binary  point  is  to  the  right of the least-significant
          digit. In either case, the arithmetic operations implemented in
          the  hardware  are essentially integer, which results in a much
          simpler  arithmetic  logic  unit  in hardware that allows lower
          cost,  lower  power consumption, faster execution, smaller chip
          area,  or  a  combination of these, over that of floating-point
          implementations.

          For  more  information on the IEEE-754 format, see James Carr's
          "Numerical  Analysis"  class notes at Florida State University,
          http://www.scri.fsu.edu/~jac/MAD3401/Backgrnd/ieee.html.

    Fixed-Point Arithmetic: The Basics

          In  essence,  a  fixed-point representation is a simple integer
          scaled  (divided)  by  a power of two. If we denote an unscaled
          integer  variable by upper case "X" and the scaled, fixed-point
          variable  by  lower  case  "x,"  then x = X/2^b, where b is the
          number of digits the binary point is shifted left. For example,
          if  X  is a 16-bit, two's complement integer, and b=4, then "X"
          has  values  ranging from -2^(15) to +2^(15)-1 and with minimum
          step  size of 1, while the scaled value "x" ranges from -2^(11)
          to +2^(11) - 1/(2^4) with a minimum step size of 1/(2^4).

          Note  that  the value of "b" is not part of the representation.
          You won't see it in a register or as part of the data anywhere;
          it is a parameter that the algorithm implementer must determine
          and maintain.

          Fixed-point  representations place some very different rules on
          operations than their floating-point counterparts. For example,
          two  variables must be scaled the same in order to be added (or
          subtracted). Thus it may be necessary to shift one or the other
          operand   prior   to  adding.  Another  example  is  that  when
          multiplying  two N-bit values with scale factors b0 and b1, the
          result  is  scaled  (b0+b1) and requires 2*N bits in general in
          order to avoid overflow and maintain precision.

          There   are   several   other   rules  and  considerations  for
          fixed-point  arithmetic  that  are  commonly  encountered  when
          implementing    algorithms.    For    more   information,   see
          http://home.earthlink.net/~yatescr/papers.htm.

          Randy Yates [y...@ieee.org]

                   Previous section (1) Next section (3)

                   Previous section (2) Next section (4)

                 Q3: Programmable DSP chips and their software

Q3.1: What are the available DSP chips and chip architectures?

   Updated 05/07/02

          The  "big  four"  programmable DSP chip manufacturers are Texas
          Instruments, with the TMS320C2000, TMS320C5000, and TMS320C6000
          series  of  chips;  Motorola,  with the DSP56300, DSP56800, and
          MSC8100  (StarCore)  series;  Agere  Systems  (formerly  Lucent
          Technologies),  with  the  DSP16000 series; and Analog Devices,
          with  the  ADSP-2100  and  ADSP-21000  ("SHARC") series. A good
          overview of programmable DSP chips is published periodically in
          EDN and Computer Design magazines.

          You  may  also  want  to check out Berkeley Design Technology's
          home  page,  which  has  a  number  of articles on choosing DSP
          processors,  as  well  as a "Pocket Guide to DSP Processors and
          Cores" in both HTML and PDF formats. Brief overviews of various
          DSP  processors,  cores,  and general-purpose processors can be
          found at http://www.bdti.com/procsum/index.htm.

          Here's a less ambitious chip breakdown by manufacturer:

  Agere Systems (formerly Lucent Technologies):

   DSP16xxx:
          100  to  170  MHz  16-bit  fixed-point  DSP.  The DSP16000 core
          features  two multipliers with SIMD-like capabilities, a 20-bit
          address   bus,   a   32-bit   address  bus,  and  eight  40-bit
          accumulators.  The  chips  feature  two  serial  ports  and two
          timers.

          The first-generation processor, the DSP16210, contains a single
          DSP16000 core and 120 KB of internal RAM. The second-generation
          DSP16410 incorporates two DSP16000 cores and 386 KB of internal
          RAM.

  Analog Devices:

   ADSP-21xx:
          10  to  80  MHz  16-bit  fixed  point DSPs; 40-bit accumulator;
          24-bit  instructions.  Large  number  of  family  members  with
          different  configurations  of  on-chip memory and serial ports,
          timers, and host ports. ADSP-21mspxx members include an on-chip
          codec.

   ADSP-219x:
          160  MHz  16-bit  fixed  point DSPs; 40-bit accumulator; 24-bit
          instructions.  Based on the ADSP-21xx family, and is is mostly,
          but not completely, assembly source-code upward compatible with
          the  ADSP-21xx  Adds  new  addressing  modes and an instruction
          cache,  expands  address  space,  and  lengthens  pipeline (six
          stages  compared  to  three  on  the ADSP21xx). Family includes
          members containing multiple ADSP-219x cores.

   ADSP-21xxx ("SHARC"):
          33  to 100 MHz floating-point DSP; Supports 32-bit fixed-point,
          IEEE  format  32-bit floating-point, and 40-bit floating-point;
          40-bit registers plus an 80-bit accumulator that can be divided
          into two 32-bit registers and a 16-bit register.

          The  first-generation  SHARC, the ADSP-2106x, features a single
          data  path, a 32-bit address bus, and 40-bit data bus. Versions
          are  available  with  up to 512 KB of on-chip memory, up to six
          communication ports, and up to 10 DMA channels.

          The second-generation ADSP-2116x has two parallel data paths, a
          32-bit  address  bus,  and  a  64-bit  data  bus.  Versions are
          available  with  up  to  512  KB  of  on-chip memory; up to six
          communication ports, and up to 14 DMA channels.

          Analog  Devices  also  sells  the AD14000 series, which contain
          four ADSP-2106x SHARC processors in a single-chip package.

   ADSP-2153x:
          200 to 300 MHz 16-bit fixed point DSPs that can execute two MAC
          instructions per cycle; based on the ADI/Intel MSA core. Uses a
          mix  of  16-,  32-,  and  64-bit instructions. Features include
          ability  to  operate  over  a  wide  range  of  frequencies and
          voltages.

  Motorola:

   DSP563xx:
          66  to 160 MHz 24-bit fixed-point DSP; most family members have
          24-bit  address  and  data  busses.  The DSP563xx also features
          56-bit   accumulators   (2),  timers,  serial  interface,  host
          interface  port.  The  DSP56307  and  DSP56311 contain a filter
          co-processor. Up to 1 MB of internal RAM.

   DSP568xx:
          40  MHz  16-bit fixed point DSP; 36-bit accumulators (2), three
          internal  address buses (two 16-bit, one 19-bit) and one 16-bit
          external  address  bus;  three  16-bit internal data buses, one
          16-bit  external  data  bus;  serial  ports, timers. 4-12 KB of
          internal RAM. Most family members include an on-chip A/D.

   DSP5685x:
          160  MHz  16-bit fixed point DSP based on the DSP568xx. Adds an
          exponent detector and two accumulators, extends shifter and the
          logic  unit  to  32  bits, and widens internal address and data
          buses. The DSP5685x uses a 1X master clock rate rather than the
          2X master clock rate used by the DSP568xx.

   MSC81xx:
          The  300  MHz  MSC8101  is  the  first  processor  based on the
          StarCore  SC140  core. It contains four parallel ALU units that
          can  execute up to four MAC operations in a single clock cycle.
          The   MSC8101   uses   variable-length  instructions.  Features
          include: 512 KB on-chip RAM; 16 DMA channels; an on-chip filter
          co-processor;  and  interfaces  for  ATM,  Ethernet,  E1/T1 and
          E3/T3, and the PowerPC bus.

  Texas Instruments:

   TMS320C2xxx:
          20-40  MHz  16-bit  fixed-point  DSPs  oriented toward low-cost
          control applications; 16 bit data, 32 bit registers. The family
          members  have a variety of peripherals, such as A/D converters,
          41  I/O  pins,  and  16  PWM  outputs. A variety of RAM and ROM
          configurations are available

          TI  also  sells  the  TMS320C2x family, an older version of the
          chip with fewer features.

   TMS320C3x:
          33-75  MHz  floating  point DSPs; 32-bit floating-point, 24-bit
          fixed-point  data,  40-bit  registers;  DMA  controller; serial
          ports; some support for multi-processor arrays. Various ROM and
          RAM configurations.

   TMS320C54xx:
          40  to  160  MHz 16-bit fixed-point DSPs with a large number of
          specialized  instructions.  Many family members; the processors
          differ  in  configuration  of  on-chip  ROM/RAM,  serial ports,
          autobuffered   serial  ports,  host  ports,  and  time-division
          multiplexed ports. On-chip RAM ranges from 10 KB to over 1 MB.

   TMS320C55xx:
          144  to  200  MHz  dual-ALU variant of the TMS320C54xx that can
          execute  two  MAC  instructions per cycle. Variable instruction
          word  width.  Features include up to 320 KB internal RAM; 6 DMA
          channels; 2 serial ports; and 2 timers.

   TMS320C62xx:
          150-300  MHz  16-bit  fixed-point  DSP  with  VLIW  (very large
          instruction   word),   load/store   architecture;   32   32-bit
          registers;  very  deep  pipeline;  two  multipliers,  ALUs, and
          shifters; cache.

   TMS320C64xx:
          400-600  MHz  16-bit  fixed-point DSP based on the TMS320C62xx.
          Adds  SIMD support to most execution units, including extensive
          8-bit  SIMD  support. Also doubles data bandwidth and increases
          size of on-chip memory.

   TMS320C67xx:
          100-167  MHz 32-bit and 64-bit IEEE-754 floating-point DSP with
          VLIW (very large instruction word), load/store architecture; 32
          32-bit  registers;  very  deep pipeline; two multipliers, ALUs,
          and shifters; cache.
     _________________________________________________________________

Q3.2: What is the difference between a DSP and a microprocessor?

   Updated 04/02/01

          The  essential difference between a DSP and a microprocessor is
          that   a   DSP  processor  has  features  designed  to  support
          high-performance,  repetitive,  numerically intensive tasks. In
          contrast,   general-purpose   processors   or  microcontrollers
          (GPPs/MCUs for short) are either not specialized for a specific
          kind   of   applications   (in   the  case  of  general-purpose
          processors),   or   they   are  designed  for  control-oriented
          applications  (in  the case of microcontrollers). Features that
          accelerate performance in DSP applications include:

          + Single-cycle multiply-accumulate capability; high-performance
            DSPs   often   have   two   multipliers   that   enable   two
            multiply-accumulate  operations  per  instruction cycle; some
            DSP have four or more multipliers
          + Specialized   addressing   modes,   for   example,  pre-  and
            post-modification  of  address pointers, circular addressing,
            and bit-reversed addressing
          + Most  DSPs  provide  various configurations of on-chip memory
            and peripherals tailored for DSP applications. DSPs generally
            feature multiple-access memory architectures that enable DSPs
            to   complete   several   accesses  to  memory  in  a  single
            instruction cycle
          + Specialized   execution   control.  Usually,  DSP  processors
            provide  a  loop  instruction  that  allows tight loops to be
            repeated without spending any instruction cycles for updating
            and  testing  the loop counter or for jumping back to the top
            of the loop
          + DSP  processors  are  known  for  their irregular instruction
            sets,  which generally allow several operations to be encoded
            in  a  single instruction. For example, a processor that uses
            32-bit   instructions   may   encode   two   additions,   two
            multiplications,  and  four  16-bit  data moves into a single
            instruction. In general, DSP processor instruction sets allow
            a  data  move  to be performed in parallel with an arithmetic
            operation.  GPPs/MCUs,  in contrast, usually specify a single
            operation per instruction

          While the above differences traditionally distinguish DSPs from
          GPPs/MCUs,  in  practice  it  is  not  important  what  kind of
          processor you choose. What is really important is to choose the
          processor  that  is  best  suited  for  your  application; if a
          GPP/MCU  is  better  suited for your DSP application than a DSP
          processor,  the  processor of choice is the GPP/MCU. It is also
          worth  noting that the difference between DSPs and GPPs/MCUs is
          fading:  many  GPPs/MCUs now include DSP features, and DSPs are
          increasingly adding microcontroller features.

          [Ole Wolf, w...@bdti.com]
     _________________________________________________________________

Q3.3: Software for Analog Devices DSPs

   Updated 05/08/02

  Q3.3.1: Where can I get a C compiler for the ADSP-21xx and ADSP-21xxx?

          The  G21  package  collects the free source code for the Analog
          Devices  GCC-based C compilers for their 21xxx (SHARC) and 21xx
          series  DSPs.  These  compilers  are  all  based on GCC version
          2.3.3.  Full  source  code for the compiler, assembler, linker,
          etc. is available at http://www.kvaleberg.com/g21.html.

          The  C  compilers  are available for the 210x series as well as
          for  the  SHARC.  The assemblers and linkers are only available
          for  the  SHARC.  The  source code is based on what is released
          under  GPL  by ADI, but is adapted for use with Linux and other
          Unix variants.

          [Egil Kvaleberg, e...@kvaleberg.no]
     _________________________________________________________________

  Q3.3.2: Where can I get tools for the ADSP-21xxx?

          SHARC  development tools are avaiable for Acorn/BSD, Linux, and
          other  platforms.  The  tools  include  frontend/preprocessor ,
          assembler,  linker,  archiver, a utility to generate ROM images
          for  eprom  burners, and other utilities The supplied assembler
          is  not  part  of  the gnu archive, but is based on a assembler
          originaly  written  by  P. Lantto. Source code and binaries are
          available at
          http://www.ww.tu-freiberg.de/~pberg/fgm/support/index.html.

          [Theo Markettos a...@cam.ac.uk]
     _________________________________________________________________

  Q3.3.3: Where can I get an assembler for the ADSP-2105?

          John  Sture  has  developed an assembler for the Analog Devices
          ADSP-2105.   The   latest   version   can   be   obtained  from
          http://www.suresoft.ca.  (Follow  the links to the FTP site and
          select  beta0.4.1src.tar.gz.) Requires Analog Devices' ld21.exe
          version  5.1  linker  or  equivalent  for  linking executables.
          Source code to the assembler is included under the terms of the
          GNU public license.

          [John Sture, j...@vcn.bc.ca]
     _________________________________________________________________

  Q3.3.4: Where can I get algorithms or libraries for Analog Devices DSPs?

          The  number  for  the  Analog Devices DSP BBS is (617) 461-4258
          (300, 1200, 2400, 9600, 14400 bps), 8N1.

          You  can  also  find  files  on  Analog  Devices'  web  site at
          http://www.analog.com/support/Design_Support.html,  or at their
          FTP site at ftp://ftp.analog.com.

          [Analog Devices DSP Applications, d...@analog.com]
     _________________________________________________________________

Q3.4: Software for Agere Systems (Formerly Lucent Technologies) DSPs

          Agere  Systems provides application libraries for their DSPs at
          http://www.lucent.com/micro/wam/tse/.
     _________________________________________________________________

Q3.5: Software for Motorola DSPs

   Updated 05/07/02

          Motorola  provides  free software development tools that may be
          downloaded from the Motorola Web site at
          www.motorola.com/webapp/sps/site/prod_summary.jsp?code" target=_blank rel="nofollow">http://e-www.motorola.com/webapp/sps/site/prod_summary.jsp?code
          =MSW3SDK000AA&nodeId=01M983916044937.

  Q3.5.1: Where can I get a free assembler for the Motorola DSP56000?

          A  free  assembler  for the Motorola DSP56000 exists, thanks to
          Quinn  Jensen, j...@zdomain.com. The current version is 1.2.
          It  is  also available at ftp://ftp.zdomain.com/pub/jensenq/a56
          and http://www.zdomain.com/a56.html.
     _________________________________________________________________

  Q3.5.2: Where can I get a free C compiler for the Motorola DSP56000?

          There  are  two  separate  compiler  sources  for  the Motorola
          DSP56000.  One  is  the port of gcc 1.40 done by Andrew Sterian
          (a...@umich.edu) and the other is a port of gcc 1.37.1 done
          by Motorola and returned to the FSF. Andrew's port has bowed to
          Motorola's  version. Both may be portable to gcc2.x.x with some
          effort  required. Neither of these comes with an assembler, but
          you  can  get a free DSP56000 assembler elsewhere (see question
          3.5.1,  above).  The  Motorola  gcc source is available for FTP
          from:
          ftp://nic.funet.fi/pub/ham/dsp/dsp56k-tools/dsp56k-gcc.tar.Z
          and
          ftp://mirriwinni.cse.rmit.edu.au/pub/uP/56k/g56k.tar.gz-1996.

          From  Andrew  Sterian, a...@umich.edu: "My DSP56K compiler,
          while   not   supported  nor  as  well  tested  as  Motorola's,
          implements  fixed-point  arithmetic  rather than floating-point
          arithmetic.  This  may  be  suitable for some applications. The
          5615  compiler  also  implements fixed-point arithmetic. To the
          best  of  my knowledge, Motorola does not have a C compiler for
          the  5615  family,  although alternatives may exist. As of this
          writing  (January 1997) I have not worked with Motorola DSPs or
          compiler  software for nearly 5 years so questions regarding my
          compilers may well be met with "Ummm... I have no idea."

          Both  compilers  were  posted to alt.sources so any Usenet site
          that  archives  this  newsgroup  will  have a copy. I have also
          found the 5616 compiler at
          ftp://ftp.funet.fi/pub/ham/dsp/dsp56k-tools/gcc5616.tar.Z.
          href="http://www.newmicros.com">http://www.newmicros.com

          )  IsoPod(TM) - based on the DSP56F805. The assembler generates
          output suitable for Motorola's free JTAG flash loader.

          Pete   Gray  has  announced  the  availability  of  a  Small  C
          cross-compiler  (with  source)  and  assembler for the Motorola
          DSP56800, available for download from
          http://home.attbi.com/~petegray.  Targetting  a  simple DOS-box
          host, developed and tested using djgpp
          (http://www.delorie.com/djgpp/)  and Metrowerks CodeWarrior, in
          conjunction  with NMI's (http://www.newmicros.com) IsoPod(TM) -
          based on the DSP56F805. The assembler generates output suitable
          for Motorola's free JTAG flash loader.

          Small    C    language    reference    available    online   at
          http://www.ddjembedded.com/languages/smallc/

          Pete  also  asks  for  comments  and  feedback  to  be  sent to
          p...@ieee.org
     _________________________________________________________________

  Q3.5.3 Where can I get a disassembler for the Motorola DSP56000?

          Miloslaw  Smyk  has  released  an open source (BSD style) 5600x
          disassembly   library.   It   is   available  for  download  at
          https://sourceforge.net/projects/lib5600x    [Miloslaw    Smyk,
          t...@wmfh.org.pl]
     _________________________________________________________________

  Q3.5.4: Where can I get algorithms and libraries for Motorola DSPs?

          Motorola  provides  a  software  archive  that is available via
          World-Wide Web from the software page at
          http://www.mot.com/SPS/DSP/software/.   The   archive  includes
          macros  for  filters  (FIR,  IIR,  adaptive) and floating-point
          functions. [Tim Baggett]
     _________________________________________________________________

  Q3.5.5: Where can I get NeXT-compatible Motorola DSP56001 code?

          Try FTP at ccrma-ftp.stanford.edu. The /pub/ directory contains
          free  code  for  the  Motorola  DSP56001 and the NeXT platform.
          [b...@ccrma.Stanford.EDU]
     _________________________________________________________________

  Q3.5.6: Where can I get emulators for the 68HC11 (6811) processor?

          While  the  68HC11  is  not  a  DSP  processor,  emulators  are
          available  for  those  who  might be interested in doing DSP on
          these processors:

          + New   Mexico   State   University  (NMSU)  simulator  engine,
            ftp://crl.nmsu.edu/pub/non-lexical/6811/   (Unix).  Simulator
            engine with a command-line interface.
          + Sim6811,
            ftp://cherupakha.media.mit.edu/pub/projects/6811/sim6811/
            (Mac).  Screen-oriented  user  interface  based  on  the NMSU
            simulator engine (plus bug fixes).
          + THRSim11,   http://programfiles.com/index.asp?ID=8366  allows
            you  to  edit,  assemble, simulate and debug programs for the
            68HC11  on  Windows  95/98.  THRSim11 simulates the CPU, ROM,
            RAM,   all   memory  mapped  I/O  ports,  and  the  on  board
            peripherals.
     _________________________________________________________________

Q3.6: Software for Texas Instruments DSPs

   Updated 05/07/02

  Q3.6.1: Where can I get free algorithms or libraries for TI DSPs?

          nic.funet.fi  has some old, apparently public domain, assembler
          and  related tools from TI for the TMS320 family. The directory
          is /pub/ham/dsp.

          [Antti-Pekka Virtanen, a...@utu.fi]

          TI  has  a number of free algorithms available on their website
          at
          http://dspvillage.ti.com/docs/sdstools/sdscommon/showsdsinfo.jh
          tml?templateId=57&path=templatedata/cm/ccstudio/data/free_tools
          .

          TI's  world-wide  web  site  is  http://www.ti.com.  The TI DSP
          bulletin    board   is   mirrored   on   ftp.ti.com,   and   on
          mirriwinni.cse.rmit.edu.au.  The  TI  site is the official one,
          but    has    no   user   contributed   software.   The   file:
          ftp://mirriwinni.cse.rmit.edu.au/mirrors/tibbs/00readme  (might
          be  broken)  provides  further  guidance.  Please  restrict FTP
          session  to  outside  of 8 am to 6 pm local time (10 pm to 8 am
          GMT). [Brad Hards, b...@gil.com.au]

          {  If  anyone  knows  of any other sources for TI DSP software,
          please let us know at c...@bdti.com. Thanks! }
     _________________________________________________________________

  Q3.6.2: Where can I get free development tools for TI DSPs?

          TI  development  tools are available for free 30 day evaluation
          on the TI website. Go to
          http://www.ti.com/sc/docs/tools/index.htm.
     _________________________________________________________________

  Q3.6.3: Where can I get a free C compiler for the TI TMS320C3x/4x?

          The  GNU  binutils  2.11  and  later have been ported to the TI
          C54xx/IBM  C54DSP.  Most  of  the binutils tools are supported,
          including  the  assembler, linker and objdump. The assembler is
          source-compatible  with  the TI assembler. The GNU binutils are
          available  from  http://sources.redhat.com/binutils/  GDB ports
          for c25/c5x/c54x are also available.

          [Timothy Wall]

          Dr. Michael P. Hayes has written a GNU C-based compiler for the
          TMS320C30     and     TMS320C40    families,    available    at
          http://www.elec.canterbury.ac.nz/c4x.   The   current   version
          patches  against  gcc-2.8.1; support is moving to egcs-1.2. The
          compiler  is  freely redistributable under the terms of the GNU
          Public  License.  Front-ends  are also available for C++, Java,
          Fortran 77, Pascal, Ada 95, among others.

          [Dr. Michael P. Hayes, m...@elec.canterbury.ac.nz]
     _________________________________________________________________

  Q3.6.4: Where can I get a free assembler for the TI TMS320C3x/4x?

          Ted  Rossin  has  written  an  assembler  and  linker  for  the
          TMS320C30.  In  his  words, "It is somewhat limited by the fact
          that  it can't handle expressions but it has worked fine for me
          over  the  past  few  years. There is no manual because it is a
          clone  of  the  TI  assembler  and  linker.  However the linker
          command  files  use a different (easier to use) syntax. It runs
          on  HP-UX  workstations, Macs, IBM clones and believe it or not
          the Atari-ST (because I developed the code on it)."

          [Ted Rossin, r...@fc.hp.com]

          Dr.  Michael P. Hayes has written a GNU-based assembler for the
          TMS320C30     and     TMS320C40    families,    available    at
          http://www.elec.canterbury.ac.nz/c4x.   The   current   version
          patches  against  binutils-2.7. According to Michael Hayes, the
          assembler  syntax  is  compatible  with  the  Texas Instruments
          TMS320C30  assembler,  although  not  all the Texas Instruments
          directives  are  supported. The binutils include a linker (ld),
          archiver  (ar), disassembler (objdump), and other miscellaneous
          utilities.  The  object  format  of the assembler is compatible
          with  the  COFF format used by the Texas Instruments assembler.
          The   assembler   and   other   binary   utilities  are  freely
          redistributable under the terms of the GNU Public License.

          [Dr. Michael P. Hayes, m...@elec.canterbury.ac.nz]
     _________________________________________________________________

  Q3.6.5: Where can I get a free simulator for the TI TMS320C3x/4x?

          A  freely  distributable instruction set architecture simulator
          is  available  for the TMS320C30 DSP as part of the Web-Enabled
          Simulation framework from UT Austin at
          http://anchovy.ece.utexas.edu/~arifler/wetics/.

          We  have  released  all of the source code, as well as prebuilt
          C30   simulators   for   Windows   '95/NT   and   Solaris   2.5
          architectures.

          The  C30  simulator  is bit-, cycle-, and instruction-accurate.
          The  behavior of the C30 simulator has been validated against a
          C30 DSK board. The C30 simulator correctly reports interlocking
          and  pipeline flushes, so it provides a convenient way to check
          C30  programs  for  these  hidden  delays. The C30 simulator is
          based   on   the  C30  DSK  tools  by  Keith  Larson  at  Texas
          Instruments.

          [Brian Evans, b...@combo.ece.utexas.edu]

          Herman  Ten Brugge (h...@net.hcc.nl) has also written
          a  GNU  debugger  (GDB)  based  simulator for the TMS320C30 and
          TMS320C40,      available      via     anonymous     FTP     at
          http://www.elec.canterbury.ac.nz/c4x.     This     is    freely
          redistributable under the terms of the GNU Public License.

          This simulator allows you to debug your programs without having
          to  a  connect  to  a  real  C[34]x target system. It will also
          profile  your code showing you where the pipeline conflicts are
          occurring.  You  can  connect  I/O  ports  to  files (or TCP/IP
          sockets),  trigger  interrupts,  examine the cache etc. It will
          detect  different  threads  of  control  running and generate a
          profile summary for each thread, annotating both the C code and
          assembler code with the number of executed cycles.

          [Dr. Michael P. Hayes, m...@elec.canterbury.ac.nz]
     _________________________________________________________________

  Q3.6.6: What is Tick? Where can I get it?

          Tick  is  a  TMS320C40  parallel  network  detection and loader
          utility.

          It is available from:
          ftp://mirriwinni.cse.rmit.edu.au/mirrors/tibbs/UserContributed.

          Supports:  Transtech,  Hunt, and Traquair boards hosted by DOS,
          SunOS, Linux (a PC unix)

                   Previous section (2) Next section (4)
______________________________
New DSP Code Snippets Section now Live.   Learn more about the reward program for contributors here.