Talk:Dattorro Convex Optimization of a Reverberator

From Wikimization

(Redirected from Talk:Dattorro)
Jump to: navigation, search

Another optimization question would be if there is a set of "ideal" allpass coefficients for a given decay time.

Jot has made a convincing argument that, for a reverberator that can be expressed as parallel delay lines coupled by a unitary feedback matrix, the smoothest sound is obtained by associating an absorptive filter with each delay in the system. By doing so, you guarantee local uniformity of pole modulus (I'm paraphrasing Gardner here). In other words, the poles of the system will ideally follow a smooth curve when viewed in the z-plane, with the distance to the unit circle being a function of the desired frequency versus decay of the desired system.

The Lexicon Concert Hall algorithm as drawn by Dattorro will NOT have local uniformity of pole modulus. The allpass delays within the overall feedback loop will result in poles (corresponding to the delay samples within the allpasses) that are much closer to the unit circle than others. Nesting allpasses within allpasses only exacerbates the issue. The triple nested allpasses result in a HUGE amount of ringing. Modulating the innermost delay greatly improves the situation, but this can be said of many recursive reverb structures.

In allpass loop reverberators with single allpasses, such as the 1997 Dattorro algorithm, the coefficients can be set such that all of the loop allpasses have uniform pole modulus - in other words, all allpasses decay at the same rate. If this is found to have desirable results, the optimization question can be expressed as the best allpass decay time / coefficients as a function of the overall loop decay time. The Concert Hall algorithm could be expressed in such terms, where a nested allpass is treated as a single allpass, but with the difference that there is no one setting of the coefficients to get a given decay time.

A question about the allpass topologies: Is this the 3-multiply allpass as featured in the original Schroeder AES papers? The coefficients marked as "decay" in the lattice allpasses seem to roughly correspond to (1-g*g), where g is the definition or decay diffusion coefficient for that allpass. However, it is a fairly rough correspondence - close, but not exact.

A few possible explanations for this:

- The "decay" coefficients are quantized to the multiplier resolution, and are as close to (1-g*g) as the resolution allows for.

- The "decay" coefficients are not used as part of a 3-multiply allpass. Instead, the allpasses are not truly allpass, and have a net loss that is adjusted by the control processor. This decay gain is a function of the overall decay time, or perhaps is time varying as a function of input amplitude ("decay optimization").

Personal tools