by Circat Media
L420
Public Beta V1.0
Engine32-bit / 48 kHz
Latency≤ 20 ms
Underruns · 4 h0
Looper2 × 30 s
Tracks16
// PADS

Pads that can be anything.

Each pad is not fixed to one job — you decide what it triggers per project.

Circat L420 sampler pads view

Every pad picks an instrument engine

A pad is not tied to one file or one role — each one chooses its own engine. Two engines are live today, two more are on the road. sample player analog synth drum synth · planned loop player · planned

A sample player pad triggers a one-shot or a padded loop with per-voice pitch, filter and envelope — and you can record straight into a track slot mid-set. The sample is playable the instant recording stops: no file dialog, no reload, no menu. On a groovebox, recording must be a playing action, not a household chore.

A synth pad runs the built-in analog engine — two shared parts across the 16 pads (even pads → part A, odd pads → part B), four voices in total. Sharing keeps CPU reliably bounded and the layout readable. The ENGINE editor shapes both parts: waveforms, mix, detune, drive, filter and ADSR. Switch a pad back to sample mode and its active synth voices stop cleanly — no tail leaking across modes.

On-the-fly sampling locks in with the same quantized snap as the looper, so an impromptu shot keeps the grid. Level and overdrive are visible while recording, and the peak value stays readable afterwards for a quick sanity check.

// SEQUENCER

A step sequencer you can race.

The ultra-close look at the buttons is no accident — every control reaches the audio thread in the same frame.

Circat L420 sequencer mockup

16 tracks · up to 64 steps · swing

The step sequencer is the timing backbone: 16 tracks driving sampler voices and the looper, up to 64 steps per pattern with swing, ratcheting and programmable time signatures. Step buttons double as live note entry, so a pattern can be punched in bar by bar instead of being built in an editor.

Automation lives here too: motion recording and per-step parameter locks across every automatable parameter. Twist a knob while a step is held and that movement is written into the pattern — tight and sample-accurate, applied at the exact sample offset. per-step locks motion

The sequencer and the realtime looper share one clock and one grid. Multiply, Divide, Speed and Reverse run without a dropout — a 64-sample crossfade on direction changes, so nothing clicks on stage. What you race here is what you play live.

// LOOPER

The looper is the heart of the set.

A real-time loop stack running beside the sequencer on one clock and one grid — record, stack, mangle, never stop.

Sync to the grid

Start, end and quantized snap lock to the master clock. Loops and patterns share one grid, so a looped phrase never drifts off the sequence.

Rec → Overdub → Play

The classic three-state flow, mapped to footswitch or MIDI. Keep the take playing and stack the next pass on top — the overdub prints in time.

Multiply / Divide

Slice a loop's length in stages — half, quarter, double — without stopping playback. The grid stays intact while the phrase changes shape.

Speed & Reverse

Normal, half and double speed plus Reverse, all with a 64-sample crossfade inside the audio callback. Changing direction never clicks.

Feedback

Dial how much of the previous pass bleeds into the next. From a clean snap-cut loop to a self-growing texture that keeps evolving.

Loop-player pads

Loops can live on pads and crossfade with the recorded stack — layer a phrase onto a running loop without losing either signal.

// MIDI LEARN

The controller replaces the screen.

MIDI Learn is not a feature, it's a core subsystem. A 30-minute live set can be played end to end via controller — without a single screen touch.

Everything is learnable

Every automatable parameter has a stable, versioned ParamId. Renaming a parameter breaks no mapping — a migration table instead of re-learning.

Sample-accurate

MIDI events are applied inside the audio callback at the exact sample offset, not per block. Timing deviation < 1 sample — percussion stays tight.

Relative encoders

Sign-Magnitude, Two's Complement, Offset-Binary — auto-detected, always manually overridable. No parameter jump on the first turn.

Soft-takeover

After a pattern or preset change the knob sits elsewhere. The parameter only moves once the knob crosses the value. Otherwise a live set is unusable.

MIDI feedback

UI changes update the controller within 30 ms — LED rings, motorized faders. What the screen shows, the device shows.

MIDI panic

All voices off, controller reset — one command, reachable via mapping. For the moment everything goes on stage at once.

// SPECIFICATION

Technical specifications

All contrast values in this design are measured, not estimated — WCAG 2.1. Red is exclusively for recording. Nothing depends on color alone.

AreaPropertyValue
AudioDSP / internal rate32-bit float · 48 kHz
AudioLatency (reference, MMAP/Exclusive)≤ 20 ms round-trip
AudioDropouts — 4 h constant load, 80 % CPU0 · stress test daily
AudioSupported rates44.1 / 48 / 96 kHz
SamplerTracks / drum pads16 · 16
SamplerStep sequencer16 tracks · up to 64 steps · swing · time signature · pitch per step
SynthENGINE editor per partwaveforms · mix · detune · drive · filter · ADSR
SynthShared analog parts / voices2 parts (even/odd pads) · 4 voices total
MixerChannels + master16 + 1
MixerGroup filter · delay/reverb AUXper performance group
MixerInsert slots / channel · EQ2 · 3-band parametric
EffectsTypes in v1.012 (filter, drive, delay, reverb, chorus …)
LooperInstances · max loop length2 · 30 s
LooperFunctionsRec → Overdub → Play · Multiply/Divide · Speed · Reverse · Feedback
MIDISourcesUSB Host + Peripheral · BLE MIDI
MIDIMessage typesCC + 14-bit · Note · Pitchbend · NRPN · Aftertouch
AutomationMotion recording · per-step locksall parameters
ExportWAV · offline bounce16/24/32-bit · master + track-by-track
USB audioClass-compliant interfaces (v1.0)stereo I/O
PersistenceAuto-save · crash recoveryyes · journal + sidecar
PlatformminSdk / targetSdk29 (Android 10) / 36

A complete live set — MIDI controller only, no screen touches.

PadMIDI / Sequencer
Sample Playeror Analog Synth
Trackgain · mute
Performance Groupfilter
AUXdelay · reverb
Masteroutput

A pad chooses its engine — Sample Player or Analog Synth. Switching the synth back to a sample terminates that pad's active synth voices cleanly. No allocations, no locks, no file I/O, no logging and no dynamic graph changes on the audio thread.

// MATURITY

Honest status. No "almost done".

A stage-ready audio core is not built in weeks — the difference between "makes sounds" and "holds 4 hours without a single dropout" is most of the work.

Phases → v1.0 · estimated 10–14 months
P0
Foundation
CI, RT infra, multi-rate test
4–6 PW
P1
Sampler
Voice engine, editing, filter
6–8 PW
P2
Transport
Step sequencer, timing
5–7 PW
P3
Mixer · FX · MIDI
12 effects, MIDI Learn
8–11 PW
P4
Pads · Persistence
Automation, recorder/export
6–8 PW
P5
USB audio
Interface stereo, device matrix
5–7 PW
P6
Looper
FSM, multiply, property test
5–7 PW
P7
Hardening · Release
Beta, DoD, Play Store
5–7 PW

Clearly out of scope — what is not in v1.0

Opportunities deliberately pushed back, instead of silently becoming a scope problem.

// SUPPORT

Fuel the next bar.

Circat L420 is an independent development. If the demo hits, a coffee keeps the engine running and the roadmap on track.

☕ Buy me a coffee