Luke Miskelly

Taking projects for early 2027

Start a project

WorkSandsong

05Cymatics software and hardware · 2026 Sound on

Sandsong

Making sound visible.

A cymatics instrument for Mac and iPhone, and the hardware to feel it. Ten precise tone generators drive a physically modelled Chladni plate, so a million grains of sand find the shape of the sound. The plate below runs the same idea in your browser. Move over it, then turn the sound on.

Role
Product, audio DSP, GPU graphics, Apple platforms, embedded protocol and hardware design
Platforms
macOS, iOS, with Android and a hardware device to follow
Stack
C++17 · Swift · SwiftUI · Metal · AVAudioEngine · Bluetooth LE · ESP32-S3 · WebAssembly
Status
Running on Mac and the iOS Simulator; hardware in prototype
Chladni plate · live Mode 3 : 5 T+00:00.0 — Hz

Move across the plate to choose a mode.Sand gathers where the plate stays still.The pitch follows the mode, as it would on a real plate.

The ideaSound you can see and feel

Sprinkle sand on a metal plate and play a tone through it, and the sand jumps away from the parts that move and settles on the lines that stay still. Each frequency draws its own figure. Sandsong turns that into an instrument: ten tone generators, binaural and isochronic modes, smooth glides between notes, and your own music mixed underneath.

You can say “set a tone” to Siri, speak commands that are understood on the device, and send the whole thing to a TV with AirPlay or Chromecast.

Audio engineOne core, every platform

The sound comes from a shared C++17 engine with a plain C interface: a ten-voice bank, glide, binaural and isochronic modes, a look-ahead limiter and the voice-command grammar. On Apple devices it feeds AVAudioEngine directly. Android will call the same code, and the hardware runs it too.

Embedded chips have no double-precision maths, so the engine has a build option that swaps to a 32-bit fixed-point phase accumulator. That still gives a resolution of about 0.00001 Hz, a thousand times finer than the 0.01 Hz target. The tests cover precision, glide, the limiter and the protocol codec, and they run on any machine with a compiler.

GraphicsA plate that obeys physics

The visuals are Metal. The plate's shape is a sum of its vibration modes, and a compute pass moves a million grains across it every frame: grains bounce where the plate moves and come to rest on the nodal lines, exactly as real sand does. A second mode draws Faraday waves on water. HDR bloom and tone mapping finish it.

The plate at the top of this page is a small WebGL version of the same model: 65,000 grains on a GPU, a tone from Web Audio, and the pitch tied to the mode.

HardwareSoma: a body for the sound

Soma is the hardware family: an ESP32-S3 running the same engine, an I2S DAC and class-D amplifier, tactile transducers for felt bass, an exciter under a real Chladni plate, and a light ring. It talks to the app over a custom Bluetooth LE protocol with framing, authentication, clock sync and CRC checks. The codec is one allocation-free C file shared by the apps, the firmware and the website through WebAssembly.

The printable kit is generated from a single parametric script: every size is a named value, and the build refuses to export a part that is not one closed solid. You can turn the parts over below.

HonestyClaims it can stand behind

Frequency products are full of medical promises. Sandsong describes what a tone is associated with and keeps to relaxation, meditation and visualisation. The hardware plan leads with things you can actually feel, sound, vibration and light, rather than invisible fields.

Hardware · 3D

The Soma dev kit, in your hands.

Real printable parts from the parametric model. Drag to turn them over; pick a part to inspect it.

Loading parts…

What this means for your project