---
title: "Reverberation-time prediction (Sabine, Eyring, Arau)"
description: "Predicting a room's reverberation time from its volume, boundary areas and surface absorption with five statistical-acoustics models — Sabine, Eyring (Norris-Eyring), Millington-Sette, Fitzroy and Arau-Puchades — including the air-absorption term and the models for a non-uniform absorption distribution."
---

The **reverberation time** $T$ — the time for the sound-energy level to fall by
60 dB after the source stops — is predicted here from a room's **volume**,
**boundary areas** and the **sound-absorption coefficients** of its surfaces,
through the classical statistical-acoustics formulae. This is the design-stage
counterpart of the *measured* reverberation time of
[Room acoustics](/phonometry/guides/room-acoustics/) (ISO 3382) and complements
the EN 12354-6 model of
[Sound absorption in enclosed spaces](/phonometry/guides/enclosed-space-absorption/),
which specialises the same physics to that standard's Clause 4.

phonometry offers five models, ordered by how much they account for a
**non-uniform** absorption distribution:

| Model | Absorption term in $T = k\,V / (\text{term} + 4mV)$ | Best for |
|:---|:---|:---|
| **Sabine** | $A = \sum_i S_i\alpha_i$ | low, uniform absorption |
| **Eyring** (Norris-Eyring) | $-S\ln(1-\bar\alpha)$ | strong, uniform absorption |
| **Millington-Sette** | $-\sum_i S_i\ln(1-\alpha_i)$ | a few very absorptive surfaces |
| **Fitzroy** | area-weighted **arithmetic** mean of three axial Eyring times | anisotropic rooms |
| **Arau-Puchades** | area-weighted **geometric** mean of the same three | anisotropic rooms (author-preferred) |

with the Sabine constant $k = 24\ln 10 / c_0$ (so $k = 0.161$ for
$c_0 = 343\ \mathrm{m/s}$) and the air-absorption term $4mV$.

<img class="light-only" src="https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/reverberation_models.svg" alt="Reverberation time per octave band for a room with an absorptive floor and ceiling but hard walls, computed by five models" style="width:82%"><img class="dark-only" src="https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/reverberation_models_dark.svg" alt="Reverberation time per octave band for a room with an absorptive floor and ceiling but hard walls, computed by five models" style="width:82%">

## 1. Sabine, Eyring and Millington-Sette

The three statistical models take the room volume and a list of
`(area, absorption_coefficient)` surfaces. **Sabine** is exact only for low,
uniform absorption; **Eyring** replaces the absorption area by
$-S\ln(1-\bar\alpha)$ and is correct where Sabine overestimates $T$;
**Millington-Sette** sums the Eyring term surface by surface, so a single
perfectly absorbing surface drives $T$ to zero.

$$
T_{\text{Sab}} = \frac{k V}{\sum_i S_i\alpha_i}, \qquad
T_{\text{Eyr}} = \frac{k V}{-S\ln(1-\bar\alpha)}, \qquad
T_{\text{Mil}} = \frac{k V}{-\sum_i S_i\ln(1-\alpha_i)}.
$$

```python
import phonometry as ph

# A shoebox 8 x 5 x 3 m (V = 120 m3, S = 158 m2), uniform alpha = 0.2.
surfaces = [(40.0, 0.2), (40.0, 0.2), (24.0, 0.2),
            (24.0, 0.2), (15.0, 0.2), (15.0, 0.2)]
print(round(ph.sabine_reverberation_time(120.0, surfaces), 3))            # 0.612 s
print(round(ph.eyring_reverberation_time(120.0, surfaces), 3))            # 0.548 s
print(round(ph.millington_sette_reverberation_time(120.0, surfaces), 3))  # 0.548 s
```

For a **uniform** distribution Eyring and Millington-Sette coincide, and both
fall below Sabine — Sabine's over-estimate at high absorption is the reason
Eyring exists. As $\alpha \to 0$, Eyring reduces to Sabine. Air absorption
enters every model through the power-attenuation coefficient $m$ (in neper per
metre, from [atmospheric absorption](/phonometry/guides/room-acoustics/)):

```python
import phonometry as ph

m = ph.air_attenuation_m(2000.0, temperature=20.0, relative_humidity=50.0)
surfaces = [(40.0, 0.3), (40.0, 0.3), (24.0, 0.3),
            (24.0, 0.3), (15.0, 0.3), (15.0, 0.3)]
print(round(ph.eyring_reverberation_time(120.0, surfaces, air_attenuation=m), 3))
```

