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 "Brass":
/* MBRASS - the "Brass" 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 = slide length (samps) p5 = lip filter (Hz) p6 = max pressure (0.0 - 1.0, I think...) p7 = percent of signal to left output channel [optional, default is .5] Assumes function table 1 is amplitude curve for the note. (Try gen 18.) Or you can just call setline. If no setline or function table 1, uses flat amplitude curve. */Sample scorefile #1:
rtsetparams(44100, 2) load("MBRASS") makegen(1, 24, 1000, 0,0, 0.05,1, 3.0,3, 3.5,0) MBRASS(0, 3.5, 20000, 249.0, 200, 279.0, 0.3) MBRASS(4, 3.5, 20000, 249.0, 400, 279.0, 0.3)Sample scorefile #2:
rtsetparams(44100, 2) load("MBRASS") makegen(1, 24, 1000, 0,0, 0.05,1, 3.0,3, 3.5,0) start = 0.0 lip = 100 for (i = 0; i < 40; i=i+1) { MBRASS(start, 0.4, 20000, cpspch(8.00), 400, lip, 0.2) start = start + 0.5 lip = lip+10 }Sample scorefile #3:
rtsetparams(44100, 2) load("MBRASS") makegen(1, 24, 1000, 0,0, 5,1, 10,0) /* amps */ makegen(-3, 2, 18, 30000, 20000, 20000, 20000, 20000, 20000, 20000, 20000, 20000, 20000, 20000, 20000, 20000, 20000, 20000, 20000, 20000, 20000) /* pch */ makegen(-4, 2, 18, 7.05, 7.07, 7.10, 8.00, 8.02, 8.03, 8.05, 8.07, 8.09, 8.10, 9.00, 9.02, 9.03, 9.05, 9.07, 9.09, 9.10, 10.00) /* slide length */ makegen(-5, 2, 18, 95, 80, 65, 50, 43, 40, 35, 30, 15, 10, 255, 228, 215, 190, 170, 150, 142, 127) /* lip filter */ makegen(-6, 2, 18, 188, 207, 250, 265, 295, 320, 355, 395, 430, 450, 480, 530, 550, 640, 710, 780, 840, 940) /* max pressure */ makegen(-7, 2, 18, 0.15, 0.2, 0.2, 0.2, 0.2, 0.2, 0.25, 0.3, 0.3, 0.3, 0.25, 0.3, 0.35, 0.4, 0.5, 0.6, 0.6, 0.7) start = 0; for(i = 0; i < 100; i=i+1) { index = random() * 18 amp = sampfunc(3, index) pch = sampfunc(4, index) slide = sampfunc(5, index) lip = sampfunc(6, index) pressure = sampfunc(7, index) dur = random()*1.0 + 1.7 MBRASS(start, dur, amp*0.3, cpspch(pch), slide, lip, pressure, random()) start = start + (random() * 0.2 + 0.1) }