Hi,

Thanks for your replies.

What I hear is definitely related with the modulation. The artefacts are 
audible every time the modulation is applied: manually or automatically (please 
not that I have an interpolator for manual parameter changes to avoid abrupt 
changes). I think I was already applying an Hermit interpolation. This is my 
delay read function. 

void IDelay::read(IAudioSample *output)
{
    float t = _time+_modulation*_modulationRange;

    if (t>(_size-1))
        t=_size-1;

    float sf;

    #if 0
    sf = _buffer[int(readIndex(t,0))];
    #else
    float const y_1= _buffer[int(readIndex(t,-1))];
    float const y0 = _buffer[int(readIndex(t,0))];
    float const y1 = _buffer[int(readIndex(t,1))];
    float const y2 = _buffer[int(readIndex(t,2))];
    float const x=readIndex(t,0)-int(readIndex(t,0));
    float const c0 = y0;
    float const c1 = 0.5f*(y1-y_1);
    float const c2 = y_1 - 2.5f*y0 + 2.0f*y1 - 0.5f*y2;
    float const c3 = 0.5f*(y2-y_1) + 1.5f*(y0-y1);

    sf=((c3*x+c2)*x+c1)*x+c0;
    #endif

    *output = sf;
}

float IDelay::readIndex(float t, int offset)
{
    float index=_writeIndex-t+offset;

    if (index<0)
        index+=_size;

    return index;
}

Thanks,

Regards,

Nuno

> On 19 Mar 2015, at 18:12, David Olofson <da...@olofson.net> wrote:
> 
> On Thu, Mar 19, 2015 at 6:15 PM, Nuno Santos <nunosan...@imaginando.pt> wrote:
> [...]
>> If I use interpolation for buffer access I experience less glitch and more 
>> alias.
> 
> What type of interpolation are you using? I would think you need
> something better than linear interpolation for this. I'd try Hermite.
> That should be sufficient for "slow" modulation, although
> theoretically, you *should* bandlimit the signal as soon as you play
> it back faster than the original sample rate.
> 
> For more extreme effects (which effectively means you're sometimes
> playing back audio at a substantially higher sample rate than that of
> your audio stream), you may need a proper bandlimited resampler.
> (Apply a brickwall filter before the interpolation, and/or oversample
> the interpolator.)
> 
> 
> -- 
> //David Olofson - Consultant, Developer, Artist, Open Source Advocate
> 
> .--- Games, examples, libraries, scripting, sound, music, graphics ---.
> |   http://consulting.olofson.net          http://olofsonarcade.com   |
> '---------------------------------------------------------------------'
> --
> dupswapdrop -- the music-dsp mailing list and website:
> subscription info, FAQ, source code archive, list archive, book reviews, dsp 
> links
> http://music.columbia.edu/cmc/music-dsp
> http://music.columbia.edu/mailman/listinfo/music-dsp

--
dupswapdrop -- the music-dsp mailing list and website:
subscription info, FAQ, source code archive, list archive, book reviews, dsp 
links
http://music.columbia.edu/cmc/music-dsp
http://music.columbia.edu/mailman/listinfo/music-dsp

Reply via email to