Lucier "I Am Sitting in a Room" Simulation — User Guide

Physical acoustic simulation: recreates the iconic Alvin Lucier piece through iterative convolution with a physically-modeled room impulse response, gradually transforming speech into resonant room tones.

Author: Shai Cohen Version: 2.0 (Physical Model) License: MIT License Category: Acoustic Simulation & Experimental Music
Contents:

What this does

This script implements physical acoustic simulation of Alvin Lucier's iconic piece — a computational recreation of the 1969 experimental composition "I Am Sitting in a Room" through iterative convolution with a physically-modeled room impulse response. The process: (1) Physical Room Modeling: Generates a synthetic impulse response based on acoustic physics (RT60 decay, reflection density, microphone placement). (2) Iterative Convolution: Repeatedly convolves an audio source (typically speech) with the room model, simulating re-recording in the same space multiple times. (3) Gradual Transformation: With each iteration, speech intelligibility decreases while room resonances become dominant. (4) Physical Parameter Control: Models real acoustic phenomena like microphone proximity effect, reflection decay, and pre-delay. The result is a transformation from clear speech to pure resonant tones, exactly as in Lucier's original conceptual piece.

Key Features:

What is "I Am Sitting in a Room"? Original (1969): Alvin Lucier records himself speaking, plays recording back in room, records that, repeats until speech becomes pure resonance. This simulation: Digital recreation of same process using convolution with synthetic room impulse response. Advantages: (1) Accessibility: Experience Lucier's concept without physical room/tape. (2) Control: Precisely tune acoustic parameters. (3) Repeatability: Consistent results from same parameters. (4) Speed: Minutes instead of hours of manual recording. (5) Educational: Understand acoustic principles through simulation. Use cases: Music education (teaching Lucier's piece), acoustic research (room effect simulation), sound art (creating similar pieces), audio forensics (understanding iterative degradation), composition (exploring room resonance effects).

Technical Implementation: The script creates a physics-based simulation: (1) Impulse Response Generation: Creates synthetic room response with direct sound (pre-delay + proximity gain) and reflections (random timing, exponential decay). (2) Convolution Engine: Uses Praat's convolution to simulate sound propagation through room. (3) Iterative Loop: Repeats convolution 30 times (configurable), cropping to original duration each iteration. (4) Normalization Control: Prevents runaway gain while allowing characteristic Lucier buildup. (5) Physical Modeling: RT60 decay coefficient = 6.9078/RT60 (natural exponential decay), reflection amplitude = (1 - proximity_gain) × exp(-time × decay). Key insight: The simulation mathematically models what happens physically — each iteration represents another generation of tape recording in the same acoustic space.

Quick start

  1. In Praat, select exactly one Sound object (speech works best).
  2. Run script…lucier_room_simulation.praat.
  3. Set IR_duration_seconds (1.0-2.0s for typical rooms).
  4. Set RT60_seconds (0.5s = dry room, 2.0s = reverberant).
  5. Set Number_of_reflections (500-2000, higher = denser reverb).
  6. Set Microphone_proximity_gain (0.85-0.98, controls degradation speed).
  7. Set Number_of_iterations (15-40, more = more transformation).
  8. Click OK — watch console as room model generates and iterations run.
  9. Final result named "originalname_iteration_X" appears and plays automatically.
Quick tip: For authentic Lucier effect, use speech audio (15-60 seconds). Set Microphone_proximity_gain = 0.90-0.92 for classic degradation rate. Use RT60 = 1.0-1.5 seconds for typical living room. Start with 30 iterations — this matches Lucier's original (~32 generations). Watch the console output — shows impulse response details and iteration progress. The peak level indicator shows how energy builds up (should stabilize around normalization_level). Processing time depends on audio length and iterations — 30s audio × 30 iterations ≈ 1-2 minutes. The output is the final iteration — you can examine intermediate iterations in Objects window before cleanup.
Important: SPEECH WORKS BEST — Lucier's piece uses speech; music/noise may not transform as characteristically. Microphone proximity is critical — Lower values (0.85) cause faster degradation, higher (0.98) cause slower transformation. RT60 affects resonance frequencies — Longer RT60 emphasizes room modes more strongly. Convolution is computationally intensive — Long audio (5+ minutes) with many iterations may be slow. Reflection count affects density — Too few (<200) creates sparse, metallic sound; too many (>5000) may be heavy. Pre-delay simulation models distance from speaker to mic (0.01s ≈ 3.4 meters). Normalization prevents clipping but also affects characteristic Lucier buildup — 0.99 works well. Physical model approximation — Synthetic impulse response, not measured from real room.

