Skip to content

Arnol'd lock

Lineage. The twist is the Lamb–Oseen swirl of the swirl page — Professor Jaffer’s extension of the comb to the vortex, whose rotation by a function of the radius alone is exact at any angle. The kick is a canonical transformation written from a generating function, the form the Chirikov map and the spark shear already use; the picture it draws is Arnol’d’s: the tongues of the circle map, where a driven rotation locks to a rational winding number and islands stand still in the stroboscopic frame.

What it does. Under Kessho a pressed note no longer feeds or stirs: it locks to the bass. The lowest held note is the reference; for every other voice the engine reads the interval f/fbassf/f_{\text{bass}} (the bend included) and takes its fractional part Ω0\Omega_0 — a fifth 3:23{:}2 gives 1/21/2, a major third 5:45{:}4 gives 1/41/4 — and each frame applies one iteration of M=T∘KickM = T \circ \text{Kick} about the voice’s drop, in the action-angle frame ρ=r2/2\rho = r^2/2, θ\theta:

ρ1=ρ+K W(ρ1)sin⁡q(θ−φ),θ1=θ+Kq W′(ρ1)cos⁡q(θ−φ),\rho_1 = \rho + K\,W(\rho_1)\sin q(\theta - \varphi), \qquad \theta_1 = \theta + \tfrac{K}{q}\,W'(\rho_1)\cos q(\theta - \varphi),

the kick from the generating function F2=θρ1+KqW(ρ1)cos⁡q(θ−φ)F_2 = \theta\rho_1 + \tfrac{K}{q}W(\rho_1)\cos q(\theta-\varphi) (a canonical transformation: det⁡J=1\det J = 1), followed by the twist TT — the Lamb–Oseen rotation with its core at the ring, scaled so the ring turns exactly Ω0\Omega_0 turns per frame and windowed to zero by two and a half radii. qq is the tongue’s denominator: the nearest continued-fraction convergent p/qp/q of Ω0\Omega_0 with 2≤q≤62 \le q \le 6 inside its tongue ∣Ω0−p/q∣<1/(2q2)|\Omega_0 - p/q| < 1/(2q^2), else six; an integer ratio is q=1q = 1, a full turn. The press is KK, as a fraction of Kmax⁡=0.8/max⁡∣W′∣K_{\max} = 0.8/\max|W'| — the bound that keeps the kick a bijection. The window WW is one across the ring and falls to zero by 1.5 ρdrop1.5\,\rho_{\text{drop}} and at the centre.

The lookup is one Newton. The shader needs M−1M^{-1}: undo the twist (a rotation keeps rr, so ρ1\rho_1 is the texel’s own), then solve θ\theta from θ1\theta_1 — one scalar Newton, five iterations — and take ρ\rho explicitly. The inverse pass (the soak’s pairs) looks MM up instead: one Newton on ρ1\rho_1. Exact, never sub-stepped.

Locked and beating. At an exact ratio the qq islands stand still frame after frame — the ink inside them librates, the islands do not move. Off the ratio by δ=Ω0−p/q\delta = \Omega_0 - p/q the kick’s frame precesses by 2πδ2\pi\delta a frame and the pattern turns with it: the beat, in bass periods per frame. A MIDI fifth is equal temperament’s 27/122^{7/12}, two cents under 3:23{:}2, and its two islands make one slow turn in six hundred frames; a tempered major third, fourteen cents over 5:45{:}4, turns six times faster — the temperament’s beats drawn on the water. Bend the fifth ten cents sharp and the islands turn at δ=0.0070\delta = 0.0070 turns a frame. Crossing a tongue boundary (a bend from the fifth down to the third) crossfades KK through zero over fifty milliseconds and switches qq at the zero, so the petals never pop.

The bass stirs. The reference voice has no interval to lock to; under the lock its press is the swirl, as before — a solo note under pressure still stirs.

Live, under Kessho: the bass at the lower left and a tempered fifth above it, pressed — its drop locks to the bass, and the two islands of q = 2 turn once in six hundred frames, the temperament's two cents drawn on the water. c = +2 is the just fifth: they stand still. i = 4 with c = −14 is the just major third, four petals; i = 4 at 0 beats six times faster. ◇ picks the mineral.open full size ↗
  • Channel pressure under Kessho’s default table (press_mode 3; the Arnol’d tongue lock choice in the settings): the press is the kick, the pitch against the bass the twist. The Arnol’d K control (CC) is the alternative, the larger of the two driving.
  • Gesture route: sumi_add_arnold(x, y, radius, winding_omega, k, q, twist) — one iteration, with the twist switchable off (the bench’s red control: without it the kick alone makes no islands, the ink collecting on the kick’s nodal lines).

--arnold-test: the pass against its closed form and its exact inverse, the 3:23{:}2 and 5:45{:}4 islands standing over six hundred iterations, the tempered fifth’s beat and the ten-cent precession, the twist’s red, the tongue crossing’s flicker; --soak arnold the four-part gate (the pairs through the inverse pass); --arnold-render <dir> the locked and the beating renders in Sumi and Kessho.

midi-sink 2.0.0 · AGPL-3.0 · source