[Feature Request] msp's delay~ quality much higher than gen's delay…


    Feb 28 2014 | 5:47 pm
    Hi,
    I'm looking forward for a sinc interpolation in delay in gen!
    Because actually, none of interpolations available in delay in gen is able to give me an un-aliased sound, clean un-aliased sound that i get using the delay~ object in msp!
    Since my original formant-pitchshifter algorithm was first prototyped in msp using delay~, which is using sinc interpolation that is not available in gen***, i first tried a bit the different gen's delay interpolation options, having the quick conclusion that cubic was good... but i just had tested pitch shifting down on a noise… Now i realised while pitching-up violin notes that cubic is actually the worst interpolation! (not considering '@interp none' of course).
    I was testing the sound mostly using my great monophonic-formant-pitchshifter patch (messy at the moment), that is using a bright electric violin sound source (i precise that i'm using big low-pass filters all over the place going in and out of the pitchshifting to prevent real aliasing from too high frequencies ;-) ), but i also made a simple test patch to post here.
    Here are my tests, see simple test-patch attached:
    - msp's delay~ , (4-points?) SINC interp: Clean un-aliased sound!
    - gen's delay, LINEAR interp: Aliasing when pitchshifting-up. (only ok if upsampling my poly~
    - gen's delay, COSINE interp: Strange Aliasing even while pitchshifting a little...
    - gen's delay, CUBIC interp: Strange Aliasing even while pitchshifting a little...
    - gen's delay, SPLINE interp: Strange distortions/beats while pitchshifting-up from several octaves... (somehow i couldn't clearly reproduce in this test patch that is just using a single cycle~)
    So I'm really looking forward for a sinc interpolation in delay in gen!
    Cheers,
    Alexandre
    Alternatively, if someone know how to transform the Max 6.1/examples/gen/gen~.sincinterpolation.forloop.maxpat from 16-points sinc interp to 4-points sinc, i could eventually test if the cpu cost is ok with it. (…Not sure since I have 12 delays in my algorithm * 15 voices of polyphony))

    • Mar 03 2014 | 3:49 am
      "Alternatively, if someone know how to transform the Max 6.1/examples/gen/gen~.sincinterpolation.forloop.maxpat from 16-points sinc interp to 4-points sinc, i could eventually test if the cpu cost is ok with it. (…Not sure since I have 12 delays in my algorithm * 15 voices of polyphony))"
      Perhaps I am misunderstanding but can't you simply change the number of points by changing the 'points' variable in the code?