The Original Piece

🎵 Alvin Lucier's "I Am Sitting in a Room" (1969)

Concept: Speech gradually transforms into pure room resonance through repeated recording

Original process: Record speech → Play in room → Record result → Repeat ~32 times

Result: Intelligible speech → Rhythmic patterns → Pure resonant tones

Significance: Landmark of conceptual music, acoustic phenomenology, process art

Duration: Original ~45 minutes, this simulation creates shorter versions

Lucier's Original Text

ORIGINAL SCRIPT (spoken by Lucier): "I am sitting in a room different from the one you are in now. I am recording the sound of my speaking voice and I am going to play it back into the room again and again until the resonant frequencies of the room reinforce themselves so that any semblance of my speech, with perhaps the exception of rhythm, is destroyed. What you will hear, then, are the natural resonant frequencies of the room articulated by speech. I regard this activity not so much as a demonstration of a physical fact, but more as a way to smooth out any irregularities my speech might have." KEY ELEMENTS IN SIMULATION: 1. "play it back into the room again and again" → Iterative convolution 2. "resonant frequencies of the room reinforce themselves" → Room mode emphasis 3. "any semblance of my speech... is destroyed" → Speech intelligibility loss 4. "natural resonant frequencies of the room articulated by speech" → Final result

Original vs Simulation Comparison

AspectOriginal (1969)This SimulationFidelity
RoomPhysical space (various)Synthetic impulse responsePhysical model approximation
Recording mediumAnalog tape (generation loss)Digital convolution (perfect)Different artifact character
ProcessManual re-recording (~32×)Automated iteration (configurable)Same conceptual process
Time requiredHours (real-time)Minutes (computation)Much faster
ControlFixed by physical setupTunable parametersMore experimental control
Result characterSpecific room resonancesParameter-controlled resonancesConceptually similar

Educational Context

Teaching Lucier's Concepts:
  • Room modes: How spaces emphasize certain frequencies
  • Iterative processes: Small changes accumulate dramatically
  • Speech vs resonance: Source vs medium characteristics
  • Conceptual music: Idea as primary musical material
  • Acoustic phenomenology: Physical properties as compositional elements
  • Process art: System/process as artwork

Room Physics Model

🔬 Physical Acoustic Simulation

Impulse Response: Mathematical representation of how room responds to sound

Direct Sound: Straight path from speaker to microphone (pre-delay + gain)

Reflections: Sound bouncing off surfaces (random timing + exponential decay)

RT60 Decay: Time for sound to decay 60 dB (reverberation characteristic)

Microphone Proximity: Balance between direct and reflected sound

Impulse Response Generation Algorithm

STEP 1: CREATE EMPTY IMPULSE RESPONSE Create Sound from formula: "IR", 1, 0, IR_duration, sample_rate, "0" total_samples = duration × sample_rate STEP 2: ADD DIRECT SOUND direct_sample = round(pre_delay × sample_rate) Set value at sample: direct_sample, microphone_proximity_gain → Models sound traveling directly from speaker to mic STEP 3: CALCULATE DECAY COEFFICIENT decay_coefficient = 6.9078 / RT60 → 6.9078 = ln(1000) [60 dB = 1000× amplitude reduction] → Natural exponential decay: amplitude = exp(-time × decay_coefficient) STEP 4: GENERATE REFLECTIONS reflection_max_amplitude = 1.0 - microphone_proximity_gain For i = 1 to number_of_reflections: random_time = pre_delay + randomUniform(0, IR_duration - pre_delay) time_delta = random_time - pre_delay natural_decay = exp(-time_delta × decay_coefficient) random_amplitude = randomGauss(0, 0.3) × natural_decay × reflection_max_amplitude sample_index = round(random_time × sample_rate) Add random_amplitude to sample sample_index STEP 5: NORMALIZE Scale peak: 0.9 (prevents distortion in convolution)

Physical Parameter Explanations