## 2. Fitzroy and Arau-Puchades (anisotropic rooms)

When the absorption is concentrated on one axis — a carpeted floor and an
acoustic ceiling against otherwise hard walls — a single mean $\bar\alpha$
misrepresents the field. **Fitzroy** and **Arau-Puchades** split a rectangular
(shoebox) room into the three pairs of opposing walls and combine the *axial*
Eyring reverberation times $T_i$ (each using the whole surface $S$ and the mean
absorption $\bar\alpha_i$ of the wall pair perpendicular to axis $i$):

$$
T_{\text{Fitz}} = \sum_i \frac{S_i}{S}\,T_i \quad(\text{arithmetic}), \qquad
T_{\text{Arau}} = \prod_i T_i^{\,S_i/S} \quad(\text{geometric}).
$$

```python
import phonometry as ph

# 8 x 5 x 3 m room, absorptive x-wall pair (alpha 0.5), hard elsewhere (0.1).
dims = (8.0, 5.0, 3.0)
absorption = (0.5, 0.1, 0.1)   # mean alpha of the (x, y, z) wall pairs
print(round(ph.arau_puchades_reverberation_time(dims, absorption), 3))  # 0.812 s
print(round(ph.fitzroy_reverberation_time(dims, absorption), 3))        # 0.974 s
```

By the arithmetic-geometric-mean inequality the Arau-Puchades time never exceeds
the Fitzroy time; Fitzroy is known to over-predict when one wall pair is very
reflective, which is why Arau-Puchades recommends the geometric mean. Both
reduce exactly to Eyring for a uniform absorption distribution.

## 3. Comparing the five models per band

`reverberation_time_models` builds the six boundary surfaces of a rectangular
room from its dimensions and the three wall-pair mean absorptions, then
evaluates all five models on a common footing and returns a
`ReverberationModelResult` whose `.plot()` draws the figure above.

```python
import phonometry as ph

# 10 x 7 x 3.5 m room, absorptive floor/ceiling against harder walls.
res = ph.reverberation_time_models(
    (10.0, 7.0, 3.5),
    (
        [0.06, 0.07, 0.08, 0.09, 0.10, 0.10],   # x-pair: hard end walls
        [0.12, 0.14, 0.16, 0.18, 0.20, 0.20],   # y-pair: lightly treated walls
        [0.30, 0.50, 0.65, 0.78, 0.82, 0.80],   # z-pair: carpet + acoustic ceiling
    ),
    frequencies=[125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0],
)
print(res.sabine.round(2))         # [0.74 0.47 0.37 0.31 0.3  0.3 ]
print(res.arau_puchades.round(2))  # [0.79 0.51 0.38 0.29 0.26 0.27]
print(res.fitzroy.round(2))        # [1.02 0.79 0.66 0.57 0.51 0.51]
```

<details>
<summary>Show the code for this figure</summary>

```python
import matplotlib.pyplot as plt
import phonometry as ph

m = ph.air_attenuation_m([125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0], 20.0, 50.0)
ph.reverberation_time_models(
    (10.0, 7.0, 3.5),
    (
        [0.06, 0.07, 0.08, 0.09, 0.10, 0.10],
        [0.12, 0.14, 0.16, 0.18, 0.20, 0.20],
        [0.30, 0.50, 0.65, 0.78, 0.82, 0.80],
    ),
    air_attenuation=m,
    frequencies=[125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0],
).plot()
plt.show()
```

</details>

---

**References.** W. C. Sabine, *Collected Papers on Acoustics* (1922); C. F.
Eyring (1930); G. Millington (1932); D. Fitzroy, *J. Acoust. Soc. Am.* **31**
(1959) 893; H. Arau-Puchades, "An improved reverberation formula", *Acustica*
**65** (1988) 163 (Formula 18). Textbooks: A. Carrión Isbert, *Diseño acústico
de espacios arquitectónicos*; F. A. Everest & K. C. Pohlmann, *Master Handbook
of Acoustics*, 4th ed. Air absorption follows ISO 9613-1:1993. The conformance
suite is anchored on a **real worked example** — Everest's Fig. 7-22 Example 1,
whose six printed Sabine reverberation times the SI implementation reproduces to
≤ 0.02 s — reinforced by hand-computed closed-form values and the model
identities.
