A³ StemDeck

StemDeck: one deck playing, its four stems on their own paths

StemDeck: one deck playing, its four stems on their own paths

StemDeck

StemDeck's one-deck screen: a track playing, the four stems with their actions running, AUX and WIDTH beside the stems

For the moment when one part of a track should take the room: the vocal rises over the crowd on the drop, the hats circle the floor, and the drums and the bass hold the ground. StemDeck plays a track as four stems — drums, bass, other, vocals — and moves each one on its own, in time with the beat. Where a CDJ gives A³ Core a stereo mix, StemDeck gives it the parts, already placed in the room. New to A³? Read How A³ sounds first.

  • One deck per program. On the rig up to four StemDecks run, deck A to D, each with its own screen. Deck A runs on A³ Core, the others on the Core or on machines of their own; see One deck per instance.

  • Per stem: GAIN, WIDTH, an AUX-Send to the delay, four actions that move the stem (ORBIT, PING, RISE, SCAT), CUE and MUTE; see The stems.

  • On the desk a deck is one source: turn a channel’s INPUT knob to its letter and push. The channel’s fader, EQ and filter act on the whole deck (the desk).

  • Pre-listening: a stem’s CUE key puts it in the headphones, whether the deck is on a channel or not.

  • On the Core it always runs, on workspace STEMDECK (2); see Always running on the Core.

  • With no CDJs it can be the tempo master.

  • It splits stereo tracks into stems itself.

  • Linux, JUCE, JACK. Source: a3-stemdeck (carried by a3-system; a3-stem-separator is its submodule).

Tip

With A³ Motion: StemDeck moves its stems, A³ Motion moves the stereo channels beside them, and both follow one beat. See StemDeck × A³ Motion.

Stem sets

A set is exactly four audio files in one folder, the same name with a different ending after the last space, - or _:

Artist - Title-001.wav  …  Artist - Title-004.wav
Artist - Title - DUB.wav, … - KICK.wav, … - PADS.wav, … - PERC.wav

Endings sort naturally (01 before 10, words alphabetically) into stems 1–4. Three or five files are not a set. Formats: WAV, AIFF, FLAC, Ogg Vorbis; WAV and AIFF stream from disk, so jumps and loops are instant.

Artist, album, set

stems/
├── Burial/
│   └── Untrue/
│       └── Archangel - 01.wav … Archangel - 04.wav
└── Aphex Twin/
    └── Drukqs/
        └── CD1/
            └── Avril 14th - 1.wav … Avril 14th - 4.wav

First folder: artist; second: album; deeper folders join the album (Drukqs / CD1). The library scans its folder recursively; it starts in stems/ next to where StemDeck started and remembers the last folder.

The screen

One deck, top to bottom: the top bar; the stems’ scrolling waveforms (drag to move, wheel to zoom) and the overview of the whole track; the deck tile on the left and the four stems beside it; the transport band; the library at the bottom.

StemDeck's top bar: the deck's letter, REC with where the take goes, AUTO DJ, the SYNC source, the audio status, Settings, MOTION and the workspace list

The top bar holds the deck’s letter, REC (it records the Core’s REC mix; the key shows where the take goes, see Recording), AUTO DJ (greyed out: it needs the older two-deck mode), the SYNC status (see Sync), the audio status, Settings, and the workspace switch.

Over to A³ Motion, and back

MOTION shows A³ Motion, whose STEMDECK key sits in the same place. ▾ lists the workspaces. See A³ Core’s screen.

Settings

Settings: the stem library folder

The stem library folder, picked with Choose… (the touch screen has no keyboard).

Output is B-Format (the default) or Stereo:

  • B-Format: the deck sends its full stream to Core: the 16 main channels, the AUX return and the cue stream.

  • Stereo: the deck sends one stereo master pair and nothing else. There is no cue stream and no AUX return. Phones and REC stay local to the deck’s machine. On the desk’s input selectors the deck keeps its letter: picked on a channel, its pair runs through that channel’s strip like an analog input (TRIM, EQ, filter, 3D, VOLUME). A³ Motion moves it as it moves ST: position, clips, 3d, FREQ and Q. Core links it to inputs of its own, so nothing needs patching and the sound card’s capture is untouched, see the AES67 page.

