Newsgroups: comp.dsp
Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!wuarchive!mit-eddie!uw-beaver!ubc-cs!news.UVic.CA!sirius!bweeks
From: bweeks@sirius.UVic.CA (Brent  Weeks)
Subject: Re: 48k to 44.1k sample rate conversion
In-Reply-To: joe@media-lab.media.mit.edu.MEDIA.MIT.EDU's message of 12 May 91 22:12:04 GMT
Message-ID: <BWEEKS.91May13130405@fermat.UVic.CA>
Sender: news@sol.UVic.CA
Nntp-Posting-Host: fermat.uvic.ca
Organization: University of Victoria, Victoria, BC, Canada
References: <5826@media-lab.media.mit.edu.MEDIA.MIT.EDU>
Date: Mon, 13 May 91 20:03:54 GMT

I recently tackled the sample-rate conversion problem in some of my
own work.  The paper that got me on the right track is:

"Interpolation and Decimation of Digital Signals - A Tutorial Review"
by Ronald E. Crochiere and Lawrence R. Rabiner.
This paper is in Proceedings of the IEEE, Vol. 69, No. 3, 1981, pp.
300-331.

In short, efficient implementation of Sample Rate Conversion involves
filtering short windows (of length Q) of the input data using a
polyphase filter (FIR with Q taps) operating at the output sample
rate.  The polyphase filter has periodically time-varying
coefficients.

The sample rate converter should be quite do-able on a DSP Chip.  Use
an up-conversion factor of 160 and a down-conversion factor of 147.
(44.1 * 160/147 = 48)  The polyphase filter cycles through 160 states,
then repeats.  The filter coefficients would be stored in 160*Q words.
For each output sample, besides managing windowing of the input data,
just Q multiply and accumulates need to be performed.  Typical values
of Q range from 5 to 20.

As far as determining the filter coefficients goes, read the paper!

I have implemented a sample rate converter along these lines in
Matlab.  It is good enough for my work, but is too slow for signals
greater than a few thousand samples in length.

				Brent Weeks
				bweeks@fermat.uvic.ca
