Fireball Audio

CYCLONE™

Real-time cyclic time-stretch · Audio Unit and VST3 · macOS · version 1.1.1

Every other time-stretch hides the splice. This one plays it — in time.

The sound of the classic 12-bit rack sampler stretching a break: the flutter, the metallic ring, the grit of a machine running out of samples. Built as an insert, in real time, locked to your DAW's clock and to every hit of the loop.

Get notified of the release
The panel
The Cyclone panel: four machine keys, RATE, STRETCH, CYCLE and XFADE, SCATTER and TRANSPOSE, LOCK and HIT SENSE, MIX and OUTPUT, a VU meter and a display showing tempo, cycle length, machine rate and lock; a KEY chip beside HIT SENSE and a CAPTURE pad with LOCK, 1, 2 and 4 BARS keys.
Machine keysFour converter chains around one splice: 12-bit, two 16-bit, clean.
Stretch · Cycle · XFadeHow far, in how big pieces, with how hard a join.
Lock · Hit Sense · KeyRestart on the bar, and on every hit — of the track, or of the side-chain — so the loop stays on the grid.
RandomizeRolls every control on a musical curve. MIX stays put until you unlock it.
The displayTempo, cycle length in machine samples, rate and lock; lamps flash on every restart.
OutputMIX 0 is a perfect bypass; OUTPUT is never randomised.
CapturePress the pad and drag it onto a track: the last 4 bars (or 2, 1, or one LOCK period) of what you just heard, cut on the bar line, as a 24-bit WAV. Also saved under Music › Fireball Audio › Cyclone Captures.
Inside

What is in the box

The splice

Fixed-length cycles read from the live input, the read point stepping by hop over stretch. No searching for a smooth join, on purpose: the joins are the sound.

The machines

12-bit and 16-bit converter chains around the same splice: word length, sample rate, held or interpolated playback, and filters that track the rate.

The lock

The stretch restarts on your bar lines and on every hit it hears, so a break stays on the grid at any stretch — the thing no machine and no offline stretcher can do.

The deglitcher

Hard splices ring instead of click; overlaps keep their level; the octave up does not alias. The character stays, the damage goes.

Capture

Press the pad, drag onto a track: the last bars of what you just heard, cut on the bar line, as a 24-bit WAV. What the machine did is now a region you can chop.

The key

A side-chain input for the hit detector. Lock the stretch to a kick from another track, or to a pattern the loop never had.

Every control

One drawing, measured twice per control

Every picture below is the same drawing: one bar of a break run through Cyclone's own engine at the two settings named underneath it, everything else at Init. Read one and you can read them all by looking only at what changed.

left to right one bar, 170 BPMbottom to top pitch, 50 Hz – 18 kHzamber energyteal tick the read head jumps back to nowtall / short tick on a hit / on the clock

Machine

the converters around the splice

Model

MK1 · MK2 · MK3 · CLEAN · default MK1

Four machines, one splice. The stretch arithmetic is identical on all of them; what changes is everything around it. MK1 is the 12-bit machine — gritty, dark, its output held at the machine clock and smoothed by a steep filter. MK2 and MK3 are the 16-bit machines that followed, cleaner and brighter, MK3 with the smoother crossfade of the later revisions. CLEAN is the splice with nothing around it.

HowMK1: 12-bit words stored at write time, zero-order-hold playback at RATE, six-pole Butterworth in and out at RATE / 2.5. MK2: 16-bit, linear read, three-pole at 0.45 x RATE. MK3: 16-bit, cubic read, raised-cosine crossfade, band-limited pitch-up. CLEAN: host rate, cubic read, no converters.
MK1 at 20 kHz
CLEAN (ignores RATE)

Rate

7.5 kHz – 48.0 kHz · default 32.0 kHz

The machine's sample rate. Lower it and the top of the sound goes — and because CYCLE is counted in the machine's own samples, the ring drops with it. Around 32 kHz is the classic setting; under 12 kHz it turns into the dusty, underwater end of the machine.

HowContinuously variable, 7.5–48 kHz. The anti-alias and reconstruction filters track it at RATE / 2.5 (MK1), the published law of the 12-bit machine. The read pointer snaps to the machine's sample grid.
32 kHz
9 kHz

Stretch

the splice itself

Stretch

100 % – 800 % · default 200 %

How far each moment is stretched. At 200 % the first half of every LOCK period is played across the whole of it; at 600 % the first sixth. The machine did not interpolate — it repeated little cycles of the sound — and that is what you hear: the break smeared into a rhythmic flutter.

