wg()

wg(index, excitation, feedback, damping)
wg1(index, excitation, feedback, damping)
wg2(index, excitation, feedback, damping)

Category

Oscillator / Resonator / Experimental Waveguide

Description

wg() is an experimental digital waveguide-style resonator. It uses the oscillator phase in the first argument to derive the tuned delay length internally, then feeds the supplied excitation signal into a short feedback delay line.

wg1() and wg2() use the same synthesis algorithm but have completely independent delay, tuning and damping states. The three functions can therefore model two or three closely tuned strings in one formula without their feedback loops interfering.

For plucked string or Karplus-Strong style sounds, use a short burst of noise or a very short envelope as the excitation. For flute, reed, or bowed-string experiments, use a continuous excitation while the note is held.

Arguments

Typical Values

Feedback should stay below 1.0. Values too close to 1.0 can make the sound unstable or too long. Damping around 0.15..0.65 is a good first range.

Examples

0.8*wg(X,(white()+0.35*sin(2*X))*fromtoin(1,0,8+600*param(0)),0.985+0.014*param(1),param(2))*release(2000+45000*param(3))
[Excite: 0.20; Feedback: 0.70; Damping: 0.35; Release: 0.45;]
0.55*attack(1200+8000*param(0))*release(6000+60000*param(1))*
lp(
  wg(
    X,
    (0.10+0.45*param(2))*white()*velolog()+(0.05+0.25*param(3))*sin(X),
    0.990+0.008*param(4),
    0.35+0.55*param(5)
  ),
  0.08+0.45*param(6),
  0.08
)
[Attack: 0.20; Release: 0.55; Breath: 0.35; Tone: 0.30; Feedback: 0.60; Damping: 0.45; Cutoff: 0.45;]

Notes

Use each numbered function at most once per formula channel. Repeated calls to the same number intentionally address the same internal waveguide state.