Chirikov Standard Map Sonification — User Guide

A deterministic sonification of the Chirikov Standard Map: a classic kicked-rotor model whose orbit moves between regular islands, mixed phase space, and chaotic momentum transport. The map is calculated at a control rate, then converted into carrier amplitude or instantaneous frequency at the audio sample rate.

Author: Shai Cohen Affiliation: Department of Music, Bar-Ilan University, Israel Version: 0.4.3 (2026) License: MIT License Category: Generative & Synthesis
Contents:

What this is

Chirikov Standard Map Sonification is an internal sound generator: it does not process an input Sound. It repeatedly evaluates a two-variable nonlinear map, records the resulting orbit, and uses that orbit as a control signal for synthesis.

In plain language: imagine a rotor that is allowed to turn freely, but once per step it receives a kick. The strength and direction of the kick depend on the rotor's current angle. After each kick the rotor moves to a new angle, receives another kick, and so on. A very simple update rule can therefore produce either smooth regular motion or complicated chaotic motion. The script makes those evolving states audible.

The important point is that the Standard Map is not itself an audio waveform. It is a rule for moving from one state (theta, p) to the next. The script first creates the trajectory at Control_rate_Hz, then translates that trajectory into amplitude or frequency control and resamples the control to the requested audio sample rate.

What is the Chirikov Standard Map?

The Chirikov Standard Map, also called the standard map or kicked-rotor map, is a discrete-time, area-preserving dynamical system. It is widely used as a compact model of the transition from regular Hamiltonian motion to chaos.

p[n+1] = p[n] + K * sin(theta[n]) theta[n+1] = theta[n] + p[n+1] (mod 2*pi)

What the two variables mean

VariableIntuitive meaningBehavior in this script
thetaAngular position of the rotor.Wrapped into 0..2*pi after every iteration.
pMomentum: how strongly the rotor keeps moving between kicks.Kept unwrapped in the actual dynamics, so long-term momentum transport and drift are preserved.
KKick strength / nonlinearity.Controls how strongly the present angle changes the next momentum.

One iteration

1. Look at the current angle theta. 2. Kick the momentum: p <- p + K*sin(theta). 3. Advance the angle using the new momentum: theta <- theta + p. 4. Wrap theta around the circle. 5. Repeat.

When K = 0, momentum never changes and the system is integrable: the angle simply advances at a constant rate. As K increases, resonances deform the phase space. Regular invariant curves and stable islands can coexist with chaotic regions. At sufficiently strong perturbation, chaotic trajectories can move through increasingly large momentum ranges.

K is not a universal “chaos on/off” knob. The often-cited value Kc ≈ 0.971635406 is specifically the breakup threshold of the last golden-mean spanning KAM invariant curve in the standard convention used here. Chaotic resonant regions can exist below that value, and stable islands can survive above it. Crossing Kc makes global momentum transport possible; it does not make every initial condition chaotic.

Cylinder dynamics versus the phase portrait

The actual map is evolved on a cylinder: theta is periodic, but p remains unbounded. For Panel A only, the script additionally projects p modulo 2*pi into approximately -pi..pi. That projection produces the familiar torus-style phase portrait without changing the orbit used for the sound.

How the map becomes sound

The map is iterated at Control_rate_Hz. The resulting theta and p trajectories are transformed into a control signal, sinc-resampled to Sample_rate_Hz, and then applied to an audio-rate carrier.

Standard-map orbit at control rate -> theta / p mapping -> sinc resampling to audio rate -> carrier AM or audio-rate phase integration -> edge fade -> optional target-peak normalization
Mapping modeActual implementationWhat you hear
Theta to AmplitudeA = 0.5*(1 + cos(theta)), then A * sin(2*pi*f0*t).The angular orbit becomes a unipolar amplitude envelope on a fixed carrier.
P to AmplitudeA = 0.5*(1 + sin(p)), then the same fixed carrier.Unwrapped momentum is folded through sine into a bounded AM envelope.
Theta to Frequency (FM)f = f0 + theta/(2*pi)*range; instantaneous frequency is resampled, then phase is accumulated sample by sample at the audio rate.The wrapped angular state directly sets oscillator frequency. This is continuous phase integration, not resampling of a pre-built phase signal.
Theta+P StereoLeft = theta-derived AM carrier; Right = p-derived AM carrier.Two simultaneous views of the same map orbit. It is not post-hoc stereo widening and does not run two independent maps.

Control rate is part of the composition

Control_rate_Hz is not an audio-quality setting. It sets how many Standard Map iterations occur per second of output. At 2000 Hz, a 5-second sound contains about 10,000 map iterations; at 500 Hz, the same dynamical sequence unfolds four times more slowly in musical time. The Deep Chaos Drone preset deliberately lowers the control rate to 500 Hz for this reason.

Frequency safety

The script uses 0.45 * Sample_rate_Hz as a practical upper boundary. In FM mode it reduces the requested base/range if needed. In AM modes it also reserves headroom for control-sideband bandwidth rather than checking the carrier alone.

Quick start

  1. Run ChirikovStandardMap.praat; no input Sound is required.
  2. Choose a preset. Periodic Island, Near KAM Threshold, and Strong Chaos are useful for hearing very different orbit structures.
  3. Keep Draw_visualization enabled while learning the instrument: Panel A shows the actual map orbit that generated the control.
  4. Compare Theta to Amplitude with Theta to Frequency. They sonify the same kind of state variable but produce very different acoustic results.
  5. For Custom settings, change K and the initial condition separately. A different K changes the dynamical law; a different starting point explores a different orbit under that law.

