DOC.11·~6 min read·updated 2026-08-23

Signal flow diagram

The path your guitar signal takes through Axion, where the tuner / metronome / recorder tap in, and what does and doesn't make it to the output.

Axion's audio graph is deliberately small. There's no DAW-style routing matrix and no aux sends. One input, one output, and a pedalboard that wraps the amp and the cab in three zones. This page is a reference for what runs where.

The main path

interface input
      │
      ▼
  input gain ────────────────────────────────────┐
      │                                          │  (parallel dry path,
      ▼                                          │   level set by master
┌─────────────────────────────────────────┐      │   "Dry" knob)
│ PRE      pedal ▸ pedal ▸ …              │      │
└─────────────────────────────────────────┘      │
      │                                          │
      ▼                                          │
  amp (analytical OR NAM)                        │
      │                                          │
      ▼                                          │
┌─────────────────────────────────────────┐      │
│ LOOP     pedal ▸ pedal ▸ …              │      │
└─────────────────────────────────────────┘      │
      │                                          │
      ▼                                          │
  cab IR (convolution)                           │
      │                                          │
      ▼                                          │
┌─────────────────────────────────────────┐      │
│ POST     pedal ▸ pedal ▸ …              │      │
└─────────────────────────────────────────┘      │
      │                                          │
      ▼                                          │
  master output ◄──────────────────────────────── ┘
      │
      ▼
interface output

Every box runs at sample rate, sample by sample, in one AudioWorklet block. There's no render step, no offline buffer, and no internal latency beyond what your interface and driver already impose.

The three zones

The pedalboard is one strip in the UI with an AMP marker and a CAB marker in it. Where a pedal sits relative to those two markers decides what it hears.

Pre. In front of the amp, which is where a pedal in front of an amp goes. Drives, fuzz, wah, compressor, gate. Anything whose job is to change what the amp is fed.

Loop. Between the amp and the cab, the same position a hardware amp's effects loop occupies. Time effects belong here. A delay in the loop repeats the amp's sound; the same delay in front of the amp gets distorted by it, which is a different and usually worse noise.

Post. After the cab, which is the studio position. Reverb and delay on the finished, speaker-filtered tone.

Until 1.1.0 every pedal was pre-amp, and that put Delay, Reverb, Tape Echo and Spring inside the distortion stage. It's why adding a reverb to a high-gain preset turned it to mush. That was the reason, and it's fixed.

Drag a pedal across a marker to move it between zones. A preset saved before 1.1.0 has no zone recorded, so every pedal in it stays pre-amp and it sounds exactly as it did.

The parallel dry path is the master "Dry" knob in the Cab panel. It taps the input gain straight to master output, so you can blend the raw DI back in alongside the wet rig. See Stereo output & wet/dry parallel.

Where things tap in and out

A few extra paths feed off and into the chain:

                       tuner ←──┐
                                │  taps INPUT
interface in → input gain ──────┼──→ pre → amp → loop → cab → post ──┬──→ master → out
                                                                     │
                                                         recorder ←──┤  taps MASTER
                                                                     │
                                                           looper ←──┤  taps MASTER
                                                                     │  (sums own playback
                                                                     │   into master, not
                                                                     │   back into the tap)
                                                                     │
                                                       metronome ────┘  injects at OUTPUT,
                                                                        parallel to the
                                                                        recorder, NOT into it

Tuner taps the input before any processing, so it reads the raw guitar signal. Gate, drive and a detuned chorus have no say in what note it thinks you played.

Recorder has four modes, each tapping a different point:

  • Wet is the full rig output, after the post-cab pedals and with the dry blend already summed in. The default.
  • Dry is the same pre-pedalboard DI the tuner sees.
  • Wet + looper is a dedicated summing node that sees the rig output and every looper track's playback. It's the only path that captures loops alongside live playing.
  • Both writes wet and dry at once, to paired files.

All four sit before the metronome injection, so the click never bleeds in. See Recording your performance.

Looper taps the same point as the wet recorder, so loops contain the full processed signal, and routes its own track mixes straight to the master output in parallel with the rig. Its output is deliberately not fed back into the wet recorder tap, which would loop the loop into itself. The wet + looper mode is a separate downstream sum that picks up both. See Multitrack looper.

Metronome injects at the output, parallel to the recorder tap. You hear it; the file doesn't. Its clock anchors to the same AudioContext currentTime grid the looper's SYNC mode uses, so click and loop downbeats stay locked.

What runs where, technically

Stage Where it runs Notes
Input getUserMedia → AudioContext source Browser-provided, OS-buffered.
Input gain AudioWorklet A gain stage inside the worklet, carrying the ±12 dB input trim.
Pedals AudioWorklet Each pedal is a node in the worklet's processing array. Reordering or moving a pedal between zones ramps the chain outputs down and back over about 12 ms, so the rewire is silent rather than a click.
Amp (analytical) AudioWorklet, Rust + WASM The 12 voicings, clean combo through to djent. Built scalar today; +simd128 for the polyphase FIR and the saturator cascade is a planned optimisation, not a shipped one.
Amp (NAM) AudioWorklet, separate Rust + WASM module LSTM and WaveNet inference, built with +simd128 so the Conv1D inner loops vectorise to 4-wide f32 multiply-accumulates.
Cab IR AudioWorklet Convolution against the active IR buffer. Zero added latency: the cab is a single-FFT overlap-add convolver, not a partitioned one.
Master AudioWorklet Final gain stage before the device output.
Recorder Separate axion-recorder worklet Takes a copy of the master signal and writes through the File System Access API, or accumulates in memory. See Recording.

The whole worklet block is one processing function. That keeps per-sample overhead down and produces the round-trip figure the RT chip in the top bar shows.

What doesn't make it to the output

  • Bypassed pedals pass the signal through unchanged. They aren't removed from the graph, they're DSP no-ops, and the CPU cost of a bypassed pedal is near zero.
  • The tuner panel being open doesn't mute the rig. The tuner tap runs parallel to the chain rather than breaking it, so you hear yourself while you tune.
  • Metronome ticks reach the output path only, never the recorder path.
  • Swapping a NAM capture fades the amp out over about 5 ms, builds the new model, and fades back in over about 21 ms. Building a WaveNet is real work and it happens on the audio thread, so the fade is what keeps it from arriving as a click. You'll hear a short gap on a large capture. You won't hear a glitch.

What's not in the graph

  • Stereo input. The input is summed to mono before it reaches the pedalboard. A stereo path would split into two streams at getUserMedia and carry them through. Deferred until someone asks for it; everything downstream is already stereo-capable.
  • Aux sends and parallel buses. The three zones are still a series chain. The only parallel path is the dry blend.
  • Saved looper sessions. The multitrack looper's audio buffers live for the session only. Round-tripping the audio rather than just the config through a preset needs IndexedDB blob storage and a load UI. Named, not scheduled.

The stereo output side is fully wired today. Toggle the STEREO chip in the Cab panel to flip every stereo-capable node between mono and 2-channel. See Stereo output & wet/dry parallel for what flips and what it costs.