HowPer cycle, the source read point advances by hop / R, where hop = N x (1 - XFADE) and R = STRETCH / 100. At R = 2 every region plays twice. The read head can only fall behind the input, so every LOCK period and every detected hit it jumps back to now.
150 %
600 %

Cycle

2 ms – 200 ms · default 23 ms

The length of the little pieces the stretch is built from. Long cycles are a slow tremolo — you hear each repeat as an echo. Short cycles are the metallic ring, a pitch of its own under the break. This is the control that makes it sound like the machine.

HowN = CYCLE x RATE machine samples, whole samples only. The splices form a train at RATE / N; at the default 23 ms that is 43 Hz, heard as flutter, and below about 8 ms it rises into a ring-modulator tone — the two behaviours the 12-bit machine's manual describes for long and short cycle times.
120 ms
4 ms

XFade

0 % – 90 % · default 15 %

How each piece hands over to the next. Low settings keep the edge of the splice — the grain of the machine. Higher settings blur the pieces into each other until the stretch sounds like a wash. It never gets quieter as you turn it up: the overlap is level-matched.

HowEvery cycle carries a fade-in / flat / fade-out window; up to twelve overlap and are normalised by the window sum. Overlapping cycles read different moments, so they are measured for correlation and the power they would lose is made up exactly. At zero the splice is hard, with the step released over a few machine samples so it rings instead of clicking.
15 %
80 %

Artefact

what the machine never had

Scatter

0 % – 100 % · default 0 %

Moves each piece a little earlier or later than the arithmetic says. A touch loosens the flutter into something that breathes; a lot turns the stretch into a granular spray. The machine never had this — it is here because it is fun.

HowEach non-resync cycle's read point is offset by a uniform random amount up to SCATTER x N. The generator is seeded when the plugin starts, so a bounce of the same region is the same file.
0 %
100 %

Transpose

−12 st – +12 st · default 0 st

Plays the pieces faster or slower, the way the machine changed its clock. +12 at 200 % puts the break back at its real speed, an octave up and metallic — the jungle move. Down makes it heavy and slurred.

HowEach cycle is read at 2^(st/12) samples per sample. On MK3 and CLEAN a pitched-up read blends into a copy of the input band-limited at 0.225 x the sample rate, so the octave up does not fold its top back down as noise (aliases from +12 st measured 77 dB lower). MK1 and MK2 keep the machine's grit.
−7 st
+7 st

Lock

bar line, or every hit

Lock

1/16 · 1/8 · 1/4 · 1/2 · 1 BAR · 2 BARS · 4 BARS · default 1 BAR

How often the stretch lets go and starts again from now, in bars and beats of your session. 1 BAR is the classic: the first part of each bar stretched across the bar. 1/4 and 1/8 turn it into a stutter that never drifts off the grid. Pressing play, a cycle-loop wrap and every locate start it fresh on the downbeat.

HowThe period phase comes from the host's song position every block. A jump in the song position (play, loop, locate, count-in ending) restarts the stretch on that exact sample; a boundary the block sizes would have hidden is caught from the position itself.
1 BAR
1/8

Hit Sense

0 % – 100 % · default 50 %

Every hit that stands out by more than this starts the stretch again, so the drums stay on time while everything between them stretches. Low catches kicks and snares; high catches every hat and ghost note. Off is the machine exactly as it was.

HowThree detectors — full band, under 150 Hz, over 2 kHz — each an envelope against its own recent average and a decaying peak. No two hits closer than 70 % of a 1/32 note. A 4 ms look-ahead lets the restart land half a millisecond before the attack, so the attack is intact.
Off
70 %

Hit Source

0 – 1 · default 0

What the hit detector listens to. SELF is the track itself. KEY is the side-chain input: feed it a kick, a hat pattern or a rhythm from another track and the stretch restarts on that instead — the loop stays locked to a groove it does not contain. Nothing from the key reaches the output; only its timing does. On the panel it is the KEY chip beside HIT SENSE; the KEY lamp on the display lights while the detector is listening to the side-chain and something is arriving.

HowA second stereo input bus (Logic: the Side Chain menu). With KEY, the three-band detector runs on the key bus instead of the input; the read head still lands 0.5 ms before each key hit. A key bus that carries nothing gives no hits; a host that does not offer one leaves the detector on the input.
SELF: the break's own hits
KEY: an 8th-note click on the side-chain

Output

Mix

0 % – 100 % · default 100 %

