A loudspeaker drives air in a closed glass tube. Only frequencies f = n·c/2L make the air slosh strongly; between them the response is weak.
Vertical axis is log10 of the largest displacement in the tube divided by the speaker's displacement. Dashed marks: theoretical fn = n c / 2L.
The science
Speed of sound. c = 331.3 √(T/273.15) m/s (T in K), about 343.2 m/s at 20 °C.
Standing waves. Air displacement ξ(x,t) obeys the wave equation ξtt = c² ξxx. The speaker end is driven (ξ = A) and the far end is rigid (ξ = 0). The steady state is ξ(x) = A sin(k(L−x)) / sin(kL), k = ω/c. It blows up (limited only by losses) when sin kL = 0, i.e. fn = n c / 2L, n = 1, 2, 3 … The n-th mode has n−1 displacement nodes inside the tube, spaced λ/2 = c/2f.
Pressure vs displacement. Pressure is proportional to −∂ξ/∂x, so pressure antinodes (the blue crossings in the picture) sit at displacement nodes, while the gold rings mark displacement antinodes where the air moves most and the air is squeezed there. In Kundt's tube the fine dust is pushed by the acoustic radiation force to the displacement nodes, which is why it forms the evenly spaced piles the sim shows.
Losses. A loss factor η makes k complex, k = (ω/c)(1 − iη), so peaks have finite height ≈ 1/(nπη) and width ≈ 2η fn.
Check. A separate finite-difference time-domain solver (leapfrog, N = 300, CFL 0.9, damping γ) rings the tube with a pulse and a spectrum of the probe is searched for peaks, which are compared with n c / 2L.
Simplifications. One-dimensional plane waves only (no radial modes), no end correction, no nonlinear streaming, particle drift is a qualitative model of the radiation force (force ∝ amplitude²), displayed amplitude is saturated for readability and time is slowed to about 1.2 Hz. Educational, not a measurement tool. Models built with Blender, scene by Three.js.