Sustain

← Back to Index Β· ← Foundation


Definition

Sustain describes how the kick decays after impact β€” how long it resonates, how quickly it dies, and what character that decay gives to the room.

It answers:

β€œAfter the kick hits, what happens next?”

Sustain is a categorical property β€” it is not a continuous value like Weight or Presence. Instead, it is classified into one of three states that describe the decay character of the kick.


The Three States

  DRY  ──  tight, punchy, immediate
  MID  ──  some room, natural decay
  WET  ──  long tail, spacious, reverberant

DRY

The kick hits and stops. There is no tail, no room sound, no resonance. The silence between kicks is as much a part of the sound as the kick itself.

  Kick:    β–“β–‘
           │└── almost no tail
           └─── sharp transient
  
  Time:    X . . . X . . . X . . . X . . .
           β–“β–‘      β–“β–‘      β–“β–‘      β–“β–‘
           
  Feel:    Mechanical. Clinical. Industrial.
  
  Think:   Surgeon, Ansome, SHDW & Obscure Shape
           Early Birmingham techno
           Factory floor at 4 AM

DRY sustain makes each kick a discrete event. There is space between the hits. Visually, this suggests sharp, staccato, high-contrast responses β€” flashes rather than flows.

MID

The kick hits and decays naturally. There is body after the transient β€” a brief resonance that fills the space between beats without flooding it. This is the default state for most techno.

  Kick:    β–“β–“β–“β–‘β–‘
           β”‚  └── moderate tail, natural room
           └──── transient with body
  
  Time:    X . . . X . . . X . . . X . . .
           β–“β–“β–“β–‘β–‘   β–“β–“β–“β–‘β–‘   β–“β–“β–“β–‘β–‘   β–“β–“β–“β–‘β–‘
           
  Feel:    Driving. Natural. Grounded.
  
  Think:   Most Drumcode releases
           Standard driving techno
           The baseline groove state

MID sustain is the center of the spectrum. It is unremarkable by design β€” the kick has presence and body but doesn’t call attention to its decay. Visually, this is the β€œnormal” state that other states deviate from.

WET

The kick hits and the tail extends well beyond the transient. Reverb, delay, or room resonance stretches the kick’s energy across the space between beats. The kicks bleed into each other.

  Kick:    β–“β–“β–“β–“β–“β–“β–“β–“β–“β–‘β–‘β–‘β–‘β–‘β–‘β–‘
           β”‚        └────── long reverberant tail
           └──────── transient lost in the wash
  
  Time:    X . . . X . . . X . . . X . . .
           β–“β–“β–“β–“β–“β–“β–“β–“β–“β–“β–“β–“β–“β–“β–“β–“β–“β–“β–“β–“β–“β–“β–“β–“β–“β–“β–“β–“β–“β–“
           (tails overlap β€” continuous low-frequency presence)
           
  Feel:    Hypnotic. Spacious. Trance-like.
  
  Think:   Rrose, Function, Vril
           Atmospheric techno sections
           3 AM eyes-closed moments

WET sustain blurs the boundary between individual kicks. The room becomes a continuous wash of low-frequency energy. Visually, this suggests flowing, blended, soft-edged, atmospheric responses.


Why Categorical, Not Continuous

Sustain could theoretically be measured as a continuous value β€” decay time in milliseconds. But the model treats it as categorical for two reasons.

First, the perceptual difference between sustain states is not linear. The difference between a 50ms decay and a 100ms decay is barely noticeable. The difference between a 100ms decay and a 500ms decay is transformative. What matters is not the exact number but which category of decay character is active.

Second, sustain changes are story-level events. When a DJ cuts from a wet reverb tail to a bone-dry kick, the character of the entire performance shifts. This is not a subtle, frame-to-frame variation β€” it is a discrete change in the feel of the room. Treating it as categorical means the model can use sustain shifts as Story transition triggers, just like Presence gate events.

  Sustain as continuous (what you'd get from raw measurement):
  
  decay_ms:  80  85  90  82  78  340  360  380  400  420
  
  Sustain as categorical (what the model produces):
  
  state:     DRY DRY DRY DRY DRY WET  WET  WET  WET  WET
                                  ↑
                            State shift.
                            Confirmed after M bars.
                            Potential story transition.

Sustain Shifts as Story Transitions

A shift in Sustain category signals a change in the character of the performance. It doesn’t change what Story you’re in by itself β€” but it changes the flavor of that Story.

  Example: "Groove" story, Sustain shifts

  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ DRY β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ WET β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ
                               β”‚
                          Sustain shift
                          (confirmed after 2 bars)
                          
  Before: groove_heavy_dry (heavy, tight, mechanical)
  After:  groove_heavy_wet (heavy, spacious, trance-like)
  
  The base story stays "groove", but the full story ID changes.
  The matrix cell is the same; the Sustain modifier colors
  the expression.

See Story Matrix for how Sustain modifies story names.

Sustain shifts are confirmed via Temporal Thresholds β€” the new category must persist for M bars (suggested default: 2 bars) before the model registers the change. This prevents brief reverb sends or momentary FX from triggering false shifts.


How Sustain Is Detected

From an engineering perspective, Sustain classification requires measuring the energy envelope of the kick after the transient. The system knows when the kick hits (from the beat grid via Pro DJ Link). Starting from that point, it measures how quickly energy in the kick’s frequency range decays.

  Measurement window (conceptual):
  
  Kick hits at beat position
  β”‚
  β–Ό
  β–“β–“β–“β–“β–“β–“β–“β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘  ← measure energy decay from here
  β”‚    β”‚                β”‚
  β”‚    └── body         └── tail (how far does energy extend?)
  └─── transient
  
  DRY:  energy drops below threshold within ~50-100ms
  MID:  energy drops below threshold within ~100-300ms
  WET:  energy persists beyond ~300ms (or tail overlaps next beat)

The exact thresholds depend on tempo (at faster BPMs, the window between beats is shorter, so β€œWET” means less absolute time) and should be calibrated through testing. The important thing is that the classification produces consistent results: the same kick with the same decay should always classify as the same state.


Edge Cases

What about reverb that builds gradually? If a send effect gradually increases reverb on the kick over several bars, the decay time grows slowly. The categorical classification might not shift until the decay crosses the threshold between MID and WET. This is correct behavior β€” the Sustain state remains stable until the change is dramatic enough to be categorically different.

What about sidechain compression pumping? Heavy sidechain compression on pads or basslines creates a β€œpumping” effect that might look like kick decay in the sub-bass range. The system should measure sustain in the kick’s specific frequency range (anchored by the known beat grid position), not across the entire low-frequency spectrum, to avoid confusing sidechain artifacts with kick decay.

What about DJ transitions where two kicks overlap? During a mix, two kicks from different tracks might overlap, creating a temporarily different decay profile. The Temporal Thresholds mechanism handles this β€” the overlapping decay must persist for 2 bars before the model registers a sustain shift. Brief overlaps during transitions are filtered out.



← Back to Index