deck: we built a DJ rig that lives in Discord
· By RO. Nation LIVE
Two decks, a real mixer, effects and sample pads, on a control surface in your browser and streamed straight into a voice channel. It is called deck, it runs at deck.ronation.live, and access is going out in batches.

Every show we run ends the same way: somebody wants to play music in the Discord
afterwards, and what they get is a bot that takes a link, plays the file, and
stops. Which is fine, in the way a vending machine is fine. It is not DJing.
There is one source, no mixer, and nothing between the track and the room but a
volume slider. Tracks land end to end with a hole between them, six people type
skip at once, and whoever queued the wrong thing has to sit through four
minutes of it.
So we built the other thing. It is called deck, it lives at deck.ronation.live, and it is a DJ rig you drive from your browser while the room hears it in a voice channel.
You bring the music
There is no search box and no link field. You upload your own files, and the rig plays what you brought — which is the second-biggest difference from the bot, and the one that catches people out, so it is worth getting it out of the way early: turn up with a crate, not a playlist URL.
That is more work than pasting a link, and it is on purpose. A track that is being streamed to you from somewhere else is a track that can buffer, stall or vanish halfway through a set, and it cannot be scrubbed, cued and looped properly regardless. A file you have loaded sits on the deck and does what it is told, at whatever speed you tell it.
It is a desk, not a playlist
Two decks. Each has a waveform you can click into, a cue point, loop in and out with halve and double, and a turntable-style pitch fader running from half speed to double — pitch following speed, the way a record does.
That pitch range is worth sitting on for a second, because it is not the one most software gives you. A few percent either side is a beatmatching tool. Half to double is an instrument: a track dragged down to two-thirds sounds like a different, heavier record, and it sounds that way because the pitch went with it rather than being politely corrected back. Slow something down here and it drops in key. That is the trade, and it is the same trade a turntable makes.
The loop controls are there for the same reason. Set in and out, halve twice, and you are holding a bar over the top of whatever is coming in on the other channel for as long as you want it — which is how you cover a mix you have not quite lined up yet, and nobody in the room ever knows.
The mixer in the middle
Between the decks sits an actual mixer. Per channel: trim, a three-band isolator EQ, a single-knob filter sweeping low-pass through high-pass, pan, mute, and a fader with peak metering.
The isolator cuts: take a band to the bottom and it is gone, not quieter. That is the entire reason to have one instead of a regular EQ, and the thing most software gets politely wrong. It is what lets you run two tracks at once without the mix turning to mud — kill the bass on the incoming channel, bring it up under the outgoing one, and swap the low end over on the beat. A regular EQ that only attenuates leaves both kicks in the room fighting each other, quietly.
The filter is the other half of that. It is one knob because in the middle of a set you have one hand free, and sweeping a track in from the top end is a move you make in a second or not at all.
Then a crossfader with a blend-to-cut curve, a master fader, and a brickwall limiter with gain-reduction metering behind it, so an enthusiastic mix arrives at the room loud rather than broken. The gain-reduction meter is not decoration: if it is pinned for the whole set, the limiter is doing your gain staging for you, and it is worth going back to the trims.
The bits that make it fun
Effects. One send effect at a time — tape echo, a Schroeder reverb, or a flanger — on a bus both decks feed post-fader. Set the time in beats off whichever deck is playing and it follows that deck's pitch fader, so an echo set to a dotted eighth stays a dotted eighth when you ride the pitch.
Post-fader sends mean pulling a channel down takes its tail with it, which is what you want nine times in ten. The wet return is deliberately not crossfaded, because the tenth time is the one that matters: an echo thrown at the last bar of a track has to survive the fade out of that track. Cut the channel, keep the tail, and the room gets a hole to fall into rather than a splice.
One effect at a time is a choice, not a limitation we have not got round to fixing. A send rack with six things on it is six things to check before you touch anything.
Sample pads. Eight slots for stings and drops — one-shot, loop or hold — each with its own bus level and an auto-duck that pulls the decks down under a pad hit, so the drop lands on top of the music instead of underneath it. One-shot for a sting, loop for a bed you can leave running under a mix, hold for a siren you want to end the moment you let go.
Your own hardware. If you own a MIDI controller, map it onto anything on the console over Web MIDI, with pickup, jump and endless-encoder modes. Pickup makes a physical control take over only once it passes the value already on screen. Jump takes over immediately. Endless encoders send relative movement and do not have a position to disagree about in the first place. All three are there because a physical fader that teleports the virtual one is worse than no fader at all — you find out at the worst possible moment, with the channel open.
A console you arrange. The whole thing is a grid. Tools drag in from a tray, move by their handle, size by their edges, snap, and never overlap. Somebody mixing on two decks and a crossfader does not need the pads on screen at all; somebody triggering stings all night wants them under their thumb.
Your layout lives in your browser rather than on the server, because two operators on two screens want different consoles, and tidying yours mid-set should not move anybody else's furniture.
One pair of hands
The part we are actually pleased with is the boring part: any number of DJs can be signed in at once, and exactly one of them is holding the decks.
Everyone else watches the live console — faders moving, waveforms running, meters bouncing — and queues up. It is the real state of the rig, not a status message about it, which means the handover is something you can watch coming rather than something that happens to you.
Control moves on when the holder releases it, passes it to somebody directly, disconnects, or goes idle while somebody is waiting. Disconnects get a grace period, because a page refresh in the middle of a set should not cost you the set. Admins can force-take when someone has clearly walked away from the computer, which is the situation every other locking scheme forgets about.
And it is not a convention the interface politely follows. Every command — from
the web console and the /dj slash commands alike — goes through one server-side
path, where it is schema-validated and permission-checked. You cannot step around
the lock by talking to the socket directly. We know, because that was the first
thing we tried.
What it will not do
We would rather you read these here than find them out on your first set.
- It will not beatmatch for you. BPM is a field you type. Matching tempo is done by ear, on the pitch fader. There is no sync button and there is not going to be one.
- There is no true headphone cue. Discord gets one bus, so pre-listening happens locally in your own browser and is not sample-accurate against the live mix. It is enough to audition a track without it going to air, which is what it is for — but you cannot beatmatch in the cue and trust it. Line the tempo up on the fader, then bring the channel in quietly and check it in the mix.
- It is one rig per server. A single guild, a single voice connection, one set of decks. Two rooms at once is not a setting.
Getting on it
Access is not self-served. It is one rig, and a rig with fifty people queueing for the decks is not a rig anybody gets to use — so names go down and get opened up a handful at a time.
Put yours down at deck.ronation.live/home/access. There is a help centre if you want to read the manual first, and a page on this site with the shorter version of everything above.
One thing worth saying plainly: deck signs in with Discord, not Roblox. It is a separate service on its own host — your RO. Nation LIVE account and your tickets have nothing to do with it, and it cannot see them. If you have never touched the site before, that is the only account you need.
Come and break it. Tell us what falls over.