ParameterPhysical MeaningTypical ValuesEffect on Result
IR_duration_secondsLength of room response captured1.0-2.0 sLonger = more reverb tail, more resonance detail
RT60_secondsReverberation decay time (60 dB)0.3-3.0 sLonger = slower decay, stronger resonance buildup
Number_of_reflectionsDensity of room reflections500-5000Higher = denser, smoother reverb; lower = sparse, metallic
Pre_delay_secondsTime for direct sound to reach mic0.005-0.05 sModels speaker-mic distance (0.01s ≈ 3.4m)
Microphone_proximity_gainDirect vs reflected sound balance0.80-0.98Higher = more direct sound, slower degradation

Microphone Proximity Physics

PROXIMITY EFFECT MODEL: Direct sound amplitude = microphone_proximity_gain Reflected sound maximum amplitude = 1.0 - microphone_proximity_gain PHYSICAL INTERPRETATION: • Mic very close to speaker (0.97-0.99): - Direct sound dominates (97-99%) - Reflections weak (1-3%) - Slow degradation (many iterations needed) - Like Lucier with mic close to speaker • Mic at moderate distance (0.90-0.95): - Balanced direct/reflected - Medium degradation rate - Typical "room recording" sound • Mic far from speaker (0.80-0.85): - Reflections dominate (15-20%) - Direct sound weak - Fast degradation (speech disappears quickly) - Like recording from across room MATHEMATICAL EFFECT IN ITERATIONS: Each iteration multiplies frequency response by room's response Frequencies at room resonances get multiplied by >1, grow Frequencies at room nulls get multiplied by <1, decay Proximity controls initial balance between original and room-modified signal

RT60 and Room Mode Emphasis

RT60 EFFECT ON ROOM MODES: Room modes (resonant frequencies) occur at: f_n = (n × c) / (2 × L) for dimension L, speed of sound c With RT60 decay: amplitude(t) = exp(-t × decay_coefficient) decay_coefficient = 6.9078 / RT60 IN ITERATIVE PROCESS: Frequency response at iteration i: H(f)^i Where H(f) is room's frequency response Room modes (resonances) have |H(f)| > 1 With each iteration: resonance_gain = |H(f_resonance)|^i RT60 affects how peaked resonances are: • Short RT60 (0.5s): Broad resonances, many frequencies emphasized • Medium RT60 (1.0s): Moderate resonance peaks • Long RT60 (2.0+ s): Sharp, narrow resonances EXAMPLE CALCULATION: RT60 = 1.0 s → decay_coefficient = 6.9078 Resonance at 100 Hz might have H(100) = 1.2 After 30 iterations: gain = 1.2^30 ≈ 237 That frequency becomes 237× louder relative to others

Parameter Guide

Room Acoustic Parameters

ParameterDefaultMinimumMaximumAcoustic EquivalentEffect on Transformation
IR_duration_seconds1.50.55.0Reverb tail lengthLonger = more complex resonance patterns
RT60_seconds1.00.35.0Reverberation timeLonger = stronger, narrower resonances
Number_of_reflections100010010000Reflection densityHigher = smoother, more diffuse sound
Pre_delay_seconds0.010.0010.10Speaker-mic distanceLonger = more distinct early reflections

Recording Setup Parameters

ParameterDefaultLucier-likeFast DegradationSlow EvolutionPhysical Meaning
Microphone_proximity_gain0.950.90-0.920.80-0.850.97-0.99Direct/refl. balance
Number_of_iterations3025-3515-2040-50Generations of recording
Normalization_level0.990.98-1.000.95-0.980.99-1.00Peak level control

Preset Configurations

🏠 Classic Lucier Configuration

Goal: Recreate characteristic sound of original piece

Parameters:

  • IR_duration_seconds: 1.2-1.5
  • RT60_seconds: 1.0-1.2
  • Number_of_reflections: 800-1200
  • Pre_delay_seconds: 0.01
  • Microphone_proximity_gain: 0.90-0.92
  • Number_of_iterations: 30
  • Normalization_level: 0.99

Result: Speech gradually dissolves into clear room resonances over ~30 iterations

⏱️ Fast Transformation

Goal: Quick demonstration of the concept

Parameters:

  • IR_duration_seconds: 2.0
  • RT60_seconds: 1.5
  • Number_of_reflections: 2000
  • Microphone_proximity_gain: 0.85
  • Number_of_iterations: 15-20
  • Normalization_level: 0.97

Result: Speech disappears quickly, strong resonances emerge by iteration 10

🔍 Detailed Examination

Goal: Study gradual transformation in detail

