Risset's Mutations — User Guide
A Risset-inspired timbre-mutation generator built from stochastically scheduled sine events, time-varying polynomial waveshaping, and independent amplitude and mutation envelopes. The result is a mono composition whose harmonic structure evolves inside each event while its fundamental frequency remains fixed.
What this does
The script generates a fixed number of overlapping sine-based events. Each event has its own onset, duration, fundamental frequency, mutation mode, and peak mutation depth.
stochastic scheduler → sine at fixed f0 → time-varying polynomial waveshaper → amplitude envelope → additive sum
The mutation is spectral, not a pitch bend. During an event, the fundamental remains at the scheduled f0; the waveshaper changes the relative strength of integer harmonics as the mutation envelope rises toward the midpoint and then falls back to zero.
No input Sound is required.
Quick start
- Run
Risset's_Mutations.praat. - Choose one of the four compositional presets.
- Set the overall Duration.
- Enable Edit details if you need to change Sample rate, Output peak, or Random seed.
- Run the script. The scheduler creates the event plan first, verifies spectral safety, then synthesizes and sums all events.
Event scheduler
Each preset uses a fixed number of events, but their detailed parameters are drawn uniformly within preset-specific ranges.
For every event the scheduler determines:
- start time;
- duration;
- fundamental frequency;
- mutation mode;
- peak mutation depth.
Duration first, onset second
Version 0.5 and later draw the event duration before choosing its onset. The onset is then restricted to the latest time at which that duration still fits entirely inside the master Sound.
This means events are not scheduled freely and then truncated at the end of the composition. Every scheduled event is intended to complete its full amplitude and mutation envelopes.
If the requested master Duration is shorter than a preset's nominal event-duration range, that range is compressed to what can fit after the section's minimum onset. The Info window reports how many event ranges were compressed.
Overlap
Events are scheduled independently inside their permitted regions, so overlap is allowed and is often substantial. All active voices are added into one mono master buffer.
Mutation modes
Every event begins from:
The instantaneous mutation amount m(t) crossfades between this sine and one polynomial waveshaper:
Mode 1 — odd polynomial
For a sine input, this produces only harmonics 1, 3, and 5. As mutation increases, the fundamental remains present while the third and fifth harmonics emerge.
Mode 2 — fundamental + second harmonic
The 2s² - 1 term is the second Chebyshev polynomial. For a sine source it contributes a second-harmonic component, so the event evolves between the fundamental and a fundamental-plus-second-harmonic spectrum.
Mode 3 — seventh-order Chebyshev
At full mutation, a sinusoidal source maps to the seventh harmonic, with phase determined by the sine/Chebyshev identity. During the crossfade, the fundamental decreases as the seventh-harmonic component grows.
Event envelopes
Each event uses two independent local-time envelopes.
Mutation envelope
It begins at zero, reaches the event's scheduled peak mutation depth at the midpoint, and returns to zero at the end. The sound therefore starts from the sine source, reaches its strongest waveshaping near the center, and returns to the sine source before closing.
Amplitude envelope
This also begins and ends at zero and peaks at the event midpoint. The final event signal is the waveshaped voice multiplied by this amplitude envelope.
Temporary voice and envelope Sounds span the full master duration and are explicitly zero outside the event. This keeps array indexing and summation aligned across all voices.
Presets
| Preset | Events | Scheduler | Frequency / mode / mutation |
|---|---|---|---|
| Full Composition (3-Part Arc) | 14 | Events 1–4 begin in 0–30%; 5–10 in 30–70%; 11–14 in 60–90% of master duration. | Part 1: 110–330 Hz, Mode 1, pk .3–.6, D 8–14 s. Part 2: 220–880 Hz, Mode 2, pk .7–1.0, D 4–8 s. Part 3: 110–440 Hz, Mode 3, pk .2–.5, D 6–10 s. |
| Odd Harmonics (Woody/Hollow) | 8 | Starts within first 60% of the master duration. | 55–275 Hz; Mode 1 only; pk .2–.7; nominal D 10–15 s. |
| High Order (Glassy/Chime) | 12 | Starts within first 80%. | 440–1100 Hz; Mode 3 only; pk .3–.8; nominal D 4–9 s. |
| Density (Brassy/Chaos) | 25 | Starts within first 85%. | 110–1320 Hz; Mode 2 only; pk .6–1.0; nominal D 1.5–4 s. |
Short master durations can compress the nominal duration ranges, but events are still scheduled so that their realized duration fits entirely inside the output.
Controls and safety
Main page
| Control | Default | Behavior |
|---|---|---|
| Preset | Full Composition | Selects one of the four fixed event architectures. |
| Duration | 30 s | Final Sound duration and scheduler time span. |
| Edit details | off | Opens Sample rate, Output peak, and Random seed. |
| Draw visualization | on | Draws the score-led mechanism/QC display. |
| Play result | on | Plays the final Sound after synthesis. |
Details page
| Control | Default | Behavior |
|---|---|---|
| Sample rate | 44100 Hz | Direct synthesis and final output rate; minimum accepted value is 1000 Hz. |
| Output peak | .95 | Target peak normalization; valid range >0…1. |
| Random seed | 0 | 0 = unpredictable scheduling; positive = reproducible event plan. |
Nyquist guard
The scheduler computes the highest partial actually produced by each mode:
After all events have been scheduled, the highest generated partial must remain below 95% of Nyquist. The script stops rather than rescaling the composition if this condition is violated.
Randomness and reproducibility
Start times, durations, frequencies, and peak mutation depths are drawn from uniform distributions inside the preset-defined ranges.
With Random seed = 0, each run uses Praat's unpredictable random state. With a positive seed, the same settings reproduce the same scheduler realization.
After scheduling with a fixed seed, the script restores Praat's global RNG to unpredictable mode.
Output and level
| Property | Behavior |
|---|---|
| Input | No input Sound required. |
| Channels | Mono. |
| Duration | Exactly the requested master Duration. |
| Sample rate | Exactly the Details-page sample rate. |
| Event overlap | Allowed; overlapping voices sum additively. |
| End truncation | None for scheduled events; durations are chosen before onset so each event fits. |
| Normalization | Every non-silent result is peak-scaled once to Output peak. This is target normalization, not an attenuate-only ceiling. |
| Object name | risset_mutations_<preset>. |
Visualization and QC
The current visualization is deliberately score-led: the large upper panel preserves a compositional overview while distinguishing symbolic notation from acoustically literal information.
A — Mutation score
Every scheduled event keeps its actual onset, duration, and fundamental frequency on a logarithmic frequency axis.
- Curved arch: an expressive mutation gesture whose vertical excursion follows mutation depth. It is explicitly not a pitch trajectory.
- Horizontal harmonic traces: the actual integer-frequency components created by the selected polynomial mode.
- Trace weight: follows the square root of the instantaneous partial magnitude so weak harmonics remain visible.
- Color: follows event onset from early to late in the composition.
For Full Composition, subtle background regions retain the three-part formal segmentation.
B — Representative event and spectral validation
The representative event is the scheduled event with the greatest peak mutation depth.
The left mini-panel draws its analytical amplitude and mutation envelopes. The right mini-panel compares the exact predicted harmonic magnitudes with a measured Praat spectral probe.
The probe freezes the mutation at the representative event's peak value, synthesizes 32 cycles, applies a Hann window, converts the result to Spectrum/LTAS, and samples harmonics 1–7. The displayed spectral MAE is the mean absolute difference between normalized analytical and measured magnitudes.
h × f0 lies below Nyquist. Out-of-range bins receive measured magnitude 0, preventing undefined LTAS values from contaminating the MAE or drawing.
QC summary
The lower QC grid reports event count and duration range, fundamental range, mode counts, mean/max mutation depth, highest scheduled partial versus Nyquist, final peak/RMS, and spectral MAE.
Historical context
Jean-Claude Risset (1938–2016) was one of the central early figures in digital sound synthesis. During the 1960s he worked at Bell Laboratories in New Jersey in the environment created by Max Mathews and John Pierce, combining research in acoustics and perception with computer-generated music.
His 1969 An Introductory Catalogue of Computer Synthesized Sounds documented computer synthesis examples together with the MUSIC V data needed to reproduce and study them. The catalogue includes instrument-like synthesis, nonlinear sound generation, controlled harmonic structures, bells and percussion, glissandi, and auditory paradoxes. Risset's electroacoustic work Mutations was also composed in 1969 and was commissioned by GRM.
A recurring feature of Risset's work was the idea that composition could operate directly on the internal structure of sound: spectral components, envelopes, synthesis rules, and perceptual effects were treated as compositional material rather than as fixed timbre attached to notes.
Further reading
- Risset, J.-C. (1969). An Introductory Catalogue of Computer Synthesized Sounds. Bell Telephone Laboratories, Murray Hill, New Jersey. Reissued with The Historical CD of Digital Sound Synthesis, Wergo, 1995.
- Risset, J.-C. (1985). “Computer Music Experiments 1964–….” Computer Music Journal, 9(1), 11–18. MIT Press. Stable JSTOR record: 4617918.
- IRCAM, Jean-Claude Risset — Biography / Work Course. Useful contextual documentation of Risset's Bell Labs work, digital synthesis research, and the 1969 composition Mutations.