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

FFT and Oversampling?

Discussion in 'Building With Reaktor' started by Reakting, Feb 3, 2019.

  1. Reakting

    Reakting New Member

    Messages:
    4
    I'm an experienced DSP programmer (C++ and Cockos JSFX), interested in developing in Reaktor, but inexperienced in this platform. For my next FX project I want to do this:
    1. Upsample incoming audio;
    2. Nonlinear processing of the oversampled audio;
    3. Downsample to original rate and then output.
    I could do this all in JSFX, leveraging off their built-in FFT routines to implement the upsampling and downsampling, and hand-coding the rest. But if Reaktor would be a good platform for this project, I could take this as an opportunity to learn Reaktor.

    I browsed the Reaktor manual but do not see FFT routines. How is oversampling done in Reaktor? Without FFT and oversampling, how do avoid aliasing while doing nonlinear processing?
     
  2. colB

    colB NI Product Owner

    Messages:
    3,969
    There are some FFT modules in the User Library, but I don't think that would be a good approach for oversampling - at least in Reaktor. Restrictions in Reaktor mean it's very difficult to optimize processes like FFT, so they tend to use a lot of cpu. Also there's the hefty latency to consider...

    I'd be interested to learn how you use FFT for oversampling in general though.
    Are you using it to create a steep high order filter prior to downsampling? How do you mange the latency?

    Polyphase filters are one favoured approach, but my understanding was that this is in part due to the fact that they are easily parallelized using SSE (and similar) cpu extensions. Reaktor doesn't give us access to these instructions, so not such a useful technology.

    Oversampling approaches I've seen in Reaktor tend to be low order and use either interpolation or IIR filters or a combination of both.
    And then the user can choose to run the whole ensemble oversampled via Reaktors sample rate settings (top right corner of the screen)

    There are plenty of threads that have discussions of oversampling (best to use google search though ;-) rather than the forums own search). Most of us here are not DSP experts, so some of the discussion might not be at a useful level for you, but we do often find a way to get things done ;)

    Personally I chop and change. For non-linearities, I've got a lot of mileage out of 'Infinite Linear Oversampling' combined with 2x and 4x using IIR filters.
     
  3. Reakting

    Reakting New Member

    Messages:
    4
    Thanks for your helpful response.

    I hadn't realized the user can set Reaktor's srate 4x higher than the host's. That could be all the oversampling I need when nonlinearities are small, at least for prototyping.

    I would use FFT to implement the low-pass. Latency would be bad, but that's okay with me for this project. Parallelization is beyond my experience, not something I've been considering at this early stage in design. First I need to hear the results of some of my ideas so I can decide whether they are worth pursuing and optimizing.
     
    Last edited: Feb 4, 2019