# Swarm — User Manual

**Swarm** is an audio effect plugin that takes care of one difficult
thing: making your tracks get out of each other's way, all by
themselves. Drop one instance of Swarm on each track, link them
together, and they form a swarm that self-regulates in real time. The
mix breathes and balances itself, without you automating EQs or
sidechains.

---

## In two sentences

Every Swarm instance watches its own track (where it sits in the
spectrum, whether it is loud or quiet, where it is in the stereo
field). All instances in the same group then talk to each other in real
time through shared memory, ask each other "where are you at?", and
each one subtly adjusts its own EQ, gain and pan so the whole stays
coherent and clear.

The result: a mix that regulates itself. Colliding frequencies move
apart. Levels come together. All of it without you touching a single
automation lane.

---

## Installation

### macOS

1. Download `Swarm-1.2.1-macOS.dmg`.
2. Open the `.dmg` and double-click the `.pkg`.
3. Follow the installer. Nothing to work around: since 1.2.0 both the
   disk image and the installer are signed with an Apple Developer ID
   and notarized by Apple, so macOS opens them normally. The publisher
   shows as **Tony Cuny** — that is the legal name behind Xeni Audio,
   which is what Apple puts on the certificate.
4. The plugin installs into `~/Library/Audio/Plug-Ins/` (VST3, CLAP and
   AU).
5. Restart your DAW and rescan your plugins.

### Windows

**With the installer (recommended)**

1. Download `XeniAudio-Swarm-V1.2.1-Installer.exe`.
2. Run it and follow the steps. The Windows installer is **not** signed
   yet — only macOS is — so SmartScreen may warn that the publisher is
   unknown: click "More info", then "Run anyway". Your antivirus may
   also flag a brand-new unsigned installer; that is a reputation
   heuristic, not a detection. If you would rather avoid it, use the
   `.zip` below, which contains the same plugin files.