Changing it restarts StemDeck.

Decks

The deck tile: title, elapsed and remaining time, REPEAT, CONTINUE, SYNC, MASTER, VINYL, GRID, the BPM with the original tempo, the tempo fader with its range, KEY and SHIFT

Like a CDJ without the platter.

Control

What it does

REPEAT

restarts the track at its end

CONTINUE

at the end, goes on with the next set of the library list

SYNC

follow a leader; see Sync

MASTER

the network’s tempo master; see MASTER

VINYL

a jog controller’s platter scratches (see the note under GRID)

GRID

fix the beat grid; see GRID

BPM

current tempo; Original below

tempo fader

range button: ±8 / ±16 / ±50 %

KEY

key lock; see KEY

SHIFT

the next action pad starts at once, not on the next bar

overview

one lane per stem. Click: jump; drag: loop

The tempo is analysed once per set in the background, over all four stems, assuming a constant tempo.

The stems

The four stems, three of them running an action: per stem AUX, WIDTH and GAIN, the viewer with the stem's place, the pads ORBIT, PING, RISE, SCAT, CUE and MUTE, and the action's length

One column per stem, its colour on top. The knobs sit as on the A³ Motion panel:

Per stem

What it does

AUX

send to the beat delay, 0 to 1 (default 0); see AUX per stem

WIDTH

how wide the stem is while it moves: a point or a wall

GAIN

the stem’s level

viewer

the room seen from above: the stem’s place (drag it) and, while an action runs, where it is

ORBIT, PING, RISE, SCAT

an action: the stem leaves the rest and moves (circles, jumps side to side, rises, scatters), from the next bar, then goes back

CUE

the stem in the headphones

MUTE

silences the stem

‹ length ›

how long an action runs: ½, 1, 2, 4 or 8 bars

At rest a stem has no direction of its own: it sounds all around, with the rest of the track. Only while an action runs does it come loose and move. A running pad shows its beat count (ORBIT 28/32). There is no 3d knob per stem.

The transport band

The transport band: LOOP with IN and OUT, previous and next set, CUE, PLAY, and the MAIN, AUX and CUE meters

Control

What it does

CUE

playing: back to the cue point and stop. Stopped: set the cue point, or on it, play while held. Hold CUE and press PLAY: plays on without a gap, as on a CDJ-3000

PLAY

start / pause

IN, OUT

loop in and loop out, on the beat grid; OUT while looping leaves the loop

LOOP

leaves a running loop, or goes back into the last one; lit while looping

|◀, ▶|

the previous / next set in the folder

meters

the deck’s MAIN, AUX and CUE outputs

Library

The library: search box, Load, the folder tree with its set counts, Create stems… and Rescan, and the sets by artist and album

Columns Artist | Album | Set | BPM | Stems | Length; click a header to sort. Search matches name, artist or album. FOLDERS shows the folder tree. Load with Load, or drag a set onto the deck or its waveform. Rescan reads the folder again.

GRID: correcting the beat grid

Grid Adjust, as on a CDJ-3000:

Control

What it does

jog

moves the grid; a turn is 100 ms

‹1/2 / 1/2›

half a beat

SNAP

downbeat to the cue point

SET 1

downbeat to the playhead

SHIFT

takes a beat aligned by ear with the jog ring

RESET

the analysed grid again

Corrections are kept in analysis.xml.

The jog and SHIFT rows need a jog controller. Today only the older two-deck mode takes one (the Stanton SCS.3d); on the one-deck screen use ‹1/2, 1/2›, SNAP and SET 1.

Where the bar’s one is

