# [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."

```