User Interface Guide
Every module in 2020 is built from the same set of controls. This guide covers those controls, and the preferences behind them. For what an individual module’s parameters do, see the Modules Guide.
Basics
The parts of the interface that are the same everywhere: what a project holds, how the modifier keys work, and how a module’s settings are stored and recalled.
Project
![]()
A project holds the whole instrument: every module’s parameters, every preset slot, and the sounds loaded into the samplers. Opening one puts it all back as you left it. Projects are saved as .2020 files.
| Modifier | Action | Description |
|---|---|---|
Command |
N |
Start a new project. |
Command |
S |
Save the project file. |
Command + Shift |
S |
Save the project file under a different name. |
Command |
O |
Open a project file. |
Undo and Redo
Undo steps back through parameter and sequence changes, from the Edit menu or with the keys below. A sequencer recording take counts as one step, however long it ran.
| Modifier | Action | Description |
|---|---|---|
Command |
Z |
Undo the last change. |
Command + Shift |
Z |
Redo the last undone change. |
Modifiers
Three modifiers turn an ordinary gesture into a second one: a drag becomes a range edit, a preset key becomes a save. They are parameters like any other, so each can be moved to a different key, or driven from a MIDI control or an OSC message.
| Modifier | Parameter | Default key mappings |
|---|---|---|
SHIFT |
/shift |
Shift |
FN1 |
/fn1 |
Alt / Control |
FN2 |
/fn2 |
Command |
Modifiers apply to performance gestures only. Application shortcuts such as Command + S always use the physical keys.
Basic UI Components

Knobs, number boxes, sliders, and toggles carry every parameter in the app. A knob in a module that receives triggers has two more rings around it. The red ring is the probability that the knob picks a new value each time the module is triggered, and the yellow ring is the range it picks from. Set the probability to zero and the knob stays where you left it.
| Modifier | Action | Description |
|---|---|---|
| - | Double-click a component | Resets the value to its default. |
| - | Click a toggle component | Toggles the value on or off. |
| - | Drag a Knob or Number Box | Changes the value. |
SHIFT |
Drag a Knob or Number Box | Changes the value more quickly. |
| - | Drag a Slider | Changes the value. |
FN1 |
Drag a Randomizable Knob | Changes the randomization range. |
FN2 |
Drag a Randomizable Knob | Changes the randomization probability. |
Context Menu

Right-clicking a control or a module opens the menu for that specific thing: its trigger source, its preset behavior, its snapshots.
Sound File Menu

The Sound File Menu loads sound files into the modules that take them. Its User Library menu browses whatever is in ~/Music/2020/Sounds, and files and folders can be dragged in from Finder instead.
Preset Selector
![]()
A preset slot stores every parameter of the module it belongs to, and modules offer either 10 or 80 of them. Two rows of keys play them: the top letter row for song presets, the home row for pattern presets. A recall lands at the top of the next bar so the change stays in time. Hold FN1 to take it immediately instead.
| Modifier | Action | Description |
|---|---|---|
| - | Q W E R T Y U I O P |
Restore the preset at the beginning of the next bar. |
FN1 |
Q W E R T Y U I O P |
Restore the preset immediately. |
SHIFT |
Q W E R T Y U I O P |
Save the preset. |
| - | A S D F G H J K |
Restore the preset at the beginning of the next bar. |
FN1 |
A S D F G H J K |
Restore the preset immediately. |
SHIFT |
A S D F G H J K |
Save the preset. |
Preset keys answer with any combination of these modifiers held, except FN2, so shortcuts such as Command + Q keep working.
Disabling Preset Recall

