It was originally adapted from Perry Cook and Gary Scavone's STK, the Synthesis ToolKit for doing amazing physical model stuff.
Here's what Perry says about "Shakers":
PhOLIES (Physically-Oriented Library of Imitated Environmental Sounds) is a similar approach for the synthesis of environmental sounds. This class implements simulations of breaking sticks, crunchy snow (or not), a wrench, sandpaper, and more.
/* MSHAKERS - the "Shakers" physical model instrument in
Perry Cook/Gary Scavone's "stk" (synthesis tookkit).
p0 = output start time
p1 = duration
p2 = amplitude multiplier
p3 = energy (0.0-1.0)
p4 = decay (0.0-1.0)
p5 = # of objects (0.0-1.0)
p6 = resonance freq (0.0-1.0)
p7 = instrument selection (0-22 -- see "instruments" file for listing)
p8 = percent of signal to left output channel [optional, default is .5]
*/
Sample scorefile #1:
rtsetparams(44100, 2)
load("MSHAKERS")
st = 0
numobjs = 0
for (i = 0; i < 20; i = i+1)
{
MSHAKERS(st, 0.5, 20000, 0.8, 0.8, numobjs, 0.1, 0)
numobjs = numobjs + 0.05
st = st + 0.2
}
st = st + 0.5
energy = 0
for (i = 0; i < 20; i = i+1)
{
MSHAKERS(st, 0.5, 20000, energy, 0.8, 0.5, 0.1, 0)
energy = energy + 0.05
st = st + 0.2
}
st = st + 0.5
decay = 0
for (i = 0; i < 20; i = i+1)
{
MSHAKERS(st, 0.5, 20000, 0.8, decay, 0.5, 0.1, 0)
decay = decay + 0.05
st = st + 0.2
}
st = st + 0.5
resofreq = 0
for (i = 0; i < 20; i = i+1)
{
MSHAKERS(st, 0.5, 20000, 0.8, 0.8, 0.5, resofreq, 0)
resofreq = resofreq + 0.05
st = st + 0.2
}
Sample scorefile #2:
rtsetparams(44100, 2)
load("MSHAKERS")
t = 0
inst = 0
for (j = 0; j < 23; j = j+1)
{
for (i = 0; i < 20; i = i+1)
{
MSHAKERS(st, 0.5, 20000, 0.9, 0.8, 0.5, 0.7, inst)
numobjs = numobjs + 0.05
st = st + 0.2
}
inst = inst + 1
}