The Lucier Machine — User Guide

Lucier-inspired iterative room filtering: one synthetic room impulse response is applied repeatedly so that its resonant spectral fingerprint progressively dominates the source.

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

What this does

The Lucier Machine repeatedly filters a selected Sound through one fixed synthetic room impulse response. The room model contains a direct arrival plus a stochastic field of decaying reflections. Because every iteration uses the same impulse response, frequencies favored by that room transfer function are reinforced again and again while other spectral regions become comparatively weaker.

The result is a progressive transformation from source identity toward a ringing spectral pattern determined jointly by the source and the synthetic room. The processor is designed around the principle associated with Alvin Lucier's I Am Sitting in a Room, but it does not simulate a physical room geometrically and it does not reproduce the original tape-recorder performance procedure.

Core idea: within one run, the room fingerprint stays fixed. Randomness is used only when that impulse response is created. The same room is then applied on every pass, which is what allows its resonances to accumulate coherently.

Quick start

  1. Select exactly one mono or stereo Sound.
  2. Run The_Lucier_Machine.praat.
  3. Start with Lucier-style (30 iterations) to hear the central process.
  4. Use Quick Preview for a faster transformation check, or Extended Transformation for a stronger spectral takeover.
  5. For Custom, set the room duration, RT60, reflection density, direct/room energy balance and number of iterations.
  6. Leave Draw_visualization enabled if you want to compare the source spectrum, final spectrum and measured spectral emphasis.
  7. The result is named original_lucier_Preset.

Presets

PresetIR durationRT60ReflectionsPre-delayDirect energyPasses
Lucier-style1.5 s1.0 s100010 ms92%30
Quick Preview1.0 s0.8 s50010 ms88%10
Extended Transformation2.0 s1.2 s150012 ms94%50
Small Room0.8 s0.4 s6005 ms90%30
Large Hall3.0 s2.5 s200025 ms85%30

All built-in presets use a per-pass peak target of 0.95. Draw_visualization and Play_result remain user controls. “Lucier-style” means inspired by the iterative resonance principle; it is not a historically exact reconstruction of Lucier's equipment, room, or recording.

Parameters

ParameterDefaultBehavior
IR_duration_s1.5 sTotal duration of the synthetic mono room impulse response. It must be longer than two samples at the source sampling rate.
RT60_s1.0 sControls the exponential amplitude envelope of the stochastic reflection field. The envelope reaches 0.001 of its initial amplitude, or -60 dB, after one RT60.
Number_of_reflections1000Number of randomly timed reflection events. Because reflection energy is normalized independently of this count, increasing the number primarily changes density, not the direct/room balance.
Pre_delay_s0.01 sLocation of the direct arrival. Random reflections begin at least one sample later. The pre-delay is removed again after each convolution pass, so it does not accumulate from iteration to iteration.
Mic_proximity_gain0.92Despite the name, this is interpreted as the direct-path energy share, clamped to 0–1. A value of 0.92 requests approximately 92% direct energy and 8% reflection energy before the final common IR-energy normalization.
Number_of_iterations30Number of virtual playback/re-record filtering passes. The script limits this to 100.
Per_pass_peak_target0.95True peak normalization after every pass, clamped to a maximum of 0.99. This is level stabilization, not an attenuate-only safety ceiling.
Draw_visualizationyesBuilds the multi-panel diagnostic view described below.
Play_resultyesPlays the final result after processing.

Synthetic room model

The script first creates a mono impulse response. This single room response is used for every source channel and for every iteration.

Direct path and reflection field

reflection envelope = exp(-t × 6.907755 / RT60) Direct energy share = Mic_proximity_gain Reflection energy share = 1 - Mic_proximity_gain Final room IR: direct path + normalized stochastic reflections Then normalize complete discrete IR energy to 1

No random seed is exposed. Running the same settings again creates a different synthetic room fingerprint. Within a single run, however, the generated IR remains fixed for all passes.

Iterative filtering

Repeated convolution through one fixed room

