Here's what Perry (and Georg Essl on this one) says about "BandedWG":
See also the
MMODALBAR
instrument.
p-fields:
/* MBANDEDWG - the "BandedWG" physical model instrument in Perry Cook/Gary Scavone's "stk" (synthesis tookkit). p0 = output start time p1 = duration p2 = amplitude multiplier p3 = frequency (Hz) p4 = strike position (0.0-1.0) p5 = pluck flag (0: no pluck, 1: pluck) p6 = max velocity (0.0-1.0, I think...) p7 = preset # - Uniform Bar = 0 - Tuned Bar = 1 - Glass Harmonica = 2 - Tibetan Bowl = 3 p8 = bow pressure (0.0-1.0) 0.0 == strike only p9 = mode resonance (0.0-1.0) 0.99 == normal strike p10 = integration constant (0.0-1.0) 0.0 == normal? p11 = percent of signal to left output channel [optional, default is .5] Assumes function table 1 is amplitude curve for the note. Or you can just call setline. If no setline or function table 1, uses flat amplitude curve. Assumes function table 2 is velocity curve for the note (interacts with p8) */Sample scorefile #1:
rtsetparams(44100, 2) load("MBANDEDWG") makegen(1, 24, 1000, 0,1, 2,0) makegen(2, 24, 1000, 0,1, 2,0) MBANDEDWG(0, 5.0, 20000, cpspch(8.04), 0.3, 1, 0.5, 3, 0.0, 1.0, 0.0) MBANDEDWG(6, 5.0, 20000, cpspch(8.04), 0.3, 0, 0.5, 3, 0.3, 0.2, 0.8)Sample scorefile #2:
rtsetparams(44100, 2) load("MBANDEDWG") makegen(1, 24, 1000, 0,1, 1,0) makegen(2, 24, 1000, 0,1, 1,0) makegen(-3, 2, 8, 8.00, 8.02, 8.04, 8.05, 8.07, 8.08, 8.10, 9.00) st = 0.0 for (i = 0; i < 50; i = i+1) { index = random() * 8 pch = sampfunc(3, index) MBANDEDWG(st, 1.0, 10000, cpspch(pch), 0.3, 1, 0.5, 0, 0.0, 1.0, 0.0, random()) st = st + 0.1 } for (i = 0; i < 50; i = i+1) { index = random() * 8 pch = sampfunc(3, index) MBANDEDWG(st, 1.0, 10000, cpspch(pch), 0.3, 1, 0.5, 1, 0.0, 1.0, 0.0, random()) st = st + 0.15 } for (i = 0; i < 50; i = i+1) { index = random() * 8 pch = sampfunc(3, index) MBANDEDWG(st, 1.0, 10000, cpspch(pch), 0.3, 1, 0.5, 2, 0.0, 1.0, 0.0, random()) st = st + 0.2 } for (i = 0; i < 50; i = i+1) { index = random() * 8 pch = sampfunc(3, index) MBANDEDWG(st, 1.0, 10000, cpspch(pch), 0.3, 1, 0.5, 3, 0.0, 1.0, 0.0, random()) st = st + 0.25 }Sample scorefile #3:
rtsetparams(44100, 2) load("MBANDEDWG") makegen(1, 24, 1000, 0,1, 2,0) makegen(2, 24, 1000, 0,1, 2,0) st = 0.0 stpos = 0.0 for (i = 0; i < 20; i = i+1) { MBANDEDWG(st, 1.0, 10000, cpspch(8.00), 0.3, 1, 0.8, 1, 0.3, stpos, 0.0, 0.5) st = st + 0.2 stpos = stpos + 0.05 }