Cinematic sub synthesis: pitch, pressure and procedural rumble
Research behind independent timing, a dry mono foundation and layered cinematic effects.
Technical research · edition 2 · reviewed 2026-10-24

Prismal Labs native editor capture, illustrating the corresponding software project. View full-size image
What we found
The cinematic-sub work found that pitch timing, amplitude timing and stereo texture need independent ownership. One shared decay constant cannot represent a fast pitch drop over a long rumble, and widening the entire signal can weaken the low-frequency foundation when summed to mono.
Our implementation keeps a dry common sub, a harmonic body and a separate noise texture. It uses finite voice lifetimes and a high-passed side component, with bounded effects memory. The useful findings are the signal ordering and timing contracts rather than a claim to simulate an explosion or a measured acoustic space.
The implemented pitch and amplitude laws
For hit age t, pitch attack Tp, pitch decay Dp, base frequency f0, tuning ratio r, and signed sweep S in semitones, the engine uses:
The implementation protects the attack denominator with one sample. Amplitude has its own attack/hold/tail: a linear rise, a held value of one, then max(0, 1-(t-A-H)/D)^curve. The voice ends at A+H+D. This is a finite shaped tail, not an exponential T60 envelope. That distinction matters when comparing control labels or predicting a host tail.
For example, a +24-semitone sweep reaches four times the base frequency at the top of the pitch envelope and approaches the base afterward. A negative sweep approaches from below. Changing amplitude tail length does not change the pitch decay parameter. These equations are authored synthesis laws, not measured shockwave physics.
Keep the low foundation common to both channels
The sub sine and optional damped shockwave enter both channels identically. Noise texture forms middle and side components; the side path subtracts a 100 Hz one-pole low-pass result so its lowest energy is reduced. Body/texture saturation is separate from the clean sub contribution.
At the pre-effect mix, L = common + middle + side and R = common + middle - side make (L+R)/2 = common+middle. This cancellation is the reason to put width in the texture path. Later nonlinear processing or panning can change that relationship, so mono checks should be made at the actual output as well as the internal mix point.
The per-voice path includes a 5 Hz DC blocker after amplitude shaping. The output bound contains peaks but is not a reconstructed true-peak limiter. Overlap and dense effects can still reach that bound; headroom is a sound-design decision.
Finite effects and reproducible variation
The Cinematic FX page adds an independent damped shockwave, metallic delay resonance, multi-tap space bloom, echo with time/feedback, ring modulation and sample/bit crushing. The delay effects use a high-passed parallel send, leaving the original dry sub intact. Delay memory is allocated in prepare, capped at 144001 stereo frames; maximum echo time is 1.5 seconds through 96 kHz and is capacity-limited at higher rates. Effects follow the latest triggered settings and ringing delays carry across overlapping hits. Effect tails fade out within eight seconds after the dry voice ends. Bypass/state restore clears the network.
Evidence: SubGenerator/README.md.
Useful validation cases
Reset gives deterministic noise, while successive hits advance a sequence so they are not identical copies. Test both properties: repeated fresh-instance renders should match, while successive triggered textures may differ by design. Verify that note-off leaves the one-shot tail intact and that overlap-off replaces the previous voice while overlap-on respects the eight-voice budget.
Use independent pitch estimates on the clean sub with texture and effects disabled. Then vary pitch timing while holding amplitude controls fixed, and vice versa. Inspect low-frequency mono sum, polarity, silent recovery, maximum tails and effects after the last dry voice. The preview is capped at 31 seconds, so it cannot by itself establish the length of an 80-second patch.
Applying the findings
This architecture suits impacts, game-audio effects and long pressure swells. Design the clean low layer first, then add a separately controllable body and width-limited texture. Keep the pitch envelope in semitone units so musical intervals remain predictable, and explicitly choose whether each time control is a time constant, a T60 or a finite endpoint.
Preallocate effects for a declared maximum duration and account for the sample-rate-dependent capacity. Record whether live edits affect ringing voices or only the next trigger; the current instrument applies most edits to the next hit, with live smoothed output trim.
Limits and open questions
The noise families are procedural textures, not recordings of weather or debris. Effects are authored delays/modulation, not measured spaces. Saturation/output bounding does not guarantee true-peak compliance. The controls provide cinematic synthesis rather than a physical pressure or structural model.
Primary references
Research provenance
The methods and results above are drawn from these retained research records. Dates and product versions inside the article identify the scope of each experiment; publication review does not mean the hardware or numerical tests were rerun.
SubGenerator/source/engine.h— SHA-256c60c74a1a8de73d4a29190ae605db8dd049aeb330fb482ce3a51d6b8f1f9ac59SubGenerator/RESEARCH.md— SHA-25619583f8777d6f2dc78efa1b7bbf97911588135d599a929c019ece973cf844447SubGenerator/README.md— SHA-256b0a98a996a320ba04e3db3667cd75292e568292b954c3363652e40a7ebab61a7