Disable Preset Recall, in a module’s context menu, holds that module where it is while the rest of the app follows preset changes. Use it for a part that should stay put as the song moves, such as a bassline.
Snapshots
![]()
A snapshot keeps a sound or a sequence outside any one project, so you can bring it into the next one. Save the whole app, or a single module with a preset UI, from its context menu; snapshots are stored in ~/Music/2020/Snapshots.
Performance
The clock, the grid, and what decides when a note lands.
Transport Control
![]()
The transport sets tempo and swing, and runs the clock. Pressing play while it is already playing rewinds to the top of the bar, and pressing stop while it is already stopped cuts every voice and tail at once. Tap tempo and the BPM buttons are there for syncing to something you have no control over.
| Modifier | Action | Description |
|---|---|---|
| - | SPACEBAR |
Toggle play/stop. |
| - | LEFT ARROW |
Temporarily decrease BPM. |
| - | RIGHT ARROW |
Temporarily increase BPM. |
Trigger Mode
The leftmost control on the transport decides when a trigger you play by hand reaches its instrument, for every instrument at once. What a quantized trigger waits for is the next cell of that instrument’s track in the Grid Sequencer.
| Mode | Description |
|---|---|
| LIVE | The trigger sounds as soon as you play it. |
| QUANTIZE | The trigger waits for the next cell of the instrument’s own track. |
| REPEAT | As QUANTIZE, repeating on every cell for as long as the key is held. |
A finer track resolution therefore catches your playing on a finer grid. With the clock stopped there is no grid to wait for, and both quantized modes behave as LIVE.
Recording into the Sequencer
REC, next to the trigger mode, writes what you play into the Grid Sequencer.
- Switch
RECon. - Play the pads, the computer keyboard, or a MIDI keyboard.
- Switch
RECoff to end the take.
Each trigger overwrites the nearest cell on that instrument’s track and carries the strength it was played at. In QUANTIZE and REPEAT it is written to the cell it sounded on, so the pattern you recorded is the one you heard. Undo takes a whole take back in one step.
Grid Sequencer

The Grid Sequencer holds one track per instrument, with one cell per step and the resolution set per beat. A cell carries a volume and an accent of its own as well as a trigger, the accent playing that step harder, and the buttons in the upper-right corner edit the track as a whole.
| Modifier | Action | Description |
|---|---|---|
| - | Click or drag over cells | Toggles triggers. |
FN2 |
Click or drag over cells | Toggles accents. |
SHIFT |
Drag over cells | Changes the volume sequence. |
FN1 |
Drag and drop | Copies the sequence one beat at a time. |
| - | Execute Duplicate Sequence from the context menu |
Duplicates the current sequence to the selected end position. |
| - | Execute Double Tempo from the context menu |
Rearranges the grid to play the current sequence at double speed. |
| - | Execute Halve Tempo from the context menu |
Rearranges the grid to play the current sequence at half speed. |
Dejavu
![]()
Dejavu gives the parameter randomizers a memory. It keeps the last 32 generations of random values, and its probability sets how often a randomizer reaches back for an old value instead of picking a new one.
At 100% with a length of 8, every randomizer repeats what it produced 8 triggers ago, which turns them into 8-step sequencers. At 0% nothing repeats. Values in between let a pattern half-form and drift, which is the useful range for build-ups and transitions. The steps count triggers rather than bars, so a module played twice a bar and one played sixteen times end up with loops of different lengths.
DJV and LEN beside the clock set this globally. Individual modules can be set over OSC or MIDI with an address such as /group1/dejavu/prob.
Mute

With MUTE GRP on, instruments in the same group that share a bus cut each other off as they trigger, the way a closing hi-hat cuts an open one.
Sound Editing
The editors that open from a module: envelopes, LFOs, the FM algorithm, and the equalizer.
Envelope

An envelope draws how a parameter moves over the life of a note: volume, pitch, granular position, and more. Drag a point to move it, or the line between two points to bend the curve between them. FM and granular modules hold several envelopes at once, selected with the algorithm selector or the tabs, and point positions randomize like any other value.
| Modifier | Action | Description |
|---|---|---|
| - | Drag a point | Moves the envelope point. |
| - | Drag a line between points up or down | Changes the curve of the envelope. |
FN1 |
Drag a point | Changes the range of randomization. |
FN2 |
Mouse over | Switches to the pitch envelope. |
LFO

Most modules carry one or more LFOs, each behind its own button. The button is also a display. It draws the shape the LFO is producing, and names the parameters it drives, its targets: one target’s name, a count such as 3 TGT, or NONE. Hovering highlights every target it reaches, and clicking opens the panel.
| Waveform | Description |
|---|---|
| SIN / TRI / SAW / SQR | Sine, triangle, sawtooth, and square. |
| RND | A new random value each cycle, so FRQ sets how often it jumps. |
| NOISE | Continuous noise, sweeping from brown through white to blue as you raise FRQ. |
| Control | Description |
|---|---|
| FRQ | Rate in cycles per beat, from 1/16 up to 16, so the LFO follows the tempo. |
| AMT | Amount of modulation. Negative values run the shape in the opposite direction. |
| SKEW | Leans the shape: a saw’s slope ratio, a square’s pulse width, a triangle’s apex. |
| RISE / FALL | Limit how fast the shape may rise or fall, in sixteenth notes. 0 leaves it untouched. |
| TRIG | Chooses the trigger the LFO follows. See also Trigger Source. |
| RETRIG | Resets the phase every time the LFO is triggered. |
| CYCLE | When off, the shape runs once per trigger and holds its end value: a one-shot ramp. |
| INVERT | Turns the shape upside down. |
| SAH | Holds the output at a fixed clock resolution: NONE, 1/4, 1/8, 1/12, 1/16, 1/20, 1/24, 1/28, 1/32. |
FRQ, AMT, SKEW, RISE, and FALL randomize like any other knobs, and all five pick their new values together on the LFO’s own trigger. With RETRIG on that is the instant the phase resets. With it off the phase free-runs and the values still change.
FM Algorithm