The tempo analysis finds the beats. StemDeck then decides which beat is the one of the bar, from the stems: drums and bass coming back after a break or stopping for one, chord changes, the arrangement changing at a bar line. Four beats a bar are assumed.

  • Tracks analysed before are corrected once, when you load them.

  • Your own corrections (◀1 / 1▶, SNAP, SET 1) always win; StemDeck never moves a grid you set.

KEY: key lock

KEY sits at the foot of the deck’s tile, with the tempo controls. Off, the pitch follows the tempo fader as on a turntable. On, the tempo changes and the key stays, like a CDJ’s Master Tempo.

  • Scratching stays pitched: a scratch is pitch by nature, so KEY lets go while the platter is touched.

  • It is kept in the session.

  • It costs CPU while it is on. Leave it off on decks that run at their own tempo.

Events: movement you prepare

An event is a movement planned for one stem at one place in the track: ORBIT, PING, RISE or SCAT, how many bars it runs, and (for ORBIT) which way. The deck fires it by itself when the music gets there, so a track can move the way you composed it. Events belong to the set, not to your session: they are kept in a small file beside the stems and travel with the library (the format). A set needs a beat grid; without one there are no events, and the strip says NO GRID.

The strip under the overview waveform has the keys; markers sit in each stem’s lane, in the stem’s colour.

Recording and placing

  1. Press REC (lit = recording).

  2. Play and press the pads as you do live. Each press also becomes an event, at the beat where the movement starts (the next bar; with SHIFT, now).

  3. Press REC again to stop.

Only a press that starts or arms a movement is recorded. Pressing a running pad to stop it, cancelling an armed press, or pressing SHIFT on a pad that is still returning home (it restarts at once, live) is not recorded.

The movement still plays live while you record, and events already there keep firing, so you hear the context. A place that already holds an event of that stem refuses a new one (SLOT TAKEN): delete first. A full list (512 events) refuses too (LIST FULL).

Touch a marker to select it (a tap close to a marker selects it instead of jumping the playhead; the reach is about a fingertip, wider in a crowded lane). A press that starts on a marker and slides off it selects nothing: your finger must still be on that marker when you lift it, then:

Key

What it does

‹ 1 BAR, ‹ 1 BEAT, 1 BEAT ›, 1 BAR ›

move the selected marker

ACTIVE

on: it fires. Off: it stays but is dimmed and stays silent

DELETE

press twice to delete: the first press lights the key, press again within two seconds. A slower second press only arms it again; selecting something else disarms it

Playing events

  • An event fires when the playing deck reaches it, at its own beat.

  • In a loop an event fires on every pass. An event at the loop-in fires on each pass; one exactly at the loop-out never fires.

  • Events fire on forward play only: not in reverse, not while you scratch.

  • An event takes over: if its stem is already moving, the event restarts the stem with its own movement.

  • Jumping (a cue, a click on the overview) never fires the events you skipped. Switching EVENTS on again past an event does not fire it late.

  • EVENTS switches all of the deck’s events off and on (lit = on). Off, the track plays plain. Use it when the room is wrong for movement.

  • A damaged or newer events file plays the track plain and is never overwritten.

  • Editing a prepared event here (a nudge, ACTIVE) makes it one of your own.

  • If you edit the file by hand, keep a copy: a bad event in it is skipped when StemDeck loads the track, and the next save of that track writes the file without it.

QUANTIZE

QUANTIZE (lit = on) puts what you set onto the nearest beat of the grid:

  • a jump on the overview waveform,

  • the cue point (the playhead moves onto it, as on a CDJ: press CUE again to preview from it),

  • loop IN and OUT.

It snaps when the point is set; a running loop is not touched. Dragging the waveform, the jog and a restored session never snap: a restored cue and loop do not move. Without a grid the key is off. QUANTIZE and EVENTS are remembered across restarts, even with no set loaded.

For events: a normal press while recording always lands on the next bar’s first beat, QUANTIZE or not. Only a SHIFT press with QUANTIZE on is rounded to the nearest beat (off, it is saved at the raw beat). Moving a marker always goes by whole beats and snaps nothing.

