% PhantomTrack — User Manual
% XeniAudio
% v0.9.0

---

# PhantomTrack

**A shared "phantom" layer for your whole session.**

PhantomTrack is a multi-instance audio effect (VST3 / CLAP / Audio Unit) that
builds a third, *ghostly* voice out of the tracks already playing in your
project. One instance pushes a track's audio into a shared pool; any other
instance can pull that pool back in, run it through three synthesis engines —
harmonic, rhythmic and spectral-wash — and blend the result on top of its own
signal. The character of that phantom is morphed on an XY pad between four
sonic anchors: **Whisper / Poltergeist / Abyss / Monolith**.

The result is a layer that "shadows" your music — phantom harmonies, rhythmic
echoes and spectral washes that breathe with the source but live on their own
track, fully under your control.

---

## 1. The phantom layer — the core idea

Most effects process the track they sit on and hand the result back. PhantomTrack
does something different: it treats your **whole session** as a source of raw
material and synthesises a separate, parallel voice — the **phantom layer** —
from it.

Think of the phantom layer as an invisible extra musician in the room. It
listens to what you feed it, and it answers with:

- **phantom harmonies** that track the pitch of the source,
- **phantom rhythms** — grains and echoes derived from the source's transients,
- a **phantom wash** — an evolving spectral reverb-like bed.

These phantom notes are never a copy of the input. They are *re-synthesised*
from it, so they sit beside the original rather than thickening it directly.

### How the layer is shared

PhantomTrack instances talk to each other through **inter-instance shared
memory** (no audio routing, no sidechain cables). Each instance runs in one of
two modes:

- **RECV** (default) — the instance reads the shared phantom pool, synthesises
  its phantom layer from it, and **adds** that layer to its own output.
- **SEND** — the instance pushes its own dry input **into** the shared pool for
  other instances to use, and passes its own audio through **unchanged**.

So the classic setup is: put PhantomTrack in **SEND** on the track you want to
be the *source* (a vocal, a drum bus, a synth), and put PhantomTrack in
**RECV** on the track(s) where you want the phantom to *appear*. The phantom
of the vocal can now haunt a pad, a reverb return, or an empty track — wherever
you placed a RECV instance.

> A single RECV instance on its own already works: with no SEND peer it builds
> the phantom from its **own** input. SEND/RECV simply lets the phantom of one
> track surface on another.

---

## 2. Quick start

### A. One instance (simplest)

1. Insert PhantomTrack on a track.
2. Leave **Mode = RECV**.
3. Drag the **XY pad** toward one of the four corners (start at **Monolith**,
   top-right, for a dense, obvious effect).
4. Raise **Dry / Wet** is already at 100 % — the phantom is added on top of your
   dry signal. Pull it back if you want less phantom.
5. Use **Return level** to set how loud the phantom sits under the dry.

### B. Two instances (the phantom of another track)

1. Insert PhantomTrack on your **source** track (e.g. lead vocal). Set
   **Mode = SEND**. This track now sounds unchanged but feeds the shared pool.
2. Insert PhantomTrack on a **second** track or an empty aux. Leave
   **Mode = RECV**.
3. The two instances find each other automatically — the **Linked peers** badge
   in the header shows the connection.
4. On the RECV instance, move the XY pad and raise **Return level**: you now hear
   a phantom built from the vocal, living on the second track.
5. Add more RECV instances on other tracks for several independent phantoms of
   the same source, each with its own character.

---

## 3. The three engines

Every phantom is the sum of three streaming engines, mixed and then shaped by a
shared post-processing stage. Their relative balance is set by the active anchor
(see §4) and trimmed by the three level sliders (see §5).

| Engine | What it does |
|---|---|
| **Harmonic** (HarmonicCloud) | Pitch-tracks the source (YIN detector) and grows a cloud of tuned, detuned voices above it — the melodic/harmonic part of the phantom. |
| **Rhythmic** (RhythmicEcho) | Captures grains from the source's transients and replays them as rhythmic echoes, with a freeze/hold control for sustained tones. |
| **Spectral wash** (SpectralWashV8) | An evolving spectral bed — a reverb-like wash with an airy "whisper" noise layer that is gated by the input envelope so it fades in around the source rather than hissing constantly. |

