Re: Re: The click~ object and band limited impulses...

    Oct 15 2007 | 8:35 am
    > how do you bandlimit a spike? that is always an interesting question.
    from a paper by eli brandt: "A bandlimited impulse is a sinc
    function, time-scaled so as to have one zero-crossing
    per sample period."
    you might want to read it a second time - well, at least, i had to
    read it several times to understand...
    basically this means, a single bandlimited impulse is identical to a
    unit impulse, as the sample points fall on the
    zero-crossings of the sinc function (so you don't "see" it in the
    sampled version).
    it gets more complicated if you are interested in a series of closely
    spaced impulses to generate harmonic sounds
    (impulse train). as long as the fundamental period is an integer
    multiple of the sampling rate, you are fine.
    but with any other period, the impulses naturally will fall inbetween
    sampling points, forcing us to interpolate -
    otherwise heavy aliasing would occur. and that's where the underlying
    sinc-function becomes visible (and audible).
    >> You can be creative about how you limit/modify the
    >> bandwidth using any of the array of available filters on the output
    >> of [click~].
    there certainly is a lot of fun and creative potential in this
    if the goal is to produce a bandlimited impulse _train_, though, you
    will not get there by generating
    a unit impulse and using available filters in msp.
    i believe there is more than one way to do it right - i had some
    success using DSF (discrete summation formulae).
    yet, i haven't seen an implementation only with native maxmsp objects.

    • Jan 15 2008 | 11:05 pm
    • Jan 16 2008 | 1:36 am
      > Are impulses related to band limited impulses and how would I go about creating a band limited impulse using the click object if this were the case?
      There was an object called blit~ that did that:
      It seems like development has stopped, though. Get me the source and I'll try to port it.
    • Jan 17 2008 | 12:52 pm
    • Jan 17 2008 | 6:28 pm
      hi volker,
      luigi's blit is indeed more cpu friendly.
      i'm curious to see how it runs on my intel machine (it's in for repair atm)
      at a freq of 10k they are about the same on the g4 machine i tested on today, at 1k the difference gets in the region of 400% and at low frequencies the difference runs up to approx 1000%.. Then again, your external actually behaves like it should at low freqs. it also seems to be constant in it's cpu usage no matter what freq, which could be an advantage in some scenarios
      as long a you just need a few blits yours is fine. if you need 50, maybe less fine :)
      would be great if you one day could optimize it a bit, and maybe add a signalrate input while you are at it? a phase input to control the freq that way, synced to other oscillators, would be cool too
      for now, i'm very happy with it though.
      thanks again for sharing this with us.
    • Jan 18 2008 | 7:43 am
      Quote: smill wrote on Wed, 10 October 2007 15:00
      > a 'perfect' impulse would theoretically contain equal energy across the
      > frequency spectrum of human hearing.
      White noise also has equal energy across the spectrum. But it doesn't make sense that an impulse and white noise would have the same spectrum, right? Can anyone explain?
    • Jan 18 2008 | 10:14 am
      Adam Murray schrieb:
      > White noise also has equal energy across the spectrum. But it doesn't
      > make sense that an impulse and white noise would have the same
      > spectrum, right? Can anyone explain?
      It has the same spectrum if you look at the magnitudes, but the impuls
      has a defined phase relation between all these added cosines, that zeros
      out the signal on all times but the initial moment...
      noise has arbitrary phase relations...
      The time structure is very dependent on the phases...
      Look into literature about the fourier synthesis, its all explained
      Stefan Tiedje------------x-------
      --(_|_ ----|-----|-----()-------
      -- _|_)----|-----()--------------