Any efficient matrixes for 12 delay line FDNs?
- KVRAF
- 3426 posts since 15 Nov, 2006 from Pacific NW
Hi all,
Does anyone know of a decent matrix for a 12-delay line FDN, that is efficient? I supposed I could cascade a few Householder matrixes, but my brain gets tangled about how to combine all the signals with these. A single Householder matrix won't work, as the delay lines will only be lightly coupled for an order 12 matrix.
Sean Costello
Does anyone know of a decent matrix for a 12-delay line FDN, that is efficient? I supposed I could cascade a few Householder matrixes, but my brain gets tangled about how to combine all the signals with these. A single Householder matrix won't work, as the delay lines will only be lightly coupled for an order 12 matrix.
Sean Costello
- KVRAF
- 8511 posts since 12 Feb, 2006 from Helsinki, Finland
The method I used for Tila was to run rotations on pairs (normal cos/sin). Try something like looping over pairs like [0,1], [1,2] .. first, then do another pass with another set of cos/sin values for [1,2] .. [12, 0] and you should get a dense matrix that's trivial to evaluate in O(n). Personally I like rotations that are close to a multiple of 45 degrees (not exactly multiple though).
You could also do householders on subsets or something, but I personally think rotations sound a lot better (especially when "not nice multiples" of "simple angles").
You could also do householders on subsets or something, but I personally think rotations sound a lot better (especially when "not nice multiples" of "simple angles").
- KVRian
- 1091 posts since 8 Feb, 2012 from South - Africa
Depends on your definition of "lightly coupled". If you mean - coupled - as in - everything interacts with everything - just in varying degrees - then Mystran's approach would work like a charm. If you mean a matrix with a certain percentage zero coefficients - good luck - I've been trying to figure how to easily go from a Dense matrix to a Sparse matrix for quite a while now, and my head goes 
- KVRAF
- Topic Starter
- 3426 posts since 15 Nov, 2006 from Pacific NW
Mystran's approach works for adjusting the coupling. Just change the theta angle of the sin/cos rotation matrices. Michael Gerzon first described this trick for FDNs in 1971 (as well as inventing FDNs, and nested allpasses).Ichad.c wrote:Depends on your definition of "lightly coupled". If you mean - coupled - as in - everything interacts with everything - just in varying degrees - then Mystran's approach would work like a charm. If you mean a matrix with a certain percentage zero coefficients - good luck - I've been trying to figure how to easily go from a Dense matrix to a Sparse matrix for quite a while now, and my head goes
EDIT: The above assumes that the "certain percentage zero coefficients" matrix that you want is the identity matrix, or a permutation of that matrix.
Sean Costello
- KVRAF
- 8511 posts since 12 Feb, 2006 from Helsinki, Finland
I'm not convinced there's any reason to ever have a sparse matrix for FDN. As far as I'm concerned, you want a fully dense matrix, but one that can be calculated efficiently.
- KVRAF
- Topic Starter
- 3426 posts since 15 Nov, 2006 from Pacific NW
Sparse reverbs can sound pretty cool, especially on vocals and other sounds with soft attacks. Plus, depending on how you calculate your delay lengths and output taps, a fully dense matrix can result in an unnatural "burst" of diffusion after the first few hundred milliseconds of decay, instead of a natural build of echo density.mystran wrote:I'm not convinced there's any reason to ever have a sparse matrix for FDN. As far as I'm concerned, you want a fully dense matrix, but one that can be calculated efficiently.
Sean Costello
- KVRAF
- 8511 posts since 12 Feb, 2006 from Helsinki, Finland
Well, I don't really agree with the first one, but as far as the second one goes, that's true. On the other hand, if you want even reasonably fast density build-up while still having lots of total delay time and even decay, you're pretty much forced to have a delay distribution that eliminates the burst issue. Obvious this might not be a huge deal if you use FDNs for short early reverb only and deal with longer tails in another way.valhallasound wrote:Sparse reverbs can sound pretty cool, especially on vocals and other sounds with soft attacks. Plus, depending on how you calculate your delay lengths and output taps, a fully dense matrix can result in an unnatural "burst" of diffusion after the first few hundred milliseconds of decay, instead of a natural build of echo density.mystran wrote:I'm not convinced there's any reason to ever have a sparse matrix for FDN. As far as I'm concerned, you want a fully dense matrix, but one that can be calculated efficiently.
- KVRian
- 1091 posts since 8 Feb, 2012 from South - Africa
Thanks for info Sean, I'll look into it. The only semi-sparse one I could find was Miller Puckette's FDN(not the rotation one - the first one he did(I think)) - and I still like the sound of it.valhallasound wrote: EDIT: The above assumes that the "certain percentage zero coefficients" matrix that you want is the identity matrix, or a permutation of that matrix.
Sean Costello
Andrew
- KVRAF
- Topic Starter
- 3426 posts since 15 Nov, 2006 from Pacific NW
I always liked that reverb as well (the one from the 1984 Computer Music Journal). I first implemented it using Csound back in the spring of 1999. I skipped all the transposed FIR stuff, as Csound doesn't have ugens to do that.Ichad.c wrote:Thanks for info Sean, I'll look into it. The only semi-sparse one I could find was Miller Puckette's FDN(not the rotation one - the first one he did(I think)) - and I still like the sound of it.valhallasound wrote: EDIT: The above assumes that the "certain percentage zero coefficients" matrix that you want is the identity matrix, or a permutation of that matrix.
Sean Costello
Andrew
My theory about that matrix was that it was originally based around the same rotations of pairs trick that mystran describes, or (to be more precise) embedded 2x2 rotation matrices within a larger 2x2 rotation matrix. The rotation matrices being used in this case had an angle set to 90 degrees, or -90 degrees, as opposed to the 45 degrees commonly used for a maximally diffuse reverb. Once this matrix was developed, Puckette and/or Stautner figured out an efficient way of computing an equivalent matrix. Again, this is just my hunch - but I think the 2x2 rotation matrices are discussed in that paper.
Sean Costello
