CrankWave Real-Time Engine Acoustics

How CrankWave Works

CrankWave contains no engine recordings. Every sound is generated from scratch in real time from a physical model of the engine: a crankshaft rotates, cylinders fire at their crank angles, each exhaust pulse travels down a runner of a given length, and the pulses collide in the collector and resonate through the pipe before reaching your speakers.

Change the cylinder count or the firing intervals and the sound changes because the underlying model changed — not because a different sample was loaded.

The synthesis chain

  1. Crank model. A phase accumulator tracks crank angle through the 720° four-stroke cycle. A firing table maps each cylinder to its firing angle and its exhaust bank, derived from the cylinder count, layout, and crank configuration.
  2. Combustion pulses. Crossing a firing angle triggers an exhaust pulse — a two-stage pressure transient plus a burst of filtered noise for combustion turbulence, with per-cycle jitter so no two firings are identical.
  3. Runner delay lines. Each pulse is delayed by the transit time of its own exhaust runner. Equal-length runners let pulses merge cleanly; staggered lengths make them overlap and interfere.
  4. Exhaust system. Each bank's collector feeds a feedback comb resonator tuned to the pipe length, then body resonances, then a low-pass muffler. The two banks are spread across the stereo field.
  5. Aspiration. A turbo softens the pulse fronts and caps high frequencies, since the turbine sits in the exhaust stream, and adds a spool tone that lags the throttle plus a blow-off hiss on lift. A supercharger leaves the exhaust untouched and overlays rotor-mesh whine harmonics.
  6. Engine dynamics. Torque, friction, and rotational inertia integrate into an RPM that responds to the throttle, held at idle by a governor, cut at the rev limiter, and dragged down by engine braking on a closed throttle.

Parameters

ControlRangeEffect on the sound
Cylinders1–12Pulses per revolution, and so the fundamental pitch. A four at 6000 rpm gives 200 Hz; a V10 gives 500 Hz.
LayoutInline / V / FlatWhether cylinders share one exhaust bank or alternate across two.
Crank / firingEven, Cross-plane, Flat-plane, UnevenThe rhythmic cadence of the firing pattern. Cross-plane and flat-plane apply to eight cylinders.
Firing intervalsdegrees, summing to 720°The exact crank angle between successive firings. Editable when the crank is set to uneven.
Header length0.2–1.6 mTransit time from each cylinder to the collector.
Header length spread0–1Equal-length runners (clean, resonant howl) through to unequal ones (off-beat boxer rumble).
Exhaust pipe length0.5–4 mPitch of the pipe resonance.
Muffler0–1Open and raw through to quiet and muted.
Idle RPM500–2000Where the governor holds the engine.
Redline3000–16000Where the rev limiter cuts.
Cam overlap0–1Combustion instability at low rpm — the choppy, loping idle of an aggressive cam.
AspirationNA / Turbo / SuperchargedMuffled pulses with spool whistle, or an untouched exhaust note with mechanical whine.
Throttle0–1Drives the engine dynamics model.

Firing intervals

The firing interval field shows the actual crank degrees between firings. For the fixed crank modes it is computed and read-only — an inline-four reads 180, 180, 180, 180, a V12 reads twelve 60s. Selecting Uneven (custom) makes it editable, so a crank geometry can be entered directly:

EngineIntervals
90° V-twin270, 450
270° parallel twin270, 450
Triumph T-plane triple180, 270, 270
90° V4 (180° crank)180, 270, 180, 90

Values are rescaled to span one 720° cycle, so relative proportions are enough.

Note that both V8 crank modes fire at an even 90°. What separates them is which bank each pulse enters: a flat-plane crank alternates banks strictly, while a cross-plane crank sends two consecutive pulses down the same bank (L-R-L-L-R-L-R-R). That uneven distribution along each manifold is the entire source of the cross-plane rumble, and it emerges from the model rather than being applied as an effect.

Presets

Presets set every parameter and remain fully editable; adjusting anything switches the selector to Custom.

Open the synthesizer