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.

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

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

  1. Select exactly one Sound.
  2. Run Ligeti_Micropolyphonic_Choir_Machine.praat.
  3. Choose one of the five behavioral presets or Custom.
  4. Choose a Speed_mode. Balanced is the form default.
  5. Decide whether to use Stereo_spread.
  6. Set Wet/Dry and normalization options, then run the script.
  7. The result is named original_ligeti_Preset.

Behavioral presets

PresetVoicesTime rangePitch rangeDuration var.Distribution / structureGain / fade
Static Spectral Fog60±0.5 s±8 ct0.02Gaussian-like central mass0.8 / 50 ms
Fracturing Mass60±1.0 sup to ±35 ct0.08Detuning range grows with voice index0.7 / 30 ms
Stereo Torsion50±0.6 sup to ±25 ct0.05Allowed detuning grows from left-pan side toward right-pan side; stereo is forced on0.9 / 20 ms
Bimodal Web40±0.8 s-20…-5 / +5…+20 ct0.10Alternating low/high detuning groups0.85 / 15 ms
Breathing Field40±1.2 s±12 ct0.08Uniform cloud0.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

ParameterDefaultBehavior
Speed_modeBalancedFull 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_voices60Custom only; rounded and clamped to at least 2.
Time_offset_range_s0.8Custom support is ±range. Negative offsets trim the voice start; positive offsets delay the voice.
Duration_variation0.05Custom random factor around 1; internally limited below 1.
Max_pitch_cents15Custom nominal detuning limit. Negative values are converted to positive internally.
Stereo_spreadyesIf 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_ms30Symmetric attack/release envelope, capped at half the rendered voice length.
Voice_gain1.0Custom base gain; each voice uses gain / sqrt(number_of_voices).
Wet_dry_percent80Linear choir/dry mix, clamped to 0–100.
Normalize_outputyesIf 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:

pitch_ratio = 2^(nominal_cents / 1200) dur_factor = 1 + random duration variation combined_factor = pitch_ratio / dur_factor Override sampling frequency: workingSR × combined_factor Resample back to workingSR

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

Stereo and multichannel behavior

No random seed is exposed, so voice pitch controls, duration factors, offsets and pan positions vary across runs.

Output and visualization

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.

Useful distinction: in Ligeti’s scores, the density emerges from independently composed parts. Here, density emerges from transformed copies of one recorded source. The perceptual analogy is therefore meaningful, but the generative mechanism is different.

Sources and further reading