Stretched against dry. At zero the plugin is a perfect bypass — the same samples, delayed by the latency your DAW already removes. RANDOMIZE leaves MIX where you set it unless you unlock it.

HowLinear blend, smoothed over 10 ms. The dry path is delayed by exactly the wet path's latency, so a partial mix does not comb-filter.
0 %
100 %

Output

−12 dB – +12 dB · default 0 dB

Level after everything. RANDOMIZE never touches it.

How±12 dB, smoothed over 10 ms, applied to the whole output.
−9 dB
+6 dB
Every picture was produced by running Cyclone's own DSP at the two settings named underneath it and measuring what came out. None of them is an illustration.
Capture

Drag the last bars onto a track

What the machine just did, as a region: cut on the bar line, latency-corrected, a 24-bit WAV.

  1. Choose a lengthUnder CAPTURE, press LOCK, 1, 2 or 4 BARS. Cyclone keeps the last 40 seconds of its output and knows where every bar line fell in it.
  2. Press and dragPress the pad and drag onto an empty part of an audio track. The pad shows the bars it is holding while you drag; let go and the region lands on the track, named with the tempo, length and settings.
  3. Where the file isEvery capture is also saved as a 24-bit WAV under Music › Fireball Audio › Cyclone Captures. Nothing is deleted after a drag, so a project that references the file rather than copying it keeps its audio.
  4. With the transport stoppedThe pad still works: it takes the last bars' worth of seconds at the last tempo, not cut on a bar line. The region name then ends in “free”.
Key input

Lock the stretch to another track

HIT SOURCE = KEY: the detector listens to the side-chain and the loop restarts on a groove it does not contain.

Logic Pro

Insert Cyclone on the loop's track. In the plug-in header, the Side Chain menu lists every track and bus: choose the kick, hat or rhythm track. Press the KEY chip beside HIT SENSE so it lights (that is HIT SOURCE = KEY; SELF when it is off). The KEY lamp lights when the side-chain is arriving and being listened to.

Ableton Live

Cyclone (VST3) shows a side-chain section when the device is unfolded: choose the audio from a track and press the KEY chip.

Other hosts

Route a track to Cyclone's second input (“Key”); Cubase, Reaper, Studio One and Bitwig each have a side-chain or “input 3/4” option on the plug-in. A host that offers no side-chain leaves the detector on the track itself, whatever the KEY chip says.

What KEY does

Only the timing of the key is used: each hit on the side-chain restarts the stretch, half a millisecond before the attack. None of the key's audio reaches the output.

Recipes

Five places to start

The jungle octave

MK1 · STRETCH 200 % · TRANSPOSE +12 · CYCLE 10 ms · LOCK 1 BAR · HIT SENSE 50 %

The break back at its own tempo, an octave up, ringing. Put it under the original and ride MIX.

Tape-stop smear

MK2 · STRETCH 600 % · CYCLE 120 ms · XFADE 40 % · LOCK 1 BAR · HIT SENSE off

The first beat of each bar drawn out across the bar. Automate LOCK down to 1/4 for a build.

Ring-mod snare

MK1 · STRETCH 300 % · CYCLE 4 ms · RATE 16 kHz · LOCK 1/4 · HIT SENSE 70 %

Metallic, pitched and tight to the grid. Try it on a snare bus, not the whole loop.

Dusty half-time

MK1 · STRETCH 200 % · CYCLE 23 ms · RATE 12 kHz · TRANSPOSE −12 · LOCK 2 BARS

A boom bap loop at half speed and an octave down, sitting behind the mix like an old record.

Stutter fill

CLEAN · STRETCH 400 % · CYCLE 60 ms · XFADE 30 % · LOCK 1/16 › 1/8

Automate LOCK in the last bar before a drop; every step lands on the grid.

Specification

Measured

FormatsAudio Unit, VST3 · macOS 10.15 or later · universal (Apple silicon and Intel)
ChannelsMono or stereo in, same out
Parameters12, all automatable, plus RANDOMIZE and the MIX lock
Latency4 ms look-ahead + 3 samples (195 samples at 48 kHz), reported to the host
Stretch100 – 800 %
Cycle2 – 200 ms, whole machine samples
Machine rate7.5 – 48 kHz, continuously variable
Lock1/16 · 1/8 · 1/4 · 1/2 · 1 BAR · 2 BARS · 4 BARS
Overlapping cyclesup to 12, level-matched
Sample rates22.05 – 192 kHz
CPUabout 3.3 % of one core at 48 kHz, worst case (measured on a cloud server; a Mac is faster)
Copy protectionNone