Praat convolves the current Sound with the mono room IR. For stereo input, the same IR filters both channels; the channels are not folded to mono. After convolution, the script extracts a segment beginning at the direct-arrival time and exactly as long as the original source. This re-aligns the pass to time zero and prevents pre-delay from accumulating.

Ideal frequency-domain picture: X_N(f) = g_N × X_0(f) × H(f)^N X_0(f) = source spectrum H(f) = fixed synthetic room transfer function N = number of passes g_N = scalar level stabilization

The scalar peak normalization cannot change spectral shape; the repeated factor H(f) is what produces progressive resonance reinforcement. However, the implemented process is not exactly H(f)^N: after every pass the convolution tail is truncated back to the original source duration. The visualization therefore compares the ideal room emphasis with the emphasis actually measured in the output instead of assuming they are identical.

Per-pass level stabilization

After every extraction, the current Sound is peak-normalized to Per_pass_peak_target. Stereo uses one common gain factor, preserving the left/right level relationship. This stabilization keeps successive generations numerically manageable but is an explicit part of this digital model rather than a neutral recording-history simulation.

Direct energy = 100%: the room IR contains only the direct impulse, so there is no room-resonance transformation. The waveform shape is essentially passed through the aligned impulse, but the per-pass peak normalization can still change its overall level.

Output and visualization

What the visualization shows

For stereo sources, the waveform and spectral display uses whichever source channel has the larger peak, and shows the corresponding result channel. It does not create a mono sum for display, avoiding phase cancellation in the visualization.

Historical, technological and compositional context

Alvin Lucier and I Am Sitting in a Room

Alvin Lucier's I Am Sitting in a Room dates from 1969 and was conceived for voice and electromagnetic tape. The original score specifies a simple electroacoustic chain: one microphone, two tape recorders, an amplifier and one loudspeaker. A spoken statement is recorded, played back into a room, recorded again, and the new generation is repeatedly recycled through the same space. With each generation, the room's resonant frequencies are reinforced until the intelligibility of the speech gives way to sustained, ringing spectral patterns.

The spoken text is not merely narration placed on top of the piece: it describes the process that generates the music. Lucier also frames the procedure as a way of smoothing irregularities in his speech. This self-referential design joins acoustic experiment, autobiography and compositional form: the material explains the system, then the system gradually transforms the material that explained it.

Technology: from tape recursion to digital recursion

The 1969 procedure depended on physical playback and re-recording. Loudspeaker response, microphone response, tape electronics, noise, placement and the architecture of the room all belonged to the feedback path. Later realizations preserved the same recursive principle with digital recording technology; for a 2014 MoMA performance, Lucier and James Fei used a laptop in place of the two tape recorders.

From a signal-processing perspective, an approximately linear, time-invariant room can be represented by an impulse response h(t). Convolution with that impulse response models one passage through the room, and repeating the same operation produces the idealized spectral relationship H(f)^N. The Lucier Machine makes that abstraction explicit: it replaces the physical microphone–room–loudspeaker loop with a generated impulse response and repeated offline convolution.

Compositional significance

I Am Sitting in a Room is a landmark of process-based experimental music because the audible form is not produced by writing a sequence of pitches in advance. The composer defines a procedure and allows the acoustic properties of a space to determine the detailed result. The room therefore ceases to be a neutral container for music and becomes an active spectral agent.

The process also reverses the normal relationship between signal and environment. At first, the voice dominates and the room is barely noticed. Through repetition, the room becomes increasingly audible until its resonances become the principal musical material. What begins as speech moves toward a harmonic field while retaining traces of the original temporal articulation.

Relation to this AudioTool: this script models that compositional principle, not the historical performance itself. It uses a synthetic stochastic room IR, one fixed transfer function per run, direct/room energy normalization, direct-arrival re-alignment, source-length truncation and per-pass peak normalization. A physical Lucier realization instead sends each generation through an actual acoustic/electroacoustic chain. The two share the logic of repeated resonance reinforcement, but their material conditions and therefore their results are different.

Sources and further reading