modal()

modal(excitation, index, spread, decay)

Category

Filter / Resonator / Physical Modeling

Description

modal() processes an excitation signal through a parallel bank of damped resonators. It is intended for struck, plucked, or scraped objects such as bells, plates, membranes, mallets, glass, and resonant acoustic bodies.

The second argument is normally X. Syntropy follows the pitch from that phase argument, so pitch bend, glide, transpose, sample rate, and oversampling remain consistent.

Arguments

Examples

// harmonic struck bar
0.65*velolog()*attack(80)*release(48000)*
modal(white()*fromtoin(1,0,140), X, 0.50, 0.36)
// inharmonic bell
0.55*velolog()*release(120000)*
modal((white()+0.15*sin(9*X))*fromtoin(1,0,90), X, 0.82, 0.72)
// dark plate
0.70*release(70000)*
modal(white()*fromtoin(1,0,260), 0.5*X, 0.36, 0.52)
// membrane / drum skin
0.85*release(24000)*
modal((white()+0.35*squa(X))*fromtoin(1,0,80), 0.5*X, 0.28, 0.30)

Notes

Available since Syntropy version 2.2.

Several modal() calls can be used in one formula. Syntropy assigns independent runtime states automatically for up to 16 call sites per voice.

For realistic results, keep the excitation short. A continuous excitation can create organ-like resonant tones, while a short noise burst produces bells, plates, and struck-object decays.