Parameters:

  • IR_duration_seconds: 1.0
  • RT60_seconds: 0.8
  • Number_of_reflections: 500
  • Microphone_proximity_gain: 0.97
  • Number_of_iterations: 40-50
  • Normalization_level: 0.995

Result: Very slow transformation, allows hearing each stage clearly

🏛️ Cathedral Effect

Goal: Create large, reverberant space sound

Parameters:

  • IR_duration_seconds: 3.0-4.0
  • RT60_seconds: 2.5-3.5
  • Number_of_reflections: 3000-5000
  • Pre_delay_seconds: 0.03-0.05
  • Microphone_proximity_gain: 0.88-0.92
  • Number_of_iterations: 25-30

Result: Rich, complex resonances with long decay tails

Parameter Interaction Guide

KEY INTERACTIONS: 1. PROXIMITY × ITERATIONS: High proximity (0.97) + Many iterations (40) = Slow, detailed transformation Low proximity (0.85) + Few iterations (15) = Quick, dramatic transformation 2. RT60 × REFLECTION COUNT: High RT60 (2.0) + High reflections (3000) = Smooth, singing resonances Low RT60 (0.5) + Low reflections (300) = Metallic, percussive resonances 3. IR_DURATION × NORMALIZATION: Long IR (3.0) + Low normalization (0.95) = May clip, reduce normalization Short IR (1.0) + High normalization (0.99) = Safe, conservative 4. PRE_DELAY × PROXIMITY: Long pre-delay (0.03) + High proximity (0.96) = Distinct early reflections Short pre-delay (0.005) + Low proximity (0.87) = Integrated direct/reflected

Simulation Process

🔄 Iterative Convolution Algorithm

Step 1: Generate physical room impulse response

Step 2: Convolve source audio with room response

Step 3: Crop to original duration (simulate fixed recording length)

Step 4: Normalize to prevent clipping

Step 5: Repeat Steps 2-4 for specified iterations

Step 6: Output final iteration as result

Iteration-by-Iteration Transformation

MATHEMATICAL MODEL: Let: x(t) = original speech signal h(t) = room impulse response * = convolution operator y_i(t) = signal after i iterations Process: y_0(t) = x(t) (original) y_1(t) = [x * h](t) (first recording) y_2(t) = [y_1 * h](t) = [x * h * h](t) ... y_i(t) = [x * h^i](t) (after i iterations) In frequency domain (convolution → multiplication): Y_i(f) = X(f) × H(f)^i Where H(f) is room's frequency response Room resonances: frequencies where |H(f)| > 1 Room nulls: frequencies where |H(f)| < 1 EFFECT OVER ITERATIONS: • Resonant frequencies grow: |H(f_res)|^i → large amplification • Null frequencies decay: |H(f_null)|^i → near silence • Speech spectrum × resonance pattern → speech shaped by room • After many iterations: only resonances remain

Transformation Timeline (30 Iterations)

IterationsSpeech IntelligibilityRoom ResonanceCharacteristic SoundListening Focus
1-595-80%FaintSpeech with reverbSpeech content, reverb character
6-1080-50%EmergingEchoey, resonant speechResonance frequencies appearing
11-1550-20%DominantSpeech fragments in resonanceRhythm vs resonance balance
16-2020-5%StrongPitched tones with speech rhythmTonal qualities, rhythmic patterns
21-255-1%Very strongPure tones, some speech contourSpecific resonance frequencies
26-30<1%CompleteRoom resonances onlyAcoustic character of synthetic room

Normalization Strategy

NORMALIZATION PURPOSE: Prevent digital clipping during iterative gain buildup Mimic tape saturation/level control in original ALGORITHM: After each iteration i: peak_i = maximum absolute amplitude of y_i(t) If peak_i > normalization_level: y_i(t) = y_i(t) × (normalization_level / peak_i) Else: No change (preserve natural dynamics) EFFECT ON LUCIER CHARACTER: • normalization_level = 1.0: No limiting, may clip (authentic to tape saturation) • normalization_level = 0.99: Gentle limiting, prevents clipping • normalization_level = 0.95: Strong limiting, reduces dynamic range • Lower values flatten dynamics faster COMPARISON TO ORIGINAL: Original used analog tape → natural soft clipping This uses digital normalization → controlled peak limiting Similar effect: prevents infinite gain buildup at resonances

Cropping to Original Duration