ORBIT, the other way

Hold the ORBIT pad, then swipe left or right. Left makes the stem circle the other way round, right makes it circle forward again. The pad shows it: ◄ ORBIT is reversed, ORBIT ► is forward. A plain tap still starts ORBIT, and holding without moving does too. The direction is kept in the session. An event carries the direction it was recorded with. PING, RISE and SCAT ignore the direction in this version.

Preparing a whole library

stemdeck-prepare-events writes events for every set in a library. It is not installed as a command: it lives in the a3-stemdeck checkout, and you run it from there.

python3 tools/stemdeck-prepare-events --dry-run ~/Music/stems   # only say what it would do
python3 tools/stemdeck-prepare-events ~/Music/stems             # write the files
python3 tools/stemdeck-prepare-events --only "Song" ~/Music/stems

Flag

What it does

--dry-run

writes nothing, says what it would do

--replace

redo the prepared events in files that already have events (yours are kept)

--only SET

only the set with this name

--rules v1

the rule set (only v1 exists)

--cache FILE

StemDeck’s analysis cache (default ~/.config/StemDeck/analysis.xml)

  • A set shows no grid (and is skipped and listed) when StemDeck has not analysed it yet, or the file changed since. A changed or re-encoded file loses its grid until you load it in StemDeck again.

  • A file that already has events is left as it is, and the tool says kept. With --replace it redoes only its own (prepared) events and keeps yours, never putting one on a place you hold. A prepared event you deleted comes back only with --replace.

  • It never touches a damaged or newer file. It is stricter than the app: if a single event in a file is invalid it calls the whole file damaged and leaves it alone, where the app drops only the bad event.

  • Running it again gives the same result. A WAV that was streamed is measured by its file size.

  • Its musical rules are a first placeholder: sparse, from the second phrase on an ORBIT on each phrase start, and a PING on beat 3 of a phrase’s last bar. They will be tuned.

Making stems from a stereo track

Starting

  1. Drop stereo files or a folder onto the library, or press Create stems… (FLAC, WAV, MP3, AIFF, OGG, M4A, Opus).

  2. Set the Target folder, relative to the library (typed, Browse…, or empty). It is preset from the source path (Artist/Album). The whole batch goes there.

  3. Create.

What you get

stems/Artist/Album/
├── Title - 1 - drums.flac
├── Title - 2 - bass.flac
├── Title - 3 - other.flac
├── Title - 4 - vocals.flac
└── originals/Title.flac
  • Stems 1–4: drums, bass, other, vocals. originals/ holds a copy and is not scanned.

  • Format: FLAC, WAV, AIFF at 24 bit; Ogg at quality 8; MP3, M4A and Opus become FLAC.

  • A name already in the album becomes Title (2). When done, the library rescans and selects the set.

While it works

Demucs (htdemucs, 44.1 kHz) runs in the background, one track at a time, while the decks play: the audio thread owns CPU 1, the separator gets the other cores at idle CPU and disk priority, at most 6 GB. Fewer cores: <VALUE name="separatorCores" val="1"/> in StemDeck.settings (CPU 0 only: about 1.2 × the track’s length).

The strip under the library bar shows progress and the queue (+2 waiting), or Stems: failed: …. Cancel stops the track and leaves nothing behind.

Setting it up, once

About 1 GB per machine, from the StemDeck checkout:

sudo apt install ffmpeg python3-venv
tools/setup-separator.sh

It installs Demucs and CPU PyTorch into ~/.local/share/StemDeck/separator and fetches the model. Without it the strip says separator not installed.

One deck per instance: the Core’s rig

On the rig every deck is its own StemDeck instance, -bformat --deck A (unit stemdeck@A; B is stemdeck@B, and so on to stemdeck@D). Deck A runs on the Core, deck B on the second machine beside A³ Motion; decks C and D are hosts of their own (any machine with the deck-host role, letter C or D). The instance plays one deck and sends B-format to a3-core on the Core. What an instance sends (41 channels):