Presets

Presets override only the fields listed below. Unless stated otherwise, they retain the current Duration, Sample rate, Control rate, Frequency range, Edge fade, Normalize, Draw visualization, and Play settings.

PresetMap stateMappingPurpose
Periodic IslandK 0.5; theta0 = pi+0.30; p0 = 0Theta -> AM; 220 Hz carrierStarts inside the primary stable island near the elliptic fixed-point region.
Near KAM ThresholdK 0.971635406; theta0 0.50; p0 = 2*pi*golden meanTheta -> FM; 220 Hz + 660 Hz rangePlaces the system near the golden-mean spanning-torus breakup regime.
Partial ChaosK 1.5; theta0 0.5; p0 0Theta -> AM; 220 HzMixed phase-space regime above Kc.
Strong ChaosK 5.0; theta0 0.1; p0 0.1P -> AM; 180 HzStrong momentum diffusion while allowing the possibility of surviving islands elsewhere in phase space.
Frequency ShimmerK 2.5; theta0 1.57; p0 0Theta -> FM; 440 Hz + 1760 Hz rangeExposes angular dynamics as a wide instantaneous-frequency trajectory.
Stereo ChaosK 3.0; theta0 0.8; p0 0.3Theta/P -> stereo AM; 220 HzCompares theta and p mappings simultaneously in left and right channels.
Deep Chaos Drone10 s; K 4.0; theta0 0.1; p0 0.2; control rate 500 HzTheta -> FM; 55 Hz + 110 Hz rangeSlows the map's iteration-to-audio-time conversion for a lower, slower-moving texture.

Parameters

ParameterDefaultWhat it actually controls
Duration_s5.0 sOutput duration. Together with Control rate, determines the number of map iterations.
Sample_rate_Hz44100Audio sampling rate; accepted range 8000–192000 Hz.
Control_rate_Hz2000Map iterations per output second; accepted range 20–20000 Hz. Duration * Control rate is limited to 2,000,000 iterations.
Initial_theta0.5Initial angular coordinate. It is canonicalized modulo 2*pi before the first map step.
Initial_p0.0Initial momentum. It is not wrapped in the dynamics.
K_parameter1.5Kick strength, 0–50. K=0 is the integrable limit.
Mapping_modeTheta to AmplitudeSelects how the orbit controls the carrier.
Base_frequency_Hz220Carrier frequency for AM/stereo modes; lower edge of the instantaneous-frequency range in FM mode.
Frequency_range_Hz880Used only by Theta -> FM.
Edge_fade_s0.02Linear fade at both output edges, capped at 20% of total duration.
Normalize_outputYesIf the output is nonzero, applies target peak normalization to 0.90.
Draw_visualizationYesDraws the map/control/audio diagnostic figure.
Play_resultYesPlays the generated Sound after processing.

Visualization and QC

The figure separates the mathematical model, the actual sonification control, and the measured audio.

Panel A — Actual Standard-Map orbit

The left plot shows the actual theta trajectory against a display-only p mod 2*pi projection. The connected line is colored by iteration, and line segments are not drawn across torus wrap boundaries. The diagnostics box reports K, the finite-time maximal Lyapunov estimate, unwrapped p span, net p drift, initial state, and the current mapping.

FTLE is an orbit diagnostic, not a label inferred from K. The script propagates a tangent vector through the same finite orbit and reports the mean logarithmic stretching per iteration. A positive finite-time value indicates local exponential separation over the analyzed orbit, but finite-time estimates depend on orbit length and initial condition.

Panel B — Actual sonification control

This is the sinc-resampled signal that actually drives synthesis: a theta-derived or p-derived AM envelope, the instantaneous-frequency trajectory, or both stereo envelopes.

Panel C — Model to measurement

A measured Gaussian spectrogram of the rendered output. FM mode overlays the actual instantaneous-frequency control; AM modes show the fixed carrier as the model guide. In stereo mode, the spectrogram uses whichever output channel has the greater whole-file RMS, avoiding mono fold-down cancellation.

Panel D — Measured output

The waveform of the same representative channel, shown with a symmetric amplitude range derived from its measured peak.

Determinism and output

The synthesis is deterministic. There is no musical random seed and no random perturbation of the map: the same settings produce the same map trajectory and the same audio. A temporary random integer is used only to create collision-resistant helper-object names and does not enter the sound equations.

The result remains in Praat as chirikov_<preset>. All modes are mono except Theta+P Stereo, which produces two channels. The final processing order is:

map trajectory -> mapped control -> audio synthesis -> linear edge fade -> optional Scale peak 0.90

Why this is useful musically

The instrument gives a direct way to compose with the geometry of a nonlinear dynamical system. Changing K changes the map itself; changing Initial_theta / Initial_p selects a different trajectory within that map; changing Control_rate_Hz changes how quickly map iterations unfold in musical time; and changing the Mapping mode decides which aspect of that trajectory becomes audible.

This makes the script especially useful when the goal is not simply “chaotic sound,” but an interpretable relationship between a known dynamical process, its phase-space behavior, and the resulting audio.