WHY CROP AFTER EACH ITERATION? Physical analogy: Each recording uses same length tape Mathematical necessity: Convolution lengthens signal Duration(y_i) = Duration(x) + Duration(h) - 1 Without cropping: Iteration 1: duration = D + IR - 1 Iteration 2: duration = (D + IR - 1) + IR - 1 = D + 2×IR - 2 ... Iteration i: duration = D + i×IR - i → grows without bound With cropping (to original duration D): Each iteration same duration D Simulates fixed-length tape recording Truncates reverb tail beyond D Focuses on steady-state resonance buildup PRACTICAL EFFECT: • Early iterations: lose some reverb tail • Later iterations: resonance patterns stabilize within D • Consistent with Lucier's fixed-duration tape loops

Creative Applications

Music Education and Analysis

🏫 Teaching Acoustic Concepts

Goal: Demonstrate room acoustics and iterative processes

Workflow:

  1. Record student speaking Lucier's text or other material
  2. Process with different parameter sets
  3. Compare results: dry vs 5 vs 15 vs 30 iterations
  4. Analyze frequency spectra at each stage
  5. Discuss physical vs perceptual transformation

Learning outcomes: Room modes, resonance, iterative systems, conceptual art

Sound Design and Film

🎬 Creating Evolving Soundscapes

Goal: Generate evolving ambient textures for media

Workflow:

  1. Use non-speech sources (field recordings, instruments)
  2. Experiment with extreme parameters (RT60=4.0, proximity=0.99)
  3. Process for many iterations (40-50)
  4. Use resulting tones as atmospheric beds
  5. Layer with original or other processed versions

Applications: Sci-fi atmospheres, dream sequences, transitional sounds

Composition and Sound Art

🎵 Lucier-inspired Compositions

Goal: Create new works using Lucier's process with variations

Workflow:

  1. Use different source material (poetry, singing, instruments)
  2. Experiment with non-room impulse responses
  3. Combine with other processing (filtering, time-stretching)
  4. Create multi-movement piece with different parameter sets
  5. Perform live with real-time parameter adjustment

Creative variations: Different "rooms," multiple sources, hybrid processes

Acoustic Research

🔬 Room Mode Visualization

Goal: Study room resonance patterns through iterative emphasis

Workflow:

  1. Use broadband noise or impulse as source
  2. Process with high iteration count (50+)
  3. Analyze spectrum of result
  4. Compare to mathematical room mode predictions
  5. Visualize resonance buildup over iterations

Research applications: Room acoustic analysis, resonance identification, modal decay studies

Advanced Creative Techniques

Multi-Room Processing:
  1. Process source with Room A parameters (e.g., small room)
  2. Take result, process with Room B parameters (e.g., large hall)
  3. Creates hybrid acoustic space
  4. Example: Speech → Small room (10 iterations) → Cathedral (20 iterations)
Iteration Extraction:
  • Modify script to save all iterations (not just final)
  • Create piece using different iterations as sections
  • Example: Movement 1 (iteration 5), Movement 2 (iteration 15), etc.
  • Shows transformation process as musical structure
Hybrid Sources:
  • Process multiple sources separately
  • Mix results at different stages
  • Example: Speech transforms to resonance, then mix with transforming music
  • Creates complex interplay of dissolving materials

Troubleshooting Common Issues

Problem: Speech doesn't transform (stays intelligible)
Causes: Microphone_proximity_gain too high (>0.97), iterations too few (<15)
Solutions: Decrease proximity (0.85-0.92), increase iterations (25-35), increase RT60 (1.2-1.5)
Problem: Result clips/distorts
Causes: Normalization_level too high (1.0), strong resonances overwhelming
Solutions: Decrease normalization (0.95-0.98), decrease RT60 (0.8-1.0), decrease proximity (more reflections)
Problem: Result is too noisy/metallic
Causes: Number_of_reflections too low (<300), RT60 too short (<0.5)
Solutions: Increase reflections (1000-2000), increase RT60 (1.0-1.5), increase IR_duration (1.5-2.0)
Problem: Processing takes too long
Causes: Long source audio, many iterations, high reflection count
Solutions: Use shorter source (30-60s), decrease iterations (20-25), decrease reflections (500-800)

Performance Guidelines

ScenarioSource LengthIterationsReflectionsProcessing Time
Quick demo10-20s15-20500-80030-60 seconds
Standard Lucier30-60s25-30800-12001-3 minutes
Detailed study60-120s35-401500-20003-8 minutes
Extreme processing120s+40-503000-500010+ minutes