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 combination. 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.
      regards, klaas-jan
    • 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 there...
      -- Stefan Tiedje------------x------- --_____-----------|-------------- --(_|_ ----|-----|-----()------- -- _|_)----|-----()-------------- ----------()