A natural model of string excitation is an input signal summed into a virtual physical location along the length of a digital waveguide string model, as described in [14]. This model can then be factored into a pick-position comb filter in series with a filtered delay loop, as used in the EKS [4,11] and derived in [14].
The EKS pick-position comb filter has the transfer function
In Faust, a feedforward comb filter is readily implemented using the delay function defined in music.lib:
ppdel = beta*P; // pick position as fraction of period pickpos = _ <: delay(Pmax,ppdel) : - ;where Pmax is some power of 2 larger than ppdel (see the definition of delay in music.lib to understand why a power of 2). In Faust, we can bring out a ``continuous'' pick-position control spanning half the string as follows:
beta = hslider("pick_position", 0.13, 0, 0.5, 0.01); // 0-1/2The block diagram generated by ``faust -svg -simple-names'' is shown in Fig.5. Pick position accuracy is normally not critical, hence the 1% slider steps and lack of delay-line interpolation in the comb filter.