After the three engines are summed, a **post-mix shaper** applies the global
HP/LP filters, saturation, darkness, ducking, stereo width and pre-delay before
the phantom is returned into the dry signal.

---

## 4. The four anchors & the XY pad

The large square on the left is the **XY morph pad**. Its four corners are
*anchors* — complete voicings that set the balance and tone of all three engines
at once. Dragging anywhere inside the pad blends smoothly between them.

> Info-bar hint: *"XY morph — Blend between the 4 phantom characters (Whisper,
> Poltergeist, Abyss, Monolith)."*

| Corner | Anchor | Character |
|---|---|---|
| Bottom-left | **Whisper** | Airy and crystalline. Harmonics and the whisper noise layer dominate; light, high, shimmering. Great on vocals, cymbals, pads. |
| Bottom-right | **Poltergeist** | Restless and rhythmic. The echo engine and drive come forward — grain, stutter, motion. Great on percussion and rhythmic sources. |
| Top-left | **Abyss** | Deep and sustaining. Long pre-delay, darker tone, a sympathetic drone-like tail. Great on pads and long notes. |
| Top-right | **Monolith** | Dense and cinematic. All three engines blended thick — the biggest, most obvious phantom. Great on beds and atmospheres. |

The corners are deliberately "sticky": positions near a corner keep that anchor's
identity, while the centre is a balanced blend of all four. Toggle **Snap to
grid** to quantise the pad to a 1/8 grid for repeatable positions.

The XY position is two automatable parameters (**XYx**, **XYy**, default centre
0.5 / 0.5), so you can ride the character over time from your DAW.

---

## 5. Main controls

All ranges below are exact. Hover any control in the plugin to see the same help
text in the **info bar** at the bottom of the window.

### Level sliders (left of the pad)

| Control | Range / default | Help text |
|---|---|---|
| **Harmonic trim** | −24…+24 dB (0) | Boost or cut the harmonic engine on top of the XY anchor (±24 dB). |
| **Rhythmic trim** | −24…+24 dB (0) | Boost or cut the rhythmic-echo engine on top of the XY anchor (±24 dB). |
| **Wash trim** | −24…+24 dB (0) | Boost or cut the spectral-wash engine on top of the XY anchor (±24 dB). |
| **Return level** | −24…+24 dB (0) | How much of the phantom mix returns into the dry signal (±24 dB). |
| **Dry / Wet** | 0…100 % (100 %) | 0 % = dry only, 100 % = dry + full phantom layer added on top. |

> The trims are **relative** to the anchor: they nudge each engine up or down
> from whatever the XY pad set. **Return level** is the master phantom-to-dry
> balance. **Dry / Wet** crossfades the whole phantom in and out.

### Footer controls

| Control | Range / default | Help text |
|---|---|---|
| **HP filter** | 20…2000 Hz (60) | Global high-pass on the phantom output. |
| **LP filter** | 1000…20000 Hz (10000) | Global low-pass on the phantom output. |
| **Wow** | 0…1 (0) | Tape-style wow modulation on the wash layer (BPM-synced when host gives a tempo). |
| **Mode** | RECV / SEND (RECV) | RECV = receive peers and add phantom. SEND = push the dry to SHM only, no audio modification. |

### Header controls

| Control | Help text |
|---|---|
| **Bypass** | Plugin-internal bypass — output equals input. |
| **Advanced** | Show the per-engine override panel. |
| **Instance name** | Click to rename this instance (visible to other PhantomTrack peers). |
| **Linked peers** | Click to open the peer list — mute / unmute each linked instance. |
| **Preset Prev / Next / name / Save** | Step through, browse and save presets. |

---

## 6. The Advanced panel