The algorithm sets how the operators feed one another. It also selects which of operators 1 to 3 the editor below is showing.
| Modifier | Action | Description |
|---|---|---|
| - | Click an operator | Displays the clicked operator in the editor. |
| - | Click outside of operators | Switches algorithms. |
Equalizer

Each EQ point is dragged where you want it: sideways for frequency, up and down for gain. Q sets how narrow the curve around it is, and the point’s filter type comes from its own context menu.
| Modifier | Action | Description |
|---|---|---|
| - | Drag a point | Moves the EQ point. |
FN1 |
Drag a point | Changes the Q value of the EQ point. |
| - | Right-click on a point and select a filter type from the context menu | Selects the EQ type. |
Routing and Triggers
Where a module’s sound goes, where its triggers come from, and what a trigger carries with it.
Audio Bus
![]()
An instrument’s output goes to whichever buses it has switched on, and to as many of them at once as you like. BUS1 takes it straight to the mixer; FX2 takes it through the FX patcher first. Triggers follow the same wiring the audio does, so a bus that carries the sound carries what set it off.
FX Patcher

Effects are nodes here, wired to each other by hand. The circular arc drawn on a node is how far it can reach: a node inside the arc can be connected, a node outside it cannot. Moving a node therefore changes what it can reach.
| Modifier | Action | Description |
|---|---|---|
| - | Drag a node | Moves the node. |
FN1 |
Drag a node | Changes the connection range of the node. |
Trigger Source

A module normally runs on its own input: its pad, its key, its MIDI note, its sequencer track. Trigger: in its right-click menu points it at something else instead. The entry names what the module follows now, and opens onto INPUT, INSTRUMENTS, and CLOCK. Every LFO makes the same choice with TRIG in its panel, so an LFO can run on a different trigger from the module hosting it.
| Choice | Description |
|---|---|
| INPUT | The module’s own pad, key, or MIDI note. This is the default. |
| NONE | Shown in place of INPUT on a module that has no pad of its own. |
| CLOCK RESET | The start of every bar. |
| CLOCK 1/16, 1/8, 1/4 | Every sixteenth, eighth, or quarter note. |
| TRIG 1-1 … TRIG 4-6 | Another instrument’s trigger. |
| TRIG SLC | The Slicer’s trigger. |
What a module borrows is the timing and the level, nothing else. It keeps its own sound, its own randomization, and its own routing: a snare following a kick plays snare, on the kick’s rhythm.
In use:
- The chosen source replaces the sequencer track that would otherwise drive the module. Its own pad stays live, so you can always play it by hand.
- On an LFO,
INPUTmeans whatever its module runs on. Any other choice detaches it, so it stops retriggering with the module. - On an FX module the choice also replaces what it passes on to everything after it in the patcher.
Worth knowing:
- Choices chain: follow an instrument that follows a third one and you hear the third. If the choices form a loop, the first module in it falls back to its own input.
- A clock source arrives at full level with no accent, exactly as a pad pressed on screen does.
- Following an instrument that is switched off still works, because the switch decides whether it makes a sound and not whether it triggers. The Slicer is the exception: switched off, it sends nothing.
Trigger Events (CV)

The CV dial on an instrument sets the probability that its trigger is sent onward at all. The probability is decided once per trigger and applies to every destination together:
- the FX buses,
- the delay and reverb sends,
- the mixer strips,
- the trigger outputs on your audio interface.
The instrument plays either way. What thins out is what it tells everything else.
In the patcher, a trigger reaches an FX module as a CV level, and that module’s THRESHOLD decides what to do with it. Above the threshold, the CV randomizes the module’s parameters, resets every LFO with RETRIG on, and passes on to the next module in the chain. Below it, nothing changes and nothing is passed on. CV arriving from several sources sums.
CV stays inside the app. To drive hardware, use Trigger Output instead.
Preferences
Preferences opens from the Options menu, or with Command + ,. Its panels cover the audio device, MIDI, Ableton Link, OSC, recording, and the color theme.
Audio Settings

