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

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

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

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

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

Preset selector with 80 slots Preset selector with 10 slots

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

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

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

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.

  1. Switch REC on.
  2. Play the pads, the computer keyboard, or a MIDI keyboard.
  3. Switch REC off 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

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

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

Mute 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

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

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

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

Equalizer EQ Point

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

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

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

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-1TRIG 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, INPUT means 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)

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 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: 0 to 100 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, or NONE.

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: 0 to 100 ms.
  • OUTPUT: Assigns the trigger source to a physical output channel on the selected audio device, or NONE.

MIDI Settings

MIDI

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: 0 to 100 ms.

Sync with Ableton Link Integration

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: -300 to 300 ms.
  • 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 when LINK AUDIO is enabled and the selected receive channel is currently available.
  • LATENCY: Sets the Link Audio receive latency in milliseconds.

OSC Settings

OSC

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

Recordings

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 click REC. Available values: IMMEDIATE, CLOCK RESET, ANY TRIGGER.
  • REC STOP: Selects when a take ends after you click REC again. 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. NONE is 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

Customizing Color Theme Theme Editor

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

Learn mode binds a hardware control to a parameter.

  1. Turn learn mode on.
  2. Select the parameter you want to control.
  3. 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:

  1. Quit 2020.
  2. Choose Go > Go to Folder from the Finder menu.
  3. Type ~/Library/Containers/com.dubrussell.2020beatmachine/Data/Library/Application Support/com.dubrussell.2020beatmachine/ and press Enter.
  4. Edit mappings.config with any text editor. Change key="q" to put that action on another key, or key="" to take it away.
  5. 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"/>