Ports

Channels

What

bformat_1 … 16

16

the deck’s main signal, third order

aux_1 … 16

16

the deck’s aux bus: only the stems you send, at their positions

cue_1 … 9

9

the stem cue, second order

phones_L/R

2

local only, never on the network

rec_L/R (inputs)

2

the recorder

The jack client is StemDeck-<letter>. The Core decodes the cue with the same headphone sound as everything else; StemDeck has no decoder of its own.

  • Nothing to patch by hand. On the Core a3-core’s I/O map connects the deck; on a deck host the instance links itself from its link map.

  • It never starts a JACK server: it uses JACK or PipeWire’s JACK.

  • It takes the graph’s rate and buffer and resamples itself; changing a running graph would disturb the AES67 stream. Set the rate before starting, e.g. pw-metadata -n settings 0 clock.force-rate 44100.

AUX-Send per stem

Each stem has an AUX knob (its AUX-Send) (0 to 1, default 0: nothing reaches the delay until you ask). It is a send taken after the stem’s GAIN and MUTE, so a muted stem sends nothing; a moving stem is sent from where it is. The deck’s AUX meter shows the aux bus. Only the sent stems reach the delay, not the whole deck. The AUX bus goes straight into the delay after the channel’s input-select fade and VOLUME; the desk’s AUX-Send on the deck’s channel does not scale it (it sends the deck’s main output, the channel’s own signal). A pulled fader, or a deck on no channel, sends nothing (the engine).

The panel on one deck

An A³ Motion panel on a deck’s machine plays that one deck. The stems stand under their encoders, one stem per pair of pad columns, left to right:

Control

What it does

pot (one per stem)

AUX of that stem. Absolute: the pot’s position is the value at once

upper encoder

GAIN. Push: mute; two quick pushes: GAIN back to its default

lower encoder

WIDTH (its push does nothing)

pads, per stem

ORBIT PING / RISE SCAT / CUE MUTE / ‹ › (the action’s length), in rows 3 to 6

left column

CUE, PLAY, LOOP, LOOP IN, LOOP OUT, CONTINUE

right column

SHIFT (held): the next action starts at once

The panel wins over the screen: turn a pot and the stem’s AUX on the screen follows, whatever it showed before. A stem’s pads light in its colour; a running action blinks while it waits for the bar.

The panel follows the workspace

On a shared screen the program whose workspace is in front holds the panel. The other lets go within about half a second. A program takes the panel only after its workspace has been in front for three quarters of a second, so a short visit changes nothing and the two never read the port together. A workspace of neither program changes nothing. The deck-host role (below) sets this up; by hand it is STEMDECK_PANEL_WORKSPACE (for example 2:STEMDECK) for StemDeck and A3_MOTION_PANEL_WORKSPACE (for example 1:MOTION) for A³ Motion.

In this mode StemDeck never opens the panel at start, and the Settings row Panel follows workspace is greyed out: the workspace decides. Without the variable the older rule holds: A³ Motion keeps the panel, and StemDeck takes it by its lock file (Settings, “panel: this deck”).

Deck host: what the installer sets up

On the deck’s machine (a3nuc2 for deck B today; C and D can run on any deck host, one letter per host) the installer’s deck-host role does the wiring; it asks for the deck letter, the path latency and the audio socket. It enables the deck instance, the AES67 base (stemdeck-aes67.service: PTP client and receiver) and the deck’s sender (a3-aes67-deck@<letter>), points the instance at the shipped link map, sets the path latency and the panel workspaces (StemDeck and, beside it, A³ Motion), and tells the sender which socket is the audio network. Where a3-core’s own AES67 setup is left over, the role moves it aside (not deleted; leaving puts it back), because two PTP drivers must not run: the base stays off while such a unit exists. Without the role, none of this happens by itself; the package alone links nothing.

