Ligeti Micropolyphonic Choir Machine — User Guide
Stochastic multi-voice texture generator using closely detuned, time-displaced, fade-shaped copies of a source, with optional stereo spread and speed/quality modes.
What this does
Ligeti Micropolyphonic Choir Machine turns one source into a dense cloud of many related voices. Each voice is a copy of the source with a randomized time offset, small pitch/duration resampling factor, attack/release envelope and level scaling. With stereo spread enabled, the choir is built from a single mono source and the voices are distributed across the stereo field with equal-power panning.
The behavioral presets change the statistical structure of pitch offsets rather than selecting a fixed score. The result is a stochastic texture generator: the same preset produces the same type of field, but not the same individual voice placements on every run.
Quick start
- Select exactly one Sound.
- Run
Ligeti_Micropolyphonic_Choir_Machine.praat. - Choose one of the five behavioral presets or Custom.
- Choose a Speed_mode. Balanced is the form default.
- Decide whether to use Stereo_spread.
- Set Wet/Dry and normalization options, then run the script.
- The result is named
original_ligeti_Preset.
Behavioral presets
| Preset | Voices | Time range | Pitch range | Duration var. | Distribution / structure | Gain / fade |
|---|---|---|---|---|---|---|
| Static Spectral Fog | 60 | ±0.5 s | ±8 ct | 0.02 | Gaussian-like central mass | 0.8 / 50 ms |
| Fracturing Mass | 60 | ±1.0 s | up to ±35 ct | 0.08 | Detuning range grows with voice index | 0.7 / 30 ms |
| Stereo Torsion | 50 | ±0.6 s | up to ±25 ct | 0.05 | Allowed detuning grows from left-pan side toward right-pan side; stereo is forced on | 0.9 / 20 ms |
| Bimodal Web | 40 | ±0.8 s | -20…-5 / +5…+20 ct | 0.10 | Alternating low/high detuning groups | 0.85 / 15 ms |
| Breathing Field | 40 | ±1.2 s | ±12 ct | 0.08 | Uniform cloud | 0.8 / 40 ms |
Except for Stereo Torsion, the preset does not force Stereo_spread. Speed mode, Wet/Dry, normalization, visualization and playback remain user controls.
Parameters
| Parameter | Default | Behavior |
|---|---|---|
| Speed_mode | Balanced | Full Quality: original SR / voice-resample precision 50. Balanced: if source SR >22.05 kHz, work at 22.05 kHz / precision 10. Fast: if source SR >11.025 kHz, work at 11.025 kHz / precision 5. Output is resampled back to the source SR. |
| Number_of_voices | 60 | Custom only; rounded and clamped to at least 2. |
| Time_offset_range_s | 0.8 | Custom support is ±range. Negative offsets trim the voice start; positive offsets delay the voice. |
| Duration_variation | 0.05 | Custom random factor around 1; internally limited below 1. |
| Max_pitch_cents | 15 | Custom nominal detuning limit. Negative values are converted to positive internally. |
| Stereo_spread | yes | If on, the working source is converted to mono once and each voice is panned into a 2-channel output. If off, source channel count is preserved. |
| Attack_fade_ms | 30 | Symmetric attack/release envelope, capped at half the rendered voice length. |
| Voice_gain | 1.0 | Custom base gain; each voice uses gain / sqrt(number_of_voices). |
| Wet_dry_percent | 80 | Linear choir/dry mix, clamped to 0–100. |
| Normalize_output | yes | If enabled and the result is non-silent, the final peak is normalized to exactly 0.95. This is true normalization, not an attenuate-only ceiling. |
Voice-generation engine
Pitch and duration are coupled in the current resampling law
The script calculates a nominal pitch ratio and a duration factor, then combines them into a single sampling-rate transformation:
Because one SR-override/resample operation controls both playback rate and interpreted duration, the nominal cents value and duration factor are not independent acoustic transformations. Duration variation also changes the applied pitch ratio, and nominal pitch detuning also affects rendered duration. The voice-cloud plots store the nominal pitch-control cents chosen before this combined resampling step.
Offsets and envelopes
- Flat modes draw time offsets uniformly from ±
time_range. - The Fog preset uses a triangular/centralized approximation made from the sum of two uniform random values.
- Negative offsets remove the beginning of the voice and start it at output time 0; positive offsets delay the voice.
- Each voice receives a symmetric linear attack/release envelope and gain
Voice_gain / sqrt(N).
Stereo and multichannel behavior
- Stereo spread on: any multichannel source is converted to mono for the choir source; the result is stereo with equal-power panning.
- Stereo spread off: the output preserves the source channel count and each copied voice is mixed back into its corresponding source channels without panning.
- Stereo Torsion: always forces stereo spread.
No random seed is exposed, so voice pitch controls, duration factors, offsets and pan positions vary across runs.
Output and visualization
- Name:
original_ligeti_Preset. - Sample rate: restored to the source sample rate after Balanced/Fast processing.
- Duration: output buffer is
workingDuration + time_range + 0.5 s. The extra 0.5 s can remain silent after the latest voice. - 0% wet: produces the dry source padded to the choir output duration; with default normalization enabled it is still peak-normalized to 0.95, so it is not an identity bypass.
- Balanced/Fast bandwidth: downsampling limits the working bandwidth before the choir is generated; upsampling restores sample rate, not removed high-frequency content.
The visualization shows the input waveform, choir waveform, an output spectrogram, a time-offset versus nominal-pitch cloud, a pan-versus-nominal-pitch cloud, and a summary strip. The waveform and spectrogram panels are drawn only through the original source duration, not through the complete extended output buffer.
Historical and compositional context
György Ligeti developed the technique commonly called micropolyphony in the late 1950s and 1960s. In this practice, many individually active instrumental or vocal lines are packed so closely that the listener often perceives a slowly changing mass, field or harmonic texture rather than conventional foreground counterpoint. Schott’s Ligeti profile describes this period as one of extremely densely interwoven voice structures in which intense internal motion can produce an externally static sonic impression.
Important landmarks include Apparitions (1958–59), Atmosphères (1961), the Requiem (1963–65), Lux aeterna for 16-part mixed choir (1966), and Lontano (1967). Ligeti later described his late-1950s language as based on the close amalgamation of many instrumental and vocal lines, before moving in the later 1960s toward more transparent forms of polyphony.
Relation to this tool: the Choir Machine translates one perceptual principle of micropolyphony into an audio-process model: many closely related voices accumulate into a collective texture through small temporal and pitch differences. It does not reconstruct Ligeti’s notated contrapuntal procedures, pitch organization, rhythmic canons, formal designs, or any specific composition. Its stochastic copying, detuning, duration variation and panning are contemporary signal-processing choices inspired by the idea of a dense polyphonic mass rather than an emulation of Ligeti’s compositional method.
Sources and further reading
- Schott Music. György Ligeti — composer profile. Includes the chronology of Atmosphères, Requiem, Lux aeterna and Lontano, and a description of Ligeti’s dense micropolyphonic period.
- Schott Music. San Francisco Polyphony. Includes Ligeti’s retrospective description of micro-polyphony as a close amalgamation of instrumental and vocal lines.
- Schott Music. Work of the Week: György Ligeti — Lontano. Discusses overlapping lines in different tempi/rhythms forming tone clusters and the perceptual relation between polyphony and harmony.