1. IMPORTANT:
    We launched a new online community and this space is now closed. This community will be available as a read-only resources until further notice.
    JOIN US HERE

Delay module creates drift when stretched

Discussion in 'Building With Reaktor' started by joffre88, Feb 12, 2020.

  1. joffre88

    joffre88 New Member

    Messages:
    3
    Hi,

    I tried to realize solution described at https://www.native-instruments.com/forum/threads/real-time-audio-pitch-down.313519/
    It seems to work, i.e. delay creates octave down effect when stretched constantly with factor of 0.5. However after around 4 seconds, it starts to drift slightly (C3+16 cents when stretched from C4) then once again after 16 seconds (B2+41 cents). I tried changing various settings (max delay time, with/without interpolation etc.) but the effect persists. Could anyone explain this behaviour, or how make it more stable? Attaching ensemble with screen, and pitch graph. I run reaktor 6.3.1(R6) as "Reaktor 6 FX" VST under Ableton Live 10 on MacOS.
     

    Attached Files:

    Last edited: Feb 12, 2020
  2. colB

    colB NI Product Owner

    Messages:
    3,969
    Maybe you need to re-write it in core and use 64bit processing!
     
  3. joffre88

    joffre88 New Member

    Messages:
    3
    Thanks for response, colB. I partly debugged this case since my last post. Looks like the problem lies more in the integrator component, not the delay. It seems that after some time it can't keep increasing value at its output in the way that keeps delay time change speed constant. After 4 seconds the output change rate falls below 1 increment per 0.5ms and after 16 seconds it raises above it. This in turn leads to the symptom I described - pitch drift in delayed signal. Interestingly if I increase sample rate setting, then integrator output destabilises faster e.g. after 2 seconds instead of 4 and vice versa when decreasing sample rate. I am not dsp expert so I'm not sure if the reason is floating point rounding errors in integrator, buffer overflows or whatever. Still, some light on it would be helpful for further debugging.
     
  4. joffre88

    joffre88 New Member

    Messages:
    3
    I rewrote integrator module in core and the problem indeed seems to lie in 32-bit vs 64-bit precision. Since I changed read, write and sum modules to 64-bit precision in my integrator implementation, delay change rate is stable and there is no more pitch drift. Thanks for advice, colB!
     
    • Like Like x 1