Bell Curve Envelope — User Guide
A dual-read time-colour transform shaped by a Gaussian-style bell envelope, with nine presets ranging from broad resonances to narrow bright or dark grains.
What this does
Bell Curve Envelope is not simply an amplitude-envelope generator. It first creates a new colour from two differently time-scaled reads of the pristine source, subtracts those reads, and only then shapes the result with a symmetric Gaussian-style envelope.
For a stationary tone, the first read tends toward approximately f/L while the second tends toward approximately H×f. Their subtraction therefore creates a time-scaling-derived spectral colour rather than a conventional low-pass/high-pass filter.
What is a bell curve?
A Gaussian or bell-shaped curve is a smooth symmetric function that reaches its maximum at a centre point and falls away on both sides. In this script the shape is borrowed as a time envelope:
Higher Bell_width values produce a narrower event because they make r smaller. Bell_center moves the maximum through the file from 0 (start) to 1 (end).
sigma, but mathematically it is the e-1 radius r, not the standard deviation σ of a normal-distribution PDF. The separate raised-cosine edge fade is also part of the final effective envelope.Quick start
- Select exactly one Sound.
- Run
Bell_curve_envelope.praat. - Choose a preset or Custom.
- Use Bell_width for narrow/wide shaping and Bell_center to place the event in time.
- Use the low/high factors for colour; values farther from 1 create stronger time-scaling contrast.
- Run and inspect the four-panel visualization.
Presets
| Preset | L | H | Bell width | Centre |
|---|---|---|---|---|
| Custom | 1.1 | 1.1 | 4 | 0.5 |
| Narrow Bell | 1.1 | 1.1 | 6 | 0.5 |
| Wide Bell | 1.1 | 1.1 | 2 | 0.5 |
| Low Freq Emphasis | 1.5 | 1.0 | 4 | 0.5 |
| High Freq Emphasis | 1.0 | 1.5 | 4 | 0.5 |
| Bright Grain | 1.0 | 1.3 | 8 | 0.5 |
| Dark Grain | 1.3 | 1.0 | 8 | 0.5 |
| Metallic Bell | 1.2 | 1.2 | 5 | 0.5 |
| Soft Resonance | 1.05 | 1.05 | 2.5 | 0.5 |
Controls
| Control | Default | Meaning |
|---|---|---|
| Low_freq_factor | 1.1 | Source read index round(col/L); a stationary tone tends toward roughly f/L. |
| High_freq_factor | 1.1 | Source read index round(col×H); a stationary tone tends toward roughly Hf. |
| Bell_width | 4 | Inverse width control: higher = narrower. |
| Bell_center | 0.5 | Normalized centre position, 0…1. |
| Edge_fade_ms | 5 ms | Raised-cosine closure at file edges and at any branch that reaches the source end early. |
| Scale_peak | 0.99 | Target peak applied to every non-silent result. |
| Draw_visualization | On | Draws read geometry, envelope, spectrum and final waveform. |
| Play_result | On | Plays the result. |
Dual-read colour transform
The two source reads are deliberately nearest-neighbour sample-index reads. They are not anti-aliased resamplers. This gives the tool a rougher, more digital colour and preserves the established sound of the processor.
- If
L < 1, the low branch can exhaust the source early. - If
H > 1, the high branch can exhaust the source early. - When a branch ends before the file, the script closes only that branch with the same short raised-cosine logic used at the file edges.
- If
L = H = 1, the two pristine reads cancel exactly and the output is silence.
Processing pipeline
- Copy the original Sound; all channel rows are processed with the same index law.
- Read the pristine source twice using
round(col/L)andround(col×H). - Subtract the second read from the first.
- Apply the Gaussian-style bell envelope.
- Apply short raised-cosine fades at the file edges.
- If the result is non-silent, target-normalize to
Scale_peak.
Channels and level
- Channel count: preserved; the Formula operates row-by-row.
- Duration: preserved.
- Sample rate: preserved.
- Randomness: none.
- Normalization: target peak, not a ceiling. Every non-silent output is scaled to
Scale_peak.
Output name: <source>_bell_<preset>.
Visualization
- A — Dual-read geometry: maps output time/sample position back to the two source-read positions.
- B — Effective bell envelope: Gaussian law plus actual raised-cosine edge closure.
- C — Measured spectrum: pristine source against the dual-read colour stage before the bell envelope.
- D — Measured waveform: source and final output on one shared amplitude scale.
Historical / compositional context
The familiar bell-shaped Gaussian curve comes from the history of probability and measurement error; it became strongly associated with Carl Friedrich Gauss, although earlier work by Abraham de Moivre also contributed to the normal distribution. In this tool that mathematical shape is repurposed as a compositional envelope, not as a statistical model.
Musically, the bell shape creates a bounded event with a clear centre and smooth shoulders. With wide settings it behaves like a long resonance; with narrow settings it approaches a grain-like gesture. The important compositional distinction is that the envelope shapes a pre-transformed dual-read colour, so timbre and amplitude evolve together.
Further reading
- NIST/SEMATECH e-Handbook of Statistical Methods — What do we mean by “Normal” data? — concise background on the Gaussian/normal bell curve and its historical naming.