Poisson Point Process Synthesis — User Guide
Stochastic grain synthesis driven by two independent homogeneous Poisson point processes. Left and right events arrive at random times, each event receives an independently randomized centre frequency, duration, and amplitude, and the resulting channel sums are shaped with an exact mid/side stereo-width control.
What this does
The generator creates two independent stochastic event streams, one for the left channel and one for the right. Each stream is a homogeneous Poisson point process with its own event rate in events per second.
Every event triggers one short sinusoidal grain. Frequency, duration, and amplitude are randomized independently for each event. Grains can overlap freely because event spacing and grain duration are independent variables.
The final stereo image is not created by panning individual grains. The left and right Poisson processes are synthesized independently first; Stereo width then transforms their complete channel sums through a mid/side matrix.
Quick start
- Run
Poisson_Point_Process_Synthesis.praat. - Choose Custom or one of the seven presets.
- Set Duration, Left/Right event rates, Left/Right base frequencies, and Stereo width.
- Enable Edit details to change sample rate, random seed, frequency spreads, mean grain durations, duration spreads, and nominal amplitudes.
- Run the script. Independent Poisson event times and grain parameters are generated for both channels, rendered in chunks, combined to stereo, width-adjusted, faded, and optionally peak-protected.
Poisson timing
For a homogeneous Poisson process with rate λ events per second, the waiting time between consecutive events is exponentially distributed:
p(Δt) = λ exp(-λΔt) expected waiting time = 1 / λ
Therefore the event rate controls average density, not a fixed pulse interval. Individual inter-onset intervals remain random.
The expected event count over a duration T is approximately:
expected events = λ × T
but every finite realization can contain more or fewer events. At very low rates and short durations it is possible to obtain zero events in one or both channels.
Normalized waiting-time QC
The visualization multiplies each realized waiting time by its process rate:
normalized waiting time = λ × Δt
For the theoretical exponential distribution, the expected normalized mean is 1 and the coefficient of variation is also 1. The Info window reports the realized event rate, mean IOI, and IOI CV for each channel.
Grain model
Each Poisson event receives three randomized parameters: centre frequency, duration, and amplitude.
Frequency
For each channel, grain frequency is drawn uniformly from the effective frequency interval:
base frequency - spread/2
...
base frequency + spread/2
The requested interval can be truncated by the synthesis frequency guard described below.
Duration
Grain duration is drawn uniformly around the mean:
duration = mean duration + spread × (U - 0.5) where U is uniform on [0,1]
The form validation requires the mean to be greater than half the spread so the requested random duration interval remains positive. Internally, duration is also protected by a 10 ms minimum before end-of-Sound clipping.
If a grain begins near the end of the requested Duration, it is shortened so that it does not extend past the final sample. After that clipping, grains of 5 ms or less are not rendered.
Amplitude
Each grain amplitude is uniformly randomized between 70% and 100% of its channel's nominal amplitude:
A = nominalAmplitude × (0.7 + 0.3U)
Hann-windowed sinusoid
The rendered grain is:
g(t) =
A × sin(2π f t)
× 0.5[1 - cos(2π(t - tevent)/D)]
inside the grain interval and zero outside it. The Hann envelope reaches zero at both grain boundaries, so overlapping grains sum without a discontinuous rectangular gate.
The carrier uses absolute Sound time t, not a phase reset to zero at each event. The envelope still begins and ends at zero, so this absolute-time phase choice does not create a boundary discontinuity.
Overlap
Overlap is genuine: if a new Poisson event occurs before an earlier grain has finished, both grains are present simultaneously and are added into the same channel.
For implementation stability, the script adds grains to the Sound in groups of 25 formula terms. Chunking changes only how the computation is assembled; it does not change the event realization.
Stereo width
The independent left and right grain sums first form the raw stereo pair. Stereo width then uses an exact mid/side transform:
M = (L + R) / 2 S = (L - R) / 2 L' = M + width × S R' = M - width × S
| Width | Result |
|---|---|
| 0 | True dual-mono output: both channels equal the mid signal. |
| 1 | The original independently generated L/R stereo pair is preserved. |
| 0–1 | Continuously reduces side information between those endpoints. |
The output object remains stereo even when Width = 0.
Controls
Main page
| Control | Default | Behavior |
|---|---|---|
| Preset | Custom | Selects one of seven complete grain-field configurations or retains the current custom values. |
| Duration | 10 s | Final Sound duration. |
| Left event rate | 8 /s | Poisson intensity λ for the raw left process. |
| Right event rate | 8 /s | Poisson intensity λ for the raw right process. |
| Left base frequency | 120 Hz | Center of the left grain-frequency distribution before safety truncation. |
| Right base frequency | 120 Hz | Center of the right grain-frequency distribution before safety truncation. |
| Stereo width | 1.0 | 0 = dual mono; 1 = original independent stereo. |
| Edit details | off | Opens the secondary technical/reproducibility page. |
| Peak protection | on | Enables the v0.6.1 down-only peak ceiling at .90. |
Details page
| Control | Default | Behavior |
|---|---|---|
| Sample rate | 44100 Hz | Direct synthesis and final output rate; minimum accepted value is 1000 Hz. |
| Random seed | 0 | 0 = unpredictable; positive = reproducible event/grain realization. |
| Left/Right frequency spread | 200 / 200 Hz | Total width of each uniform grain-frequency interval. |
| Left/Right mean grain duration | .10 / .10 s | Center of each uniform duration distribution. |
| Left/Right duration spread | .05 / .05 s | Total width of each duration distribution. |
| Left/Right nominal amplitude | .60 / .60 | Top of each grain's 70–100% amplitude randomization range. |
Presets
| Preset | Main behavior | Key overrides |
|---|---|---|
| Sparse Ambience | Low event density and comparatively long grains. | L/R rates 3/2.5 s⁻¹; bases 80/100 Hz; durations .15/.18 s; width 1.0. |
| Dense Texture | High event density with shorter grains and substantial overlap. | Rates 25/22; bases 200/220 Hz; durations .05/.06 s; width .8. |
| Rhythmic Pulse | Narrow frequency/duration spreads and reduced stereo width. | Rates 12/12; bases 100/105 Hz; durations .08/.08 s; width .3. Timing remains Poisson, not quantized. |
| Wide Stereo Field | Strong spectral contrast between independent channels. | Rates 10/10; bases 150/450 Hz; spreads 100/300 Hz; width 1.0. |
| Ascending Shimmer | Higher right-channel register and short grains. | Rates 18/16; bases 300/600 Hz; spreads 500/800 Hz; width .9. No temporal upward glissando is generated. |
| Granular Cloud | Very dense field of short grains. | Rates 35/32; bases 400/380 Hz; durations .03/.035 s; width .85. |
| Metallic Rain | High-frequency, short-duration event field. | Rates 20/18; bases 800/1200 Hz; spreads 1000/1500 Hz; durations .02/.025 s; width 1.0. |
Presets override the left/right rates, base frequencies, frequency spreads, grain durations, duration spreads, nominal amplitudes, and Stereo width. Sample rate and Random seed remain controlled by the Details page.
Centre-frequency safety
The engine limits grain centre frequencies to:
0.1 Hz ... 95% of Nyquist
For each channel, the requested interval is first calculated from base frequency ± half the spread. The lower endpoint is clipped upward to 0.1 Hz and the upper endpoint downward to 95% of Nyquist.
This is range truncation, not a common scaling of base frequency and spread. If a requested interval does not intersect the valid synthesis range at all, the script stops.
Output and level
| Property | Behavior |
|---|---|
| Input | No input Sound is required. |
| Duration | Exactly the requested Duration. |
| Sample rate | Exactly the rate selected on the Details page. |
| Channels | Always stereo, including Width = 0. |
| Fade-in | 20 ms maximum, capped at half the total Duration. |
| Fade-out | 50 ms maximum, capped at half the total Duration. |
| Silent realization | Possible for very short/low-rate settings; handled without attempting peak scaling. |
| Peak protection | In v0.6.1, if enabled and peak > .90, the complete stereo output is scaled down once to .90. |
| Normalization | No upward normalization. A non-silent output whose peak is already ≤ .90 keeps its generated level. |
| Output name | poisson_<preset name>. |
Visualization and QC
| Panel | What it shows |
|---|---|
| A — Poisson Clocks | Actual normalized waiting times λΔt for both processes. The horizontal guide at 1 marks the theoretical mean. |
| B — Random Grain Parameters | Each rendered grain's onset, centre frequency, duration, and amplitude: Y = frequency, horizontal segment = duration, marker size = amplitude. |
| C — Grain Kernel → Channel Sum → M/S Width | Representative realized left/right Hann-windowed grains together with the equations for summation and mid/side width processing. |
| D — Measured Output | Final left and right waveforms after width, fades, and optional down-only peak protection. This panel confirms the result rather than defining the stochastic model. |
The QC block reports target/realized event rates, IOI CV, stored grain means, rendered grain counts, stereo width, centre-frequency guard, sample rate, event counts, final peak/RMS, and whether peak protection changed the level.
Further reading
- Kingman, J. F. C. (1993). Poisson Processes. Oxford Studies in Probability 3. Oxford University Press. ISBN 978-0-19-853693-2. DOI: 10.1093/oso/9780198536932.001.0001.
- Xenakis, I. (1992). Formalized Music: Thought and Mathematics in Composition, revised edition. Pendragon Press. The book includes chapters on free and Markovian stochastic music and provides the direct compositional context for stochastic-process approaches to musical organization.