Multitrack looper
Four stereo loop tracks docked under the rig — arm, record, overdub, mute, solo, and export. Freewheeling by default, metronome-locked with full time-signature + bars control when you want it. Tracks accept your guitar or any audio file you drag in.
The looper is a Pro feature. Open it via the LOOPER chip in the DisplayBar (the thin toolbar between the rig and the meter row). The dock collapses when you don't need it — toggle off to reclaim the screen space.
Four independent stereo tracks, all locked to a single master loop length. Each track has its own arm / record / mute / solo / clear / level controls and reads its loop from either a live take or an audio file you load.
The lifecycle in one minute
The simplest happy path, freewheeling mode:
- Press ARM on track 1.
- Press REC. Capture starts immediately. Play a phrase.
- Press REC again. Capture stops, the loop length is set to whatever just elapsed, and track 1 starts looping.
- Press ARM on track 2. Press REC. Recording starts at the next loop boundary and auto-stops after exactly one loop length. Now both tracks loop together.
- Repeat for T3 and T4.
That's it. Everything below is variations on this loop.
Per-track controls
| Control | What it does |
|---|---|
| T1 / T2 / T3 / T4 | The leftmost label is the track number AND the load-audio-file button — click it to pick a WAV / MP3 / FLAC / OGG and install it as the track's loop content. |
| ARM | Marks the track as the next-to-record. Only one track armed at a time. Click again to un-arm. |
| REC | First press while armed: start capture. While capturing: stop. While playing with content: start an overdub. Mid-overdub: stop overdub. |
| ON / OFF | Mute / unmute. The worklet keeps running underneath, so re-entry stays beat-aligned with the rest of the rig. |
| S | Solo. Multiple solos = union; only soloed tracks are audible. |
| Slider | Level, 0–150 %. Per-track gain knob. |
| × | Clear the track. Empty tracks can be re-recorded or have a file loaded. |
Tracks without content show their controls dimmed. Anything that requires a buffer (mute, solo, level, clear) is disabled until content exists.
Master controls
The strip across the top of the dock:
- UNDO — removes the most recent overdub layer on the most recently overdubbed track. One layer of history only; older layers can't be recovered.
- EXPORT — downloads a stereo WAV for every track with content. Filenames:
axion-loop-<timestamp>-T1.wavetc. - STOP ALL — mutes every track in one click. Doesn't clear; unmuting any single track keeps it beat-aligned.
- CLEAR ALL — wipes every track. Resets the master loop length so you can change sync mode or set a fresh loop length.
Sync modes
The FREE / SYNC toggle at the top of the dock picks how the master loop length is determined. It locks once any take has been recorded — to switch, clear all tracks first.
Freewheeling (FREE, default)
The first take of the session sets the master loop length. From then on, every other track records for exactly that length. This is the looper-pedal classic: press record, play, press record again, you're done.
The "next loop boundary" math is sample-accurate — track 2's recording starts on the master loop wrap, not when you pressed the button, so the bar-1 downbeat of track 2 always aligns with bar-1 of track 1.
Metronome-locked (SYNC)
Loop length is derived from the active time signature, bars count, and BPM:
loop length = bars × beats-per-bar × (60 / BPM) × (4 / beat-unit)
At 120 BPM, 4/4, 4 bars the loop is 8 seconds (32 beats). At 90 BPM, 6/8, 4 bars it's 8 seconds (24 eighth-note clicks). At 144 BPM, 7/4, 2 bars it's ~5.83 seconds — every combination is honoured.
Selecting SYNC on the dock reveals four inline controls right next to the toggle:
- Beat indicator — one dot per beat in the current time signature. Pulses left-to-right at the BPM rate whether or not the metronome is audible (it reads the same AudioContext clock the looper's scheduling uses). When the metronome is on, the active dot brightens — visual confirmation that click + grid are in lockstep.
- BPM ± stepper — adjusts the tempo in 1 BPM increments (40–300). Live during a session; the metronome re-snaps to the new tempo's grid immediately so it stays aligned with the silent beat indicator.
- Time signature dropdown — 2/4, 3/4, 4/4, 5/4, 6/4, 7/4, 6/8, 12/8. Shared with the metronome panel — changing it in one place reshapes both.
- Bars ± stepper — 1 to 16 bars per loop. Default 4.
Time signature and bars lock once a take has been recorded (changing them would re-derive the master loop length and desync any existing loops). BPM stays editable so you can dial up the next tempo while a loop's playing. To change a locked control: hit CLEAR ALL.
Workflow:
- (Optional) open the metronome panel and toggle it on if you want the click. Both the click and the looper's beat indicator share the same time base — flipping the metronome on mid-session drops it cleanly into the running grid.
- Switch the looper to SYNC. Pick your BPM / time sig / bars.
- Arm a track, press REC. The first capture aligns to the next downbeat and runs for exactly one loop length, then auto-stops.
The first take's start is sample-quantised to the next bar in the universal clock, so even an early or late press lands on the grid.
NOTE The sync mode flag is per-preset — saving with SYNC means it loads back in SYNC. BPM, time signature, and bars are not preset-bound (they're session-wide musical context that the user typically wants to keep across preset changes). If a particular tempo and signature are core to a preset's sound, set them after loading.
Overdub + undo
Overdub layers new content on top of an existing track. With a track that has content:
- ARM the track.
- REC — starts overdubbing at the next loop boundary, runs for exactly one loop length, auto-stops.
- New material is summed into the existing buffer. You hear the overdub immediately as it sums (no monitoring delay).
- Hit UNDO to roll back the most recent overdub. The pre-overdub buffer is restored.
Undo is one layer deep. After undoing, the shadow buffer is gone — further undos do nothing until you record another overdub. This is a memory trade-off: deeper history would shadow every layer separately and ~double the per-track memory budget. One layer covers the common "oops, redo" case without the cost.
You can cancel an overdub mid-way by pressing REC again before the auto-stop — anything sum'd up to that point stays in the buffer (use UNDO if you want it gone).
Load an audio file
Click the T1 / T2 / T3 / T4 label to open a file picker. Any browser-supported audio format works (WAV, MP3, FLAC, OGG, AAC depending on browser). The file is decoded to the engine's sample rate via the browser's native decodeAudioData.
What happens depends on the master loop state:
- No master loop yet — the clip's length becomes the master loop length. Useful for starting a session around a pre-recorded drum loop.
- Master loop exists, clip is longer — truncated to master length. A toast warns about the truncation.
- Master loop exists, clip is shorter — tile-repeated to fill one master loop. A 4-second drum loop fed into an 8-second master plays twice per cycle, perfectly seamed at the loop boundary.
Mono files are duped to L=R. Stereo files use both channels. Files with more than 2 channels take channels 0 and 1.
A pattern that holds up:
- Load a drum loop into T1 — sets the master.
- Jam a bass line into T2 (record, then play).
- Add a guitar overdub on T3.
- Layer a lead on T4 via overdub (or as a fresh take if T4 was empty).
Export
Two ways to get loop audio out of Axion:
Per-track stems
Hit EXPORT to download every non-empty track as its own WAV. Files are named axion-loop-2026-05-23_14-37-22-T1.wav, axion-loop-…-T2.wav, etc. All files share the same timestamp so they're trivially identifiable as a set.
Format: 32-bit float, stereo, at the engine's sample rate. Same as the live recorder's output — your DAW can import the set and they'll line up sample-for-sample at the master loop boundary.
Downloads fire sequentially with a 200 ms gap between each to avoid browsers throttling rapid-fire downloads into a single "block multiple downloads" prompt. On Chromium you'll see one download bar per track; on Firefox / Safari each download triggers a discrete prompt.
Mixed-down capture (rig + loops)
If you want a single file with the loops summed with your live playing, use the Wet + looper mode on the WAV recorder — hotkey R (instant, no save dialog) or pick it from the Record button's mode panel. The recorder taps a dedicated mix-down node that sees both the post-cab wet signal and every looper-track's playback, so the resulting WAV is exactly what's coming out of the speakers. See Recording your performance for the full mode list.
Memory + recording length
Buffers are pre-allocated at engine start, sized by the device's reported memory:
| Device class | Buffer per track |
|---|---|
navigator.deviceMemory ≥ 4 GB (most desktops, recent flagship phones) |
240 s |
navigator.deviceMemory < 4 GB (older / lower-end mobile) |
120 s |
| API unavailable (some browsers) | 240 s (assumed desktop) |
Four stereo tracks at 240 s is ~370 MB committed at engine start. Sub-4 GB devices get 120 s × 4 = ~185 MB. If you try to record beyond the per-track ceiling the worklet auto-stops at the cap and a toast warns you the take was truncated.
This is a session-only allocation — closing the tab releases everything.
What's session-only
Recorded loop audio is not persisted. Closing the tab loses every take. The looper's configuration (sync mode for now, eventually count-in length, per-track mono mode, etc.) round-trips through the preset.
If you've laid down a take you want to keep, export before closing the tab. A "save loop session" feature (bundle loop audio with a preset, restore on load) is a named follow-on but not on the immediate roadmap.
How it fits in the rig
The looper taps the same point the WAV recorder taps — post-cab, post-dry-blend, pre-metronome injection. What you hear is what loops back. The looper's own output goes directly to the device, not back through the recorder tap, so loops don't feed back into themselves and the live WAV recorder doesn't accidentally re-record loop playback.
See Signal flow diagram for the full picture.
When it sounds wrong
A few common pitfalls:
- First take feels late — the freewheeling first press starts capture ~40 ms in the future (one scheduling latency window) so the worklet has time to receive the message. Hit REC slightly earlier than you'd press a hardware looper to compensate.
- Subsequent takes feel slightly off the grid — they shouldn't, by construction. If they do, check that the first take's loop length actually matches what you played; a too-short first take cascades the misalignment to every subsequent track.
- Overdub sums too hot — the worklet doesn't auto-attenuate; if your input is already at unity, three overdubs hit ~+10 dB. Drop the track level or input gain between overdubs.
- Loaded clip ticks at the seam — the clip's last sample isn't continuous with its first. Cropping the file to a zero-crossing before loading fixes it. We'll add a tiny equal-power cross-fade at the loop boundary in a future release.