3. The installer places the plugins in the standard locations:
   - VST3 → `C:\Program Files\Common Files\VST3\`
   - CLAP → `C:\Program Files\Common Files\CLAP\Swarm\`
4. Restart your DAW and rescan your plugins.

The installer registers an entry in "Apps & features", so Swarm can be
removed from Windows Settings like any other application.

**Manual install (portable ZIP)**

1. Download `Swarm-1.2.1-Windows.zip`.
2. Extract the archive.
3. Copy the contents of the `VST3` and `CLAP` folders into the
   locations your DAW scans (typically
   `C:\Program Files\Common Files\VST3\` and
   `C:\Program Files\Common Files\CLAP\`).
4. Restart your DAW and rescan your plugins.

### Linux

1. Download `Swarm-1.2.1-Linux.tar.gz`.
2. Extract the archive.
3. Copy `Swarm.vst3` into `~/.vst3/` and `Swarm.clap` into `~/.clap/`.
4. Restart your DAW and rescan your plugins.

---

## Quick start — 3 steps

1. **Insert one instance of Swarm on each track** you want in the swarm
   (for example: guitar, vocals, bass, keys, drums).

2. **Give every instance the same Link Slot.** In each plugin window,
   set "Link Slot" to the same number (0 by default). Every instance
   sharing a slot forms one swarm. You can run several swarms in the
   same mix (slot 0 for the rhythm section, slot 1 for the vocals, and
   so on).

3. **Raise Intensity.** Set it to 100% to begin with. You will hear the
   swarm come alive: clashing frequencies move apart, levels converge,
   the stereo image opens up. If the effect is too strong, lower
   Intensity. If you want it more pronounced, push it beyond 100% (up
   to 300% for an extreme effect).

That's it. Everything else is optional.

---

## Where Swarm goes in the chain

The most common question about Swarm, and the manual used to skip it.

**Last on the insert chain, after your corrective processing.**

Put your EQ, your de-esser and your compressor first, as you always
would. Those decisions belong to the *source*: a boxy guitar is boxy
whether or not anything else is playing, and you fix that once and stop
thinking about it. Swarm should see the track you have already decided
is right.

What Swarm handles is the other kind of problem — the one that only
exists because of what is playing *alongside* it, and only for as long
as it is playing. The guitar and the synth are not individually wrong;
they are wrong together, in the chorus, and fine apart in the verse. You
cannot fix that with a static setting, because the problem is not static.
That is the whole reason Swarm is continuous rather than a set of moves
you dial in.

So the rule of thumb:

- **Before Swarm:** anything that fixes a property of the source. EQ,
  de-essing, gating, the compression that gives the part its shape.
- **After Swarm:** anything you want left untouched by it. Print
  effects, a character saturator you have committed to, sends.
- **Never on the master.** Swarm is a per-track plugin; it negotiates
  *between* tracks. One instance on the mix bus has nobody to talk to.

Bus processing is a reasonable place for it too — one instance per
sub-group rather than per track — and that scales better on large
sessions. See the hierarchical recipe under Link Slot.

---

## The four forces — what Swarm does

Swarm applies four rules, each adjustable independently. Think of them
as four invisible assistants, each looking after one aspect of the mix.

### Separation — spectral separation

When two tracks step on each other in the same frequency range (say, a
guitar and a keyboard fighting over 2 kHz), Separation gently pulls one
back and pushes the other forward, so they make room for each other. It
is the equivalent of a dynamic EQ, except you never have to say *where*
to cut: the swarm decides on its own, in real time, based on what the
other tracks are playing.

### Alignment — level alignment

Alignment helps tracks settle at a common level and move together. When
one track jumps in volume, the others gently follow. This is the
"groove" of the mix. Alignment is not aggressive compression: it
adjusts each track's gain very subtly so the whole holds together, like
a band of musicians listening and adapting to each other in real time.

### Cohesion — tonal cohesion

Cohesion gently pulls each track's timbre towards a shared centre of
gravity. If one track is very bright and another very dark, Cohesion
brings them closer without flattening them out — each track keeps its
identity, but the whole sounds coherent. A dead zone protects the
extremes (a big bass will not suddenly turn bright).

### Pan Spread — stereo separation

Pan Spread pushes apart tracks that are piling up in the same spot of
the stereo image. Guitar to the left, keys to the right — without you
touching a pan control. It is **mono-compatible**: no phase
colouration, no delay. If you want a track to stay dead centre (drums,
bass, kick), enable "Pin Center" on that instance and it will be
excluded from the stereo motion.

---

## The main controls

| Control | What it does | Tip |
|---------|--------------|-----|
| **Intensity** | The overall strength of the swarm. Drop to 0% to disable everything. Push to 300% for an extreme effect. | Start at 100%. This is your master swarm level. |
| **Separation** | The weight of spectral separation (anti-masking). | If two tracks are stepping on each other, raise it. |
| **Alignment** | The weight of level alignment. | Light by default (20%). Too strong and the mix loses dynamics. |
| **Cohesion** | The weight of tonal cohesion. | 50% by default. A good balance between identity and coherence. |
| **Pan Spread** | The weight of stereo separation. | 30% by default. Raise it for a wider mix. |
| **Reactivity** | How fast the swarm reacts. At 0% it is glacially slow. At 100% it reacts bar by bar. | 50% is the original setting, validated on three mixes. |
| **Bias** | Which end of a spectral clash this track claims. Positive = it takes the highs, negative = the lows, centre = position decides. | Leave at centre until two tracks separate the wrong way round. Per instance, never shared. |

---

## Advanced controls

### Crest — the transient designer

The **Crest** knob works on the track's transients. It analyses the
difference between the peaks (attacks) and the body of the signal, then
adjusts each instance's dynamics.

- **Positive Crest (> 0)**: boosts the attacks, adds punch.
- **Negative Crest (< 0)**: densifies the signal, flattens the peaks.
- **Crest Spread**: distributes punch across the swarm. A track with a
  lot of punch nudges the others into leaving room for it.

**Important:** Crest needs at least 8 dB of dynamic range to work
properly. If your track is already heavily compressed (less than 8 dB
of crest), the knob greys out — that is expected, there is nothing left
to sculpt.

### Pin Center — lock to the centre

Enable "Pin Center" on tracks that must stay in the middle of the
stereo image: drums, bass, kick. Those tracks are excluded from Pan
Spread's motion.

### Link Slot — grouping instances

Every instance sharing the same Link Slot number forms one swarm. By
default everyone is on slot 0. Change the number to create separate
groups.

There are **16 slots (0–15)**, and Swarm supports **64 instances** in a
session, spread across those slots however you like. That is enough to
give a full orchestral template one slot per section — strings, woodwind,
brass, percussion, and so on — instead of forcing everything into one
swarm.

Instances only ever regulate each other **within a slot**. Nothing
crosses from one slot to another, so a busy percussion group cannot pull
on your strings.

A practical note: a swarm gets its character from how different its
members are. Twenty near-identical string tracks in one slot will mostly
cancel each other out, which is why splitting into sections tends to
sound better than one giant group — not just tidier.

#### Recipe: hierarchical slots

This one came from a user, and it is better than anything suggested
above. Rather than putting every track in one swarm, negotiate at two
levels:

1. Inside each sub-group, give the stems their own slot. Drums on slot
   1, guitars on slot 2, keys on slot 3, and so on. Each set of stems
   sorts itself out among things it is actually comparable to.
2. Then put one instance on each sub-group bus, and give all of those
   the *same* slot — say slot 0. Now the sub-groups negotiate with each
   other, as whole entities.

The reason it works is the practical note above: a swarm only has
something to say when its members are different enough to be worth
separating. Two levels means each swarm compares like with like, and a
kick is never asked to get out of the way of a backing vocal.

It also scales. Sixty tracks in one slot is a swarm where everything is
pulling on everything; the same session as six groups of ten plus a
six-member top level stays well inside the 16 slots and 64 instances,
and each negotiation stays legible in the feature space.

### Link Params — synchronising settings

Enable "Link Params" so that every instance in a given Link Slot shares
the same force settings — the first 8 bars: Intensity, Separation,
Alignment, Cohesion, Pan Spread, Reactivity, Crest and Crest Spread.
(Bias is not among them; see below.) When you
change a setting on one instance, all the others in the same group
inherit it. This is handy when you want to steer the whole swarm from a
single window, without opening every instance.

Pin Center, Bypass and Link Slot stay **local** to each instance, even
when Link Params is on.

**BYPASS ALL** (top right, next to BYPASS) is the exception: it is a
group switch like Link Params. Clicking it on any instance bypasses
*every* instance sharing that Link Slot, and clicking it again brings
them all back. It works whether or not the other windows are open, and
it crossfades rather than switching hard, so you can flip it mid‑playback
without a click on every track.

Use it to answer "what is the swarm actually doing to my mix?" — the
per‑instance BYPASS next to it only silences the processing on the one
track you are looking at. Bypassed instances stay members of the swarm:
they keep feeding their own analysis to the others, they just stop
applying the swarm's moves to themselves.

**Link Params is a group switch.** Clicking it on *any* instance turns
it on — or off — for the whole Link Slot at once. You do not need to
enable it on each instance, and you cannot have some instances linked
and others not within the same slot.

**Turn it off when you want per-track control.** Intensity is one of
the shared settings, so while Link Params is on, every track yields to
the swarm by exactly the same amount. That makes it impossible to give
one track priority over another — see the next section.

---

## Setting priority — which track wins

Swarm has no leader. No instance is in charge, and none of them
negotiates on behalf of the others. So how do you tell it that the kick
matters more than the bass?

**You set priority with Intensity, per instance.**

Intensity scales the forces applied **to that instance only**. What an
instance publishes to the swarm — where it sits in the spectrum, its
level, its pan, its crest — does not depend on its own Intensity at
all. So an instance at low Intensity yields less, while still pushing
everyone else exactly as hard.

Take that to the limit and you get an anchor:

> **Intensity at 0% on the kick makes it a pure anchor.** The swarm
> never moves it, and it still moves everything else. Keep the instance
> loaded — that is what feeds the kick's position into the swarm.

That is the whole mechanism. There is no leader flag because you do not
need one: **priority is simply who yields.** Give the tracks that must
stay put a low Intensity, and the tracks that can move a high one.

Remember that Intensity is shared when Link Params is on. **Turn Link
Params off before setting priority**, otherwise every track gets the
same value and nothing can take precedence.

### Bias — choosing the direction

Intensity decides **who yields**. **Bias** decides **which way**.

By default Separation works purely on position: whichever instance sits
higher in the spectrum than the rest of the swarm gets pushed brighter,
whichever sits lower gets pushed darker. Nothing knows that one of them
is a guitar. So when two sources genuinely occupy the same range — a
guitar and a synth in the same register is the classic case — the force
is at its strongest and the direction is decided for you.

Bias is how you overrule that. It is the ninth bar, to the right of the
force bars, and it is **per instance**:

| Bias | Meaning |
|------|---------|
| **Centre (0%)** | Position decides. The default, and how every version before 1.2.0 behaved. |
| **Positive** | "I take the highs." This track claims the top of any clash it is in. |
| **Negative** | "I take the lows." It yields the top and takes the bottom. |

Set the guitar to -40% and the synth to +40% and the split stops being
arbitrary: the synth gets the air, the guitar keeps the body, and they
still separate by exactly as much as they actually overlap.

Two things worth knowing:

- **Bias changes direction, not amount.** How hard two tracks separate
  still comes from how much they really overlap. A bias between two
  tracks that never share a range does nothing at all, because there was
  no force to steer.
- **Bias is never shared.** It is the one bar Link Params leaves alone —
  which is why it sits outside the orange halo. A bias every instance
  had in common would cancel out and mean nothing; the whole point is
  that instances disagree about who gets the top.

For a pair, biasing **one** of them is usually enough. Push both in
opposite directions only when you want the split to be emphatic.

### Recipe: kick and bass

This is the hardest pair in any mix, because the two genuinely overlap
exactly where Separation pushes hardest.

| Track | Intensity | Bias | Pin Center | Why |
|-------|-----------|------|------------|-----|
| Kick | 0–30% | -30% | On | Stays put, keeps the low end anchored, and claims the bottom |
| Bass | 100%+ | +30% | Off | Does the moving, and moves *upward* out of the kick's way |

The Bias column is what stops the pair separating the wrong way round.
Kick and bass sit close enough in centroid that, left to position alone,
which of them brightens on any given bar depends on the arrangement. Two
small opposite biases make it consistent: the kick keeps the sub, the
bass finds the room above it.

If it still sounds busy, **lower Reactivity on the bass**. Lower is
slower. Most of what people hear as two tracks "fighting" is simply the
two of them moving at each other faster than the music does.

And if you would rather they never interact at all, put them in
different Link Slots.

---

## The interface — what you see

Swarm's interface is designed to be readable at a glance, even while
you are mixing.

### The feature space (the big central area)

This is Swarm's signature. Each instance is drawn as a glowing dot in a
graph. The horizontal axis shows where the track sits in the spectrum
(left = lows, right = highs). The vertical axis shows its level (higher
= louder).

- The orange dot is **you** (the instance you have open).
- The other markers are the **other instances** in the swarm. Each one
  has its own colour **and its own shape** — circle, square, triangle or
  diamond. The shape is there so you can still tell instances apart if
  the colours are hard to distinguish; the flock legend uses the same
  pairing.
- The dashed orange line is the swarm's **centre of gravity**.
- The trails behind the markers show their **trajectories**.
- The **arrow** on each marker is the correction being applied to that
  track right now. Read it as: the marker is where the track *is*, the
  arrow is where the swarm is *pushing it*.

That distinction matters, so it is worth being precise about it.

**The markers show the input.** Swarm measures each track before it
processes it — deliberately, because an instance has to keep its place
in the swarm even while it is bypassed. So a marker does not move
because Swarm corrected something; it moves because the *music* moved.

**The arrows show the output.** The vertical part of an arrow is the
level correction, in dB, read directly off the same dB scale as the
axis. The horizontal part is the tilt EQ, converted to a distance using
a fixed convention: 6 dB of tilt is drawn as one octave of apparent
brightness. It is a legible convention, not a measurement — a tilt EQ
does not literally move a track's spectral centroid.

So: markers spreading apart on their own is the music. Arrows pointing
apart is **Separation**. Arrows pointing up or down toward the rest of
the flock is **Alignment**. When nothing is playing, or when the flock
is bypassed, the arrows shrink to nothing and disappear.

> Earlier versions of this manual said that a dot rising to join the
> others was Alignment at work. That was wrong: the dots never showed
> the corrections at all. The arrows, added in 1.2.0, are what fixes it.

### The force bars

In front of the feature space you will see 9 coloured horizontal lines.
Each one is a control. Click and drag vertically to adjust the value.
Double-click to reset to the default. Use the mouse wheel for fine
adjustment.

When "Link Params" is on, an orange halo surrounds the **first 8** —
those are the ones shared across the group. **Bias**, the ninth, sits
deliberately outside the glow: it is local to this instance and is never
shared. If the halo is on, anything inside it belongs to the swarm and
anything outside it is yours alone.

### The flock legend

To the right of Pin Center / Link Slot / Link Params you will find one
row per instance in your swarm, each carrying the colour **and shape**
of that instance's marker in the feature space. It answers the question
the graph alone cannot: **which marker is which track?**

Hover a row and that instance's marker gets a ring in the feature space,
while the panel below shows exactly what the swarm is applying to it.
The rows never move, so there is nothing to chase with the mouse.

### Naming your instances

Under the Swarm title, each instance shows its name — this is what the
other instances display for it in the legend and in the feature space.

**Double-click the name to change it** — the small pencil beside it is
there to mark it as editable. Type whatever identifies the track to
you; it is saved with the project.

On VST3 the name starts as the **host's track name**, so in most cases
there is nothing to do. On AU and CLAP the host does not give us the
track name, so instances start as "Swarm #1", "Swarm #2" and so on, and
renaming them by hand is worth the thirty seconds — a legend full of
numbers tells you nothing.

### The action panel — what the swarm is actually doing

Just below the three buttons, four bars show the corrections being
applied **right now**:

| Bar | What it shows |
|-----|---------------|
| **EQ** | The 3-band tilt, in dB. Positive lifts the highs, negative lifts the lows. |
| **GAIN** | The level correction from Alignment, in dB. |
| **PAN** | The stereo displacement from Pan Spread. |
| **TRAN** | The transient shaping from Crest, in dB. |

Each bar fills from the centre, and takes the colour of the force that
produces it — the same colour that force has in the bars above. The
label on the left is always the reliable way to read the panel; the
colour is only there to tie the row back to its force.

> **On colour.** Up to 1.1.2 Separation was red and Alignment was green,
> stacked directly on top of each other: the one pairing that disappears
> for anyone with red-green colour vision deficiency, which is roughly
> one man in twelve. 1.2.0 moves the whole force palette to a
> colourblind-safe one, and no part of the interface now depends on
> telling two hues apart — every bar is labelled, and instance markers
> carry a shape as well as a colour.

By default the panel shows **your** track, with an orange strip down
its left edge. Hover a row in the flock legend and it switches to that
instance, the strip taking the colour of its dot. This is how you check
what Swarm is doing to a track without opening its window.

When nothing is playing every bar sits at zero: silent tracks leave the
swarm, and a swarm with nothing to arrange applies nothing.

### Presets

The preset selector at the top right offers 5 ready-made settings:

- **Init** — everything at default, a neutral starting point.
- **Subtle** — the swarm works gently, almost invisibly. Ideal for a
  mix that is already good and just needs finishing.
- **Wild** — the swarm off the leash: intensity at 220%, fast reaction,
  wide spectrum. For an obvious effect.
- **Spectral Only** — only spectral separation and tonal cohesion are
  active. Alignment and Pan at zero.
- **Spatial Only** — only Pan Spread is active. For widening a mix
  without touching the spectrum.

You can save your own presets, compare them (A/B), and undo/redo your
changes (20 levels).

### The meter bar (at the bottom)

Five small horizontal meters give you a technical overview: **IN**
(input level), **OUT** (output level), **GR** (gain reduction applied
by the swarm), **Crest** (the track's dynamic range), and **LUFS**
(perceived level, BS.1770 standard, over 3 seconds).

### The help bar (right at the bottom)

Hover any control with the mouse and an explanation appears at the
bottom of the window. It tells you what that control does, in plain
language.

---

## Licensing and demo mode

Swarm runs in **demo** mode until you activate it. In demo mode the
sound is muted for 5 seconds every 60 seconds (with fades, to avoid
clicks). Everything else works normally: you can try every feature and
save your settings.

Every demo instance mutes at **the same moment**, so the mix drops out
as a whole and comes back as a whole. That way you can still judge how
the swarm balances your tracks against each other — which is the whole
point of trying it. Offline bounces are unaffected by this and keep the
usual cadence.

To activate Swarm:

1. Click the "DEMO" badge at the top right.
2. Enter your license key (format `XENI-XXXXXXXX-XXXXXXXX`, or a
   Gumroad key).
3. Click "Activate".

You can also paste your key with the "Paste" button or the keyboard
shortcut (Ctrl+V / Cmd+V).

Once activated, the DEMO badge disappears and the sound is no longer
muted.

---

## Mixing tips with Swarm

- **Start light.** Set Intensity to 50% and work your way up. Swarm is
  subtle by nature — you may not notice it working until you switch it
  off and the mix falls apart.
- **Fewer instances is sometimes better.** Swarm speaks more clearly
  with 4 to 8 instances than with 20. If the mix sounds confused,
  reduce the number of tracks in the swarm.
- **Bypass and compare.** BYPASS at the top right does this one
  instance; **BYPASS ALL** next to it does the whole group in one
  click, from any window, so you can hear what the swarm is doing to
  the mix as a whole. Both crossfade, so it is safe to flip during
  playback.
- **Pin your centre elements.** Drums, bass, kick: enable "Pin Center"
  so they stay in the middle of the stereo image.
- **Anchor what must not move.** Drop Intensity to 0% on your kick and
  it becomes a fixed reference the rest of the swarm arranges itself
  around. See "Setting priority" above.
- **Crest needs air.** If a track is already heavily compressed, leave
  Crest at 0 — the knob greys out anyway.
- **Link Params to audition, not to mix.** Turning it on lets you dial
  the whole swarm from one window, which is ideal for finding a
  starting point. Turn it back off to give individual tracks priority —
  while it is on, every track yields by the same amount.
- **Watch the action panel when in doubt.** If you are not sure Swarm
  is doing anything, hover the tracks in the flock legend and read the
  four bars. It is faster than soloing.
- **Save your settings.** Find a sound you like, save it as a preset,
  and compare it against other configurations.

---

## Supported formats

- **VST3** — Windows, Linux, macOS
- **CLAP** — Windows, Linux, macOS
- **AU** (Audio Unit) — macOS only (Logic Pro, GarageBand, etc.)

On macOS the plugin is **universal**: it runs on both Intel Macs and
Apple Silicon Macs (M1, M2, M3...).

---

## Known limitations

- **Reaper (Windows, VST3):** window resizing does not work in Reaper
  with the VST3 build. Use the CLAP version instead.
- **Cubase and Nuendo (Windows):** the resize grip in the bottom-right
  corner does nothing, and the window size is not remembered between
  editor openings. Resize with the host's own plugin-window frame.
  Asking Cubase to resize us from our own interface thread is what
  crashed it before 1.2.1, so the request is no longer sent at all.
- **Stereo only.** Swarm works in stereo (2 in, 2 out). There is no
  mono or surround mode.
- **LUFS over 3 seconds.** The LUFS meter shows the average perceived
  level over a 3-second sliding window (BS.1770 short-term standard).
  It is not the integrated LUFS of the whole track.
- **64 instances, 16 slots.** Beyond 64 instances in a session, further
  instances still process audio normally but stay solo — they do not
  join a swarm.
- **Bias steers direction, not amount.** It cannot make two tracks that
  do not overlap separate, and it cannot force a bigger move than the
  overlap justifies. See "Bias — choosing the direction".
- **Track names are VST3 only.** Instances take their name from the host
  track where the host provides it, which VST3 hosts do. On AU and CLAP
  the default stays "Swarm #N" — rename by hand (double-click the name).
- **Mixing versions.** Instances of different Swarm versions in the same
  session do not see each other, and form separate swarms without
  warning. Update every instance together.

---

## Support

Website: https://xeni-audio.com

---

*Swarm v1.2.1 — Copyright 2026 Xeni Audio. All rights reserved.*
