Artificial Room — User Guide

Synthetic room impulse responses from room dimensions, octave-band absorption data, Eyring RT60 estimates, stochastic early reflections, and frequency-dependent late decay.

Author: Shai Cohen Affiliation: Department of Music, Bar-Ilan University, Israel Version: 0.5.2 (2026) License: MIT License Repo: https://github.com/ShaiCohen-ops/Praat-plugin_AudioTools
Contents:

What this does

Artificial Room builds a mono synthetic impulse response (IR) from a rectangular-room model and convolves it with the selected Sound. Room dimensions and material absorption coefficients determine six octave-band RT60 values (125–4000 Hz). The IR combines discrete early-reflection taps with six filtered-noise late-reverberation bands, then the mono IR is convolved with every input channel.

Model scope: this is a physically informed synthetic reverb, not a geometric image-source simulation. Room dimensions and absorption affect RT60; early-reflection positions are stochastic rather than derived from source/listener coordinates.

Quick start

  1. Select exactly one Sound.
  2. Run Artificial_Room.praat.
  3. Choose SmallBooth, Office, Classroom, LiveRoom, or Custom.
  4. Set Wet/Dry, pre-delay, early-reflection gain/count, and whether to preserve the convolution tail.
  5. Use Advanced settings for IR length/IR retention; Custom also opens the room-dimensions and material controls.

Output: <source>_room_<preset>.

Room model

For each octave band, the script forms an area-weighted mean absorption coefficient and uses the Eyring relation:

T60 = 0.161 × V / (S × -ln(1 - alpha_bar))

V is room volume and S is the six-surface area. The calculated RT60 is limited to 0.12–5.0 s. Audience area contributes additional equivalent absorption using the built-in Audience coefficients.

PresetDimensions (m)Main surfaces
SmallBooth2.2 × 1.6 × 2.2CarpetConcrete floor; MineralWool50mm ceiling and partially covered walls
Office4.5 × 3.5 × 2.7CarpetOnFelt, AcousticCeilingTile, GypsumBoard / GlassWindow / CurtainLight; audience 1.5 m²
Classroom8.0 × 6.0 × 3.2Linoleum, AcousticCeilingTile, GypsumBoard; audience 8.0 m²
LiveRoom7.0 × 5.0 × 3.0WoodFloor, GypsumBoard, CurtainHeavy and MineralWool50mm treatment
CustomUser definedOne selected floor material, one ceiling material, one wall material for all four walls

Impulse response construction

Early reflections

Up to Early_reflections_count Hann-windowed 0.7 ms taps are placed between predelay + 4 ms and predelay + 50 ms. Taps must be at least 3.5 ms apart; a tap is skipped if no valid position is found after 30 attempts. After sorting by time, gain begins at IR_early_gain_dB and falls by 2.5 dB per tap, with an additional random factor of 0.9–1.1.

Late field

Six noise bands use the octave ranges around 125, 250, 500, 1000, 2000 and 4000 Hz. Each band begins after the same pre-delay and uses an amplitude envelope exp(-t/tau) with tau = T60 / ln(1000), so the envelope reaches -60 dB at the requested RT60. Bands are clipped or skipped at Nyquist; the 2 and 4 kHz bands receive an additional 0.75 dB attenuation.

IR duration is predelay + max(T60) × IR_length_factor, with the factor limited internally to 0.8–4.0. The completed IR is peak-scaled to 0.6.

Randomness: early-reflection times/gains and late-noise samples use Praat's current random state; there is no user seed, so repeated runs need not produce the same IR even when the room parameters are unchanged.

Parameters

ControlDefaultMeaning
Room_presetSmallBoothFour built-in rooms or Custom.
Wet_dry_percent70Linear wet/dry blend, clamped to 0–100%.
IR_predelay_ms12Delays both early taps and late reverberant field.
IR_early_gain_dB-6Nominal level of the first time-sorted early tap.
Early_reflections_count8Requested number of early taps.
Preserve_tailyesYes: keep the full N+M-1 convolution duration. No: trim output to the input duration.
Advanced_settingsnoOpens room/IR detail dialog. Custom always opens it.
IR_length_factor2.0Advanced; multiplier applied to the largest octave-band T60.
Keep_IRnoAdvanced; retain IR_<preset>.
Draw_visualization / Play_resultyes / yesDraw the analysis page and/or play the output.

Built-in material coefficients

The script stores six octave-band absorption values for each of 20 material labels. These coefficients are the values actually used by the RT60 calculation.

Material125Hz250Hz500Hz1kHz2kHz4kHzCharacter
BrickPainted0.010.010.020.020.020.02Very reflective
Concrete0.010.010.020.020.020.02Very reflective
WoodFloor0.150.110.100.070.060.07Moderately reflective
CarpetConcrete0.080.240.570.690.710.73Absorptive (mid-high)
CurtainLight0.050.150.350.550.600.55Moderately absorptive
CurtainHeavy0.140.350.550.720.700.65Highly absorptive
GypsumBoard0.100.080.050.030.030.03Reflective
GlassWindow0.350.250.180.120.070.05Moderately reflective
AcousticFoam25mm0.150.400.700.850.900.90Highly absorptive
AcousticFoam50mm0.300.600.900.950.950.90Very absorptive
Audience0.300.450.550.600.600.55Moderately absorptive
WoodPanel0.150.100.080.070.060.07Moderately reflective
PlasterWall0.020.020.030.030.030.03Very reflective
PlywoodPanel0.100.080.060.050.050.05Reflective
MineralWool50mm0.250.550.850.950.950.90Highly absorptive
MineralWool100mm0.450.800.950.950.950.90Very absorptive
CarpetOnFelt0.100.350.550.650.700.75Absorptive (mid-high)
Linoleum0.020.030.040.050.050.05Reflective
OpenWindow1.001.001.001.001.001.00Perfect absorption
AcousticCeilingTile0.700.750.850.900.900.85Highly absorptive

Output, channels, level and visualization

The visualization shows input and output waveforms, RT60 bars for the six octave bands, the synthetic IR waveform, an IR spectrogram, and a summary strip. Input and output waveform panels use their own drawing ranges.