Click **Advanced** in the header to open a second row of per-engine controls.
These mirror values the XY pad would otherwise set for you.

**Override-on-touch:** while you leave an Advanced knob alone, the engine uses
the value the XY pad interpolates from the anchors. The moment you *touch* a knob
(or automate it from the host), that knob "takes over" and the engine uses your
value verbatim. **Double-click** a knob to hand control back to the XY pad.

| Knob | Range / default | Help text |
|---|---|---|
| **Character** | 0…1 (0.5) | Engine vibrato depth + harmonic motion (0..1). Override sticky on touch. |
| **Saturation** | 0…1 (0) | Tape-style asymmetric drive on the phantom output (0..1). |
| **Darkness** | 0…1 (0) | High-shelf cut @ 2 kHz on the phantom (0..1). |
| **Ducking** | 0…1 (0) | Inverse sidechain from the dry envelope — phantom ducks when dry is loud. |
| **Stereo width** | 0…2 (1) | Haas decorrelation, 0 = mono, 2 = wide. |
| **Predelay** | 0…600 ms (0) | Phantom delay before mixing into the dry, ms. |
| **Wash LP** | 1000…15000 Hz (5000) | Spectral-wash internal low-pass cutoff. |
| **Freeze** | 0…1 (0) | Tonal freeze tail — amount of resynth at grain expiry. |
| **Freeze tone** | 1…15 (5) | Magnitude / mean gate above which the freeze fires (1..15). |

### Wash root note

At the end of the Advanced row, the **Wash root note** selector controls the
pitch the spectral wash resonates around:

> *"Auto follows the detected pitch. Click to lock to a specific MIDI note."*

- **Auto** (default, value −1) — the wash follows the fundamental detected in the
  source, so it stays musically related to what's playing.
- **Locked** (a MIDI note, 0…127) — click to pin the wash to a fixed pitch (for
  example to lock it to the key of the song regardless of the source).

**Ducking** is especially useful: set it above 0 and the phantom automatically
steps back whenever the dry signal is loud, then swells in the gaps — keeping the
original clear while still filling the space.

---

## 7. Multi-instance routing (SEND / RECV)

PhantomTrack instances in the same session discover each other automatically
through shared memory — there is no manual cabling.

- **RECV** instances read the shared pool and produce a phantom.
- **SEND** instances feed the pool and stay sonically transparent.
- The **Linked peers** badge in the header shows how many other instances are
  connected. Click it to open the **peer list**, where you can **mute / unmute**
  each peer's contribution *for this instance only* (it doesn't affect the peer).
- Give each instance a **name** (click the name field in the header) so peers are
  easy to tell apart in the list.

**Tips**

- Several RECV instances can all listen to one SEND source, each with its own XY
  position and Advanced settings — many different phantoms of the same track.
- A RECV instance with no SEND peer simply builds its phantom from its own input,
  so PhantomTrack always does something useful on a single track.
- Use the peer list to quickly audition which source(s) feed a given phantom.

---

## 8. Presets

PhantomTrack ships with factory presets matching the four anchors, plus an
**Init** centre blend:

- **Init** — centre of the pad (0.5 / 0.5), balanced.
- **Whisper / Poltergeist / Abyss / Monolith** — the four pure corners.

Use the **Prev / Next** arrows in the header to step through presets, click the preset
**name** to open the dropdown browser, and click **Save** to store the current
state (all parameters, including Advanced overrides) as a **user preset** on
disk. User presets live alongside the factory list in the browser; an asterisk
after the name indicates unsaved changes.

---

## 9. Demo mode & licensing

