[music-dsp] Waveform Interpolation

robert bristow-johnson rbj at audioimagination.com
Sun Dec 12 00:38:01 EST 2010

On Dec 11, 2010, at 12:26 PM, Nigel Redmon wrote:

> Naw, actually, right after sending that I started to type up a  
> retraction and my girlfriend showed up, and she hates it when I'm  
> not ready to go to dinner on time. My bad, I started to make the  
> point that linear interpolation response is down 6dB at half-band,  
> same as a half-band sinc interpolation.

now i think i get it.  i dunno why i was swapping t and f.  my bad.   
sinc(t/2) interpolation is half-band.  dunno why i was missing that.

now that i think of it, anything times sinc(t/2) is half-band (because  
the main consequence i think of half-band filters is that every other  
sample of the impulse response is zero).  if you define

      h(t)  =  w(t)*sinc(t/(2T))

you'll have half-band symmetry.  i knew that as a property of using a  
windowed-sinc interpolation kernel for upsampling by a factor of 2.

when you upsample by an integer factor greater than 2 you don't get  
that half-band symmetry, but if it's an integer the one out of every N  
samples of h[n] are zero and you can skip calculating the output  
sample and just copy the input.

and if w(t) is a nice gaussian-looking pulse, so also will W(f) be a  
nice looking gaussian pulse that will be convolved with the half-band  
rect() function (that corresponds to the sinc() part).  i guess you  
can get an idea what

> I guess I was thinking about the notch being at half-sample-rate,  
> went of on a bogus tangent about half band (sorry, half been coding  
> for hours). (Zero-order hold is down 3 dB at half-band.) I sent it,  
> went back to coding for a couple of mins and it hit me that I'd just  
> sent a load of garbage. Thanks for not calling me an idiot (lol).

i appreciate the favor returned.  i know that you get half-band  
symmetry with w[n]*sinc(n/2) filters because every other sample (save  
one) is zero.  the same is true for hilbert transform filters, but  
they are v[n]*sin(pi*n/2).  but they can be switched if w[0] is zero,  
i think.

On Dec 11, 2010, at 7:32 PM, Nigel Redmon wrote:

> OK, fixed the Firefox/Opera issue.
> Lesson learned: javascript returns "-Infinity" for log(0), not  
> "NaN", which I was checking for. Some javascript implementations  
> don't mind doing math with -Infinity, some do.
> On Dec 11, 2010, at 3:42 PM, Nigel Redmon wrote:
>> ... and Firefox has issue with some things (linear interpolation  
>> and zero-order hold for some reason...

now i'm back to not understanding what you're saying again.


r b-j                  rbj at audioimagination.com

"Imagination is more important than knowledge."

More information about the music-dsp mailing list