💬 Come talk about Slab in
#slabon The Fixpoint Discord.
A free music studio for Apple Silicon Macs, where every instrument and effect is a short file you can open and change.
Slab (the Slab Audio Workstation) is a complete place to make music: lay out a song, write parts in the piano roll, play twelve instruments through fifteen effects, automate anything, and mix it down to a WAV. It looks like a rack of 2000s studio hardware and runs like native code, because it is.
- Twelve instruments with a lineage. Each is modeled on the instrument
it's named after:
- Mog Passenger, after the Moog Prodigy and Messenger: three oscillators into a driven transistor ladder
- FM-7.11, after the Yamaha DX7: six operators and 32 algorithms;
it opens your own
.syxcartridges - Ju-Know, after the Juno: a DCO polysynth with its chorus
- Profit-5, after the Prophet-5, with POLY-MOD
- SM-24 Mono, after the MS-20 and its screaming filters
- Concoction, a wavetable synth that reads Serum tables, with a wavetable editor
- Unfairlight TMI, after the Fairlight CMI: any sample becomes 8-bit voice RAM, grit included
- DS-404, an 808/909-style drum machine
- Rhodes, a modeled electric piano
- Fretwire bass and guitar, physically modeled strings: fingers, pick, slap and pop, and pitch curves that bend or slide fret by fret
- Sampler, for WAV, FLAC, SFZ and folder kits
- Sixteen effects: EQ, graphic EQ, compressor, bus compressor, multiband, a character compressor, saturator, tape, chorus, delay, reverb, gate, limiter, an era (lo-fi) box, a funk overdrive and an amp with its cabinet for bass and guitar.
- Sounds that are yours to use. Factory presets, an FM bank designed from scratch, a sampled-voice bank for the Unfairlight, two pianos, string sections, trumpet and trombone, two sampled basses, an electric guitar, an alto sax and three drum kits. All CC0: use them in any music, no credit owed.
- A real studio around them. Arrangement with clips and folding groups, a piano roll with velocity, per-note pitch, pressure and slide, automation lanes you can record, buses, sends, sidechain, delay compensation, unison on any synth, undo, and export.
- Sound quality first. 64-bit audio from oscillator to master, filters oversampled where they distort, and renders that come out bit-identical however many cores they use.
- Light on your Mac. Concoction plays eight voices with everything switched on for 3.4% of one M1 Pro core.
- Change anything. Every instrument and effect is a text file in Slab's own language, fy. Open one, change the filter, save, and the next copy you load has the new filter, without restarting Slab and without a plugin SDK. Changing one while it plays is on the way.
- More sounds when you want them. Download the Versilian Community Sample Library (6 GB, free) or classic drum machine packs from inside the app, or bring your own Fairlight disks.
Slab is in beta. It needs a Mac with Apple Silicon (M1 or later) and macOS 13 or later.
brew install --cask nooga/tap/slabOr, without Homebrew:
curl -fsSL https://github.com/nooga/slab/releases/latest/download/install.sh | bashOr download the DMG from the latest release and drag Slab to Applications. Slab isn't notarized yet, so the first time you open the DMG version, allow it under System Settings > Privacy & Security > Open Anyway. The two commands above don't need that step.
Follow the composing walkthrough for an editable sketch with jazzy chords, an arp, GEQ, shared delay and a mix/stem export. The production guide covers arrangement and mixing, and the slabkit cheat sheet lists the Python helpers. See the production wishlist for proposed workflow improvements and how to evaluate them.
Slab is two programs in one. A host written in Zig owns everything that has to be solid: audio I/O, the transport and clock, the arrangement and piano roll, the mixer and routing, the UI, projects and undo. Everything that makes sound is a machine written in fy, a small concatenative language that lives in this repo.
- fy compiles to native code as it loads. A machine's audio path is
written as
dsp:words, which fy compiles straight to ARM64, with NEON for paired voices and stereo effects. There's no interpreter on the audio path and no garbage collector. - Code replacements are prepared before publication. fy supports word trampolines, but Slab's raw DSP callers embed compiled bodies and addresses. Active definitions stay sealed; new machine instances get prepared code. Preserving playing DSP state across source edits remains planned (docs/09-hot-reload.md).
- Audio uses prepared storage and owned versions. UI prepares controls, assets and machine configurations; audio adopts complete versions without waiting on UI/compiler locks. UI frees replaced resources after audio acknowledges adoption. Parallel callbacks still join admitted realtime workers before finishing; admission failure selects serial playback. See the safety contracts and regression evidence.
- A machine is a declaration over kernels. Its file lists parameters, panel layout and presets on top of shared kernels: oscillators, filters, envelopes, oversamplers. A panel is laid out declaratively and drawn by the host in the 1px-bevel house style.
- Tracks render in parallel, deterministically. Each track renders on a worker pool, and buses are summed in a fixed order, so a render is bit-identical at any thread count. A headless bench renders every machine against golden hashes on every change.
- Songs can be code too.
tools/slabkitis a Python library for writing songs as scripts, rendered offline withslab --render. The demos insongs/are made that way.
You need Zig 0.17 and raylib
(brew install raylib).
zig build run # build and run Slab
zig build test # the unit tests
zig build bench -- machines/fm86 # render a machine headless, with a reporttools/package_app.sh builds Slab.app (and --dmg, --zip);
tools/release.sh publishes a release and updates the Homebrew cask.
To go deeper, start with docs/README.md: the design docs are the plan, and code follows them. The fy language for machines is in docs/18-fy-dsp-language.md, and writing a machine in docs/02-machines.md.
Pull requests are welcome. Read CONTRIBUTING.md first; the CLA bot asks you to sign the Contributor License Agreement on your first one.
Slab is free software: GPL-3.0-or-later, with the Slab Machine Exception, which lets people share the machines, presets, projects and packs they make under terms of their choice. Factory presets, sounds and demos are CC0. The name "Slab", the wordmark and the icon are not licensed; a fork needs its own. COPYING.md has the details and NOTICE the third-party credits.

