Sixteen wavetable voices, and every one of them is cut from a live Metal shader — its own scan row through the frame, channel weighting, luminance curve. No samples, no analog models: the moving image is the kit, and changing it re-cuts all sixteen at once.
Drop in a .vkograph graph or a raw .metal VKO1 shader. FUJI renders it offscreen and each pad reads its own slice — a scan row through the image, a channel weighting, a luminance curve. No other drum machine builds its voices this way: the moving image is the kit, one signal for eye and ear. Move a pad's scan row an inch and it's a different drum.
// VKO1 Metal shaders & .vkograph graphs · full modifier chain preserved · re-cut lock-free on the audio thread
BODY crossfades any pad between the synth side and the one-shot side, so a pad can be a wavetable drum, a scanned one, or anything between.
One row becomes an 8-frame band-limited wavetable, played at pitch with a pitch envelope. Kicks, toms, zaps, 808s.
Many rows read end to end as one raw one-shot. Hats, noise, claps, crashes, glitch.
The image as a spectrogram — X time, Y frequency, brightness magnitude — resynthesised by inverse FFT. Cymbals, risers, reverse hits, textures.
Load a second image into shader B and every pad crossfades its own reading of A into its reading of B — in time, while the pattern runs. All 33 VKO1 palettes on board; recolouring the moving image re-grades every sound cut from it.
The starter pack ships 93 shaders, and the 92 factory kits between them use every single one — the same library VKO1 and MESA draw from. Want your own? Build it in the free VKO1 web editor — in a browser, no Metal to write — then export .metal or .vkograph and FUJI rewrites it into its native contract on import.
The step sequencer is clocked inside the audio render, not on a UI timer, so steps land on exact sample positions — and the same code follows a DAW's transport when FUJI is a plug-in. The pattern is global: swapping kits changes the sound, not the beat.
Arm REC and a stopped transport starts. Every pad hit — screen, keyboard or MIDI — is written to the pattern, snapped to the nearest step in the render block, at the velocity you played.
Tap + for a new slot, or ⧉ to duplicate the current one. Page dots to sixteen, a scroll strip beyond; swipe or tap to move between them.
Swipe mid-play and the grid changes at once, but the sound only switches when the current loop wraps — the bank never jumps mid-phrase. Stopped, it switches instantly.
// tap to draw, drag across steps to paint or erase · drag a lit step up/down for velocity · long-press for locks and 2 / 4 / 8 ratchet
Long-press a step to override morph, pitch, decay, tone, snap, drive, level or pan for that hit only. Lock MORPH and the step reads a different moment of the image — for free.
Split a step into 2, 4 or 8 individually-armed sub-slots — a roll or a flam inside one step, without a second row.
A step can fire less than always; a hat lane at ~80% stops sounding like a machine. Swing pushes the off-steps late.
Saved the moment you touch it — and keepable. The working bank autosaves, so a live take survives a relaunch. Name a bank and it becomes a file of its own, synced across your devices: build a beat in AUM on the iPad, save it, and it’s in the list on the Mac. ⌘S saves the kit and the bank together, because a beat is half of what you made.
A short series — loading a shader and cutting the sixteen voices, recording a pattern, layering a second image with BLEND, and more as the beta moves.
A Kaoss-style XY pad on the master bus, sitting between the sequencer and the pad controls because it takes the whole mix. One effect at a time, engaged only while you're touching it — a stab, not a setting. Off until you ask for it: disabled is a real bypass in the DSP, not a dry mix.
X sweeps a lowpass shut one way and a highpass up the other, wide open in the middle. Y is resonance.
X is the slice length, Y how much survives each repeat. Tempo-synced, so it lands on the grid the pattern is already playing.
X is sample-rate reduction, Y bit depth — the two halves of a crush, split so you can get gritty without going chiptune.
A trance gate that starts where you put it rather than wherever a free-running LFO happened to be. X rate, Y depth.
Ping-pong on tempo divisions. X time, Y feedback — and moving X mid-gesture pitches the tail the way a tape delay does.
A reverb throw. X opens the room, Y is how much of it you hear.
Played live, then drawn in. Every part of the pad is a real AU parameter — on/off, which effect, X, Y, and engage — so a live sweep records as automation in Logic or Live and plays back through the same path. All five are safe per block: nothing here re-cuts a shader. Learnable to a hardware XY or a footswitch, too.
// stutter, gate and delay divide the sequencer's own BPM · engage and release ride an 8ms ramp · HOLD latches an effect on so a hand stays free for the pads
FUJI is generative in two separate ways, and they're kept apart on purpose. One is a dice roll: a plain algorithm, on your device, always there, no model anywhere near it. The other is an AI agent you connect yourself — standalone app, Mac only, off until you switch it on. Neither is required to use FUJI, and nothing you make leaves your machine unless you send it.
One tap picks a shader, drops a VFX chain on it, sets a palette, and voices all sixteen pads by what each one is for — a kick rolled as a kick, deep and sub-heavy with a drop on the front; a hat as a hat. Then point it at a style and the whole roll lands inside that world.
It's a deterministic algorithm running on the device. No network, no account, no training data — just rules that know what a drum kit is, shaping a random seed. Freeze the pads you like and re-roll the rest; a panel in SETTINGS lists exactly what the dice may touch, so you can keep a kick and change everything around it.
// iOS + macOS · plug-in + standalone · works offline, always
The standalone Mac app can run a small local MCP server — the protocol coding agents like Claude Code speak. Connect one and it writes real Metal shaders, reads the compile errors, sees rendered previews, cuts the kit, sculpts each pad and programs the pattern. 40 tools; the full list is in the manual.
Off by default. You turn it on, you choose the client, you connect it. It binds to 127.0.0.1 only — unreachable from the network — and no audio or project data goes anywhere unless you send it. It isn't in the plug-in and it isn't on iOS: a sit-at-your-desk collaborator, not something running in the background of a set.
// standalone · macOS only · off until you enable it
A style isn't a preset — it doesn't set values, it sets the ranges every rolled value is drawn from. Two rolls of 90s Acid are two different kits that both sound like 90s acid. Nine of them, plus Anything for no constraint at all.
LinnDrum tightness, gated snare, tuned toms, chrome and neon.
808 sub under a 909 top — resonant squelch, crisp hats, delay not reverb.
Dusty 12-bit sampler swing — dark, crushed, soft edges, vinyl weight.
Long sliding 808, snapped rim, hats fast enough to ratchet.
Chopped breaks — bright, ringing, sampled texture, busy tops.
Hard 909 in concrete — driven, relentless, long metal tails.
Rolled-off and soft-edged — warm, swung, played not programmed.
Metal on metal — maximum drive and crush, nothing clean.
Barely a drum kit — long spectral tails, huge wash, no transients.
Nine tilts — brightness, weight, dirt, space, echo, snap, decay, pitch drama, and how far the kit sits toward the synth side or the picture side. Every pad reads all nine in its own way: weight makes the kick deep and long but only nudges a hat; space is a wash on the cymbals and a gated blast on the snare.
Each style prefers shaders that match its world — neon and grids for 80s Miami, sketchbooks and vinyl for Boom Bap, circuits and forges for Industrial — and carries its own VFX pool to mangle them with. Tempo and swing follow too.
The pattern dice plays the style's signature beat, not a probability field: four-on-the-floor with an offbeat open hat for acid, a gated backbeat for 80s Miami, an Amen-shaped break for jungle. Varied every roll — hits drop, ghosts appear — but the downbeat never does.
And it still surprises you. A signature covers the twelve drum pads only — ZAP, NOISE and the two FX pads are always left to the free roll, so even a canonical pattern has one thing in it you didn't ask for. Freeze the pads you want to keep and roll the rest.
AI is a switch, not a foundation. The instrument is whole without it — the dice, the 92 kits, the shader engine and the sequencer all run with no model in sight. The co-pilot is there for the days you want a second pair of hands, and it's the ordinary MCP any developer tool already speaks. Both ship in the same app because both are useful, and keeping them apart is the point: you never get the one you didn't ask for.
Because the co-pilot is Mac-only, the library has to travel. It does. Kits, your own shaders, loaded pad samples and the whole pattern bank live in one iCloud container that both the app and the plug-in read — on every device signed into the same Apple account.
// last-write-wins on a same-named kit edited two places at once · a device pulls on launch and whenever it comes back to the front · no iCloud, no problem — it all still works locally
A filtered noise burst with its own decay and tone. A wavetable has no transient of its own — without SNAP a snare is a pitched blip.
Cutoff, resonance, drive, and an envelope that sweeps the filter to the pad's TONE over F.DEC. Static filters are why untreated pads all sound alike.
Pads sharing a group cut each other and themselves — a closed hat stops its own tail on a fast roll.
Any pad can duck the mix. Set it on the kick and the whole kit breathes with it. One shared release for the feel.
Two send buses with their own returns — space on the snare, slap on the rim, dry everywhere else.
Film look, bloom, RGB split, datamosh, mask and more — each one bakes into what the pads extract, so adding an effect is a sound-design move.
Every wavetable frame is FFT'd at build time into a mip bank; playback picks the mip that keeps the top harmonic under Nyquist.
A kit is the shader(s), how all sixteen pads read them, and every voice setting. Export a .fujikit and your own shaders travel with it.
Right-click or long-press any control to bind a CC. Twenty controller presets; knobs follow the selected pad; transport, REC and pattern nav are learnable too.
Tempo and transport come from the host and the playhead is derived from its beat position, so locating lands on the right step. Every pad parameter is a real AU parameter — knob moves record as automation.
On-screen pads, computer-keyboard drumming laid over the grid, and any USB or Bluetooth MIDI controller.
Ableton Link shares tempo, beat and start/stop with every Link app and device on the network — and Link Audio streams FUJI's output to peers as well as its clock. Under Link, FUJI's own clock stands down; there's never a second one to drift against.
Tape, flutter, lo-fi, shape and chorus across the mix, plus the delay and reverb buses every pad’s sends actually feed — each with its own return. Saved with the kit, because a send is meaningless without its return.
Ninety-two factory kits in nine folders — house, hip-hop, trap, breaks, world, industrial, glitch, ambient — and between them they use every one of the 93 shaders. Two kits on the same shader read it in different places, so they aren't the same drums transposed.
Night indigo, or the warm paper of this page. Each previews itself in its own colours, and it can follow the device's Light/Dark setting instead — switching when the system does.
Kits and the pattern bank live in a shared container, so the standalone app and the plug-in see the same library — synced across your devices over your own iCloud.
Every app in the family speaks the same language — .vkograph graphs and .metal shaders. Patch a graph once, then play it as visuals, hear it as a wavetable synth, or cut sixteen drums out of it. One moving image. Three instruments.
Where it all started. Pad-based live visuals, AutoMix and 53 effects — plus the node editor that writes the .vkograph files the whole family reads.
A synth you can see. Mesa renders your shader offscreen and reads each frame's luminance as a single-cycle waveform — then paints every voice back as light.
Sixteen wavetable voices, each cut from its own scan row through a live shader. No samples, no models — swap the moving image and the whole kit re-cuts at once.
The full node graph on WebGL — patch generators, stack modifiers, feed it live audio. Nothing to install. Export a .vko graph and open it anywhere in the universe.