Downloads
Desktop
macOS · Apple silicon
macOS 14 Sonoma or later · M1 or newer
NoiseTable-0.5.1-arm64.dmg v0.5.1 · published 2026-10-15
Download 33 MB
Signed and notarized by Apple, so it opens without a Gatekeeper warning. Drag it to Applications.
- sha256
9bd6de5d10b5470e3607c179e2a86e269a60d452119426fe85626b4fd2df3aad
macOS · Intel
macOS 14 Sonoma or later · Intel Macs · built best-effort, so it can trail the Apple silicon release
NoiseTable-0.4.1-x86_64.dmg v0.4.1 · published 2026-09-15
Download 17 MB
Signed and notarized by Apple, so it opens without a Gatekeeper warning. Drag it to Applications.
- sha256
595bc1740c3ee27094ae775c679e746bf4029859fc5e72876cdc88185110e8ba
Linux
x86-64 · glibc 2.31 or later
Not published yet — there is no build for this platform on the CDN today.
Windows
Windows 11 · x86-64
Coming soon. Not built yet.
Plugin
No Audio Unit, so this does not load in Logic. VST3 covers Live, Bitwig, Reaper, Cubase and Studio One. If Logic is your host, the desktop app above is the way to run Noise Table today.
VST3 · macOS
macOS 14 Sonoma or later · one universal bundle, so it loads in both Apple silicon and Intel hosts
Not published yet — there is no plugin build on the CDN today.
CLAP · macOS
macOS 14 Sonoma or later
Coming soon. Built, not shipped. The same build emits a .clap from the same code, but pluginval is JUCE-based and finds no plugin types in one — publishing it would mean shipping an artifact with no validation behind it. It goes out when it has a validator.
VST3 · Windows
Windows 11 · x86-64
Coming soon. Not built yet. The editor embeds an NSView and refuses every other parent window, so a Windows plugin needs a native win32 view layer first — that is a port, not a packaging step.
Phone & tablet
iPhone & iPad
App Store · iOS 17 or later
Not published yet. The app builds and runs on device; what is missing is a store listing, not the port.
Android
Google Play · Android 11 or later
Not published yet.
audio output
A patch plays through your sound card on desktop, through the host inside a VST3 plugin, and through ALSA on the headless node.
Tested on macOS, Linux desktop, the VST3 plugin and the headless node; Windows, iOS and Android builds have not been checked yet, and the browser uses its own path.
Runs on:
- Desktop (macOS, Linux, Windows)
- macOS native shell (AppKit)
- VST3 DAW plugin
- Raspberry Pi / ARM64 Linux SoC (headless audio node)
patch
A patch is text and a graph at once: drag a wire between two chips and the Koda text changes to match, and the other way round.
Only the desktop build is checked; the browser draws the graph but dragging is untested, and the graph cannot yet be edited on a phone or inside the VST3 plugin.
Runs on:
- Desktop (macOS, Linux, Windows)
- Web (WASM + WebAudio) (partial)
code editor
The code editor shows the Koda text of the patch you are hearing, and the patch rebuilds from it as you edit.
Checked on desktop only; in the browser it draws but some keyboard input is missing, and the phone builds have not been tested.
Runs on:
- Desktop (macOS, Linux, Windows)
- Web (WASM + WebAudio) (partial)
headless node
The headless node runs a patch on a 64-bit ARM Linux board with no screen, and joins other copies over the network.
Built for 64-bit ARM only. The static musl build takes the sound card for itself, so on a machine already running PipeWire or PulseAudio it does not share the card; and the node has no screen, so it is set up and played from another device.
Runs on:
- Raspberry Pi / ARM64 Linux SoC (headless audio node)
appliance image
The appliance image is an SD card image for a small board that boots straight into the headless node.
Two boards so far, the Orange Pi Zero 2W and the Raspberry Pi Zero 2 W, and not every board has a published image yet. Setting up a new board from a laptop over Bluetooth is built but has not been tried on a real board, so the card file is the way in for now.
Runs on:
- Raspberry Pi / ARM64 Linux SoC (headless audio node) (partial)
Embedded
Headless node — glibc
aarch64-unknown-linux-gnu· 64-bit ARM Linux with glibc. The binary the appliance image runs.Not published yet — there is no build for this target on the CDN today.
Headless node — static musl
aarch64-unknown-linux-musl· 64-bit ARM Linux, any distro; statically linked. Read README-musl.md in the archive first.Not published yet — there is no build for this target on the CDN today.
Orange Pi Zero 2W
Allwinner H618, quad-core Cortex-A53 — not Raspberry Pi hardware.
noisetable-orangepi_zero2w-v0.4.0.img.xz v0.4.0 · published 2026-09-15
Download 91 MB · 2.8 GB written to the card
The card must hold 2.8 GB; the download is the xz-compressed image and every tool below expands it as it writes.
- sha256
738a5b7dbbd415daeb4d99af6b23c1cf9d239844c3f753ca765a38dd0c925464- built from
641d5c6d98418a4e57ff10ab2a25d31237d765af
Raspberry Pi Zero 2 W
Broadcom BCM2710A1, quad-core Cortex-A53.
Not published yet — there is no image for this board on the CDN today. Everything below still applies to it once there is.
Checking an appliance image
The sha256 above is over the compressed .img.xz exactly as you downloaded it — not over the decompressed image. The compressed object is the thing that actually travels, so it is the thing worth naming. Hash the file you have, before expanding it:
shasum -a 256 <file>On Linux that is sha256sum <file>. If the digits do not match the row above, the download is incomplete — fetch it again rather than writing it.
Writing it to a card
Three ways, all equivalent. All three decompress the .xz as they write, so there is nothing to expand by hand.
1. Balena Etcher
Choose Flash from URL and paste the download link above. Etcher streams and decompresses, so you never store the expanded image. It runs on macOS, Windows and Linux.
2. Raspberry Pi Imager
Choose Use custom and point it at the downloaded .img.xz, or at the URL. It also decompresses in the stream.
Do not use its OS-customisation panel with these images. That panel writes Raspberry Pi OS artifacts — firstrun.sh, userconf.txt, wpa_supplicant.conf, and edits to cmdline.txt — and knows nothing about our noise-machine.conf. Nothing you type into it carries: the hostname, the Wi-Fi credentials and the SSH key are all silently dropped, and the panel is the one feature you would have reached for it for. Put the hostname and Wi-Fi network in noise-machine.conf instead — see below. The Orange Pi is not Raspberry Pi hardware; Imager will still write its card, but nothing Pi-specific in it applies.
3. Command line
curl <url> | xzcat | sudo dd of=/dev/rdiskN bs=4mCheck rdiskN before you press return. dd writes wherever you point it and will overwrite an internal disk as happily as a card. On macOS run diskutil list, find the card by its size, and use the raw device (/dev/rdisk4, not /dev/disk4 — the raw node is far faster). On Linux the device is /dev/sdX or /dev/mmcblk0, found with lsblk, and bs=4M is spelled with a capital M.
Appliance first boot
Write the image, put it in the board, and power it on. A laptop or tablet running Noise Table is meant to find a new board over Bluetooth and set its network, name and owner, with no shell and no keyboard on the board. That path is built but has not been tried on a real board yet, so for now set the network with the card file below.
A noise-machine.conf on the card's FAT partition sets the Wi-Fi network and the board's name before first boot, and the same file sets up a rack of boards from a script. It is plain text on a plain filesystem, so anything you put in it is readable by anyone holding the card.
Libraries
noise-table
The engine as an npm package — the WASM build of app/browser-lib, with the worklet, the TypeScript types and an optional React binding.
Not published yet. The package builds and the publish card exists; it has only ever been run as a rehearsal.
Engine bundle (CDN)
The same WASM engine served as static files, for a page that would rather script-tag it than take a build step.
https://cdn.noisetable.com/engine/0.5.1/noise_table.js