Orca gamepad control sounds like it shouldn't work. Orca is a tiny esoteric livecoding language from Hundred Rabbits — a 2D grid of glyphs that emit MIDI, OSC, and UDP based on where the cursor is and what's next to what. It's built for a keyboard. But the cursor is just a position, the bang is just a character, and the numerals 0–9 sweep operator rates. Map those three jobs onto a DualSense d-pad, the X button, and the sticks, and the whole language collapses into thumb-grade muscle memory. This guide gets you there.
- What you build: a gamepad-driven Orca rig — d-pad steers the cursor, face buttons drop/clear glyphs, sticks sweep numerals.
- What you need: Orca (from Hundred Rabbits), Universal Controller MIDI, any synth Orca can play through.
- Why it slaps: livecode with one hand, hold a beer with the other.
- Time: 15 minutes once Orca's open.
What Orca actually does
Orca is a 2D programming environment where each letter is an operator. D fires on every Nth frame, R emits a random value, : sends MIDI. Cells affect their neighbours. A * "bangs" — fires the cell once. The state of the world is whatever's currently typed into the grid. You program by moving a single cursor around and dropping letters. There is no save dialog. There is no undo in the way you'd expect. There is only the grid and where the cursor is right now.
That last bit is what makes a gamepad such a good fit. Orca needs a cursor, a clear, a bang, and a way to drop glyphs. A gamepad has exactly the right vocabulary for that.
Bridge setup — Orca shortcut mode
Open Universal Controller MIDI and switch to the Orca preset in the bridge's app-specific page. This mode emits OS-level keystrokes instead of MIDI for cursor and editing controls — Orca only listens to the keyboard for editing, so the bridge has to pretend to be one. The MIDI side stays clean for Orca's own MIDI output.
# Bridge → Settings → App preset
preset = "orca"
# What the bridge sends (per gamepad event)
dpad.up = key("Up")
dpad.down = key("Down")
dpad.left = key("Left")
dpad.right = key("Right")
face.cross = key("*") # bang
face.square = key(".") # clear cell
face.circle = key("Backspace") # erase + step back
face.triangle = key("Space") # play/pause
# Sticks → numeral palette
left.x.deadzone = 0.18
left.x.steps = 10 # quantise to 0–9
left.x.action = "type_digit" # bridge types "0"–"9" as you sweep
# Shoulders modify everything
shoulder.l1 = "modifier_row_jump"
shoulder.r1 = "modifier_word_jump" Cursor steering — d-pad first
The d-pad is the cursor. Single tap moves one cell. Hold L1 and a d-pad press jumps a full row stride (eight cells by default); hold R1 and the cursor skips to the next glyph in that row. That's roughly enough motion for any honest Orca grid — anything bigger than 32x24 cells is showing off anyway.
# Default Orca grid — bangs feeding a midi op
. . . . . . . . . . . . . . . .
. . 8 D 4 . . . . . . . . . . .
. . . . 2 ; 3 c 5 . . . . . . .
. . . . . R 5 . . . . . . . . .
. . . . . . . . . . . . . . . .
. ▲ cursor lives here
. ▼ d-pad up = move up one cell Banging cells with the face buttons
X / Cross writes * and advances one cell to the right — the most common Orca move. Square (.) clears the cell and stays put. Circle backspaces. Triangle toggles play/pause for the whole grid. That covers >80% of the typing you do in a live Orca set.
A long-hold on X drops a chain of bangs for self-looping operators. Tap-tap-tap for individual stars; hold for two seconds and the bridge writes ***** in a row. Letting go ends the chain.
Sticks as glyph numerals
Orca's operators take numeric arguments — D 4 fires every four frames, C 5 counts modulo 5, ; 3 sends on MIDI channel 3. The bridge quantises the left stick X-axis into ten steps and types the digit as you cross each boundary. That means a half-sweep of the stick changes a rate operator's rhythm without typing. Right stick does the same for a second cursor cell (use a Y op to bridge them).
Be sparing here. Constant stick sweeps will overwrite the cell on every step, so the bridge throttles to one keypress every 80 ms. If you want continuous sweeps, set left.x.action = "midi_cc" instead — Orca can read a CC via its = operator and that route avoids touching the grid.
Mapping at a glance
| Gamepad | Bridge action | Orca effect |
|---|---|---|
| D-pad ↑↓←→ | Arrow keystroke | Move cursor by one cell |
| L1 + d-pad | Row jump (8 cells) | Large vertical / horizontal leaps |
| R1 + d-pad | Next-glyph jump | Skip to the next non-empty cell |
| X / Cross | Type * + advance | Bang the cell |
| Square | Type . | Clear the cell |
| Circle | Backspace | Erase + step left |
| Triangle | Space | Play / pause the grid |
| Left stick X (digital) | Type 0–9 | Change rate / interval glyph |
| R2 trigger | MIDI CC 21 | Read by = operator |
A complete one-thumb patch
Here's a four-line Orca grid you can build with the gamepad in under a minute. Move the cursor with d-pad, drop the digits with the left stick, bang the operators with X.
. . . . . . . . . . . . . . . .
. * 8 D 4 . . . . . . . . . . .
. . . . 4 R 7 . . . . . . . . .
. . . . . ; 3 5 c 3 5 . . . . .
. . . . . . . . . . . . . . . .
That fires D 4 (every four frames), generates a random note with R 7, and sends it to MIDI channel 3 via the ; op. Sweep the left stick and the D rate jumps between 0 and 9, changing the rhythm under your thumb. Hot for techno, brutal for anything else.
Where Orca + gamepad shines
Livecoded sets with both hands on the keyboard look like email. A controller looks like performance. The audience sees you push a button and a bang lands; sweep a stick and the rhythm twists. The grid does all the heavy lifting in the background. Pair this with SuperCollider gamepad patterns on the receiving end so Orca's MIDI feeds a Pdef macro layer, or send to a hardware synth direct. The whole rig — bridge, Orca, synth — fits in a backpack and runs offline forever. Grab Universal Controller MIDI, switch the preset, and start banging cells.