```cs
public class CustomEAXFormulas
{
// Calculates the EAX density parameter based on the number of energy peaks in the early echogram
public virtual float CalculateDensity();
// Calculates the EAX diffusion parameter based on how smoothly energy accumulates over time
public virtual float CalculateDiffusion();
// Calculates the low and high frequency gain values relative to a reference energy level Reference energy used to normalise the output gains Output low-frequency gain Output high-frequency gain
public virtual void CalculateFrequencyGains(float referenceEnergy, out float lfGain, out float hfGain);
// Calculates the delay in seconds before late reverb begins, based on the 25% energy accumulation point
public virtual float CalculateLateReverbDelay();
// Calculates the gain for early reflections and late reverb by splitting the echogram at a transition point Time in milliseconds marking the boundary between early and late energy Reference energy used to normalise the output gains Output gain for early reflections Output gain for late reverb
public virtual void CalculateReflectionsAndLateReverbGain(float earlyLateTransitionMs, float referenceEnergy, out float reflectionsGain, out float lateReverbGain);
// Calculates the delay in seconds before the first significant reflection is detected Fraction of peak energy required to consider a bin significant (e.g. 0.1 = 10%)
public virtual float CalculateReflectionsDelay(float energyThreshold);
// Calculates the RT60 reverberation time in seconds for a given echogram using linear regression on the decay slope Energy echogram bins to analyse
public virtual float CalculateRT60(float[] echogram);
// Initialises the formula calculator with echogram data from a processed reverb result The processed reverb results containing material and geometry data Total returning LF energy Total returning HF energy The duration (in milliseconds) of each entry in the echogram arrays Low-frequency echogram energy bins High-frequency echogram energy bins Average echogram energy bins used for most calculations
public virtual void Initialise(ProcessedReverbResults processed, float totalReturningEnergyLF, float totalReturningEnergyHF, float echogramGranularity, float[] echogramLF, float[] echogramHF, float[] echogramAverage);
}
```