Lamb–Oseen swirl
midi-sink’s founding rule bans Navier–Stokes solvers. Here Navier–Stokes enters anyway — as an exact solution. The Lamb–Oseen vortex is the closed-form decay of a 2-D line vortex in a viscous fluid, with tangential velocity . Integrated over the pass interval it becomes a rotation angle:
Invariants
Section titled “Invariants”- A pure rotation — exactly area-preserving and, like the Rankine, an exact map at any angle: no sub-stepping, ever.
- . Where the Rankine has its crease-ring kink at , Lamb–Oseen is smooth everywhere: solid-body rotation in the core blending viscously into the same far field. The soft, organic twist beside the Rankine’s mechanical one.
- Numerical guard. The expression is -shaped at small and cancels
in floating point; the shader evaluates it through
expm1, and below uses the limit directly. - Half-float freeze, accepted. In RGBA16F, sub-quantum per-pass displacements near the exact centre round away — protective, never inflating. Field measurements at read low, not high; this is not a bug to chase.
Ownership
Section titled “Ownership”- Polyphonic key pressure (0xA0) on the voice’s note → swirl, unconditionally, in either pressure mode. No reference hardware sends it; the tablets’ Play surface does — pull the finger back (Y down) and the note stirs.
- The Marble-mode pressure gesture (v0.6): a long press (Shift + right
drag with a mouse) lays a drop; pull back and
sumi_add_vortexwith the Lamb–Oseen profile stirs around it, the drop as its core — the same pass the voice mapper emits, with the host supplying Γ·Δt and r_c. - Channel pressure (0xD0) with
press_mode = 1→ swirl instead of the ink feed, so pressure-only hardware (ROLI, Osmose) can reach it. One consumer owns 0xD0. - The drop is the vortex core: = the voice’s current nominal boundary , so its own rings rotate near-rigidly and stay coherent while the far field stirs the neighbours. per pass ∝ smoothed amount × Δt (a delta rate, like every feed); the rotation sign defaults to the voice’s band parity, so adjacent notes counter-rotate with zero configuration. Swirl passes fan out to every echo and count against the frame budget like any feed.
Lineage
Section titled “Lineage”This is Aubrey Jaffer’s own extension of his closed-form family: The Lamb–Oseen Vortex and Paint Marbling (arXiv:1810.04646, 2018) derives the displacement pattern of a decaying Lamb–Oseen vortex for marbling. midi-sink arrived at the same operator independently, from the per-note pressure dimension looking for a stir; finding his paper afterwards was the project’s happiest discovery. The vortex itself is in Lamb’s Hydrodynamics — see the citations.
midi-sink 2.0.0-rc.5 · AGPL-3.0 · source