The settings are environment variables in the units’ drop-ins, named here once: STEMDECK_LINK_MAP, STEMDECK_PATH_LATENCY_MS, STEMDECK_PANEL_WORKSPACE, A3_MOTION_PANEL_WORKSPACE and STEMDECK_AUDIO_PORT.

Path latency

A deck on another machine is heard about 18 ms later. The role asks for STEMDECK_PATH_LATENCY_MS (0 to 200, default 0; deck A leaves it at 0). StemDeck then counts a beat from when it is heard: the Pro DJ Link beats it sends as master go out when the beat reaches the PA, and it follows a master by its audible position. Two synced decks then land on the same beat at the PA. Measure the value, with the reference click, rather than guessing it. The Pro DJ Link beats go out on the control network, not the audio network.

Recording

The recorder always records the Core’s REC bus, never a separate mix, on every deck host. A USB stick (vfat, exFAT or NTFS) is mounted at /media/a3-usb when plugged in and unmounted after it has been idle; takes go to A3-recordings/ on it, otherwise to the local recordings folder. The record button shows where the take goes: USB, LOCAL, or USB RO when a stick is in but read-only (the take then goes LOCAL, so you can see it did not land on the stick). Problems show on the button’s face, not in a popup: STICK GONE if the stick is pulled mid-take (what was written stays a playable FLAC), WRITE ERR if writing fails, 100 GB FULL when the local folder is capped at 100 GB: a take does not start at the cap and a running one stops cleanly when it reaches it. Nothing is ever deleted for you. The stick has no cap but its free space.

Sync

SYNC on a deck follows the tempo master on the DJ network (Pro DJ Link): another StemDeck deck with MASTER on, on this machine or another, or a CDJ. The top bar shows what it hears:

Top bar

Meaning

SYNC: LINK

SYNC and MASTER are off

LINK 128.0 · Player 6

following the master, here deck A (player 6) at 128 BPM

LINK 128.0 · held

the master went silent; the tempo is held, the phase left alone

LINK –

nothing heard on the network yet

LINK master: A

this deck is the master

  • Tempo: the master’s × ½, 1 or 2, whichever is the smallest change, chosen when SYNC goes on; the fader range widens if needed.

  • Phase: only while both play and nobody scratches. Over 50 ms off: jump; closer: nudge, at most 2 %.

  • It aligns the beat, not the bar: set the downbeat on the grid.

  • With no master heard the deck runs on its own grid.

On the Pro DJ Link network

  • Each deck is a Pro DJ Link player whose number follows its letter: A is player 6, B 5, C 4, D 3 (the beat-analyzer is 7). A deck beyond D has no player number and says so.

  • It reads the Pro DJ Link ports (prolink.*) from a3-osc.json (Where addresses live). On the Core it follows Core’s file and restarts its window once (about 5 s) when it changes (Following Core). Without the ports, SYNC and MASTER are greyed out and say so.

  • It shares the ports with the beat-analyzer (player 7) on one machine.

Ask the venue before joining their Pro DJ Link network.

MASTER: StemDeck as the tempo master

With no CDJs, MASTER on a deck makes it the Pro DJ Link tempo master. The beat-analyzer (mode 2) and A³ Motion on PIO follow, and so does every other deck with SYNC on. The delay follows the tempo of the MASTER deck too when no beat clock runs (delay tempo). Whole chain: Playing without CDJs.

  • Press MASTER to take it, again to drop it. A deck without a beat grid refuses it: wait for the BPM.

  • The newest press wins. Press MASTER on deck B and deck A gives it up, on any machine. There is no automatic master: a deck that just plays does not take it.

  • Sends, as the deck’s player, a beat packet per beat (BPM × fader, beat counted from the grid’s first beat) and a status packet every 200 ms.

  • Broadcast on the first non-loopback interface that can, so a listener on the same machine hears it.

  • Beats are timed to about 1 ms on their own thread: none lost, none doubled, no burst after a jump.

  • Top bar: LINK master: A (or B, C, D).

