UPIC Draw Synthesis — User Guide

Draw a macro pitch arc, a micro waveform, and a dynamic envelope for each voice, then realize the same graphic material as a single UPIC-style line, a Xenakis-inspired sound mass, or a GENDYN-inspired living stochastic mass.

Author: Shai Cohen Affiliation: Department of Music, Bar-Ilan University, Israel License: MIT License Implementation: Pure Praat Repo: Praat AudioTools
Contents:

What this does

UPIC Draw Synthesis is a graphic synthesis environment built entirely inside Praat. Each arc is defined by three connected drawings: a pitch trajectory over time, a single-cycle waveform, and a dB envelope.

The distinctive feature is that the drawing is only the compositional structure. The same arc can be rendered in three different ways: as one deterministic line, as a population of related glissando trajectories, or as a stochastic population whose pitch and waveform evolve around the drawing.

DRAWING pitch arc → macro trajectory waveform → micro timbral attractor dB envelope → gain + optional population density ↓ REALIZATION Line Mass Stochastic Mass ↓ OUTPUT deterministic line Xenakis-inspired sound mass GENDYN-inspired evolving stochastic mass
Important: the Mass and GENDYN modes do not replace the drawing with random material. The drawing remains the centre of the process: populations, drift, and waveform mutation are generated around it.

Quick start

  1. Run UPIC_Draw_Synthesis.praat. No input Sound is required.
  2. Choose a preset: UPIC Pure, Xenakis Mass, GENDYN Mass, or Custom.
  3. Set the duration, number of arcs, and frequency range.
  4. On the macro screen, click points to draw the current pitch arc and its dB envelope.
  5. Press Tab or M to switch to the micro screen and reshape the waveform polygon.
  6. Press keys 1–6 to select another arc.
  7. Press R to cycle the current arc between Line, Mass, and Stochastic Mass.
  8. Press Enter to render and audition the current arc.
  9. Press F to render the complete composition.
Recommended first experiment: draw one long rising glissando, select Xenakis Mass, and compare it with UPIC Pure. The geometry is identical; only the realization changes.

The three drawn layers

LayerDomainFunction
Pitch arcTime × frequencyDefines the macro frequency trajectory. The frequency axis is logarithmic, so straight lines correspond to straight pitch glissandi.
Waveform polygonPhase 0–1 × amplitude −1…1Defines one cycle of the oscillator. In GENDYN-like operation it becomes an attractor around which breakpoint amplitudes and phase positions evolve.
EnvelopeTime × dBControls relative gain. In mass modes it can also control how many members of the population are active.

The waveform is periodic: its final breakpoint joins the first breakpoint of the next cycle. Its cycle mean is removed before rendering so that the drawn waveform does not introduce a static DC offset.

Realization modes

ModeWhat the drawing becomes
LineOne oscillator follows the drawn pitch arc and reads the drawn waveform. This is the most direct UPIC-like realization.
MassThe arc becomes a population of related voices. Members receive structured pitch offsets, different glissando slopes, onset scatter, gain scatter, random phase, and optional stereo dispersion.
Stochastic MassThe Mass realization plus correlated pitch drift for each member. The population is no longer a fixed fan but a continuously moving statistical field.

Realization is stored per arc, so one composition can combine deterministic lines, stable masses, and stochastic masses simultaneously.

Xenakis-inspired mass engine

In Mass mode the drawn pitch line becomes the centre of a population. Each member receives a static pitch offset and its own variation of the glissando slope:

fᵢ(t) = 2 ^ [ L(t) + gᵢ (L(t) − L₀) + cᵢ / 1200 ] L(t) = drawn log2-frequency trajectory L₀ = first drawn pitch cᵢ = member pitch offset in cents gᵢ = glissando-dispersion factor

The dispersion factors are distributed around zero, so the population is designed to remain centred on the drawn trajectory while opening into a fan or wedge.

Population members also receive independent:

Mass rather than chorus: pitch spread changes the thickness around the line, while glissando dispersion changes the slopes themselves. This allows the population to diverge and converge instead of remaining a bundle of parallel detuned oscillators.

GENDYN-inspired waveform evolution

The drawn waveform can act as an attractor rather than a permanently fixed wavetable. At the selected mutation rate, every breakpoint amplitude and breakpoint phase position undergoes correlated Ornstein–Uhlenbeck motion around the drawn polygon.

Aₖ(t+Δt) = A_drawn,k + ρ [Aₖ(t) − A_drawn,k] + σA √(1−ρ²) ε Pₖ(t+Δt) follows the same attractor principle.

The correlation parameter controls persistence. High values produce slow, continuous wandering; lower values produce faster and less correlated change. Breakpoint positions are constrained so that they remain ordered inside the cycle.

The evolving cycles are baked into a two-dimensional phase × time wavetable and read by each oscillator during synthesis. The mean of each waveform frame is removed before playback.

Conceptual distinction: this is a GENDYN-inspired attractor model, not a historical reconstruction of the original GENDYN algorithm. The user's drawn waveform remains the reference state toward which the stochastic process is pulled.

Density & register fields

Envelope-driven population density

In mass modes, the dB envelope can control both acoustic level and the number of active population members:

N_active(t) = max [ 1, N × 10 ^ ( coupling × min(0,dB(t)) / 40 ) ]

Members enter in order of distance from the central drawn line. As the population opens, the result can move perceptually from a thin trajectory toward a thickened line and finally a full sound mass.

Register field

The register field does not apply an EQ filter. Instead, it weights which population members exist at each moment.