Without a license, PhantomTrack runs in **demo mode**: it is fully functional,
but the audio is briefly **muted for ~5 seconds once every 60 seconds** (with
short fades so it isn't jarring). A pulsing **DEMO** badge appears in the header.

### Activating a license

1. Click the **DEMO** badge to open the activation window.
2. Paste or type your license key. Two kinds of key are accepted:
   - **XENI keys** — offline keys of the form `XENI-XXXXXXXX-XXXXXXXX`. These
     validate instantly without an internet connection.
   - **Gumroad keys** — your purchase key from Gumroad. These are verified online
     the first time (a working internet connection is required to activate).
3. Use the **Paste** button (or your platform paste shortcut) to paste from the
   clipboard, then click **Activate**.
4. On success the DEMO badge disappears, the muting stops, and the license is
   saved to disk so the plugin stays unlocked on the next launch — no re-check
   needed.

The license is stored per user:

- **Windows:** `%APPDATA%\XeniAudio\PhantomTrack\license.key`
- **macOS / Linux:** `~/.config/XeniAudio/PhantomTrack/license.key`

If activation fails, the window shows the reason (e.g. "Invalid license key").
Online activation runs in the background, so the plugin UI never freezes while it
contacts the server.

---

## 10. Window, Studio mode & snap

- **Resize** — drag the grip in the bottom-right corner to scale the whole
  window. On HiDPI / 4K displays the plugin opens at a comfortable size
  automatically. The size is saved in your project.
- **Studio mode** — click the **logo** at the left of the header to toggle a
  diagnostic overlay below the pad.
- **Snap to grid** — toggles 1/8 quantisation of XY pad drags for repeatable
  positions.

---

## 11. Installation

PhantomTrack ships as **VST3** and **CLAP** on all platforms, plus **Audio Unit
(AU)** on macOS. After installing, **restart your DAW and rescan plugins**.

### Windows

Run the installer **`XeniAudio-PhantomTrack-V<version>-Installer.exe`** and follow
the prompts. It installs:

- VST3 → `C:\Program Files\Common Files\VST3\`
- CLAP → `C:\Program Files\Common Files\CLAP\PhantomTrack\`

(Or unzip the portable `PhantomTrack-<version>-Windows.zip` and copy the folders
into those locations yourself.)

### macOS

Open the **`PhantomTrack-<version>-macOS.dmg`** and run the installer package.
You can choose VST3, CLAP and/or AU, and install for the current user
(`~/Library/Audio/Plug-Ins/…`) or all users (`/Library/Audio/Plug-Ins/…`).

> **Gatekeeper:** this build is not yet signed with an Apple Developer ID. The
> first time you open the installer, macOS may warn that it is from an
> "unidentified developer". To proceed: **right-click (Control-click) the `.pkg`
> → Open → Open**.

### Linux

Unpack **`PhantomTrack-<version>-Linux.tar.gz`** and run the included
`install.sh`, or copy the bundles manually:

- VST3 → `~/.vst3/`
- CLAP → `~/.clap/`

---

## 12. Troubleshooting

**The plugin mutes every minute / a DEMO badge is pulsing.**
That's demo mode. Activate a license (see §9).

**Two instances don't link.**
Both instances must be in the **same host process**. Check the **Linked peers**
badge; make sure your source instance is in **SEND** and your destination in
**RECV**. Some hosts sandbox plugins separately — keep instances in the same
project/engine.

**I hear nothing from a RECV instance.**
Raise **Return level** and **Dry / Wet**, and move the XY pad away from a very
quiet corner. Confirm the source actually has signal (and, for two-instance
setups, that the SEND instance is receiving audio).

**The phantom is too bright / too dark.**
Use the global **LP / HP** filters in the footer, the **Darkness** knob in the
Advanced panel, or the **Wash LP** knob for the wash specifically.

**The phantom clashes with the dry signal.**
Raise **Ducking** so the phantom steps aside when the dry is loud, and/or add
**Predelay** so it arrives slightly later.

**The plugin doesn't appear after install.**
Restart the DAW and trigger a plugin rescan. On macOS, confirm you installed the
format your DAW uses (Logic/GarageBand need the **AU**).

---

## 13. Support

- Web: <https://xeni-audio.com>
- Email: <support@xeni-audio.com>

PhantomTrack © 2025–2026 Tony Cuny / XeniAudio. All rights reserved.
