So feedback delay networks. I've been experimenting with them a fair bit.
What is a feedback delay network?
The tldr version - an FDN is a big tangle of delays, all connected to each other, feeding their signal to every other delay. This creates a crazy network of feedback that typically results in very unpredictable echoes.
The more guitarist centric version:
Imagine you've got a bunch of delay pedals running in parallel. The outputs of those pedals all mix back into each others inputs. So pedal 1 goes to pedal 2+3+4. Pedal 2 goes to 1+3+4. Pedal 3 goes to 1+2+4. Pedal 4 goes to 1+2+3.
The deeper explanation:
An FDN is <n> number of delay lines. After each delay the outputs are stacked into a vector. That vector gets multipled by a feedback matrix, before being sent back into the delay inputs.
What is a feedback matrix?
Think of this as a "mixing box". If you've specified <n> number of delay lines, then the feedback matrix is NxN in size. Each row describes the mix that goes into one delay input. Each column describes how one delays output is spread across all the inputs.
For 4 delays, it is a 4x4 grid of numbers. Each number is more or less like a "send level" knob, that controls how much signal gets fed from one delay pedal to another. For example:
However, won't that sound poopy? Yes, most likely. Which is why we want to ensure orthogonality.
What is orthogonality?
Orthogonality is a fancy word for
"the rows (and columns) of the matrix are at right angles to each other in math space."
An orthogonal feedback matrix is energy preserving. This means the echoes do not blow up uncontrollably (turning your analog delay feedback to max for example) but also they don't vanish too quickly either (setting your feedback knob to minimum) - the network just keeps redistributing energy around until it naturally decays.
The choice of the type of matrix give the network its flavour. These are the types:
Circulant Phase
DCT4Mixer
Givens Cascade
Hadamard
Householder
Random Orthogonal
Signed Permutation
All images below follow this ordering.
One of the types of signal we send into effects algorithms to try and determine what is happening, is known as a DIRAC impulse - essentially a single sample click:
This quite often can help to reveal the structure of delays and reverbs, amongst other effects.
So in the pursuit of knowledge, I have been testing out various sizes and types of feedback matrices, to figure out what they look like, and what they sound like. A picture paints a thousand monkey words.
If you have 2 delays, for a matrix of 2x2, you get this kind of thing.
You can see that CirculantPhase looks just like a delay. There's nothing special going on. DCT4Mixer has a delay quality to it, but there is a patterened scattering and polarity flip for each of the clicks. Whereas GivensCascade, Hadamard, Householder... these all immediately have a random diffused scattering effect, even with such a small number of delays and matrix size. SignedPermutation looks closer to DCT4Mixer.
Then we go up to 4 delays, for a matrix of 4x4:
You can see we have far more randomness and complexity now.
Here are 8x8, 12x12, and 16x16:
Now while these all look similar on the surface, the sonic complexity does massively vary. Suffice to say, the type of matrix you choose and the number of delay lines, as well as the delay values used, all make a massive difference to the final quality of reverb you end up with.
There are other things that affect the quality of the reverb, but I'm not ready to go into that yet.