FieldPopulation behavior
NoneAll members are available.
Hollow centreSuppresses members near the central trajectory and emphasizes the outer population.
Low to highA moving population window travels from the lower to the upper side of the mass.
High to lowThe same movement in the opposite direction.
Moving windowA sinusoidally moving region selects changing portions of the population.
Alternating bandsCreates changing internal bands across member position and time.

Structural roughness

There is no separate noise-effect stage. Instead, disorder increases as the mass becomes wider and denser. The engine derives a roughness factor from pitch spread and the current active population fraction:

R(t) = min(1, pitchSpread / 200 cents) × activePopulationFraction(t)

This factor increases the stochastic innovations used by waveform mutation and pitch drift. Consequently, a broad and densely populated mass becomes less stable through the same structural conditions that make it large.

Musical consequence: roughness is an emergent property of population structure rather than an added noise layer.

Energy & stereo

Population energy

Each member is scaled approximately by:

member gain = 10^(gainScatter_dB / 20) / √N

This prevents population level from growing linearly with the number of members while still allowing dense realizations to retain their own energy profile.

The final mix is not automatically normalized. A peak guard rescales the result to 0.99 only if its raw peak exceeds the safe range.

Stereo mass width

When stereo width is greater than zero, members are distributed across an equal-power stereo field. With zero width the result is mono.

Presets

PresetPurpose
CustomUses the selected realization and the editable mass / GENDYN settings.
UPIC PureOne deterministic voice per arc, no mass spread, no waveform mutation, no density coupling, mono.
Xenakis MassSixteen voices per arc with pitch spread, glissando dispersion, onset and gain scatter, density coupling, and stereo width. Waveform mutation is disabled.
GENDYN MassSixteen stochastic-mass voices with pitch spread and slope dispersion plus waveform-amplitude mutation, breakpoint drift, correlated evolution, density coupling, and stereo width.

Controls

Main form

ControlDefaultFunction
PresetCustomSelects Custom, UPIC Pure, Xenakis Mass, or GENDYN Mass.
Duration_s8 sDuration of the complete synthesis page.
Number_of_arcs4Number of editable arcs; accepted range is 1–6.
Lowest_frequency_Hz55 HzBottom of the logarithmic pitch display.
Highest_frequency_Hz1760 HzTop of the pitch display; must remain below 0.45 × sample rate.
Sample_rate44100 Hz22050 or 44100 Hz.
RealizationStochastic MassDefault realization assigned to the arcs in Custom mode.
Mass_voices_per_arc12Population size in Mass and Stochastic Mass; accepted range is 1–32.
Random_seed12345Positive values reproduce the same stochastic population. Non-positive values request a generated seed.
Edit_mass_and_GENDYN_detailsOffOpens the detailed mass, GENDYN, density, register, and stereo controls.
Keep_individual_arcsOffRetains separately rendered arc Sounds in addition to the final mix.

Detailed mass & GENDYN controls

ControlCustom defaultFunction
Pitch spread cents80Static population thickness around the drawn trajectory.
Glissando dispersion percent25%Changes member slopes around the drawn slope, producing fans and wedges.
Onset scatter ms30 msRandomizes member entry times.
Gain scatter dB3 dBRandomizes member gains before 1/√N population scaling.
Waveform mutation percent20%Stationary amplitude deviation of waveform breakpoints around the drawing.
Breakpoint drift percent5%Allows waveform breakpoint positions to move around their drawn phase positions.
Mutation correlation0.90Persistence of the stochastic waveform and pitch-drift process.
Mutation rate Hz25 HzTemporal update rate of the evolving wavetable and stochastic control processes.
Envelope density coupling percent50%Amount by which negative envelope values reduce the active member count.
Register fieldNoneSelects which region of the population exists over time.
Stereo mass width percent70%Width of the equal-power member distribution; zero produces mono.
Workload guard: the script refuses configurations above 1600 voice-seconds, calculated as number of arcs × mass voices × duration. Reduce one of these values if the limit is exceeded.

Interaction

ActionFunction
ClickAdd a point, or move an existing point at approximately the same time / phase.
UUndo the most recent add or move.
1–6Select the arc to edit.
Tab / MSwitch between macro pitch/envelope editing and micro waveform editing.
RCycle the selected arc through Line → Mass → Stochastic Mass.
EnterRender and play the current arc.
FRender, mix, visualize, and play the complete page.
EscCancel the session.

Visualization

The Demo-window display exposes both the graphic source and the behavior of the realization engine.

Macro view

Shows all drawn pitch arcs on a logarithmic frequency axis. Mass realizations additionally display the static population fan generated by pitch offsets and glissando dispersion.

Envelope view

Shows the current arc's dB trajectory, including the dedicated bottom region used as an explicit off / silence state.

Micro view

Shows the drawn waveform polygon and the rendered-cycle preview. In stochastic configurations the drawing is interpreted as the centre of a time-evolving waveform population.

Result view

After final rendering, the display shows the completed pitch-arc structure together with the rendered output and spectral result, allowing the drawn geometry to be compared with the realized sound mass.

Outputs

OutputPurpose
UPIC_mixThe final composition containing all rendered arcs.
UPIC_arc1, UPIC_arc2…Optional per-arc Sounds when Keep_individual_arcs is enabled.
Info reportSummarizes the arc geometry, waveform data, realization choices, population behavior, and final output levels.
Demo / result visualizationShows the relationship between drawn arcs, mass realization, waveform structure, and final output.

Notes & limitations

Citation

Praat AudioTools: Cohen, S. (2026). Praat AudioTools: An Offline Analysis–Resynthesis Toolkit for Experimental Composition.