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

fast convolution

Discussion in 'Building With Reaktor' started by hipster1, Jun 25, 2007.

Thread Status:
Not open for further replies.
  1. hipster1

    hipster1 New Member

    Messages:
    13
    i want to make a fast convolution algorithm in reaktor with high quality. can someone give me some pointers on where to start?
     
  2. ZooTooK

    ZooTooK NI Product Owner

    Messages:
    1,751
    I'm not the right person to give any DSP advice on convolution but it's been up quite afew time in this forum so my advice is to spend some quality time searching these pages.
     
  3. hipster1

    hipster1 New Member

    Messages:
    13
    thanks for your response - i've now spent an hour reading through all the threads related to convolution in this forum over the past couple of years. basically what i am looking for is a basic instruction of how to do it or hopefully an example ensemble to start from.. didn't find anything close to this.. could you perhaps give me a link to the pages you thought might help me out? thanks again,
     
  4. CList

    CList Moderator

    Messages:
    3,299
    As of yet I don't think anyone has been able to do convolution in reaktor. If any one had I'd think they'd have posted to the user lib. AFAIK, there are no user lib convolution ensembles.

    That being the case, if you want to do it, you're in uncharted waters and you're on your own. It'd take an expert knowledge of non-reaktor convolution algorithms and an expert knowledge of building using reaktor's core level. I'd take a look at some of the FFT ensemble in the user lib to get a sense of the direction you'll be heading and the kind of core structures you'd need to implement.

    - C
     
  5. _nico

    _nico NI Product Owner

    Messages:
    172
    although this is an area of interest I'm far from being knowledgeable in DSP.
    Maybe starting with these modules can help you going.

    http://www.nativeinstruments.de/index.php?id=userlibrary_us&type=0&ulbr=1&plview=detail&patchid=5722
    http://www.nativeinstruments.de/index.php?id=userlibrary_us&type=0&ulbr=1&plview=detail&patchid=5269

    Calculating convolution via a fast convolution algorithm consists of taking the fast Fourier transform (FFT) of two separate sequences, multiplying them together, and then computing the inverse fast Fourier transform (IFFT).

    Good luck in your project.

    Cheers
     
  6. kid_sputnik

    kid_sputnik NI Product Owner

    Messages:
    3,552
    ezFFT posted above is the NI official FFT for R5, also Robin's implimentation is quite nice. both are not easy to use compared to Max/MSP, but they are very useable. the thing to remember, is that the FFT bins are output at the sample rate, one bin per sample. the ifft corecells take this stream and recalculate it to normal time-domain audio. so, you have to work between these 2 corecells.

    since core cant do loops faster than the SampleRate, there is always a significant latency, as much samples as there are FFT bins i believe.
     
  7. Monster kil godzilla

    Monster kil godzilla Forum Member

    Messages:
    45
    btw does anybody has build something with the NI official FFT or with the Robin ones ?
     
  8. Robin Davies

    Robin Davies Forum Member

    Messages:
    280
    :) The NI FFT package has a bunch of really nice applications of the ezFFT modules.
     
  9. exper

    exper NI Product Owner

    Messages:
    277
    I've been trying to make a Spectral Freeze similar to Greg Davis's Freeze Pluggo that is no longer available. But I'm afraid that I don't have the chops. For instance. What would I use to buffer the stream in order to freeze a piece of it? I tried an audio table but nothing came out. If any one has a lead on this I'd appreciate it.

    Its kind of funny, because everyone wanted FFT for reaktor, and once we were given it, there doesn't seem to have been any posted ensembles containing it. I guess were all in the same boat with not understanding how to use it.

    Oh Well...
     
  10. Monster kil godzilla

    Monster kil godzilla Forum Member

    Messages:
    45


    yes exactly , I'm not really understanding how to use it , I think more examples or proper tutorial will be welcome for the NI fft and the Robin's FFT as well ...
     
  11. theologiae

    theologiae NI Product Owner

    Messages:
    652
    where have i heard this before.......
     
  12. Robin Davies

    Robin Davies Forum Member

    Messages:
    280
    The samples in the NI ezFFT package are really very good and to the point. Really. Try ripping them apart to get a sense of how to use the FFT modules.

    And both are pretty straightforward to use (the NI ones even more so, I think, than mine). The only thing that's tricky is dealing with serial data rather than array data.

    The more difficult problem is figuring out what to do with an FFT once you've got one, I think. ;-) (Converting known algorithms to serial form can admittedly be a bit tricky).

    Both FFTs will do block convolution (I've used them for convolution in a personal vocoder project that never quite made it to uploadable stage). As someone mentioned earlier, you take the FFT of the two input streams, multiply them together in the frequency domain (complex multiply), and take the iFFT of the result. Done.


    If you're trying to build something like a convolution reverb, my guess is that you'd need to do some reading on how to build realtime convolution reverbs out of ffts. (I don't honestly know how you do it).
     
  13. ZooTooK

    ZooTooK NI Product Owner

    Messages:
    1,751

    Oh my......:D I missed that upload..... winter in July.... merry christmas NI...
     
  14. _nico

    _nico NI Product Owner

    Messages:
    172
    Yeah, I discovered them last month (... christmas in May ..;-)).
    I didn't see NI doing a lot of advertising about it which they should, it's a great addition to R5 and the included examples can really be used.
     
  15. exper

    exper NI Product Owner

    Messages:
    277
    Robin,

    Could possibly suggest a way that I could freeze the FFT stream? Would I write it to a event table? I'm assuming I'd need a table for both signals, but nothing ever really came out.
     
  16. Chet Singer

    Chet Singer NI Product Owner

    Messages:
    822
    Fast convolution would be a very useful thing to have. You could take an impulse file of a room, or the body of a guitar, and play your ensemble through it. Very cool.
     
  17. CList

    CList Moderator

    Messages:
    3,299
    The problem is; how would you load that "impulse file" into reaktor so that reaktor could use it. An impulse file is not a sample file - it does not store sample data - and so I'm not sure how you could get reaktor to load it w/o first converting it into something reaktor would think of as a sample file and then jumping through some hoops to get reaktor to "see" the file as an impulse file.

    - CList
     
  18. ZooTooK

    ZooTooK NI Product Owner

    Messages:
    1,751
    Maybe I'm completely off, but SIR loads wav files and use them as impluse files... so loading a wav into a audio table would be a start... but then I know nothing about how to do convolution....
     
  19. knutk

    knutk New Member

    Messages:
    3
    it would be better to stream ir`s in realtime into convolution reverb.
     
Thread Status:
Not open for further replies.