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