Packets follow prolink-connect’s reading. Independent implementation; not affiliated with AlphaTheta or Pioneer — see Trademarks and Pro DJ Link.

The older two-deck mode

Started without -bformat, StemDeck is the older two-deck app: decks A and B in one window, a stereo mixer with a bus switch per stem (stem N on desk channel N, or on AUX), AUTO DJ, SYNC to the other deck, keyboard keys and up to two Stanton SCS.3d controllers. It predates a3-core’s audio backend. On a Core its unit stemdeck.service is kept off, and these pages describe only the one-deck StemDeck.

Build and start

Needs CMake ≥ 3.22, a C++17 compiler, pkg-config, JUCE (the A³ version, found under ~/local/juce unless CMAKE_PREFIX_PATH says otherwise), and:

apt install libjack-jackd2-dev libflac-dev libvorbis-dev libogg-dev librubberband-dev

librubberband-dev is for key lock; a built StemDeck needs librubberband3 to run. Key lock uses the Rubber Band Library (GPL-2.0-or-later, used under GPL-3.0-or-later). Stem splitting uses Demucs.

GoogleTest (libgtest-dev) only for the tests. Then:

./start.sh

It configures a Release build in build/ once, rebuilds what changed and starts StemDeck via JACK, pw-jack or ALSA. Its arguments go to StemDeck: ./start.sh -bformat --deck A starts one deck; without -bformat it is the older two-deck app. Binary: build/StemDeck_artefacts/Release/StemDeck.

Settings live in ~/.config/StemDeck/, with analysis.xml (tempo analyses and grids, per file, size and date). Delete it, with StemDeck closed, to analyse everything again.

Session

Each deck keeps its own session, ~/.config/StemDeck/<letter>/session.xml (deck A: ~/.config/StemDeck/A/session.xml), written while anything changes and on quit. The next start restores the deck, key lock, the library and the stem jobs; a playing deck plays on.

Always running on the Core

Deck A is the user service stemdeck@A, on i3 workspace 2:STEMDECK; the Core starts it with everything else (a3-main.service). The package’s i3 config tiles the main window borderless (i3 full screen would make every dialog full screen); all other windows float. A further deck on the Core is stemdeck@C, stemdeck@D, and so on.

Warning

Do not restart StemDeck mid-set. Its JACK client leaving and joining causes xruns: clicks on everything the Core plays.

Troubleshooting

Symptom

What to do

A set is missing

Exactly four files, one name, different endings. Rescan. Right folder? Settings

separator not installed

Set it up once

Stems are slow to make

Idle priority on the free cores; see separatorCores

Nothing to hear

Is the deck on a desk channel (INPUT on its letter) with the fader up? On the Core: the deck’s links on the a3-core window’s I/O page. On a deck host: the link map

JACK-Server wurde beendet

JACK went away. Restart StemDeck after JACK

A stem does not move

Stems only move while an action runs: tap ORBIT, PING, RISE or SCAT and wait for the next bar. Is the deck on a desk channel (INPUT on its letter) with the fader up?

A³ Motion ignores MASTER

Wait for the BPM; deck playing, top bar LINK master? Motion on PIO?

Downbeat on the wrong beat

Play to the real first beat of a bar, then GRID, SET 1 (the bar’s one goes exactly where the playhead is, QUANTIZE or not). If you use SNAP instead, switch QUANTIZE off before you set the cue: with QUANTIZE on the cue is rounded to a beat of the old grid, so SNAP could only shift the downbeat by whole beats

SYNC and MASTER greyed out

No Pro DJ Link ports: no truth found, or an old one. It looks in $A3_OSC_TRUTH, ~/.cache/a3/a3-osc.json (filled by Core’s announcement) or /usr/share/a3/a3-osc.json (from a3-core)

LINK – while a master plays

Its packets don’t arrive: same network? Is the master’s deck playing?