Audio Device
DRIVER: Selects the active audio driver type provided by the operating system or audio interface.INPUT: Selects the hardware input device used by 2020.OUTPUT: Selects the audio output device.SAMPLE RATE: Selects the sample rate supported by the current device.BUFFER SIZE: Selects the audio buffer size supported by the current device.
Routing is remembered per output device, so switching devices also brings back the routing you set up for that one.
Input Channel
CHANNEL: Selects which stereo input pair from the chosen hardware input device is used as 2020’s input.
Link Audio input is chosen separately, under Ableton Link.
Bus Output
The bus router sends the main mix and the internal buses to physical outputs on the current interface.
DELAY: Adds output delay in milliseconds. Range:0to100 ms.LEVEL: Sets the bus output gain. Available values:6 dB,0 dB,-6 dB,-12 dB,-24 dB.CLIP: Selects the clipping mode. Available values:SOFT 6dB,SOFT 0dB,CLIP 0dB.OUTPUT: Assigns the bus to a physical stereo output pair on the selected audio device, orNONE.
Trigger Output
The trigger router sends clock and trigger pulses out of individual physical channels, for modular gear and anything else that takes a pulse.
DELAY: Adds trigger delay in milliseconds. Range:0to100 ms.OUTPUT: Assigns the trigger source to a physical output channel on the selected audio device, orNONE.
MIDI Settings

MIDI Input
IN: Enables or disables MIDI input from that device.
MIDI Output
SYNC: Sends MIDI clock sync to that device.OUT: Sends parameter/output data to that device.MIDI CLOCK DELAY: Adds delay to outgoing MIDI clock timing, to line 2020 up with gear that answers the clock late. Range:0to100 ms.
Ableton Link

Link keeps tempo and bar position together across devices on the same network, and Link Audio carries audio between them. Both are switched on here or from the Options menu.
ABLETON LINK: Enables or disables Link clock synchronization.START STOP SYNC: Enables or disables Link start/stop synchronization.SYNC DELAY: Offsets Link timing in milliseconds. Range:-300to300 ms.
Link Audio
LINK AUDIO: Enables or disables Link Audio send and receive.PEER NAME: Sets the name shown to other Link Audio peers.SEND LEVEL: Sets the send level for Link Audio.MUTE 2020: Mutes 2020’s local audio-bus output while Link Audio send remains enabled.RECEIVE CHANNEL: Selects a Link Audio peer and channel to receive from.OVERRIDE INPUT: Replaces the hardware input with the selected Link Audio input whenLINK AUDIOis enabled and the selected receive channel is currently available.LATENCY: Sets the Link Audio receive latency in milliseconds.
OSC Settings

Almost every parameter in the app has an OSC address; see Parameters for the full list and for controller assignment.
Receive Port
RECEIVE OSC: Enables or disables incoming OSC messages.ADDRESS: Shows the current local network address used for OSC reception. This is display-only.PORT: Sets the UDP port number used to receive OSC.
Send Ports 1-3
The three send ports have the same controls, so one machine can take everything while another takes only what it needs.
SEND OSC: Enables or disables OSC transmission for that port.ADDRESS: Destination IP address or host.PORT: Destination UDP port.
SEND PARAMS is where a port picks its share: MOD, CLOCK, PARAM, TRIG, SEQUENCER, and PRESET. The performance modifiers have a category of their own, MOD, so they can be sent or held back without touching the parameters they modify.
Recording Settings

Recording Input
CHANNELS: Selects the recording channel set.2 Ch Mix : OUT1 + OUT2: Records the main stereo output.4 Ch Stem : MST1 / MST2: Records two stereo master stems.12 Ch Stem : BUS1 / BUS2 / BUS3 / BUS4 / BUS5 / BUS6: Records six stereo bus stems.
A stem is one pair of buses written to its own file. Stems are written as the take plays, so stopping it finishes the files.
Recording Start and Stop
A take can wait for a musical edge rather than beginning wherever you happened to click, which is what makes a loop come out as a loop.
REC START: Selects when a take begins after you clickREC. Available values:IMMEDIATE,CLOCK RESET,ANY TRIGGER.REC STOP: Selects when a take ends after you clickRECagain. Available values:IMMEDIATE,CLOCK RESET.
CLOCK RESET waits for the start of the next bar, and ANY TRIGGER waits for the first trigger to reach the output. The REC button stays dimly lit while a take is waiting. If the clock is stopped, a take set to stop on CLOCK RESET ends immediately.
Recording Format
FORMAT: Selects the file format. Available values:WAV,AIFF.BIT DEPTH: Selects the bit depth supported by the selected format.LEVEL: Adjusts the level written to the file. Available values:0 dB,-6 dB,-12 dB,-24 dB.CLIP: Selects how peaks are handled on the way to the file. Available values:NONE,SOFT 6dB,SOFT 0dB,CLIP 0dB.NONEis available only at a bit depth of 32, the only one that can hold a peak above full scale.
Level and clip are applied after the recorded channels are summed, so a stereo mix cannot reach full scale twice over.
To record stems and remix them fully in another DAW, use WAV at 32-bit: it keeps signals above 0 dB intact.
Warning. A 32-bit file can hold peaks far above full scale. Play one back carefully, and protect your equipment and your hearing.
File Location
OPEN FOLDER: Opens the recordings folder,~/Music/2020/Recordings, in the OS file browser.AUTO REVEAL: Reveals the saved recording as soon as recording finishes.
File Naming Format
New takes are named from a pattern. The default is:
{project}-{year}{month}{day}-{hour}{minute}{second}-bpm{bpm}
Available placeholders: {project}, {bpm}, {year} (four digits), {month}, {day}, {hour}, {minute}, and {second} (two digits each).
Color Themes

