Hello, I would like to build a granular delay in core but can't find any info on how it's done, is there any ensemble that use granular be it a delay or a sampler? So that I can find inspiration?
Thank you 🙂
Building a granular delay in Reaktor Core involves creating a structure that continuously records incoming audio into a buffer (a delay line) and then reads small, overlapping segments (grains) from that buffer at a controlled rate and position. This is an advanced topic that requires a good understanding of Reaktor's Core level programming. A complete, step-by-step tutorial is too complex to present here (…and is beyond my skills too 😋), but those are the core conceptual steps and modules you'd typically use:
The granular delay relies on a long delay line to store the audio signal.
More details here:
https://www.musicradar.com/news/how-to-build-delay-reaktor
This is where the granular aspect comes in, reading small "grains" of audio.
The creative control of a granular delay comes from manipulating these parameters:
https://blog.native-instruments.com/granular-synthesis/#:~:text=This%20is%20the%20rate%20at,a%20sporadic%20and%20stuttering%20sound.
You might also find this video helpful:
The video provides an introduction to the basic principles of granular synthesis and explores granular modules within Reaktor, which is foundational to building a granular delay.
All the above are mostly basic things but, there are people here with a higher level of knowledge and better understanding of the Reaktor Core and perhaps they can tell you more.
For ensembles, check the User Library, here:
https://www.native-instruments.com/en/reaktor-community/reaktor-user-library/all/all/all/all/granular/latest/1/all/?q=granular&t=userlib
Its not easy
The issue is that granular processing is best done in core...
However, live recording to core is severely limited by the maximum size of a core array, and that the table framework was never completed, so it can't record.
This means that the maximum length is just a few seconds, and saving is unnecessarily complicated
Most granular engines in Reaktor work by loading samples. This doesnt have the length restriction, samples multiple minutes long can be loaded.
Its not impossible, just a pain in something that is already complex to implement.
You could try using audio tables, or you could use multiple core arrays and page betweeen them.
Both of these will be a cpu hit due to extra code at the inner loop for the core workaround, and the core/primary boundary in the inner loop for the audio table workaround
If you just want a basic delay with e.g. 1 second max delay time then things are much easier :)
Limits what you can do though
Hmm, audio table has a worse limit than core array, so that's not a workaround.
But assuming the max array size is ok, then you can ignore my first post.
Array limit is 1048576 (2^20).
A user might be using an arbitrary sample rate, so the worst case is 192KHz.
1048576 / 192000 = 5.4613333… so maximum delay time is 5.46 seconds. Might be ok for what you want to do. It wasn't for me :)
………………………………………………..
If that's acceptable, then first thing to do would be to take a look at the factory grain sampler. It has almost the same funtionality you will need, so can likely be turned into a delay by modification.
alternatively, just use an existing factory grain delay… Rounds delay block has a 'grain' mode
Or one of the Primary grain delay modules - less control of features, but if it does what you need, then way less work.
I looked further and I saw in the primary macro library that there is a grain cloud sampler, will try to convert it to a delay. Don't know how yet but 5s buffer size should be enough