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.
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.
Quick start
- Select exactly one Sound.
- Run
Artificial_Room.praat. - Choose SmallBooth, Office, Classroom, LiveRoom, or Custom.
- Set Wet/Dry, pre-delay, early-reflection gain/count, and whether to preserve the convolution tail.
- 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.
| Preset | Dimensions (m) | Main surfaces |
|---|---|---|
| SmallBooth | 2.2 × 1.6 × 2.2 | CarpetConcrete floor; MineralWool50mm ceiling and partially covered walls |
| Office | 4.5 × 3.5 × 2.7 | CarpetOnFelt, AcousticCeilingTile, GypsumBoard / GlassWindow / CurtainLight; audience 1.5 m² |
| Classroom | 8.0 × 6.0 × 3.2 | Linoleum, AcousticCeilingTile, GypsumBoard; audience 8.0 m² |
| LiveRoom | 7.0 × 5.0 × 3.0 | WoodFloor, GypsumBoard, CurtainHeavy and MineralWool50mm treatment |
| Custom | User defined | One 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.
Parameters
| Control | Default | Meaning |
|---|---|---|
| Room_preset | SmallBooth | Four built-in rooms or Custom. |
| Wet_dry_percent | 70 | Linear wet/dry blend, clamped to 0–100%. |
| IR_predelay_ms | 12 | Delays both early taps and late reverberant field. |
| IR_early_gain_dB | -6 | Nominal level of the first time-sorted early tap. |
| Early_reflections_count | 8 | Requested number of early taps. |
| Preserve_tail | yes | Yes: keep the full N+M-1 convolution duration. No: trim output to the input duration. |
| Advanced_settings | no | Opens room/IR detail dialog. Custom always opens it. |
| IR_length_factor | 2.0 | Advanced; multiplier applied to the largest octave-band T60. |
| Keep_IR | no | Advanced; retain IR_<preset>. |
| Draw_visualization / Play_result | yes / yes | Draw 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.
| Material | 125Hz | 250Hz | 500Hz | 1kHz | 2kHz | 4kHz | Character |
|---|---|---|---|---|---|---|---|
| BrickPainted | 0.01 | 0.01 | 0.02 | 0.02 | 0.02 | 0.02 | Very reflective |
| Concrete | 0.01 | 0.01 | 0.02 | 0.02 | 0.02 | 0.02 | Very reflective |
| WoodFloor | 0.15 | 0.11 | 0.10 | 0.07 | 0.06 | 0.07 | Moderately reflective |
| CarpetConcrete | 0.08 | 0.24 | 0.57 | 0.69 | 0.71 | 0.73 | Absorptive (mid-high) |
| CurtainLight | 0.05 | 0.15 | 0.35 | 0.55 | 0.60 | 0.55 | Moderately absorptive |
| CurtainHeavy | 0.14 | 0.35 | 0.55 | 0.72 | 0.70 | 0.65 | Highly absorptive |
| GypsumBoard | 0.10 | 0.08 | 0.05 | 0.03 | 0.03 | 0.03 | Reflective |
| GlassWindow | 0.35 | 0.25 | 0.18 | 0.12 | 0.07 | 0.05 | Moderately reflective |
| AcousticFoam25mm | 0.15 | 0.40 | 0.70 | 0.85 | 0.90 | 0.90 | Highly absorptive |
| AcousticFoam50mm | 0.30 | 0.60 | 0.90 | 0.95 | 0.95 | 0.90 | Very absorptive |
| Audience | 0.30 | 0.45 | 0.55 | 0.60 | 0.60 | 0.55 | Moderately absorptive |
| WoodPanel | 0.15 | 0.10 | 0.08 | 0.07 | 0.06 | 0.07 | Moderately reflective |
| PlasterWall | 0.02 | 0.02 | 0.03 | 0.03 | 0.03 | 0.03 | Very reflective |
| PlywoodPanel | 0.10 | 0.08 | 0.06 | 0.05 | 0.05 | 0.05 | Reflective |
| MineralWool50mm | 0.25 | 0.55 | 0.85 | 0.95 | 0.95 | 0.90 | Highly absorptive |
| MineralWool100mm | 0.45 | 0.80 | 0.95 | 0.95 | 0.95 | 0.90 | Very absorptive |
| CarpetOnFelt | 0.10 | 0.35 | 0.55 | 0.65 | 0.70 | 0.75 | Absorptive (mid-high) |
| Linoleum | 0.02 | 0.03 | 0.04 | 0.05 | 0.05 | 0.05 | Reflective |
| OpenWindow | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | Perfect absorption |
| AcousticCeilingTile | 0.70 | 0.75 | 0.85 | 0.90 | 0.90 | 0.85 | Highly absorptive |
Output, channels, level and visualization
- Channels: preserved. A single mono IR is convolved with every source channel.
- Sample rate: preserved.
- Time origin: processing uses a private zero-based copy; the output begins at 0 s.
- Tail: with Preserve_tail on, duration is the measured full convolution length; otherwise it is limited to the input duration.
- Level: after wet/dry mixing, every non-silent result is peak-normalized to 0.95. This is not an attenuate-only ceiling; even a 0% wet run can change the dry level.
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.