Eleven colors make up the interface: Background, Base, Text, Blue, Green, Orange, Pink, Purple, Red, Teal, and Yellow. Each can be set to whatever you like, in dark mode and light mode alike. If you build a theme you are happy with, share it.
Controllers and Key Mapping
Binding hardware controls and computer keys to parameters.
Learn Mode

Learn mode binds a hardware control to a parameter.
- Turn learn mode on.
- Select the parameter you want to control.
- Move the knob, or press the key, that should control it.
Keys already spoken for globally, such as the preset and instrument keys, cannot be taken. Pressing Delete while learn mode is active removes a mapping instead of adding one.
| Modifier | Action | Description |
|---|---|---|
FN2 |
L |
Toggle Learn mode. |
Configuring the Keyboard Layout
The song preset keys, the pattern preset keys, and the instrument enable keys are bound by position rather than by letter. Song presets take the top letter row, pattern presets the home row, and instrument enables the bottom row, each filled from left to right. On an AZERTY keyboard the first song preset is therefore A rather than Q. A layout that cannot give every position a distinct character, such as a Cyrillic or Greek one, keeps the QWERTY defaults rather than moving part of a row.
This is worked out once and written to mappings.config, so changing your input source later does not move the keys. To pick up a new layout, quit 2020, delete mappings.config, and start it again.
Note. Deleting the file also removes any key you assigned by hand.
The same file is where you assign keys yourself:
- Quit 2020.
- Choose
Go>Go to Folderfrom the Finder menu. - Type
~/Library/Containers/com.dubrussell.2020beatmachine/Data/Library/Application Support/com.dubrussell.2020beatmachine/and press Enter. - Edit
mappings.configwith any text editor. Changekey="q"to put that action on another key, orkey=""to take it away. - Open 2020 again.
Default key mapping on a QWERTY keyboard
<key key="shift" parameter="/shift"/>
<key key="option" parameter="/fn1"/>
<key key="ctrl" parameter="/fn1"/>
<key key="command" parameter="/fn2"/>
<key key="q" parameter="/preset/q"/>
<key key="w" parameter="/preset/w"/>
<key key="e" parameter="/preset/e"/>
<key key="r" parameter="/preset/r"/>
<key key="t" parameter="/preset/t"/>
<key key="y" parameter="/preset/y"/>
<key key="u" parameter="/preset/u"/>
<key key="i" parameter="/preset/i"/>
<key key="o" parameter="/preset/o"/>
<key key="p" parameter="/preset/p"/>
<key key="a" parameter="/preset/a"/>
<key key="s" parameter="/preset/s"/>
<key key="d" parameter="/preset/d"/>
<key key="f" parameter="/preset/f"/>
<key key="g" parameter="/preset/g"/>
<key key="h" parameter="/preset/h"/>
<key key="j" parameter="/preset/j"/>
<key key="k" parameter="/preset/k"/>
<key key="z" parameter="/group1/1/enable"/>
<key key="x" parameter="/group1/2/enable"/>
<key key="x" parameter="/group1/3/enable"/>
<key key="c" parameter="/group2/1/enable"/>
<key key="c" parameter="/group2/2/enable"/>
<key key="v" parameter="/group2/3/enable"/>
<key key="b" parameter="/group3/enable"/>
<key key="n" parameter="/group4/enable"/>
<key key="m" parameter="/slicer/enable"/>
<key key="spacebar" parameter="/clock/play"/>
<key key="cursor left" parameter="/clock/bpm/slower"/>
<key key="cursor right" parameter="/clock/bpm/faster"/>